Đề tài Thiết kế đồng hồ điện tử sử dụng cổng nối tiếp hiển thị bằng led 7 đoạn

Lời Nói Đầu Ngày nay, các vi điều khiển đã thâm nhập vào mọi lĩnh vực vủa đời sống từ dân sự, quân sự đến an ninh quốc phòng, có mặt trong hầu hết các ứng dụng hàng ngày từ những thiết bị nhỏ như điện thoại di động, máy nhắn tin, trò chơi điện tử, các thiết bị gia dụng (máy giặt, điều hòa, tủ lạnh.) đến những thiết bị lớn như ôtô, tàu thủy, xe lửa, máy bay, hệ thống mạng điện thoại, các bộ điều khiển tự động trong nhà máy, các bộ điều chỉnh trong nhà máy điện hạt nhân, trong các hệ thống điều khiển ánh sáng Với một loạt các ứng dụng thú vị trên, ở đây chúng em xin giới thiệu một ứng dụng nhỏ dùng vi điều khiển 8051 (cụ thể là vi điều khiển AT89S52) để thiết kế đồng hồ điện tử hiển thị bằng led 7 đoạn điều khiển bằng máy tinh. Do thời gian và trình độ còn hạn chế, còn thiếu kinh nghiệm thực tế nên không tránh khỏi những sai sót. Chúng em rất mong nhận được những ý kiến và đóng góp của các thầy cô và các bạn để chúng em có thể hoàn thiện thiết kế hơn nữa . Xin chân thành cảm ơn ! PHẦN 1 I,CẤU TRÚC VI ĐIỀU KHIỂN 8051 I-Giới thiệu tổng quan về họ 8051 (AT 89S52) Họ vi điều khiển 8051 (còn gọi là C51) là một trong những họ vi điều khiển thông dụng nhất. Đây là các bộ vi điều khiển 8 bít được sản xuất theo công nghệ CMOS. Một số loại vi điều khiển thuộc họ 8051 thông dụng nhất: AT89C2051, AT89C4051, AT89C51, AT89S52Trong đó AT89S52 là một bộ vi điều khiển thông dụng giá rẻ có nhiều chức năng và đặc biệt có tích hợp sẵn bộ nạp trên chíp. Bộ vi điều khiển AT89S52 gồm các khối chức năng chính sau đây: CPU (Central Processing Unit) bao gồm: - Thanh ghi tích luỹ A - Thanh ghi tích luỹ phụ B, dùng cho phép nhân và phép chia - Đơn vị logic học (ALU: Arithmetic Logical Unit) - Thanh ghi từ trạng thái chương trình (PSW: Progam Status Word) - Bốn băng thanh ghi - Con trỏ ngăn xếp Bộ nhớ chương trình (Bộ nhớ ROM) gồm 8Kb Flash. Bộ nhớ dữ liệu (Bộ nhớ RAM) gồm 256 bytes. Bộ UART (Universal Ansynchronous Receiver and Tranmitter) làm chức năng truyền nhận nối tiếp, nhờ khối này AT89S52 có thể giao tiếp với máy tính qua cổng COM. 3 bộ Timer /Counter 16 bít thực hiện các chức năng định thời và đếm sự kiện. WDM (Watch Dog Timer) được dùng để phục hồi lại hoạt động của CPU khi nó bị treo bởi một nguyên nhân nào đó. WDM ở AT89S52 gồm một bộ Timer 14 bít, một bộ Timer 7 bít, thanh ghi WDTPRG (WDT programable) điều khiển Timer 7 bit và một thanh ghi chức năng WDTRST (WDM register). Bình thường WDT không hoạt động (bị cấm), để cho phép WDT, các giá trị 1EH và E1H cần phải được ghi liên tiếp vào thanh ghi WDTRST. Timer 14 bit của WDT sẽ đếm tăng dần sau mỗi chu kỳ đồng hồ cho đến giá trị 16383 thì xảy ra tràn. Khi xảy ra tràn, chân RTS sẽ được đặt ở mức cao trong thời gian 96.Tosc (Tossc=1/Fosc) và AT89S52 sẽ được reset. Khi WDT hoạt động, ngoại trừ reset phần cứng và reset do WDT tràn thì không có cách nào cấm được WDT, vì vậy khi sử dụng WDT thì các đoạn mã chương trình phải được đặt trong các khe thời gian từ khi giữa các lần WDT được khởi tạo lại.

