đồ án môn vi điều khiển đồng hồ số

29 974 0
đồ án môn vi điều khiển đồng hồ số

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

 Bài Tập Kết Thúc Học Phần Môn: VI ĐIỀU KHIỂN Đề tài: Đồng Hồ Số   I-MỤC TIÊU ĐỀ TÀI - Nêu vấn đề: Cùng với sự phát triển của khoa học và công nghệ, các thiết bị điện tử đã, đang và sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong hầu hết các lĩnh vực khoa học kỹ thuật cũng như trong đời sống xã hội. Việc gia công, xử lý các tín hiệu điện-điện tử hiện đại đều dựa trên cơ sở nguyên lý số. các thiết bị làm việc dựa trên cơ sở nguyên lý số có ưu điểm hơn hẳn so với các thiết bị làm việc dưạ trên cơ sở nguyên lý tương tự, đặc biệt là trong kỹ thuật tính toán.  !!"##$%&'()(!*)+"&),-#./ 012-2!3"4-356718 !"9&)+#&1:!&);12 !"3)(!*<./=:#>)?5&)+)&!@#8 !"1A-)(!*!'BC-3( #?!&D< EF)D ngày nay những chíp vi xử lý cũng được ứng dụng rộng rãi trong nhiều lãnh vực, các họ 89XXX là một loại IC thích hợp cho các sinh viên mới bắt đầu tìm hiểu về vi xử lý. Các IC họ 89XXX có thể được ứng dụng trong khá nhiều mạch điện tử với khá nhiều chức năng. Một trong những mạch thông dụng có sử dụng IC họ 89XXX đó là mạch đồng hồ. Đề tài về đồng hồ rất đa dạng với nhiều chức năng khác nhau tùy vào khả năng lập trình và kiến thức về mạch số của người chế tạo. Mục tiêu của nhóm như sau : -Phần cứng: thiết kế được mạch điện hoàn chỉnh có thể hiện được giờ- phút trên led 7 đoạn. -Phần mềm: Sử dụng hợp ngữ để lập trình cho đồng hồ hiển thị, ứng dụng ngắt timer, ngắt ngoài. Sau khi lập trình hoàn chỉnh thì thời gian chạy chính xác như mong muốn. Giới hạn của đề tài trong phạm vi hiển thị giờ, phút. Không có hiển thị giây và ngày, tháng, năm. G  II-GIẢI QUYẾT VẤN ĐỀ 1. Phần cứng - đồ khối của hệ thống: - Hoạt động chung của hệ thống Bộ điều khiển vật lý gồm có 2 nút ấn start và stop. Khi ta ấn start thì khối CPU sẽ cho đồng hồ hoạt động và hiển thì ra led 7 đoạn. Khi ta ấn nút Stop thì đồng hồ sẽ ngưng hoạt động, nếu ta ấn Start nữa thì đồng hồ hoạt động lại nhưng bắt đầu từ 0000. - đồ nguyên lý chi tiết H CPU KHỐI XỬ LÝ VÀ ĐIỀU KHIỂN TRUNG TÂM KHỐI HIỂN THỊ BỘ ĐIỀU KHIỂN VẬT LÝ (NÚT ẤN)  - Thiết kế chi tiết: * Khối hiển thị Gồm 4 Led 7 đoạn – Anode chung – (LED7SEG) gắn thành cặp hiển thị theo dạng HH:MM (Giờ:Phút), ngăn giữa hai cặp HH và MM là 2 Led đơn (SEC).  Bốn Led 7 đoạn: • Có nhiệm vụ hiển thị phút và giờ. • Kiểu hiển thị được dùng là kiểu quét Led với tần số cố định và đều nhau nên độ sáng giữa các Led trước sau là như nhau. Các chân điều khiển nhận tín hiệu từ Vi điều khiển (4 chân ở Port0 – P0.3, P0.2, P0.1, P0.0 ứng với HH MM) tác động ở mức cao. Các chân a,b,…,g (ở đây không dùng đến dp nên sẽ không đề cập đến đoạn dp) nhận tín hiệu BCD từ Port1 của Vi điều khiển, tác động ở mức thấp. • Khi mới khởi động bốn Led này hiển thị 4 số 0. Khi ấn Start đồng hồ bắt đầu đếm 2 Led đầu hiển thị giờ, 2 Led sau hiển thị phút. Khi ấn Stop đồng hồ ngừng đếm, số giờ và phút được chốt lại và hiển thị trên 4 Led theo thứ tự HH MM (giờ phút). Khi muốn đồng hồ đếm lại chỉ cần ấn Start, số giờ phút sẽ trờ về 0 và bắt đầu đếm như cũ. Nếu sau khi đã ấn Start mà lại ấn Start nữa thì không có tác dụng  nhằm tránh trường hợp lỡ ấn trên hai lần vào nút Start làm đồng hồ bắt đầu không như mong muốn. Sau khi đồng hồ đã được chạy và được dừng bởi ấn nút Stop mà ta ấn Stop nữa thì cũng không có tác dụng, số trên đồng hồ chỉ được reset khi ấn nút Start.  Hai Led đơn (SEC) sẽ có tần số sáng tắt theo Giây (tần số 1Hz). Ngoài chức năng cho biết số Giây, hai Led đơn này còn cho ta biết khi nào đồng hồ đang đếm và khi nào đồng hồ ngừng đếm. Cụ thể là khi ta ấn Start hai Led này sẽ chớp tắt với tần số như trên, khi ấn Stop đồng hồ ngừng đếm và hai Led này cũng tắt không chớp nữa. I  * Khối CPU – Khối xử lý và điều khiển trung tâm  Để nhận, xuất, xử lý cũng như hiển thị ta cần một bộ điều khiển trung tâm (CPU). • Nhận tín hiệu điều khiển từ bộ điều khiển vật lý: vi điêu khiển nhận tín hiệu từ nút ấn ở hai chân P3.0 và P3.1 ở Port3 tương ứng với nút Start và nút Stop. Tín hiệu ở hai chân này lúc không ấn nút là ở mức cao, khi ấn là mức thấp. • Xử lý tín hiệu: Sau khi nhận tín hiệu từ nút ấn, vi điều khiển xem xét và đưa ra các kết quả tùy thuộc vào nút được ấn là nút nào mà sẽ cho đồng hồ ngừng chạy hay chạy, hay là reset. • Xuất tín hiệu: vi điều khiển được ta lập trình dùng bảng dữ liệu mã BCD cho Led 7 đoạn kiểu Cathod để điều khiển và hiển thị 4 Led 7 đoạn ở trên. Nguyên nhân dùng mã 7 đoạn kiểu Cathod là do bảng mã này đã được lập sẵn, ta không cần tốn công lập lại bảng mã kiểu Anode mà chỉ cần lấy đảo tín hiệu mã 7 đoạn kiểu Cathod thì sẽ được kết quả là mã 7 đoạn kiểu Anode. Bốn chân điều khiển tác động ở mức cao được điều khiển bởi Port0.  MSC51 là một giải pháp tốt và cũng nhằm phù hợp với yêu cầu của đề tài. Cụ thể AT89C52 – một loại vi điều khiển thuộc họ MSC51 của hãng Atmel. • AT89C52 về chức năng phần cứng cũng như phần mềm đều có thể đáp ứng được yêu cầu của đề tài. • Việc lập trình cũng như thực hiện lắp mạch nguyên lý khi ta dùng AT89C52 cũng không khác gì mấy so với các loại vi điều khiển khác cùng dòng MSC51. • Nguyên nhân dẫn đến sự lựa chọn này là ở sự đáp ứng tốt khả năng xuất nhập của các Port (có 4 Port) và ở bộ nhớ lưu trữ ROM 8K byte và RAM 256 byte. Bên cạnh đó sự chênh lệch về giá thành của AT89C52 với các loại vi điều khiển 8051 (như AT89C51) là không là bao. Do đó lựa chọn sử dụng AT89C52 là rất thiết thực. J  * Khối Điều khiển vật lý:  Để điều khiển việc hoạt động của đồng hồ ta dùng hai nút ấn thường hở 1 tần tiếp điểm. Để có thể nhận tín hiệu từ nút ấn này ta dùng 2 điện trở 330 Ω kéo dương giữa nút ấn và chân vi điều khiển nối với nút ấn như đồ nguyên lý. Phía còn lại của nút ta nối xuống MASS. Như vậy trạng thái bình thường – không ấn – thì tín hiệu vi điều khiểnđọc được sẽ là mức cao, khi ấn nút thì tín hiệu sẽ là mức thấp. • Nút Start: Có nhiệm vụ sau khi được ấn sẽ phát tín hiệu cho vi điều khiển biết để chạy đồng hồ. Khi được ấn, thời gian lưu trữ về giờ, phút, giây… sẽ được reset về ban đầu. • Nút Stop: Có nhiệm vụ sau khi được ấn sẽ phát tín hiệu cho vi điều khiển biết để ngừng đồng hồ, nếu như đồng hồ đang đếm. Bên cạnh đó nút Stop còn là nút để cho phép nút Start có tác dụng sau khi đã ấn Start rồi. Cụ thể: Sau khi ấn Start thì nút Start sẽ bị vô hiệu hóa và mất tác dụng, chỉ khi ấn Stop thì nút Start mới trở lại như cũ và có tác dụng như ban đầu. * Chú ý: Ngoài các khối được kể trên còn một số phần khối khác ta không nhắc đến nhưng được lắp vào mạch đó là: o Khối Reset cho vi điều khiển o Khối tạo xung cho vi điều khiển o Khối tạo nguồn 5V K  2. Phần mềm SƠ ĐỒ KHỐI: L MN =? O P .!&"! QQQ ERQNM ESQE ETSQET UTV UWEER UXM EYJSSS ISR_SCANLED Z)5/[Z!"9\ XR EYSSSS ISR_CLOCK N.!&"!Y] T^.^!QQQ NES STARTCLOCK N.!&"!Y] T^.^!QQQ NE STOPCLOCK MAIN   CHƯƠNG TRÌNH CHÍNH MAIN: Sau khi được cấp nguồn và được reset bởi mạch reset, vi điều khiển nhảy tới thực hiện lệnh Main, là lệnh chính trong chương trình. Sau khi nhảy tới Main là bước khởi động, sau đó là tiến trình kiểm tra phím ấn. Sau khi thực hiện xong việc kiểm tra phím ấn thì quay lại và tiếp tục kiểm tra phím ấn. Còn các việc khác được thực hiện trong các ngắt được cài đặt ở phần sau. Khởi động gồm: o Khởi động con trỏ Stack o Khởi động vùng đệm hiển thị Buff. Gồm bốn byte đều được reset về 0. o Biến nhớ điều khiển việc chạy/ngừng đồng hồ IsStart được đưa về 0. o Khởi động các biến nhớ thời gian đếm HH, MM, SS, MSS lần lượt là: giờ, phút, giây và MSS=SS/100 (phần trăm giây). Tất cả được reset về 0. o Khởi động hai biến nhớ phục vụ tối ưu hóa ấn phím ckStart và ckStop. Được reset về 0. o Reset chân SecTic (P3.4) là chân chớp tắt hai led có nhiệm vụ thể hiện sự dao động của số giây. o Khởi động ColLed và VarCol lần lượt là Port0 - xuất tín hiệu điều khiển 4 Led bảy đoạn - và biến nhớ tương ứng. ColLed là ánh xạ của VarCol. Việc _ MN =? O P .!&"! QQQ ERQNM ESQE ETSQET UTV UWEER MAIN  xoay Port0 để hiển thị Led 7 đoạn kiểu quét được thực hiện trên VarCol sau đó mới xuất ra ColLed. Nguyên nhân của việc này là nếu dùng xoay trực tiếp ColLed thì sau khi hiển thị thì tín hiệu mức cao đưa ra Led bị kéo xuống mức thấp do sụt áp cũng như do Led 7 đoạn đã tiêu thụ dòng làm mất tín hiệu (chứng minh bằng thực nghiệm). Nếu ta tiếp tục xoay thì Port0 (ColLed) sẽ toàn là tín hiệu mức thấp, vậy không thể điều khiển được led sáng nữa. o Cài đặt TMOD để sử dụng 2 Timer dùng cho ngắt Timer. o Cài đặt các khởi trị của 2 Timer o Cài đặt IE, cho phép ngắt 2 Timer và 2 ngắt ngoài o Bắt đầu khởi động 2 Timer `  Code lập trình cho khởi động: S -  QaGJJbHG - PcSQaS - PcQaS - PcGQaS - PcHQaS - QaS - QaS - QaS - QaS 1" N.!&"! 1" 5!&"! 1" 5! 1" ^E - 1X^BQaS ]SSSSSSS - &"1QaS  - 1QaI - ERQa ]^! E#^"S-&E#^"B^ - EXSQaSH - ESQaSdK ]E"&.&GJSS - EXQaSdS - EQaS_ ]E"&.&SSSS - NMQa_d ] ^ &!G&!&-&Ge#^" ^! ETS ]&!E#^"S ^! ET ]&!E#^" [...]... -End 27 Báo Cáo Vi Điều Khiển Mạch Đồng Hồ III KẾT LUẬN 1 Ưu điểm: Qua Kết quả thực tế ta thấy đồng hồ hoạt động tốt, cách sử dụng đơn giản, chính xác với yêu cầu thiết kế ban đầu như : + Khi ấn Start Thì đồng hồ bắt đầu điếm từ 0 + Khi ấn Stop thì đồng hồ ngưng => đồng hồ hoạt động với mức sai số không đáng kể 2 Nhược điểm: Do lâp trình bằng vi xử lý nên không thể đạt độ chính... Báo Cáo Vi Điều Khiển Mạch Đồng Hồ 10000CM Ở đây Timer1 không thay đổi gì khi tràn sau 10000CM ở các lần tràn tiếp Nhưng sau lần tràn đầu Timer0 được cài sẽ tràn sau 5000CM Vi c này sẽ làm cho 2 Timer tràn ở những thời gian khác nhau, không có vi c 2 Timer cùng tràn 1 lúc, đảm bảo cho tính chính xác của đồng hồ  CHƯƠNG TRÌNH CON CLOCK: GVHD: Nguyễn Khắc Nguyên 21 Báo Cáo Vi Điều Khiển Mạch Đồng Hồ INC(MSS)... cho vi c học tập, nghiên cứu nên ta vẫn sử dụng 2 ngắt ngoài này để kiểm chứng những gì ta đã học trong lý thuyết STARTCLOCK: Đơn giản chỉ Set bit IsStart để kích hoạt đồng hồ chạy, reset các biến thời gian HH, MM, SS, MSS và vùng đệm hiển thị STOPCLOCK: Clear bit IsStart để ngưng đồng hồ Code chương trình con STARTCLOCK và STOPCLOCK GVHD: Nguyễn Khắc Nguyên 15 Báo Cáo Vi Điều Khiển Mạch Đồng Hồ StartClock:... các Timer đồng nghĩa với giảm đi 10 CM cho các Timer Cho nên qua đây ta có thể chứng minh được rằng, đồng hồ dùng code lập trình như vậy sẽ chạy một cách chính xác và có thể nói nếu không có vấn đề khác xảy ra thì sai số có thể là bằng 0 Tuy nhiên, nếu 2 Timer0 và Timer1 cùng tràn 1 lúc, 2 lệnh ngắt được gọi cùng lúc thì đóđiều không thể, điều này dẫn tới sai số cho đồng hồ Để khắc phục điều này,...Báo Cáo Vi Điều Khiển Mạch Đồng Hồ MAIN_LOOP: Là vòng lặp chính của chương trình Trong vòng lặp này chỉ chứa một lệnh đó là gọi chương trình con SCANBUTTON Là lệnh kiểm tra nút ấn, SCANBUTTON được quét liên tục và lặp đi lặp lại Chương trình con SCANBUTTON: GVHD: Nguyễn Khắc Nguyên 11 Báo Cáo Vi Điều Khiển Mạch Đồng Hồ ckStart=1? Start=1? Yes Yes Start INT0, SetB... Nghĩa là: Sau 5000x4=20000 CM = 0.02s thì Led 7 đoạn này sẽ được sáng trở lại Điều này tương đương với tần số sáng là f=1/T=1/0.02=50Hz, đủ để mắt người có thể không phát hiện được có sự thay đổi giữa sáng và tắt 20000CM Led0 5000CM Led1 Led2 Led3 Biểu đồ xung cấp cho 4 led 7 đoạn GVHD: Nguyễn Khắc Nguyên 17 Báo Cáo Vi Điều Khiển Mạch Đồng Hồ Code chương trình phục vụ ngắt Timer0 ISR_SCANLED: ISR_ScanLed:... Báo Cáo Vi Điều Khiển Mạch Đồng Hồ  NGẮT TIMER1 ISR_CLOCK: VÀ CHƯƠNG TRÌNH PHỤC VỤ NGẮT Chương trình ngắt Timer1 là phần có thể nói là thiết yếu trong đề tài này, để quyết định độ chính xác cho đồng hồ tùy thuộc phần lớn vào vi c ta xử lý ngắt này Ở đây ta dùng ngắt Timer1 và chương trình phục vụ ngắt ISR_CLOCK Ngắt Timer1 hoạt động sau mỗi 10000CM Lý do ta con con số 10000CM là do đơn giản hóa vi c... SS=60? INC(MM) MM=60? INC(HH) CLOCK Để tính toán thời gian cho đồng hồ, ta sử dụng biến nhớ HH, MM, SS, MSS tương ứng với giờ, phút, giây, phần trăm giây GVHD: Nguyễn Khắc Nguyên 22 Báo Cáo Vi Điều Khiển Mạch Đồng Hồ MSS=SS/100 Như vậy mỗi lần gọi gọi lệnh CLOCK ta sẽ cộng thêm 1 vào MSS Nếu sau khi cộng 1 vào MSS mà MSS bằng 100 thì ta sẽ cộng thêm 1 vào SS và gán MSS bằng 0 Lệnh này được lặp lại cho đến... cũng có một số lổi làm cho hệ thống không chính xác như lúc đầu được (sai số do qua trình tính toán hoặc sai số của linh kiện) 3 Hướng phát triển: Bằng vi c ứng dụng kỹ thuật vi xử lý, chúng ta có thể thiết kế những hệ thống không những hiển thị được giờ-phút mà còn có thể hiển thị được lun cả giây, ngày, tháng, năm… và còn có thể phát triển nhiều loại đông hồ kiểu khác nữa như là đồng hồ hẹn giờ hay... Stop thì trong chương trình con Clock ta đặt vài dòng lệnh để Set ckStop, dòng lệnh đó đặt ngay trong vùng kiểm tra số Giây của đồng hồ Nghĩa là nút Stop sẽ có tác dụng trở lại sau 1 giây được ấn Code chương trình con SCANLED GVHD: Nguyễn Khắc Nguyên 13 Báo Cáo Vi Điều Khiển Mạch Đồng Hồ Main_Loop: Call ScanButton Jmp Main_loop ScanButton: Jb CkStart,CheckStop Jb Start,CheckStop SetB CkStart Clr SetB . khi nào đồng hồ đang đếm và khi nào đồng hồ ngừng đếm. Cụ thể là khi ta ấn Start hai Led này sẽ chớp tắt với tần số như trên, khi ấn Stop đồng hồ ngừng. ấn Stop đồng hồ ngừng đếm, số giờ và phút được chốt lại và hiển thị trên 4 Led theo thứ tự HH MM (giờ phút). Khi muốn đồng hồ đếm lại chỉ cần ấn Start, số giờ

Ngày đăng: 18/02/2014, 13:38

Hình ảnh liên quan

• Xuất tín hiệu: vi điều khiển được ta lập trình dùng bảng dữ liệu mã BCD cho Led 7 đoạn kiểu Cathod để điều khiển và hiển thị 4 Led 7 đoạn ở trên - đồ án môn vi điều khiển đồng hồ số

u.

ất tín hiệu: vi điều khiển được ta lập trình dùng bảng dữ liệu mã BCD cho Led 7 đoạn kiểu Cathod để điều khiển và hiển thị 4 Led 7 đoạn ở trên Xem tại trang 5 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan