Đồ án Đồng hồ số hiển thị trên LCD 16X2

Thông tin lịch vạn niên (giờ, phút, giây, ngày, tháng, năm) chứa trong dalas DS12C887. IC này có một byte địa chỉ và dữ liệu được tích hợp chung (AD0AD7). Khi ta chọn ba địa chỉ này thì chân được tích cực ở mức 0, khi ta chọn dữ liệu thì chân được tích cực mức 0. khi ta đọc thông tin lịch vạn niên từ Dalas thì chân ở mức 1. khi ta ghi thông tin lịch vạn niên từ Dalas thì chân ở mức 0. Byte ddiwj chỉ và dữ liệu của Dalas được kết lối với Port 1 của AT89C51 , chân được kết nối với chân ALE của AT89C51. Port 0 của AT89C51 được tích hợp địa chỉ và dữ liệu. Khi chi xuất địa chỉ thì chân ALE của AT89C51 ở mức 0 cũng ở mức 0 là ta chọn địa chỉ. Khi ta chọn dữ liệu thì chân RD của AT89C51 ở mức 0, chân này được nối với chân là ta chọn dữ liệu.

 

doc50 trang | Chia sẻ: maiphuongdc | Lượt xem: 4550 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Đồng hồ số hiển thị trên LCD 16X2, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
B - NỘI DUNG Chương GIỚI THIỆU CẤU TRÚC PHẦN CỨNG HỌ MCS-51 (8951): Giới thiệu họ MCS-51: MCS-51 là họ IC vi điều khiển do hãng Intel sản xuất. Các IC tiêu biểu cho họ là 8051 và 8031. Các sản phẩm MCS-51 thích hợp cho những ứng dụng điều khiển. Việc xử lý trên Byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữ liệu nhanh trên RAM nội. Tập lệnh cung cấp một bảng tiện dụng của những lệnh số học 8 Bit gồm cả lệnh nhân và lệnh chia. Nó cung cấp những hổ trợ mở rộng trên Chip dùng cho những biến một Bit như là kiểu dữ liệu riêng biệt cho phép quản lý và kiểm tra Bit trực tiếp trong điều khiển và những hệ thống logic đòi hỏi xử lý luận lý. 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 Programmable and erasable read only memory). Thiết bị này được chế tạo bằng cách sử dụng bộ nhớ không bốc hơi mật độ cao của ATMEL và tương thích với chuẩn công nghiệp MCS-51 về tập lệnh và các chân ra. PEROM ON-CHIP cho phép bộ nhớ lập trình được lập trình trong hệ thống hoặc bởi một lập trình viên bình thường. Bằng cách kết hợp một CPU 8 Bit với một PEROM trên một Chip đơn, ATMEL AT89C51 là một vi điều khiển mạnh (có công suất lớn) mà nó cung ấp một sự linh động cao và giải pháp về giá cả đối với nhiều ứng dụng vi điều khiển. AT89C51 cung cấp những đặc tính chuẩn như sau: 4 KB bộ nhớ chỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2 TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP. Thêm vào đó, AT89C51 được thiết kế với logic tĩnh cho hoạt động đến mức không tần số và hỗ trợ hai phần mềm có thể lựa chọn những chế độ tiết kiệm công suất, chế độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho phép RAM, timer/counter, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ giảm công suất sẽ lưu nội dung RAM nhưng sẽ treo bộ dao động làm mất khả năng hoạt động của tất cả những chức năng khác cho đến khi Reset hệ thống. Các đặc điểm của 8951 được tóm tắt như sau: 4 KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi xoá Tần số hoạt động từ: 0Hz đến 24 MHz 3 mức khóa bộ nhớ lập trình 2 bộ Timer/counter 16 Bit 128 Byte RAM nội. 4 Port xuất /nhập I/O 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 ms cho hoạt động nhân hoặc chia. Sơ đồ khối của AT89C51 Sơ đồ nguyên lý OTHER REGISTER 128 byte RAM 128 byte RAM 8032\8052 ROM 0K: 8031\8032 4K:8951 8K:8052 INTERRUPCONTROL INT1\ INT0\ SERIAL PORT TEMER0 TEMER1 TEMER2 8032\8052 CPU OSCILATOR BUS CONTROL I/O PORT SERIAL PORT EA\ RST ALE\ PSEN\ P0 P1 P2 P3 Address\Data TXD RXD TEMER2 8032\8052 TEMER1 TEMER1 Hình 1.1: Sơ đồ khối của AT89C51 Interrup Control: Khối điều khiển ngắt ngoài Other Register: Các thanh ghi Ram: Bộ nhớ truy xuất ngẩu nhiên (128 Byte) Eprom: Bộ nhớ chỉ đọc, xóa, lập trình được Timer 1: Bộ định thời Timer 0: Bộ định thời Serial Port: Cổng vào ra nối tiếp I/O Port: Các cổng vào ra CPU: Vi xử lý Oscilator: Mạch dao động nội Bus Control: Các đường điều khiển Bus Sơ đồ chi tiết Hình 1.2: Sơ đồ chi tiết của AT89C51 KHẢO SÁT SƠ ĐỒ CHÂN 8951, CHỨC NĂNG TỪNG CHÂN: Sơ đồ chân 8951: Hình 1.3: Sơ đồ chân của AT89C51 Chức năng các chân của 8951 AT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong đó có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ. Các Port: Port 0: Port 0 là port có 2 chức năng ở các chân 32 – 39 của 8951. Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO. Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu. Port 1: Port 1 là port IO trên các chân 1-8. Các chân được ký hiệu P1.0, P1.1, P1.2, … có thề dùng cho giao tiếp với các thiết bị ngoài nếu cần. Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài. Port 2: Port 2 là 1 port có tác dụng kép trên các chân 21- 28 được dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng. Port 3: Port 3 là port có tác dụng kép trên các chân 10-17. Các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như ở bảng sau: Bit Tên Chức năng chuyển đổi P3.0 RXT Ngõ vào dữ liệu nối tiếp. P3.1 TXD Ngõ xuất dữ liệu nối tiếp. P3.2 INT0\ Ngõ vào ngắt cứng thứ 0 P3.3 INT1\ Ngõ vào ngắt cứng thứ 1 P3.4 T0 Ngõ vào của TIMER/COUNTER thứ 0 P3.5 T1 Ngõ vào của TIMER/COUNTER thứ 0 P3.6 WR\ Tín hiệu ghi dữ liệu lên bộ nhớ ngoài P3.7 RD\ Tín hiệu đọc dữ liệu bộ nhớ ngoài Bảng 1.1: Chức năng các chân của Port 3 Các ngõ tín hiệu điều khiển: Ngõ tín hiệu PSEN (Program store enable): PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nói đến chân 0E\ (output enable) của Eprom cho phép đọc các byte mã lệnh. PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh. Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh bên trong 8951 để giải mã lệnh. Khi 8951 thi hành chương trình trong ROM nội PSEN sẽ ở mức logic 1. Ngõ tín hiệu điều khiển ALE (Address Latch Enable): Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt. Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động. Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống. Chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong 8951. Ngõ tín hiệu EA\(External Access) : Tín hiệu vào EA\ ở chân 31 thường được mắt lên mức 1 hoặc mức 0. Nếu ở mức 1, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte. Nếu ở mức 0, 8951 sẽ thi hành chương trình từ bộ nhớ mở rộng. Chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 8951. Ngõ tín hiệu RST (Reset): Ngõ vào RST ở chân 9 là ngõ vào Reset của 8951. Khi ngõ vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống. Khi cấp điện mạch tự động Reset. Các ngõ vào bộ giao động X1,X2: Bộ dao động được được tích hợp bên trong 8951, khi sử dụng 8951 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng cho 8951 là 12Mhz. Chân 40 (Vcc) được nối lên nguồn 5V. Chương 2.1 GIỚI THIỆU IC REAL TIME CLOCK DS12C887 DS12C887 thuộc họ Real-Time Clock là sản phẩm của hãng MAXXIM với những tính năng sau: Được sử dụng chạy đồng hồ, lịch trong các dòng máy tính IBM AT. Sơ đồ chân tương thích với các loại IC MC146818 và DS1287. Tự vận hành với pin nội có tuổi thọ lên đến 10 năm. Đếm giờ, phút, giây, ngày, tháng, năm, thứ với thời gian đến năm 2100. Dữ liệu ngày giờ được truy xuất dưới dạng binary hoặc BCD. Có thể lựa chọn hiển thị giờ Mode 24 hoặc Mode 12 với AM và PM. Tương thích Bus giao tiếp với họ Motorola và họ Intel. Cung cấp 128 Byte RAM được định địa chỉ, trong đó có 14 Bytesử dụng cho việc lưu trữ giờ và các thanh ghi điều khiển, 114 Byte RAM đa mục đích dành cho các ứng dụng của người sử dụng. Xuất tín hiệu lập trình xung vuông. Tín hiệu điều khiển ngắt . Thời gian có thể bị sai số phút /1 tháng trong điều kiện nhiệt độ 25 Có mạch dao động nội và có thanh ghi thế kỷ SƠ ĐỒ CHÂN IC DS12C887 Hình 2.1: Sơ đồ chân IC DS12C887 Chức năng các chân IC DS12C887: Mô tả: AD0 – AD7 : Các đường địa chỉ / dữ liệu NC : Không kết nối MOT : Chọn loại Bus(Khi tương thích Bus giao tiếp với họ Motorola thì chân MOT nối lên nguồn Vcc và họ Intel thì chân MOT nối đất hoặc không kết nối) : Cho phép hoạt động(chọn chip) AS : Chốt địa chỉ R / : Ngõ vào đọc viết DS : Chốt dữ liệu : Reset ngõ vào : Điều khiển ngắt ngoài SQW : Ngõ ra xung vuông Vcc : Nguồn +5V GND : Đất Mạch giao tiếp với vi xử lý: Hình 2.2: Sơ đồ giao tiếp vi xử lý SƠ ĐỒ KHỐI IC DS12C887 Hình 2.3: Sơ đồ khối IC DS12C887 Chức năng các khối: Khối nguồn(Power): Gồm có nguồn cung cấp chính và nguồn pin dự phòng được cung cấp bởi pin Lithium có tuổi thọ rất lâu (Khi nguồn Vcc < 3V thì nguồn được chuyển qua nguồn pin đặt bên trong IC ) Khối dao động(OSC): Mạch dao động sử dụng thạch anh 32.768 kKz có độ chính xác cao, sau đó được đưa đến các bộ chia để có được tần số cần dùng. Các bộ chia tần số(Divide by 8, Divide by 64): Tần số 32.768 kKz qua bộ chia 8, sau đó chia 2 lần 64 để có được tần số 1 Hz cung cấp cho đồng hồ. Khối phát xung vuông(Square wave out): Chân SQW xuất các xung vuông có tần số điều khiển bởi chương trình ở thanh ghi A. Tín hiệu xung vuông có thể tắt mở bởi bit SQWE ở thanh ghi B. Tín hiệu xung vuông sẽ không hoạt động khi nguồn cung cấp < 4.25V. Các thanh ghi(Registers A, B, C, D): Các chế độ hoạt động có thể thay đổi bởi chương trình ở các thanh ghi. Khối lịch giờ: Các thông tin về giơ,ø lịch được đọc từ bộ nhớ và ghi vào RAM dưới dạng mã Binary hoặc BCD (Binary coded decimal). Khối giao tiếp(Bus Interface): Gồm các chân AD0 – AD7,DS, R/, AS, MOT để đặt chế độ thích hợp cho IC có thể giao tiếp vi xử lý của họ Motorola và họ Intel. Chương SƠ ĐỒ KHỐI IC DS12C887 (REAL TIME CLOCK) HIỂN THỊ (DISPLAY) IC AT89C51 (VI ĐIỀU KHIỂN) NÚT NHẤN KHỐI NGUỒN (NGUỒN +5VDC) Hình 3.1: Sơ đồ khối CHỨC NĂNG CÁC KHỐI Khối nguồn: Cung cấp nguồn ổn định cho các khối (+5VDC) Khối đồng hồ: Dùng IC Real Time Clock để có giờ ổn định, không bị sai giờ khi mất điện, có 113 byte RAM đa dụng để mở rộng RAM ngoài khi viết chương trình Khối điều khiển: Dùng vi xử lý 89C51 đọc dữ liệu thời gian từ IC đồng hồ, xử lý các nút nhấn khi nhập dữ liệu, xuất dữ liệu hiển thị Khối hiển thị: Dùng Led 7 đoạn hiển thị giá mua vào, giá bán ra và ngày, tháng, năm Khối nút nhấn: Dùng 4 nút nhấn (SELECT, OK, UP, DOWN) để hiệu chỉnh các giá trị hiển thị Chương SƠ ĐỒ NÚT NHẤN Hình 4.1: Sơ đồ các phím nhấn Tất cả các nút nhấn sử dụng là loại nút nhấn hở. Một chân nối với đất, chân còn lại nối lên nguồn +5V thông qua điện trở. Ở trạng thái bình thường ngõ ra nút nhấn là +5V tương ứng với mức logic 1. Khi nhấn nút điện áp ngõ ra sẽ nối xuống đất tương ứng với mức logic 0. Vì vậy ta phải dùng điện trở để hạn dòng và tạo mức điện thế logic ở ngõ vào của IC vi điều khiển Chức năng của các nút nhấn: SELECT (Phím hiệu chỉnh) OK (Phím chấp nhận), UP (Phím tăng), DOWN (Phím giảm) Các nút nhấn SELECT, OK, UP, DOWN được nối lần lượt với các chân P3.2, P3.3, P3.4, P3.5 của IC vi điều khiển. Khi nhấn một trong 4 nút nhấn trên thì điện áp ngõ ra sẽ nối xuống đất tương ứng với mức logic 0 sẽ cho phép gởi tín hiệu hiệu chỉnh thời gian đến IC vi điều khiển SƠ ĐỒ MẠCH VI ĐIỀU KHIỂN Hình4.2: Sơ đồ mạch vi điều khiển xử lý Mạch vi điều khiển là bộ phận quan trọng, điều khiển mọi hoạt động của hệ thống. Bao gồm: Mạch Reset, mạch Tạo dao động và IC AT89C51 Mạch RESET Hình 4.3: Sơ đồ mạch Reset AT89C51 được reset bằng cách giữ chân RST (chân 9) ở mức cao trong ít nhất 2 chu kỳ máy, sau đó xuống mức thấp để AT89C51 bắt đầu làm việc. Reset có thể kích tay bằng một phím nhấn thường hở như hình 2.3. Nhiệm vụ của mạch RESET là tự động reset khi cấp nguồn & reset bằng tay khi cần bằng cách nhấn phím RESET Tụ CRST1 và điện trở R7 tạo thành mạch R-C với thời hằng là t = RC V = V . e Þ V = Þ e = Þ = Ln Þ Mà t = RC Þ RC= Để reset AT89C51, chân 9 (RST) phải ở mức cao ít nhất là hai chu kỳ máy (T ³ 2ms ) và V phải lớn hơn 2.5V Chọn V=3 V; T=40 ms; R7=10 kW Khi đó: CRST1= . Chọn giá trị chuẩn CRST1=10mF Điện trở R7 có tác dụng xã dòng tích trên tụ khi ta nhấn để chân Reset lên mức 1 (5V). 4.2.2 Mạch tạo dao động AT89C51 có một bộ dao động trên chip. Nó thường được nối với một thạch anh giữa hai chân 18 và 19. Các tụ giữ ổn định cũng rất cần thiết cho việc bù nhiệt, giá trị thường từ 27pF – 40pF. Tần số dao động thạch anh thông thường là =12 Mhz. Vậy thời gian 1 chu kỳ máy là: ===1 ms IC AT89C51 Hình 4.5: Sơ đồ IC AT89C51 Vi điều khiển AT89C51 là IC rất thông dụng vì có chứa bộ nhớ EFROM bên trong và tăng được bus giao tiếp nên tiết kiệm được kích thước và thuận tiện việc thiết kế. Ngoài ra có thêm 2 chế độ bit điều khiển nguồn: IDL_idle mode (Chế độ nghỉ; được đặt lên 1 để kích hoạt chế độ nghỉ; chỉ thoát khi có ngắt hoặc reset hệ thống) và PD_power down (tắt nguồn; được đặt lên 1 để kích hoạt chế độ tắt nguồn; chỉ thoát khi xóa về 0) tiết kiệm năng lượng Port 0: chân 32-39(AD0-AD7) là các đường dữ liệu và địa chỉ được nối đến chân 4-11(AD0-AD7) IC đồng hồ DS12C887 Port 2: chỉ sử dụng các chân 21, 22, 23 (P2.0, P2.1, P2.2) được nối đến chân 9,10, 11 của LCD 16x2. Port 3: chân 12, 13, 14, 15 (P3.2, P3.3, P3.4, P3.5) được nối đến các phím nhấn: SELECT, OK, UP, DOWN. Chân 10, 11, (P3.0 P3.1) được kết nối với chân 6, 5 (SCK, SDA) của Rom 24C04. Chân 16 () được nối đến chân 15 (R/) của IC DS12C887. Chân 17 () được nối đến chân 17 (DS) của IC DS12C887 Chân 18, 19 (XTAL2, XTAL1) được nối với thạch anh 12 MHz sử dụng làm xung clock cho vi xử lý Chân 31 () được nối lên nguồn +5V để vi điều khiển thực thi chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte Chân 9 (Reset) được tự động reset khi cấp nguồn hoặc có thể reset bằng tay khi ta cần bằng cách nhấn phím reset Chân 30 (ALE) được nối đến chân 14 (AS) của IC DS12C887 4.2 SƠ ĐỒ MẠCH GIAO TIẾP GIỮA VI XỬ LÝ VÀ IC DS12C887 Hình4.6: Sơ đồ khối mạch giao tiếp giữa vi xử lý và IC DS12C887 Hình 4.7: Sơ đồ mạch giao tiếp giữa vi xử lý và IC DS12C887 Chân 4-11 (AD0-AD7) của IC DS12C887 vừa là các đường địa chỉ và dữ liệu được nối đến Port 0 từ chân 32-39 (AD0-AD7) của vi điều khiển. Vì Port 0 có cực thu để hở nên ta phải mắc điện trở kéo lên nguồn Vcc tạo mức điện thế logic cao. Các điện trở có thể chọn: 1 kW, 4.7 kW, 10 kW Chân 15 (R/) được nối đến chân 16 () của vi xử lý cho phép ghi dữ liệu vào RAM của IC DS12C887 Chân 17 (DS) được nối đến chân 17 () cho phép đọc dữ liệu từ RAM của IC DS12C887. Chân 1 (MOT) được nối đất để chọn theo chuẩn Intel Chân 14 (AS) được nối đến chân 30 (ALE) cho phép chốt byte thấp của địa chỉ trong thời gian truy xuất bộ nhớ ngoài Chân 18,19 (, ) được nối lên nguồn, tích cực ở mức thấp nên được kéo lên bỡi 2 điện trở R1=R2=10 kW SƠ ĐỒ MẠCH HIỂN THỊ SƠ ĐỒ MẠCH NGUỒN Sơ đồ khối mạch nguồn Hình4.16: Sơ đồ khốimạch nguồn Biến áp nguồn: Hạ thế từ 220V các điện áp thấp hơn như 6V, 9V, 12V Mạch chỉnh lưu: Đổ điện AC thành DC Mạch lọc: Lọc gợn xoay chiều sau chỉnh lưu cho nguồn DC phẳng hơn Mạch ổn áp: Giữ một điện áp cố định cung cấp cho tải tiêu thụ. Mạch ổn áp được coi là đơn giản và cóhiệu quả là loại IC LA78: LA7805 IC ổn áp 5V LA7808 IC ổn áp 8V LA7809 IC ổn áp 9V LA7812 IC ổn áp 12V Lưu ý : Họ IC78 chỉ cho dòng tiêu thọ khoảng 1A trở xuống. Khi ráp IC trong mạch thì Uin>Uout từ 3 đến 5V khi đó IC mới phát huy tác dụng Hình4.16: IC ổn áp LA7805 Sơ đồ chi tiết mạch nguồn +5V Hình4.17: Sơ đồ chi tiết mạch nguồn Nguồn AC 9V được đưa vào cầu diode gồm 4 diode (1N4007 với điện áp ngược cực đại là 1000V và dòng cực đại là 1A) qua C2= 2200uF/25V (lọc nguồn ngõ vào) và C4=104 (lọc nhiễu xoay chiều ngõ vào) tạo ra điện áp +12V, Sau đó nguồn 12V đưa vào ổn áp LM7805 qua C5= 1000uF (lọc nguồn ngõ ra) và C6=104 (lọc nhiễu ngõ ra) tạo ra điện áp +5V DC cấp nguồn cho các IC của mạch chính 4.6 NGUYÊN LÝ HOẠT ĐỘNG TỔNG QUÁT Thông tin lịch vạn niên (giờ, phút, giây, ngày, tháng, năm) chứa trong dalas DS12C887. IC này có một byte địa chỉ và dữ liệu được tích hợp chung (AD0AD7). Khi ta chọn ba địa chỉ này thì chân được tích cực ở mức 0, khi ta chọn dữ liệu thì chân được tích cực mức 0. khi ta đọc thông tin lịch vạn niên từ Dalas thì chân ở mức 1. khi ta ghi thông tin lịch vạn niên từ Dalas thì chân ở mức 0. Byte ddiwj chỉ và dữ liệu của Dalas được kết lối với Port 1 của AT89C51 , chân được kết nối với chân ALE của AT89C51. Port 0 của AT89C51 được tích hợp địa chỉ và dữ liệu. Khi chi xuất địa chỉ thì chân ALE của AT89C51 ở mức 0 cũng ở mức 0 là ta chọn địa chỉ. Khi ta chọn dữ liệu thì chân RD của AT89C51 ở mức 0, chân này được nối với chân là ta chọn dữ liệu. Port 1 của AT89C51 được kết nối với LCD để hiển thị thông tin lịch vạn niên. Chân VR của LCD được kết nối với biến trở VR1(10K) để chỉnh độ sáng tối của LCD. Chân ,,Enable của LCD là các chân điều khiển. Các nút nhấn Select, Up, Down, Ok dùng để hiệu chỉnh thông tin lịch vạn niên của Dalas. Chương 5.1 CHƯƠNG TRÌNH CHÍNH BẮT ĐẦU KHỞI TẠO LCD KHỞI TẠO DALLAS ĐỌC GIỜ PHÚT GIÂY HEX TO BCD HÀNG 1 HÀNG 2 SELECT=0 BIẾN ĐẾM 1 = 1 SETTING KẾT THÚC S Đ 5.2 CHƯƠNG TRÌNH KHỞI TẠO LCD BẮT ĐẦU XÁC LẬP CẤU HÌNH HOẠT ĐỘNG CỦA LCD THEO DATASHEET XÁC LẬP FONT 5*7 KẾT THÚC 5.3 CHƯƠNG TRÌNH KHỞI TẠO DALLAS BẮT ĐẦU GHI VÀO THANH GHI A CỦA DALLAS NỘI DUNG 20H GHI VÀO THANH GHI B CỦA DALLAS NỘI DUNG 06H KẾT THÚC 5.4 CHƯƠNG TRÌNH ĐỌC GIỜ, PHÚT, GIÂY BẮT ĐẦU ĐỌC THÔNG TIN LỊCH VẠN NIÊN CỦA DALLAS TỪ Ô NHỚÙ 00H – 09H LƯU VÀO Ô NHỚ 60H – 69H CỦA 89C51 KẾT THÚC 5.5 HEX TO BCD BẮT ĐẦU SỐ HEX ĐỌC TỪ DALLAS CHIA CHO 10 ĐỂ TÁCH SỐ ĐƠN VỊ VÀ SỐ CHỤC KẾT THÚC 5.6 HÀNG 1 BẮT ĐẦU GIẢI MÃ SỐ BCD CỦA GIỜ-PHÚT-GIÂY,HIỂN THỊ LÊN HÀNG 1 CỦA LCD KẾT THÚC 5.7 HÀNG 2 BẮT ĐẦU GIẢI MÃ SỐ BCD CỦA THỨ, NGÀY, THÁNG, NĂM HIỂN THỊ HÀNG 2 CỦA LCD KẾT THÚC 5.8 CHƯƠNG TRÌNH SETTING S KẾT THÚC BẮT ĐẦU HEX TO BCD HÀNG 1 HÀNG 2 UP = 0 SELECT=00 DOWN = 0 OK = 0 TĂNG BIẾN ĐẾM 1 B ĐẾM 1=8 BIẾN ĐẾM 1 = 1 TĂNG GIẢM Đ S Đ Đ Đ 5.9 CHƯƠNG TRÌNH TĂNG BẮT ĐẦU Đ TĂNG GIÂY BIẾN ĐẾM 1=1 S Đ TĂNG PHÚT BIẾN ĐẾM 1=2 S Đ TĂNG GIỜ BIẾN ĐẾM 1=3 S Đ TĂNG THỨ BIẾN ĐẾM 1=4 S Đ TĂNG NGÀY BIẾN ĐẾM 1=5 S Đ TĂNG THÁNG BIẾN ĐẾM 1=6 S Đ TĂNG NĂM BIẾN ĐẾM 1=7 S KẾT THÚC 5.10 CHƯƠNG TRÌNH GIẢM BẮT ĐẦU Đ GIẢM GIÂY BIẾN ĐẾM 1=1 S Đ GIẢM PHÚT BIẾN ĐẾM 1=2 S Đ GIẢM GIỜ BIẾN ĐẾM 1=3 S Đ GIẢM THỨ BIẾN ĐẾM 1=4 S Đ GIẢM NGÀY BIẾN ĐẾM 1=5 S Đ GIẢM THÁNG BIẾN ĐẾM 1=6 S Đ GIẢM NĂM BIẾN ĐẾM 1=7 S KẾT THÚC Chương CHUONG TRINH HIEN THI DONG HO TREN LCD datalcd equ p1 RS bit p2.2 RW bit p2.1 Enable bit p2.0 select bit p3.2 up bit p3.3 down bit p3.4 ok bit p3.5 org 0000h lcall ktaolcd lb1: lcall ktaods lb: lcall docgpg lcall hexbcd lcall hang1 lcall hang2 jb select,x1 kt1: lcall dl3_lcd jnb select,kt1 mov 5fh,#01h lcall setting sjmp lb1 x1: sjmp lb setting: x6: lcall hexbcd lcall hang1 lcall hang2 jb select,x2 kt2: lcall dl3_lcd jnb select,kt2 inc 5fh mov a,5fh cjne a,#8,x2 mov 5fh,#01h x2: jb ok,x3 kt3: lcall dl3_lcd jnb ok,kt3 mov r0,#00h mov r1,#60h ds2: mov a,@r1 movx @r0,a inc r1 inc r0 cjne r0,#0ah,ds2 sjmp x7 x3: jb up,x4 kt4: lcall dl3_lcd jnb up,kt4 lcall tang x4: jb down,x5 kt5: lcall dl3_lcd jnb down,kt5 lcall giam x5: sjmp x6 x7: ret tang: mov a,5fh ;tang giay cjne a,#01h,y1 inc 60h mov a,60h cjne a,#60,y1 mov 60h,#00h y1: mov a,5fh ;tang phut cjne a,#02h,y2 inc 62h mov a,62h cjne a,#60,y2 mov 62h,#00h y2: mov a,5fh ;tang gio cjne a,#03h,y3 inc 64h mov a,64h cjne a,#24,y3 mov 64h,#00h y3: mov a,5fh ;tang thu cjne a,#04h,y4 inc 66h mov a,66h cjne a,#8,y4 mov 66h,#01h y4: mov a,5fh ;tang ngay cjne a,#05h,y5 inc 67h mov a,67h cjne a,#32,y5 mov 67h,#01h y5: mov a,5fh ;tang thang cjne a,#06h,y6 inc 68h mov a,68h cjne a,#13,y6 mov 68h,#01h y6: mov a,5fh ;tang nam cjne a,#07h,y7 inc 69h mov a,69h cjne a,#100,y7 mov 69h,#00h y7: ret giam: mov a,5fh ;giam giay cjne a,#01h,y8 dec 60h mov a,60h cjne a,#0ffh,y8 mov 60h,#59 y8: mov a,5fh cjne a,#02h,y9 dec 62h mov a,62h cjne a,#0ffh,y9 mov 62h,#59 y9: mov a,5fh cjne a,#03h,y10 dec 64h mov a,64h cjne a,#0ffh,y10 mov 64h,#23 y10: mov a,5fh cjne a,#04h,y11 dec 66h mov a,66h cjne a,#00h,y11 mov 66h,#7 y11: mov a,5fh cjne a,#05h,y12 dec 67h mov a,67h cjne a,#00h,y12 mov 67h,#31 y12: mov a,5fh cjne a,#06h,y13 dec 68h mov a,68h cjne a,#00h,y13 mov 68h,#12 y13: mov a,5fh cjne a,#07h,y14 dec 69h mov a,69h cjne a,#0ffh,y14 mov 69h,#99 y14: ret ktaolcd: clr tr0 clr tf0 mov tmod,#01 clr RS clr RW setb Enable mov tl0,#03h mov th0,#0ch mov datalcd,#38h lcall x1lcd lcall dl_lcd mov datalcd,#38h lcall x1lcd mov datalcd,#0ch lcall x1lcd mov datalcd,#01h lcall x1lcd lcall font ret writelcd: mov a,#0 movc a,@a+dptr cjne a,#99h,x2lcd ret x2lcd: mov datalcd,a acall data_byte inc dptr sjmp writelcd dl_lcd: setb tr0 clr tf0 jnb tf0,$ ret write1lcd: mov r0,#30h ht1: mov a,@r0 lcall h1 inc r0 cjne r0,#40h,ht1 ret h1: movc a,@a+dptr mov datalcd,a acall data_byte ret write2lcd: mov r0,#40h ht2: mov a,@r0 lcall h1 inc r0 cjne r0,#50h,ht2 ret font: mov datalcd,#40h acall x1lcd mov dptr,#0840h acall writelcd ret hang1: mov datalcd,#080h acall x1lcd mov dptr,#0800h acall write1lcd ret hang2: mov datalcd,#0c0h acall x1lcd mov dptr,#0800h acall write2lcd ret x1lcd: clr RS jmp dl1_lcd data_byte: setb RS nop dl1_lcd: clr RW clr Enable nop setb Enable nop mov datalcd,#0ffh setb RW clr RS clr Enable nop setb Enable lcall dl2_lcd ret dl2_lcd: mov 52h,#00 djnz 52h,$ ret dl3_lcd: mov 53h,#01h de2: mov 54h,#0ffh de1: mov 55h,#0ffh djnz 55h,$ djnz 54h,de1 djnz 53h,de2 ret ktaods: mov r0,#10 mov a,#00100000b movx @r0,a mov r0,#11 mov a,#06h movx @r0,a ret docgpg: mov r0,#00h mov r1,#60h ds1: movx a,@r0 mov @r1,a inc r1 inc r0 cjne r0,#10,ds1 ret hexbcd: mov a,60h mov b,#10 div ab mov 3bh,b ;d/vi giay mov 3ah,a ;chuc giay mov a,62h mov b,#10 div ab mov 38h,b ;d/vi phut mov 37h,a ;chuc phut mov a,64h mov b,#10 div ab mov 35h,b ;d/vi gio mov 34h,a ;chuc gio mov 43h,66h ;thu

Các file đính kèm theo tài liệu này:

  • docNOI DUNG BAO CAO.doc
  • docBIA.doc
  • docso do mach in.doc
  • docso do nguyen ly tong hop.doc
  • docso do nguyen ly.doc