doc20 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3031 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Đề tài Thiết kế đồng hồ điện tử sử dụng cổng nối tiếp hiển thị bằng led 7 đoạn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bộ Công Thương Trường:Đại Học Công Nghiệp Hà Nội Khoa:Điện Tử ĐỒ ÁN MÔN HỌC ĐO LƯỜNG VÀ ĐIỀU KHIỂN BẰNG MÁY TÍNH ĐỀ TÀI:THIẾT KẾ ĐỒNG HỒ ĐIÊN TỬ SỬ DỤNG CỔNG NỐI TIẾP HIỂN THỊ BẰNG LED 7 ĐOẠN GVHD: VŨ THỊ THU HƯƠNG SVTH: PHAN XUÂN BẮC PHẠM TIẾN BÁCH NGUYỄN ĐỨC THÔNG NhËn xÐt cña gi¸o viªn h­íng dÉn ...................................................................................................................... ............................................................................................................................................................................................................................................ ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ...................................................................................................................... ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... Lời Nói Đầu Ngày nay, các vi điều khiển đã thâm nhập vào mọi lĩnh vực vủa đời sống từ dân sự, quân sự đến an ninh quốc phòng, có mặt trong hầu hết các ứng dụng hàng ngày từ những thiết bị nhỏ như điện thoại di động, máy nhắn tin, trò chơi điện tử, các thiết bị gia dụng (máy giặt, điều hòa, tủ lạnh….) đến những thiết bị lớn như ôtô, tàu thủy, xe lửa, máy bay, hệ thống mạng điện thoại, các bộ điều khiển tự động trong nhà máy, các bộ điều chỉnh trong nhà máy điện hạt nhân, trong các hệ thống điều khiển ánh sáng… Với một loạt các ứng dụng thú vị trên, ở đây chúng em xin giới thiệu một ứng dụng nhỏ dùng vi điều khiển 8051 (cụ thể là vi điều khiển AT89S52) để thiết kế đồng hồ điện tử hiển thị bằng led 7 đoạn điều khiển bằng máy tinh. Do thời gian và trình độ còn hạn chế, còn thiếu kinh nghiệm thực tế nên không tránh khỏi những sai sót. Chúng em rất mong nhận được những ý kiến và đóng góp của các thầy cô và các bạn để chúng em có thể hoàn thiện thiết kế hơn nữa... Xin chân thành cảm ơn ! PHẦN 1 I,CẤU TRÚC VI ĐIỀU KHIỂN 8051 I-Giới thiệu tổng quan về họ 8051 (AT 89S52) Họ vi điều khiển 8051 (còn gọi là C51) là một trong những họ vi điều khiển thông dụng nhất. Đây là các bộ vi điều khiển 8 bít được sản xuất theo công nghệ CMOS. Một số loại vi điều khiển thuộc họ 8051 thông dụng nhất: AT89C2051, AT89C4051, AT89C51, AT89S52… Trong đó AT89S52 là một bộ vi điều khiển thông dụng giá rẻ có nhiều chức năng và đặc biệt có tích hợp sẵn bộ nạp trên chíp. Bộ vi điều khiển AT89S52 gồm các khối chức năng chính sau đây: CPU (Central Processing Unit) bao gồm: - Thanh ghi tích luỹ A - Thanh ghi tích luỹ phụ B, dùng cho phép nhân và phép chia - Đơn vị logic học (ALU: Arithmetic Logical Unit) - Thanh ghi từ trạng thái chương trình (PSW: Progam Status Word) - Bốn băng thanh ghi - Con trỏ ngăn xếp Bộ nhớ chương trình (Bộ nhớ ROM) gồm 8Kb Flash. Bộ nhớ dữ liệu (Bộ nhớ RAM) gồm 256 bytes. Bộ UART (Universal Ansynchronous Receiver and Tranmitter) làm chức năng truyền nhận nối tiếp, nhờ khối này AT89S52 có thể giao tiếp với máy tính qua cổng COM. 3 bộ Timer /Counter 16 bít thực hiện các chức năng định thời và đếm sự kiện. WDM (Watch Dog Timer) được dùng để phục hồi lại hoạt động của CPU khi nó bị treo bởi một nguyên nhân nào đó. WDM ở AT89S52 gồm một bộ Timer 14 bít, một bộ Timer 7 bít, thanh ghi WDTPRG (WDT programable) điều khiển Timer 7 bit và một thanh ghi chức năng WDTRST (WDM register). Bình thường WDT không hoạt động (bị cấm), để cho phép WDT, các giá trị 1EH và E1H cần phải được ghi liên tiếp vào thanh ghi WDTRST. Timer 14 bit của WDT sẽ đếm tăng dần sau mỗi chu kỳ đồng hồ cho đến giá trị 16383 thì xảy ra tràn. Khi xảy ra tràn, chân RTS sẽ được đặt ở mức cao trong thời gian 96.Tosc (Tossc=1/Fosc) và AT89S52 sẽ được reset. Khi WDT hoạt động, ngoại trừ reset phần cứng và reset do WDT tràn thì không có cách nào cấm được WDT, vì vậy khi sử dụng WDT thì các đoạn mã chương trình phải được đặt trong các khe thời gian từ khi giữa các lần WDT được khởi tạo lại. II- Sơ đồ các chân và chức năng 1. Port 0 (P0.0-P0.7 hay từ chân 32 đến chân 39): Gồm 8 chân, 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 AT89S52 giao tiếp với thiết bị ngoài có kiến trúc Bus Hình 1: Cấu trúc của các chân trên Port 0 2. Port 1 (P1.0-P1,7 hay từ chân 1 đến chân 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 Hình 2: Cấu trúc của các chân trên Port 1 và Port 3 3. Port 2 (P2.0- P2.7 hay từ chân 21 đến chân 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. Hình 3: Cấu trúc của các chân trên Port 2 4. Port 3 (P3.0- P3.7 hay từ chân 10 đến chân 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 chức năng riêng: Bit Tên Chức năng 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 0 bên ngoài P3.3 INT1 Ngắt 1 bên ngoài P3.4 T 0 Ngõ vào của Timer/Counter 0 P3.5 T 1 Ngõ vào của Timer/Counter 1 P3.6 WR Xung ghi bộ nhớ dữ liệu bên ngoài P3.7 RD Xung đọc bộ nhớ dữ liệu bên ngoài 5. 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. 6. XTAL1, XTAL2: AT89S52 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ông thường là 12MHz. 7. 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. 8. 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ớ. 9. PSEN (Program Store Enable): PSEN là điều khiển để cho phép bộ nhớ chương trình mở rộng và trường được nố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) 10. Vcc, GND: AT89S52 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) II,CẤU TRÚC IC MAX 232 Bộ vi điều khiển AT89s52 có khả năng giao tiếp với thiết bị ngoài qua cổng nối tiếp. Vấn đề trở ngại duy nhất khi giao tiếp với máy tính là mức logic ở bộ vi điều khiển và ở cổng COM khác nhau cụ thể như sau: Đối tượng Mức logic Mức điện áp tương ứng Cổng COM (Mức RS232) 1 -12 V đến -3V 0 +3V đến +12V Vi Điều khiển (Mức TTL) 1 +5V 0 0V Khắc phục vấn đề này, người ta sử dụng vi mạch MAX 232 để chuyển đổi mức điện áp giữa 2 chuẩn. Vi mạch này có chứa hai bộ chuyển đổi mức logic từ TTL sang RS232 và ngược lại. Hình 6 là mạch giao tiếp giữa vi điều khiển với máy tính qua cổng RS232C sử dụng vi mạch đổi mức MAX232. Hình 6: Truyền thông qua cổng nối tiếp Như vậy thực chất của việc truyền thông qua cổng nối tiếp thực chất là việc truyền mã ASCII của ký tự.Để gửi cho máy tính các kí tự từ ‘0’ đến ‘9’ ta phải truyền mã ASCII của chúng lần lượt từ 0x30 đến 0x39. Để kiểm tra xem máy tính có nhận được các kí tự mà vi điều khiển truyền tới chưa, ta phải cho máy tính thi hành. Chương trình nhận số liệu qua cổng nối tiếp chương trình này có thể viết bằng ngôn ngữ lập trình Basic, Pascal, C, C++...Trong Windows có cung cấp sẵn cho chúng ta một công cụ truyền tin qua cổng nối tiếp là Hyper Terminal. PHẦN 2: THIẾT KẾ PHẦN CỨNG I,SƠ ĐỒ NGUYÊN LÝ II,SƠ ĐỒ MẠCH IN III,CHƯƠNG TRÌNH ĐIỀU KHIỂN 1,PHẦN VISUA BASIC Dim gio As Integer Dim phut As Integer Dim giay As Integer Dim ngay As Integer Dim thang As Integer Dim nam As Integer Dim N1 As Integer Dim N2 As Integer Dim N3 As Integer Dim N4 As Integer Private Sub Command1_Click() Text2.Text = Format(Now, "dd/mm/yyyy") End Sub Private Sub Command2_Click() If IsDate(Text2.Text) Then Date = Format(Text2.Text, "dd/mm/yyyy") Else MsgBox "LOI NHAP SAI NGAY" Text2.SetFocus Exit Sub End If End Sub Private Sub Command3_Click() Text4.Text = Format(Now, "hh:nn:ss ") End Sub Private Sub Command4_Click() If IsDate(Text4.Text) Then Time = Format(Text4.Text, "hh:nn:ss") Else MsgBox "LOI NHAP SAI GIO" Text4.SetFocus Exit Sub End If End Sub Private Sub Command6_Click() End End Sub Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.InputLen = 0 MSComm1.RThreshold = 1 MSComm1.SThreshold = 0 MSComm1.PortOpen = True Timer1.Enabled = True Timer2.Enabled = True End Sub Private Sub Timer1_Timer() Text3.Text = Format(Now, " hh:nn:ss") Text1.Text = Format(Now, " dd/mm/yyyy") If (Option1.Value = True) Then N4 = (Format(Now, "HH") \ 10) N3 = (Format(Now, "HH") Mod 10) N2 = (Format(Now, "nn") \ 10) N1 = (Format(Now, "nn") Mod 10) End If If (Option2.Value = True) Then N4 = (Format(Now, "nn") \ 10) N3 = (Format(Now, "nn") Mod 10) N2 = (Format(Now, "ss") \ 10) N1 = (Format(Now, "ss") Mod 10) End If If (Option3.Value = True) Then N4 = (Format(Now, "dd") \ 10) N3 = (Format(Now, "dd") Mod 10) N2 = (Format(Now, "mm") \ 10) N1 = (Format(Now, "mm") Mod 10) End If If (Option4.Value = True) Then N4 = (Format(Now, "mm") \ 10) N3 = (Format(Now, "mm") Mod 10) N2 = (Format(Now, "yy") \ 10) N1 = (Format(Now, "yy") Mod 10) End If End Sub Private Sub Timer2_Timer() dd1 = Val(N1) dd2 = Val(N2) dd3 = Val(N3) dd4 = Val(N4) 'bien doi cac so nguyen ve kieu ky tu X1 = Chr(dd1) X2 = Chr(dd2) X3 = Chr(dd3) X4 = Chr(dd4) 'truyen xuong mach MSComm1.Output = "@" MSComm1.Output = X1 MSComm1.Output = X2 MSComm1.Output = X3 MSComm1.Output = X4 End Sub 2,CODE C #include #include #include sbit LED1=P1^0; // quet led hang nghin sbit LED2=P1^1; // quet led hang tram sbit LED3=P1^2; // quet led hang chuc sbit LED4=P1^3; // quet led hang don vi int so4, so3,so2,so1,i,j,tg; unsigned char dem=0; unsigned char M[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; // ma led 7 thanh void timer0 (void) interrupt 1 { TH0=0xF8; TL0=0x40; switch(dem) { case 0: LED2=LED3=LED1=0; P0=M[so1]; LED4=1; // LED hang don vi break; case 1: LED1=LED2=LED4=0; P0=M[so2]; LED3=1; // LED hang chuc break; case 2: LED1=LED3=LED4=0; P0=M[so3]; LED2=1; // led hang tram break; case 3: LED4=LED2=LED3=0; P0=M[so4];; LED1=1; // led hang nghin break; } if(++dem==4)dem=0; } void main() { SCON=0x52; TMOD=0x20; TH1=TL1=-3; TR1=1; TH0=0xf8; TL0=0x30; TR0=1; ET0=EA=1; PT0=1; tg =10; while(1) { do { tg =_getkey(); } while(tg!='@'); so1=_getkey(); so2=_getkey(); so3=_getkey(); so4=_getkey(); } } PHẦN 3 KẾT LUẬN 1,ƯU ĐIỂM : - Mạch hiển thị đầy đủ các giá trị ngày, giờ, phút, giây, tháng, năm. - Mạch hiển thị rõ ràng các giá trị trên led 7 đoạn. - Thiết kế mạch nhỏ gọn dễ sử dụng. 2,NHƯỢC ĐIỂM : - Mạch hiển thi được 2 giá trị cùng một lúc nên muốn xem cái giá trị còn lại ta phải điều khiển. 3,ỨNG DỤNG : - Mạch thiết kế đơn giản hiển thị rõ ràng nên có thể ứng dụng làm đồng hồ điện tử trong thực tế. - Cơ cấu hiển thị số của mạch giúp nâng cao độ chính xác khi đọc giá trị. - Có thể nói trong khuôn khổ của một mạch đồng hồ điện tử chỉ sử dụng được rất ít hiệu năng làm việc của các linh kiện có trong mạch, vì vậy để mạch điện có thể ứng dụng rộng rãi trong thực tế ta có thể tích hợp thêm nhiều tính năng khác cho mạch, để mạch điện có hiệu năng làm việc cao và có nhiều ứng dụng. Bằng cách nâng cấp phần cứng và thay đổi phần mềm, mạch điện hoàn toàn có thể tích hợp thêm tính năng như hiển thị lịch vạn niên các giá trị giờ, phút, giây, ngày, tháng âm lịch cũng như dương lịch trên cùng một diện tích. Tài liệu tham khảo 1.Vi điều khiển cấu trúc lập trình và ứng dụng (Kiều Xuân Thực – Vũ Thị Thu Hương – Vũ Trung Kiên). 2.Giáo trình đo lường và điều khiển máy tính(Vũ Thị Thu Hương). 3. Họ vi điều khiển 8051 (Tống Văn On – Hoàng Đức Hải). 4. Internet: dientuvietnam.net diendandientu.com dientuvienthong.net

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

  • docThiết kế đồng hồ điện tử sử dụng cổng nối tiếp hiển thị bằng led 7 đoạn.doc