Thiết kế đồng hồ số LED 7 đoạn dùng VĐK 8051
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN KỸ THUẬT VI XỬ LÝ ĐỂ TÀI: Thiết kế đồng hồ số LED 7 đoạn dùng VĐK 8051 GV HƯỚNG DẪN: TRƯƠNG MINH HUY MỞ ĐẦU Ngày nay, các bộ vi điều khiển đang có những ứng dụng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực đời sống và xã hội. Hầu hết, các thiết bị kỹ thuật từ phức tạp cho đến đơn giản như thiết bị điều khiển tự động, thiết bị văn phòng cho đến các thiết bị trong gia đình đều có dùng các bộ vi điều khiển. Xuất phát từ thực tế đó, môn học kỹ thuật vi điều khiển là môn học không thể thiếu đối với bất kỳ sinh viên trường kỹ thuật nào nhất là các sinh viên các khoa Điện tử viễn thông, Công nghệ thông tin… Không chỉ cung cấp cho sinh viên kiến thức về vi điều khiển để xây dựng nên những hệ thống thiết bị kỹ thuật hiện đại. Mà nó còn là môn học căn bản để chúng ta hiểu rõ bản chất của việc xử lý các số liệu tính toán đang tồn tại từng giây, từng phút trong hàng triệu triệu con vi xử lý, vi điều khiển trên khắp thế giới này. Đem đên cái nhìn sâu sắc và hiểu biết sâu rộng về thế giới tin học, góp phần tạo nên sự say mê sáng tạo cho mỗi sinh viên yêu thích bộ môn khoa học kỹ thuật này. Đồ án môn học Kỹ thuật vi xử lý dựa trên việc sử dụng vi điều khiển 8051 cũng không nằm ngoài mục đích nâng cao sự hiểu biết, củng cố lý thuyết cho mỗi sinh viên. Tạo cho sinh viên tinh thần làm việc nhóm để đạt được một mục đích chung: Làm một đồ án hiệu quả, chất lượng! Trang 2 MỤC LỤC: 1. THIẾT KẾ 4 1. Nguyên lý hoạt động 4 2. Thiết kế mạch 5 3. Thiết kế dữ liệu 6 4. Lưu đồ thuật toán 8 4.1 Chương trình con phục vục ngắt 8 4.2 Xử lý bấm phím 17 2. TOÀN BỘ CODE ĐỒNG HỒ 22 Trang 3 1. THIẾT KẾ 1. Nguyên lý hoạt động - Đồng hồ được thiết kê theo nguyên lý quét LED để tận dụng các chân của VĐK 8051. - Có tất cả 6 LED dùng để hiển thị giờ, phút, giây được đánh số từ 0 đến 5 từ giây đơn vị, giây chục cho đến giờ chục - Để quét các LED với tần số 25Hz (mắt người không phân biệt được độ nháy), ta phải quét mỗi led 7 đoạn với thời gian quét được tính theo công thức: 1/(25*6 LED*2) ~ 3333 uS. Từ đó ta tính được giá trị của TH0TL0: FFFF(65535) – D05(3333) + 1 = F2FB tức là TH0 = F2h và TL0 = FBh. Ở đây ta sử dụng chế độ 1 tức chế độ định thời 16 bít không tự nạp của timer0 vì ta cần đếm 3333 lần vượt xa giới hạn của chế độ 8bit tự nạp của bộ định thời 8051. - Với 300 lần quét LED (mỗi LED được quét 50 lần 1s) không thể chứa vào 1 byte với số lần đếm lớn nhất chỉ là 256. Ta chia 300 lần thành 2 biến, một biến đếm 75 lần và một biến 4 lần. Tổng hợp lại ta có 300 lần. Ý đồ của việc chia một biến đếm đến 75 lần chính là để tạo chu kì nhấp nháy ½s dùng trong việc đánh dấu vị trí chỉnh giờ và hẹn giờ, hoặc để set nhấp nháy dãy LED báo thức ở P1. - Khi mới khỏi động giá trị thông số mặc định là: 00h00m00s. Giờ hẹn: 00h.00m. Hẹn giờ được tắt. - Đồng hồ có tất cả 4 nút bấm: nút chỉnh giờ, nút hẹn giờ, nút giảm/tắt báo thức, nút tăng/bật báo thức. - Khi ta bấm nút chỉnh giờ ở vị trí hiện hành, phút sẽ nháy để báo vị trí điều chỉnh phút, bấm tăng hoặc giảm để thay đổi giá trị. Bấm nút chỉnh giờ lần thứ 2, giờ sẽ nháy để báo vị trí điều chỉnh giờ, ta có thể thay đổi giờ bằng phím tăng hoặc giảm. Bấm lần thứ 3 quay về chế độ hiển thị bình thường - Khi ta bấm nút hẹn giờ lần 1 tương tự như chỉnh giờ, nhưng lúc này thông số giờ hẹn sẽ được thay thế cho giờ hiện hành. Lúc này chỉ có giờ và phút hẹn giờ là hiển thị trên 6 LED, phút hẹn giờ nhấp nháy. Bấm lần 2 chuyển qua chỉnh giờ hẹn, giờ hẹn giờ nhấp nháy. Dùng nút tăng hay giảm để thay đổi thông số. Bấm lần 3 để thoát ra khỏi chế độ chỉnh giờ - Tại thời điểm xem giờ hiện hành, nút tăng và giảm có chức năng khác. Nút giảm dùng để tắt báo thức, và nút tăng dùng để bật báo thức - Dãy đèn LED sẽ bật sáng khi chúng ta bật báo thức, tắt khi chúng ta tăt báo thức, chớp nháy khi đã đến giờ báo thức Trang 4 2. Thiết kế mạch Trang 5 3. Thiết kế dữ liệu Chúng ta có tất cả các hằng chỉ vị trí các biến dữ liệu như sau: Qui định chân quét 6 LED 7 đoạn. Những thông số hằng này phải tương ứng với mạch bên ngoài: GIAY_DVI EQU P0.0 GIAY_CHUC EQU P0.1 PHUT_DVI EQU P0.2 PHUT_CHUC EQU P0.3 GIO_DVI EQU P0.4 GIO_CHUC EQU P0.5 Dữ liệu ra các LED 7 đoạn và dữ liệu ra các LED đơn dùng để báo thức: DATA_LED EQU P2 ALARM_LED EQU P1 Các nút bấm gồm các: nút chỉnh giờ, nút hẹn giờ, nút giảm/tắt báo thức, nút tăng/bật báo thức: BT_CGIO EQU P3.0 BT_HGIO EQU P3.1 BT_GIAM EQU P3.2 BT_TANG EQU P3.3 Các biến lưu thời gian hiện hành và lưu thời gian báo thức: GIO EQU 30H ; THONG SO THOI GIAN PHUT EQU 31H GIAY EQU 32H GIO_AL EQU 33H ; THONG SO BAO THUC PHUT_AL EQU 34H Các biến 1 bit chỉ định các chế độ hiện hành và cờ báo thức: MODE_CGIO EQU 00H MODE_HGIO EQU 01H SET_ALARM EQU 02H Các biến 1 bit để kiểm soát việc nhấp nháy giờ hay phút dùng trong việc điều chỉnh giờ hiện hành hay giờ hẹn: NN_PHUT EQU 03H NN_GIO EQU 04H Trang 6 Các biến đếm kết hợp tạo ra 300 lần, biến DEM đến 75 lần, và biến DEM0 đếm 4 lần: DEM EQU 38H DEM0 EQU 39H Trang 7 4. Lưu đồ thuật toán 4.1 Chương trình con phục vục ngắt Trang CTC phục vụ ngắt Timer0 - Tắt Timer0 - Thiết lập lại giá trị TH, TL - Bật Timer0 Kiểm tra hẹn giờ Hiển thị đồng hồ Điều chỉnh giờ, phút, giây RETI 8 Trang Kiểm tra hẹn giờ SET_ALAR M? RET DEM=74 PHUT_AL= PHUT GIO_AL= GIO Tắt alarm LED Đảo alarm LED Bật alarm LED Đ Đ Đ Đ S S S S 9 Trang Hiển thị đồng hồ Gọi hàm thiết lập chu kì nhấp nháy cho các biến NN_PHUT hoặc NN_GIO MODE_CGI O? MODE_HGI O? Hiển thị giờ phút giây RET Đ S S Đ Thiết lập nhấp nháy phút hoặc giờ Đảo NN_PHUT DEM=7 4 VT_TD =0 RET Đảo NN_GIO Đ S S Đ 10 [...]... INC VI_TRI RET Trang 11 Hiển thị giây đơn vị Tắt hết các LED 7 đoạn MODE_HGI O? Đ S Bật LED giây đơn vị - MOV A,GIAY - ACALL HT_DVI RET Hiển thị giây chục Tắt hết các LED 7 đoạn MODE_HGI O? Đ S Bật LED giây chục - MOV A,GIAY - ACALL HT_CHUC RET Trang 12 Hiển thị phút đơn vị NN_PHUT =1 Tắt hết các LED 7 đoạn Đ S Bật LED phút đơn vị MOV A,PHUT S MODE_HGI O Đ MOV A,PHUT_AL ACALL... Hiển thị phút chục NN_PHUT =1 Tắt hết các LED 7 đoạn Đ S Bật LED phút chục MOV A,PHUT S MODE_HGI O Đ MOV A,PHUT_AL ACALL HT_CHUC RET Trang 13 Hiển thị giờ đơn vị NN_GIO=1 Tắt hết các LED 7 đoạn Đ S Bật LED giờ đơn vị MOV A,GIO S MODE_HGI O Đ MOV A,GIO_AL ACALL HT_DVI RET Hiển thị giờ chục NN_GIO=1 Tắt hết các LED 7 đoạn Đ S Bật LED giờ chục MOV A,GIO S MODE_HGI O Đ MOV A,GIO_AL... M? Đ Delay, xóa cờ hẹn giờ S S BT_TAN G? Đ Delay, thiết lập cờ hẹn giờ Trang 17 Chế độ chỉnh giờ - MODE_CGIO = 1 - VT_TD = 0 - Gọi hàm thiết lập R0 - Delay BT_CGI O? Đ - NN_PHUT = 0 - INC VT_TD Gọi hàm thiết lập R0 Đ Delay, gọi hàm giảm thông số trong R0 S BT_TAN G? Đ S S BT_GIA M? VT_TD =2 Đ Delay, gọi hàm tăng thông số trong R0 - MODE_CGIO = 0 - NN_GIO = 0 RET S Trang... hàm thiết lập R0 BT_HGI O? Đ - Delay - NN_PHUT = 0 - INC VT_TD Gọi hàm thiết lập R0 Đ Delay, gọi hàm giảm thông số trong R0 S BT_TAN G? Đ S S BT_GIA M? VT_TD =2 Đ Delay, gọi hàm tăng thông số trong R0 - MODE_HGIO = 0 - NN_GIO = 0 RET S Trang 19 Thiết lập R0 Đ MODE_CGI O S S VT_TD =0 Đ Đ VT_TD =0 S MOV R0, #GIO_AL MOV R0, #PHUT MOV R0, #GIO RET MOV R0, #PHUT_AL Trang 20 Giảm thông số. .. #GIO RET MOV R0, #PHUT_AL Trang 20 Giảm thông số trong R0 VT_TD =0 Đ @R0 = 0 S Đ MOV @R0,#59 S @R0 = 0 S DEC @R0 Đ MOV @R0,#23 RET Tăng thông số trong R0 VT_TD =0 Đ @R0 = 59 S Đ S MOV @R0,#0 @R0 = 23 S INC @R0 Đ MOV @R0,#0 RET Trang 21 2 TOÀN BỘ CODE ĐỒNG HỒ Trang 22 ... A,GIO_AL ACALL HT_DVI RET Hiển thị giờ chục NN_GIO=1 Tắt hết các LED 7 đoạn Đ S Bật LED giờ chục MOV A,GIO S MODE_HGI O Đ MOV A,GIO_AL ACALL HT_CHUC RET Trang 14 Điều chỉnh giờ, phút, giây DEM= 74 S Đ - DEM = 0 - INC DEM0 DEM0= 4 S Đ - Gọi hàm điều chỉnh thời gian - DEM0 = 0 INC DEM RET Trang 15 Điều chỉnh thời gian INC GIAY GIAY=6 0 S Đ - GIAY = 0 - INC PHUT S PHUT=6 0 RET Đ - PHUT = . BỘ CODE ĐỒNG HỒ 22 Trang 3 1. THIẾT KẾ 1. Nguyên lý hoạt động - Đồng hồ được thiết kê theo nguyên lý quét LED để tận dụng các chân của VĐK 8051. - Có tất cả 6 LED dùng để. BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN KỸ THUẬT VI XỬ LÝ ĐỂ TÀI: Thiết kế đồng hồ số LED 7 đoạn dùng VĐK 8051 GV HƯỚNG DẪN: TRƯƠNG MINH HUY MỞ ĐẦU Ngày nay, các bộ vi điều. Trang 4 2. Thiết kế mạch Trang 5 3. Thiết kế dữ liệu Chúng ta có tất cả các hằng chỉ vị trí các biến dữ liệu như sau: Qui định chân quét 6 LED 7 đoạn. Những thông số hằng