proteus và code chương trình HỆ THỐNG HIỂN THỊ SỐ ĐO VÀ CẢNH BÁO TẦN SỐ LƯỚI ĐIỆN CÔNG NGHIỆP I. Cơ sở lý thuyết 1. Giới thiệu tổng quan về họ Vi điều khiển 8051 AT89C51 là một vi điều khiển 8 bit, chế tạo theo công nghệ CMOS chất lượng cao, công suất thấp với 4 KB PEROM (Flash Programeable and erasable read only memory). Các đặc điểm của 8951 được tóm tắt như sau: 4KB bộ nhớ, có thể lập trình lại nhanh, có khả năng ghi xóa tới 1000 chu kỳ Tần số hoat động từ 0 Hz đến 24 MHz 3 mức khóa bộ nhớ lập trình 2 bộ TimerCounter 16 bit 128 Byte RAM nội 4 Port xuấtnhập (IO) 8 bit Giao tiếp nối tiếp 64 KB vùng nhớ mã ngoài 64 KB vùng nhớ dữ liệu ngoài Xử lý Boolean (hoạt động trên bit đơn) 210 vị trí nhớ có thể định vị bit 4μs cho hoạt động nhân hoặc chia 1.1 Sơ đồ khối và sơ đồ chân của AT89C51 Sơ đồ khối của AT89C51 Sơ đồ chân của AT89C51 1.2 Chức năng các chân của AT89C51 + Port 0 (P0.0 – P0.7 hay chân 32 – 39): Ngoài chức năng xuất nhập ra, port 0 còn là bus đa hợp dữ liệu và địa chỉ (AD0 – AD7), chức năng này sẽ được sử dụng khi AT89C51 giao tiếp với thiết bị ngoài có kiến trúc bus. Port 0 + Port 1 (P1.0 – P1.7 hay chân 1 – 8): có chức năng xuất nhập theo bit và byte. Ngoài ra, 3 chân P1.5, P1.6, P1.7 được dùng để nạp ROM theo chuẩn ISP, 2 chân P1.0 và P1.1 được dùng cho bộ Timer 2. Port 1 + Port 2 (P2.0 – P2.7 hay chân 21 – 28): là một port có công dụng kép. Là đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết kế dùng bộ nhớ mở rộng. Port 2 + Port 3 (P3.0 – P3.7 hay chân 10 – 17): mỗi chân trên port 3 ngoài chức năng xuất nhập ra còn có một số chức năng đặc biệt sau: Bit Tên Chức năng chuyển đổi P3.0 RXD Dữ liệu nhận cho port nối tiếp P3.1 TXD Dữ liệu truyền cho port nối tiếp P3.2 INT0 Ngắt bên ngoài 0 P3.3 INT1 Ngắt bên ngoài 1 P3.4 T0 Ngõ vào của TimerCounter 0 P3.5 T1 Ngõ vào của TimerCounter 1 P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài Port 3 + RST (Reset – chân 9): mức tích cực của chân này là mức 1, để reset ta phải đưa mức 1 (5V) đến chân này với thời gian tối thiểu 2 chu kỳ máy (tương đương 2µs đối với thạch anh 12MHz. + XTAL 1, XTAL 2: AT89C51 có một bộ dao động trên chip, nó thường được nối với một bộ dao động thạch anh có tần số lớn nhất là 33MHz, thôn thường là 12MHz. + EA (External Access): EA thường được mắc lên mức cao (+5V) hoặc mức thấp (GND). Nếu ở mức cao, bộ vi điều khiển thi hành chương trình từ ROM nội. Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng. + ALE (Address Latch Enable): ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên ngoài trong nửa đầu của chu kỳ bộ nhớ. Sau đó các đường port 0 dùng để xuất hoặc nhập dữ liệu trong nửa chu kỳ sau của bộ nhớ. + PSEN (Program Store Enable): PSEN là điều khiển để cho phép bộ nhớ chương trình mở rộng và thường được nối với đến chân OE (Output Enable) của một EPROM để cho phép đọc các bytes mã lệnh. PSEN sẽ ở mức thấp trong thời gian đọc lệnh. Các mã nhị phân của chương trình được đọc từ EPROM qua Bus và được chốt vào thanh ghi lệnh của bộ vi điều khiển để giải mã lệnh. Khi thi hành chương trình trong ROM nội, PSEN sẽ ở mức thụ động (mức cao). + Vcc, GND: AT8951 dùng nguồn một chiều có dải điện áp từ 4V – 5.5V được cấp qua chân 40 (Vcc) và chân 20 (GND). 2. Sơ lược về led 7 thanh 2.1 Tổng quát Led 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hình và có thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 đoạn. 8 led đơn trên led 7 đoạn có Anode(cực +) hoặc Cathode(cực ) được nối chung với nhau vào một điểm, được đưa chân ra ngoài để kết nối với mạch điện. 8 cực còn lại trên mỗi led đơn được đưa thành 8 chân riêng, cũng được đưa ra ngoài để kết nối với mạch điện. Nếu led 7 đoạn có Anode(cực +) chung, đầu chung này được nối với +Vcc, các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 0. Nếu led 7 đoạn có Cathode(cực ) chung, đầu chung này được nối xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1. Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo dòng qua mỗi led đơn trong khoảng 10mA20mA để bảo vệ led. Nếu kết nối với nguồn 5V có thể hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều khiển. Sơ đồ vị trí các led Các điện trở 330Ω là các điện trở bên ngoài được kết nối để giới hạn dòng điện qua led nếu led 7 đoạn được nối với nguồn 5V. Chân nhận tín hiệu a điều khiển led a sáng tắt, ngõ vào b để điều khiển led b. Tương tự với các chân và các led còn lại. 2.2 Kết nối với Vi điều khiển Ngõ nhận tín hiệu điều khiển của led 7 đoạn có 8 đường, vì vậy có thể dùng 1 Port nào đó của Vi điều khiển để điều khiển led 7 đoạn. Như vậy led 7 đoạn nhận một dữ liệu 8 bit từ Vi điều khiển để điều khiển hoạt động sáng tắt của từng led đơn trong nó, dữ liệu được xuất ra điều khiển led 7 đoạn thường được gọi là mã hiển thị led 7 đoạn. Có hai kiểu mã hiển thị led 7 đoạn: mã dành cho led 7 đoạn có Anode(cực +) chung và mã dành cho led 7 đoạn có Cathode(cực ) chung. Chẳng hạn, để hiện thị số 1 cần làm cho các led ở vị trí b và c sáng, nếu sử dụng led 7 đoạn có Anode chung thì phải đặt vào hai chân b và c điện áp là 0V(mức 0) các chân còn lại được đặt điện áp là 5V(mức 1), nếu sử dụng led 7 đoạn có Cathode chung thì điện áp(hay mức logic) hoàn toàn ngược lại, tức là phải đặt vào chân b và c điện áp là 5V(mức 1). Bảng mã hiển thị led 7 đoạn: • Phần cứng được kết nối với 1 Port bất kì của Vi điều khiển, để thuận tiện cho việc xử lí về sau phần cứng nên được kết nối như sau: Px.0 nối với chân a, Px.1 nối với chân b, lần lượt theo thứ tự cho đến Px.7 nối với chân h. • Dữ liệu xuất có dạng nhị phân như sau : hgfedcba Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có Anode chung (các led đơn sáng ở mức 0): Số hiển thị trên led 7 đoạn Mã hiển thị led 7 đoạn dạng nhị phân Mã hiển thị led 7 đoạn dạng thập lục phân h g f e d c b a 0 1 1 0 0 0 0 0 0 C0 1 1 1 1 1 1 0 0 1 F9 2 1 0 1 0 0 1 0 0 A4 3 1 0 1 1 0 0 0 0 B0 4 1 0 0 1 1 0 0 1 99 5 1 0 0 1 0 0 1 0 92 6 1 1 0 0 0 0 1 0 82 7 1 1 1 1 1 0 0 0 F8 8 1 0 0 0 0 0 0 0 80 9 1 0 0 1 0 0 0 0 90 A 1 0 0 0 1 0 0 0 88 B 1 0 0 0 0 0 1 1 83 C 1 1 0 0 0 1 1 0 C6 D 1 0 1 0 0 0 0 1 A1 E 1 0 0 0 0 1 1 0 86 F 1 0 0 0 1 1 1 0 8E 1 0 1 1 1 1 1 1 BF Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có Cathode chung (các led đơn sáng ở mức 1): Số hiển thị trên led 7 đoạn Mã hiển thị led 7 đoạn dạng nhị phân Mã hiển thị led 7 đoạn dạng thập lục phân 0 0 0 1 1 1 1 1 1 3F 1 0 0 0 0 0 1 1 0 06 2 0 1 0 1 1 0 1 1 5B 3 0 1 0 0 1 1 1 1 4F 4 0 1 1 0 0 1 1 0 66 5 0 1 1 0 1 1 0 1 6D 6 0 1 1 1 1 1 0 1 7D 7 0 0 0 0 0 1 1 1 07 8 0 1 1 1 1 1 1 1 7F 9 0 1 1 0 1 1 1 1 6F A 0 1 1 1 0 1 1 1 77 B 0 1 1 1 1 1 0 0 7C C 0 0 1 1 1 0 0 1 39 D 0 1 0 1 1 1 1 0 5E E 0 1 1 1 1 0 0 1 79 F 0 1 1 1 0 0 0 1 71 0 1 0 0 0 0 0 0 40 3. Chuyển đổi tín hiệu sine đầu vào của lưới điện thành xung vuông sử dụng LM324 3.1 Cấu tạo IC LM324 3.2 Chức năng LM324 là một IC bao gồm 4 bộ khuyêch đại thuật toán trong nó .Thông thường một bộ khuyêch đại thuật toán (Op_Amp) thì cần phải có nguồn đôi.Tức là phải có nguồn dương và nguồn âm.Chẳng hạn như Opamp 741.Tuy nhiên các opamp trong LM324 được thiết kế đặc biệt để sử dụng nguồn đơn.Có nghĩa là chỉ cần sử dụng Vcc và GND là đủ.Một điều đặc biệt là nguồn cung cấp của LM324 có thể hoạt động độc lập với nguồn tín hiệu.ví dụ nguồn cung cấp của LM324 là 5V nhưng nó có thể làm việc bình thường với tín hiệu ngõ vào là V+ và V là 15V 4. Tổng quan chuẩn RS232 4.1 Đặt vấn đề Ngày nay các thiết bị đo lường, điều khiển ... đều phải giao tiếp với máy tính để quan sát thông số và chế độ hoạt động của thiết bị như thế nào? Chuẩn giao tiếp được coi là đơn giản và dễ dùng đó là RS232. Hầu như các thiết bị đều được giao tiếp với máy tính thông qua chuẩn này. Bài viết này sẽ nói về cơ bản chuẩn giao tiếp RS232: Tổng quan chung về RS232, Sơ đồ ghép nối, Giao diện phần mềm. Vấn đề giao tiếp giữa PC và vi điều khiển rất quan trọng trong các ứng dụng điều khiển, đo lường... Ghép nối qua cổng nối tiếp RS232 là một trong những kỹ thuật được sử dụng rộng rãi để ghép nối các thiết bị ngoại vi với máy tính.Nó là một chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kết nối nhiều nhất là 2 thiết bị , chiều dài kết nối lớn nhất cho phép để đảm bảo dữ liệu là 12.5 đến 25.4m, tốc độ 20kbits đôi khi là tốc độ 115kbits với một số thiết bị đặc biệt. Ý nghĩa của chuẩn truyền thông nối tiếp nghĩa là trong một thời điểm chỉ có một bit được gửi đi dọc theo đường truyền.separator Có hai phiên bản RS232 được lưu hành trong thời gian tương đối dài là RS232B và RS232C. Nhưng cho đến nay thì phiên bản RS232B cũ thì ít được dùng còn RS232C hiện vẫn được dùng và tồn tại thường được gọi là tên ngẵn gọn là chuẩn RS232 Các máy tính thường có 1 hoặc 2 cổng nối tiếp theo chuẩn RS232C được gọi là cổng Com. Chúng được dùng ghép nối cho chuột, modem, thiết bị đo lường...Trên main máy tính có loại 9 chân hoặc lại 25 chân tùy vào đời máy và main của máy tính. Việc thiết kế giao tiếp với cổng RS232 cũng tương đối dễ dàng, đặc biệt khi chọn chế độ hoạt động là không đồng bộ và tốc độ truyền dữ liệu thấp. 4.2 Ưu điểm của giao diện nối tiếp RS232 + Khả năng chống nhiễu của các cổng nối tiếp cao + Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện + Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua công nối tiếp 4.3 Những đặc điểm cần lưu ý trong chuẩn RS232 + Trong chuẩn RS232 có mức giới hạn trên và dưới (logic 0 và 1) là +12V. Hiện nay đang được cố định trở kháng tải trong phạm vi từ 3000 ôm 7000 ôm + Mức logic 1 có điện áp nằm trong khoảng 3V đến 12V, mức logic 0 từ +3V đến 12V + Tốc độ truyền nhận dữ liệu cực đại là 100kbps ( ngày nay có thể lớn hơn) + Các lối vào phải có điện dung nhỏ hơn 2500pF + Trở kháng tải phải lớn hơn 3000 Ω nhưng phải nhỏ hơn 7000 Ω + Độ dài của cáp nối giữa máy tính và thiết bị ngoại vi ghép nối qua cổng nối tiếp RS232 không vượt qua 15m nếu chúng ta không sử model + Các giá trị tốc độ truyền dữ liệu chuẩn : 50,75,110,750,300,600,1200,2400,4800,9600,19200,28800,38400....56600,115200 bps 4.4 Các mức điện áp đường truyền RS 232 sử dụng phương thức truyền thông không đối xứng, tức là sử dụng tín hiệu điện áp chênh lệch giữa một dây dẫn và đất. Do đó ngay từ đầu tiên ra đời nó đã mang vẻ lỗi thời của chuẩn TTL, nó vấn sử dụng các mức điện áp tương thích TTL để mô tả các mức logic 0 và 1. Ngoài mức điện áp tiêu chuẩn cũng cố định các giá trị trở kháng tải được đấu vào bus của bộ phận và các trở kháng ra của bộ phát. Mức điện áp của tiêu chuẩn RS232C ( chuẩn thường dùng bây giờ) được mô tả như sau: + Mức logic 0 : +3V , +12V + Mức logic 1 : 12V, 3V Các mức điện áp trong phạm vi từ 3V đến 3V là trạng thái chuyển tuyến. Chính vì từ 3V tới 3V là phạm vi không được định nghĩa, trong trường hợp thay đổi giá trị logic từ thấp lên cao hoặc từ cao xuống thấp, một tín hiệu phải vượt qua quãng quá độ trong một thơì gian ngắn hợp lý. Điều này dẫn đến việc phải hạn chế về điện dung của các thiết bị tham gia và của cả đường truyền. Tốc độ truyền dẫn tối đa phụ thuộc vào chiều dài của dây dẫn. Đa số các hệ thống hiện nay chỉ hỗ trợ với tốc độ 19,2 kBd . 4.5 Cổng RS232 trên PC Hầu hết các máy tính cá nhân hiện nay đều được trang bị ít nhất là 1 cổng Com hay cổng nối tiếp RS232. Số lượng cổng Com có thể lên tới 4 tùy từng loại main máy tính. Khi đó các cổng Com đó được đánh dấu là Com 1, Com 2, Com 3...Trên đó có 2 loại đầu nối được sử dụng cho cổng nối tiếp RS232 loại 9 chân (DB9) hoặc 25 chân (DB25). Tuy hai loại đầu nối này có cùng song song nhưng hai loại đầu nối này được phân biệt bởi cổng đực (DB9) và cổng cái (DB25) Ta xét sơ đồ chân cổng Com 9 chân: Trên là các kí hiệu chân và hình dạng của cổng DB9 Chức năng của các chân như sau: + chân 1 : Data Carrier Detect (DCD) : Phát tín hiệu mang dữ liệu + chân 2: Receive Data (RxD) : Nhận dữ liệu + chân 3 : Transmit Data (TxD) : Truyền dữ liệu + chân 4 : Data Termial Ready (DTR) : Đầu cuối dữ liệu sẵn sàng được kích hoạt bởi bộ phận khi muốn truyền dữ liệu + chân 5 : Singal Ground ( SG) : Mass của tín hiệu + chân 6 : Data Set Ready (DSR) : Dữ liệu sẵn sàng, được kích hoạt bởi bộ truyền khi nó sẵn sàng nhận dữ liệu + chân 7 : Request to Send : yêu cầu gửi,bô truyền đặt đường này lên mức hoạt động khi sẵn sàng truyền dữ liệu + chân 8 : Clear To Send (CTS) : Xóa để gửi ,bô nhận đặt đường này lên mức kích hoạt động để thông báo cho bộ truyền là nó sẵn sàng nhận tín hiệu + chân 9 : Ring Indicate (RI) : Báo chuông cho biết là bộ nhận đang nhận tín hiệu rung chuông Còn DB28 bây giờ hầu hết các main mới ra đều không có cổng này nữa. Nên tôi không đề cập đến ở đây. 4.6 Quá trình dữ liệu a) Quá trình truyền dữ liệu Truyền dữ liệu qua cổng nối tiếp RS232 được thực hiện không đồng bộ. Do vậy nên tại một thời điểm chỉ có một bit được truyền (1 kí tự). Bộ truyền gửi một bit bắt đầu (bit start) để thông báo cho bộ nhận biết một kí tự sẽ được gửi đến trong lần truyền bit tiếp the . Bit này luôn bắt đầu bằng mức 0.. Tiếp theo đó là các bit dữ liệu (bits data) được gửi dưới dạng mã ASCII( có thể là 5,6,7 hay 8 bit dữ liệu) Sau đó là một Parity bit ( Kiểm tra bit chẵn, lẻ hay không) và cuối cùng là bit dừng bit stop có thể là 1, 1,5 hay 2 bit dừng. b) Tốc độ Baud Đây là một tham số đặc trưng của RS232. Tham số này chính là đặc trưng cho quá trình truyền dữ liệu qua cổng nối tiếp RS232 là tốc độ truyền nhận dữ liệu hay còn gọi là tốc độ bit. Tốc độ bit được định nghĩa là số bit truyền được trong thời gian 1 giây hay số bit truyền được trong thời gian 1 giây. Tốc độ bit này phải được thiết lập ở bên phát và bên nhận đều phải có tốc độ như nhau ( Tốc độ giữa vi điều khiển và máy tính phải chung nhau 1 tốc độ truyền bit) Ngoài tốc độ bit còn một tham số để mô tả tốc độ truyền là tốc độ Baud. Tốc độ Baud liên quan đến tốc độ mà phần tử mã hóa dữ liệu được sử dụng để diễn tả bit được truyền còn tôc độ bit thì phản ánh tốc độ thực tế mà các bit được truyền.Vì một phần tử báo hiệu sự mã hóa một bit nên khi đó hai tốc độ bit và tốc độ baud là phải đồng nhất Một số tốc độ Baud thường dùng: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 56000, 115200 … Trong thiết bị họ thường dùng tốc độ là 19200 Khi sử dụng chuẩn nối tiếp RS232 thì yêu cầu khi sử dụng chuẩn là thời gian chuyển mức logic không vượt quá 4% thời gian truyền 1 bit. Do vậy, nếu tốc độ bit càng cao thì thời gian truyền 1 bit càng nhỏ thì thời gian chuyển mức logic càng phải nhỏ. Điều này làm giới hạn tốc Baud và khoảng cách truyền. c) Bit chẵn lẻ hay Parity bit Đây là bit kiểm tra lỗi trên đường truyền. Thực chất của quá trình kiểm tra lỗi khi truyền dữ liệu là bổ xung thêm dữ liệu được truyền để tìm ra hoặc sửa một số lỗi trong quá trình truyền . Do đó trong chuẩn RS232 sử dụng một kỹ thuật kiểm tra chẵn lẻ. Một bit chẵn lẻ được bổ sung vào dữ liệu được truyền để ch thấy số lượng các bit 1 được gửi trong một khung truyền là chẵn hay lẻ. Một Parity bit chỉ có thể tìm ra một số lẻ các lỗi chả hạn như 1,3,,5,7,9... Nếu như một bit chẵn được mắc lỗi thì Parity bit sẽ trùng giá trị với trường hợp không mắc lỗi vì thế không phát hiện ra lỗi. Do đó trong kỹ thuật mã hóa lỗi này không được sử dụng trong trường hợp có khả năng một vài bit bị mắc lỗi. Còn cách thức truyền dẫn. Phần này tôi không đề cập các bạn vui lòng xem trong giáo trình. 4.7 Sơ đồ ghép nối RS232 Mạch chuẩn giao RS232 dùng IC Max232 Max232 là IC chuyên dùng cho giao tiếp giữa RS232 và thiết bị ngoại vi. Max232 là IC của hãng Maxim. Đây là IC chay ổn định và được sử dụng phổ biến trong các mạch giao tiếp chuẩn RS232. Giá thành của Max232 phù hợp (12K hay 10K) và tích hợp trong đó hai kênh truyền cho chuẩn RS232. Dòng tín hiệu được thiết kế cho chuẩn RS232 . Mỗi đầu truyền ra và cổng nhận tín hiệu đều được bảo vệ chống lại sự phóng tĩnh điện. Ngoài ra Max232 còn được thiết kế với nguồn +5V cung cấp nguồn công suất nhỏ. Mạch giao tiếp như sau : Đây là mạch giao tiếp 1 kênh dùng Max232. Còn giao tiếp 2 kênh thì tương tự. Mạch này được sử dụng khá nhiều trong chuẩn giao tiếp RS232. 4.8 Phần mền giao tiếp Giao tiếp chuẩn giữa RS232 và vi điều khiển phải thông qua phần mền giao diện để nhận biết được dữ liệu truyền lên và nhận xuống như thế nào. Hiện tại có rất nhiều cách lập trình giao tiếp cho RS232 với vi xử lý nhưng mà hay dùng nhất là bộ công cụ Visual C++. Bộ công cụ này lập trình giúp lập trình giao diện thông qua cổng RS232.Ngoài bộ công cụ này còn có bộ công cụ của Delphi cũng được dùng khá nhiều. Trong trường hợp người dùng mà không biết lập trình giao diện thì có thể sử dụng công cụ trực tiếp của windown. Đó là Hyper Terminal. Công cụ này cho ta giao diện khá đơn giản chỉ truyền nhận dữ liệu thông qua cổng RS232
ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA ĐIỆN BỘ MÔN ĐO LƯỜNG VÀ ĐIỀU KHIỂN ĐỒ ÁN MÔN: VI XỬ LÝ TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN ĐỀ TÀI: Ứng dụng họ vi điều khiển 8051 ghép nối với LED để hiển thị số đo tần số lưới điện công nghiệp với khoảng đo (45 – 55) Hz Giáo viên hướng dẫn: Nguyễn Thu Hà ĐỀ BÀI: Ứng dụng họ vi điều khiển 8051 ghép nối 04 LED để hiển thị số đo cảnh báo tần số lưới điện công nghiệp, khoảng đo [45-55]Hz Hệ thống gồm có : + 01 Vi điều khiển 89C51RD2 + Ghép nối 04 LED bảy + Ghép nối mạch chuẩn hóa đo tần số + Ghép nối đèn LED cảnh báo ngưỡng thấp , ngưỡng cao + Hai nút ấn RUN, STOP Hoạt động: Khi ấn RUN ,hệ thống thực đo tần số; ấn, STOP hệ thống lưu lại giá trị đo cuối GVHD:NGUYỄN THU HÀ Page ĐHCN HÀ NỘI GVHD:NGUYỄN THU HÀ BÀI TẬP LỚN:VI XỬ LÝ Page ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ MỤC LỤC LỜI NÓI ĐẦU Ngày nay, với ứng dụng khoa học kỹ thuật tiên tiến, giới ngày thay đổi, văn minh đại Sự phát triển kỹ thuật điện tử tạo hàng loạt thiết bị với đặc điểm bật xác cao, tốc độ nhanh, gọn nhẹ yếu tố cần thiết góp phần cho hoạt động người đạt hiệu cao Các điều khiển sử dụng vi điều khiển đơn giản để vận hành sử dụng lại điều phức tạp Các vi điều khiển theo thời gian với phát triển công nghệ bán dẫn tiến triển nhanh, từ vi điều khiển bit đơn giản đến vi điều khiển 32 bit, sau 64 bit Điện tử trở thành ngành khoa học đa nhiệm vụ Điện tử đáp ứng đòi hỏi không ngừng từ lĩnh vực công – nông – lâm – ngư nghiệp nhu cầu cần thiết hoạt động đời sống ngày Một ứng dụng thiết thực ứng dụng nhiệt kế điện tử Với môn học Vi điều khiển này, em định nhận làm đồ án với đề tài ứng dụng họ vi điều khiển 8051 ghép nối 04 led bảy để hiển thị số đo cảnh báo tần số lưới điện công nghiệp,khoảng đo [45-55] hz Nội dung báo cáo gồm phần: I – Cơ sở lý thuyết II – Nội dung thiết kế III – Kết luận GVHD:NGUYỄN THU HÀ Page ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ Mặc dù cố gắng thiết kế làm mạch thời gian ngắn lực hạn chế nên mạch sai sót Em mong thầy giáo bạn góp ý để việc học tập em tốt Em xin chân thành cảm ơn! GVHD:NGUYỄN THU HÀ Page ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ HỆ THỐNG HIỂN THỊ SỐ ĐO VÀ CẢNH BÁO TẦN SỐ LƯỚI ĐIỆN CÔNG NGHIỆP I.- Cơ sở lý thuyết 1.- Giới thiệu tổng quan họ Vi điều khiển 8051 AT89C51 vi điều khiển bit, chế tạo theo công nghệ CMOS chất lượng cao, công suất thấp với KB PEROM (Flash Programeable and erasable read only memory) Các đặc điểm 8951 tóm tắt sau: - 4KB nhớ, lập trình lại nhanh, có khả ghi xóa tới 1000 chu kỳ - Tần số hoat động từ Hz đến 24 MHz - mức khóa nhớ lập trình - Timer/Counter 16 bit - 128 Byte RAM nội - Port xuất/nhập (I/O) bit - Giao tiếp nối tiếp - 64 KB vùng nhớ mã - 64 KB vùng nhớ liệu - Xử lý Boolean (hoạt động bit đơn) - 210 vị trí nhớ định vị bit - 4μs cho hoạt động nhân chia GVHD:NGUYỄN THU HÀ Page ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ 1.1 Sơ đồ khối sơ đồ chân AT89C51 OTHER REGISTER 128 byte RAM 128 byte RAM 8032\8052 ROM 0K: 8031\8032 4K:8951 8K:8052 INTERRUPT CONTROL INT1\ INT0\ SERIAL PORT TEMER0 TEMER1 TEMER2 8032\8052 CPU OSCILATOR BUS CONTROL I/O PORT SERIAL PORT EA\ RST ALE\ PSEN\ P0 P P P Address\Data TXD RXD TEMER2 8032\8052 TEMER1 TEMER1 GVHD:NGUYỄN THU HÀ Page ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ Sơ đồ khối AT89C51 Sơ đồ chân AT89C51 1.2- Chức chân AT89C51 + Port (P0.0 – P0.7 hay chân 32 – 39): Ngoài chức xuất nhập ra, port bus đa hợp liệu địa (AD0 – AD7), chức sử dụng AT89C51 giao tiếp với thiết bị có kiến trúc bus Port GVHD:NGUYỄN THU HÀ Page ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ + Port (P1.0 – P1.7 hay chân – 8): có chức xuất nhập theo bit byte Ngoài ra, chân P1.5, P1.6, P1.7 dùng để nạp ROM theo chuẩn ISP, chân P1.0 P1.1 dùng cho Timer Port + Port (P2.0 – P2.7 hay chân 21 – 28): port có công dụng kép Là đường xuất nhập byte cao bus địa thiết kế dùng nhớ mở rộng Port GVHD:NGUYỄN THU HÀ Page ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ + Port (P3.0 – P3.7 hay chân 10 – 17): chân port chức xuất nhập có số chức đặc biệt sau: Bit P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Tên RXD TXD INT0 INT1 T0 T1 WR RD Chức chuyển đổi Dữ liệu nhận cho port nối tiếp Dữ liệu truyền cho port nối tiếp Ngắt bên Ngắt bên Ngõ vào Timer/Counter Ngõ vào Timer/Counter Xung ghi nhớ liệu Xung đọc nhớ liệu Port + RST (Reset – chân 9): mức tích cực chân mức 1, để reset ta phải đưa mức (5V) đến chân với thời gian tối thiểu chu kỳ máy (tương đương 2µs thạch anh 12MHz + XTAL 1, XTAL 2: AT89C51 có dao động chip, thường nối với dao động thạch anh có tần số lớn 33MHz, thôn thường 12MHz + EA (External Access): EA thường mắc lên mức cao (+5V) mức thấp (GND) Nếu mức cao, vi điều khiển thi hành chương trình từ ROM nội Nếu mức thấp, chương trình thi hành từ nhớ mở rộng GVHD:NGUYỄN THU HÀ Page ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ + ALE (Address Latch Enable): ALE tín hiệu để chốt địa vào ghi bên nửa đầu chu kỳ nhớ Sau đường port dùng để xuất nhập liệu nửa chu kỳ sau nhớ + PSEN (Program Store Enable): PSEN điều khiển phép nhớ chương trình mở rộng thường nối với đến chân /OE (Output Enable) EPROM phép đọc bytes mã lệnh PSEN mức thấp thời gian đọc lệnh Các mã nhị phân chương trình đọc từ EPROM qua Bus chốt vào ghi lệnh vi điều khiển để giải mã lệnh Khi thi hành chương trình ROM nội, PSEN mức thụ động (mức cao) + Vcc, GND: AT8951 dùng nguồn chiều có dải điện áp từ 4V – 5.5V cấp qua chân 40 (Vcc) chân 20 (GND) 2.- Sơ lược led 2.1 -Tổng quát Led đoạn có cấu tạo bao gồm led đơn có dạng xếp theo hình có thêm led đơn hình tròn nhỏ thể dấu chấm tròn góc dưới, bên phải led đoạn led đơn led đoạn có Anode(cực +) Cathode(cực -) nối chung với vào điểm, đưa chân để kết nối với mạch điện cực lại led đơn đưa thành chân riêng, đưa để kết nối với mạch điện Nếu led đoạn có Anode(cực +) chung, đầu chung nối với +Vcc, chân lại dùng để điều khiển trạng thái sáng tắt led đơn, led sáng tín hiệu đặt vào chân mức GVHD:NGUYỄN THU HÀ Page 10 ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ + chân : Request to Send : yêu cầu gửi,bô truyền đặt đường lên mức hoạt động sẵn sàng truyền liệu + chân : Clear To Send (CTS) : Xóa để gửi ,bô nhận đặt đường lên mức kích hoạt động để thông báo cho truyền sẵn sàng nhận tín hiệu + chân : Ring Indicate (RI) : Báo chuông cho biết nhận nhận tín hiệu rung chuông Còn DB28 hầu hết main cổng Nên không đề cập đến 4.6 - Quá trình liệu a) Quá trình truyền liệu Truyền liệu qua cổng nối tiếp RS232 thực không đồng Do nên thời điểm có bit truyền (1 kí tự) Bộ truyền gửi bit bắt đầu (bit start) để thông báo cho nhận biết kí tự gửi đến lần truyền bit tiếp the Bit bắt đầu mức Tiếp theo bit liệu (bits data) gửi dạng mã ASCII( 5,6,7 hay bit liệu) Sau Parity bit ( Kiểm tra bit chẵn, lẻ hay không) cuối bit dừng - bit stop 1, 1,5 hay bit dừng b) Tốc độ Baud Đây tham số đặc trưng RS232 Tham số đặc trưng cho trình truyền liệu qua cổng nối tiếp RS232 tốc độ truyền nhận liệu hay gọi tốc độ bit Tốc độ bit định nghĩa số bit truyền thời gian giây hay số bit truyền thời gian giây Tốc độ bit phải thiết lập bên phát bên nhận phải có tốc độ ( Tốc độ vi điều khiển máy tính phải chung tốc độ truyền bit) Ngoài tốc độ bit tham số để mô tả tốc độ truyền tốc độ Baud Tốc độ Baud liên quan đến tốc độ mà phần tử mã hóa liệu sử dụng để diễn tả bit truyền tôc độ bit phản ánh tốc độ thực tế mà bit truyền.Vì phần tử báo hiệu mã hóa bit nên hai tốc độ bit tốc độ baud phải đồng Một số tốc độ Baud thường dùng: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 56000, 115200 … Trong thiết bị họ thường dùng tốc độ 19200 Khi sử dụng chuẩn nối tiếp RS232 yêu cầu sử dụng chuẩn thời gian chuyển mức logic không vượt 4% thời gian truyền bit Do vậy, tốc độ bit cao thời gian truyền bit nhỏ thời gian chuyển mức logic phải nhỏ Điều làm giới hạn tốc Baud khoảng cách truyền c) Bit chẵn lẻ hay Parity bit Đây bit kiểm tra lỗi đường truyền Thực chất trình kiểm tra lỗi truyền liệu bổ xung thêm liệu truyền để tìm sửa số lỗi trình truyền Do chuẩn RS232 sử dụng kỹ thuật GVHD:NGUYỄN THU HÀ Page 19 ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ kiểm tra chẵn lẻ Một bit chẵn lẻ bổ sung vào liệu truyền để ch thấy số lượng bit "1" gửi khung truyền chẵn hay lẻ Một Parity bit tìm số lẻ lỗi chả hạn 1,3,,5,7,9 Nếu bit chẵn mắc lỗi Parity bit trùng giá trị với trường hợp không mắc lỗi không phát lỗi Do kỹ thuật mã hóa lỗi không sử dụng trường hợp có khả vài bit bị mắc lỗi Còn cách thức truyền dẫn Phần không đề cập bạn vui lòng xem giáo trình 4.7- Sơ đồ ghép nối RS232 Mạch chuẩn giao RS232 dùng IC Max232 Max232 IC chuyên dùng cho giao tiếp RS232 thiết bị ngoại vi Max232 IC hãng Maxim Đây IC chay ổn định sử dụng phổ biến mạch giao tiếp chuẩn RS232 Giá thành Max232 phù hợp (12K hay 10K) tích hợp hai kênh truyền cho chuẩn RS232 Dòng tín hiệu thiết kế cho chuẩn RS232 Mỗi đầu truyền cổng nhận tín hiệu bảo vệ chống lại phóng tĩnh điện Ngoài Max232 thiết kế với nguồn +5V cung cấp nguồn công suất nhỏ Mạch giao tiếp sau : GVHD:NGUYỄN THU HÀ Page 20 ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ Đây mạch giao tiếp kênh dùng Max232 Còn giao tiếp kênh tương tự Mạch sử dụng nhiều chuẩn giao tiếp RS232 4.8- Phần mền giao tiếp Giao tiếp chuẩn RS232 vi điều khiển phải thông qua phần mền giao diện để nhận biết liệu truyền lên nhận xuống Hiện có nhiều cách lập trình giao tiếp cho RS232 với vi xử lý mà hay dùng công cụ Visual C++ Bộ công cụ lập trình giúp lập trình giao diện thông qua cổng RS232.Ngoài công cụ có công cụ Delphi dùng nhiều Trong trường hợp người dùng mà lập trình giao diện sử dụng công cụ trực tiếp windown Đó Hyper Terminal Công cụ cho ta giao diện đơn giản truyền nhận liệu thông qua cổng RS232 GVHD:NGUYỄN THU HÀ Page 21 ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ II.- Nội dung thiết kế 1.- Lưu đồ thuật toán chương trình GVHD:NGUYỄN THU HÀ Page 22 ĐHCN HÀ NỘI GVHD:NGUYỄN THU HÀ BÀI TẬP LỚN:VI XỬ LÝ Page 23 ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ 2.- Phần lập trình mô 2.1- Phần lập trình #include unsigned int Time; unsigned int tanso; #define c P2_0 #define d P2_1 #define b P2_5 #define a P2_6 #define key1 P3_1 #define key2 P3_2 #define key3 P3_3 #define key4 P3_4 #define key5 P3_6 #define key6 P3_7 #define key7 P0_1 unsigned char i; unsigned char so[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(int ms) {while(ms ){}} void hienso(unsigned char x) { unsigned char chuc=x/10; unsigned char donvi=x%10; unsigned char thapphan=(((x*10)%100)%10); P1=so[chuc]; b=1; delay(10); b=0; P1=so[donvi]-0x80; c=1; delay(10); c=0; P1=so[thapphan]; d=1; delay(10); d=0; GVHD:NGUYỄN THU HÀ Page 24 ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ P1=0x8e; a=1; delay(10); a=0; } void hienso1(unsigned char x) { unsigned char chuc=x/10; unsigned char donvi=x%10; unsigned char thapphan=(((x*10)%100)%10); P1=so[chuc]; b=1; delay(10); b=0; P1=so[donvi]-0x80; c=1; delay(10); c=0; P1=so[thapphan]; d =1; delay(10); d=0; } void ngat_trantimer0() interrupt { TH0=0xFC; TL0=0x2B; Time++; if(Time==1000) { Time=0; TR1=0; tanso=(((TH1&0x00ff)[...]... {while(!key5);nguongduoi++;} if(key6==0) {while(!key6);nguongduoi ;} hienso1(nguongduoi); if(key2==0) {while(!key2);break;nho=nguongduoi;} } } if(tanso>=lon) {P2_7=1;P3_0=0;} GVHD:NGUYỄN THU HÀ Page 26 ĐHCN HÀ NỘI BÀI TẬP LỚN:VI XỬ LÝ if(tanso