Đồng hồ kỹ thuật số hiển thị lên LCD

26 451 0
Đồng hồ kỹ thuật số hiển thị lên LCD

Đ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

Đồng hồ kỹ thuật số hiển thị lên LCD sử dụng PIC 16F877A.Bài báo cáo trình bày mạch đồng hồ hiển thị thời gian thông qua việc sử dụng ngôn ngữ lập trình C trên PIC C Compiler và những kiến thức cơ bản về thiết kế hệ thống nhúng. Trước hết, bài báo cáo sẽ trình bày về những đặc tính cơ bản của sản phẩm. Nhìn chung, mạch được tạo thành từ các thành phần linh kiện khá phổ biến trong việc thiết kế hệ thống nhúng như vi xử lý PIC16F877A, màn hình LCD, nút nhấn cùng với các linh kiện cơ bản như điện trở, tụ điện…

BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Mục Lục BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Lời mở đầu Ngày nay, khoa học cơng nghệ kỹ thuật đóng vai trò quan trọng đời sống người Bên cạnh đó, thời gian ln trở thành tài sản q mong muốn tận dụng cách tối đa Tuy nhiên, việc quản lý thời gian cách hiệu vấn đề nan giải cần giải cách triệt để đề tài mà nhóm ln muốn tìm cách giải Kết hợp với kiến thức thiết kế lập trình hệ thống nhúng, nhóm định lựa chọn đề tài “Thiết kế đồng hồ lịch điện tử PIC hay AVR” Đề tài nhóm em chọn thực PIC16F877A, thực khoảng thời gian tháng với hỗ trợ kiến thức lập trình C, thiết kế mơ mạch Hơn nữa, nhóm tận dụng khả vi xử lý PIC16F877A để giải vấn đề phát sinh q trình thực Kết nhận khả quan thành phẩm thị thời gian cách chi tiết điều chỉnh thơng qua nút nhấn Trong tương lai, sản phẩm hồn tồn phát triển xa với tính báo thức, thiết lập lịch làm việc… nhằm đáp ứng nhu cầu quản lý thời gian mà người mong muốn Giới thiệu chung Bài báo cáo trình bày mạch đồng hồ hiển thị thời gian thơng qua việc sử dụng ngơn ngữ lập trình C PIC C Compiler kiến thức thiết kế hệ thống nhúng Trước hết, báo cáo trình bày đặc tính sản phẩm Nhìn chung, mạch tạo thành từ thành phần linh kiện phổ biến việc thiết kế hệ thống nhúng vi xử lý PIC16F877A, hình LCD, nút nhấn với linh kiện điện trở, tụ điện… Ngồi ra, báo cáo trình bày cách thức mơ Proteus thiết kế mạch in thơng qua ứng dụng Orcad, đó, việc thiết kế mạch in đóng vai trò quan trọng hết chất lượng sản phẩm phụ thuộc vào yếu tố Tiếp theo, sơ đồ khối với thuật tốn dành cho sản phẩm giới thiệu Về bản, mạch đồng hồ sử dụng Timer0 vi xử lý PIC để tạo đếm giây cho thành phần khác hoạt động Thêm vào đó, thuật tốn dành cho hình LCD nút nhấn trọng kĩ phần đóng vai trò quan trọng việc khẳng định hiệu thiết bị Cơng cụ sử dụng Trong q trình thực đồ án này, sản phẩm hình thành thơng qua việc sử dụng phần mềm hữu ích sau đây: • • • PIC C Compiler, hỗ trợ viết mã biên dịch mã nguồn thành file hex Proteus 8.0, hỗ trợ mơ sản phẩm Orcad 10.5, hỗ trợ thiết kế mạch in hồn thiện sản phẩm Nội Dung Đặc tính sản phẩm BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Sản phẩm thiết kế đồng hồ điện tử có khả hiển thị thời gian Cụ thể hơn, mạch có khả hiển thị thời gian với thơng số: ngày – tháng – năm - phút – giây Ngồi ra, người dùng thực việc điều chỉnh thơng số thơng qua nút nhấn Để thực tính trên, sản phẩm sử dụng giao tiếp với hình LCD để hiển thị thời gian với định timer0 chip xử lý PIC16F877A để tạo đếm giây Ngồi ra, đề cập trên, sản phẩm có sử dụng nút nhấn để nhập thơng tin thời gian mà người dùng mong muốn Sau hồn thành q trình nhập, thời gian hiển thị phù hợp với u cầu người dùng Đặc tính kĩ thuật: Nút nhấn PIC16F877A LCD Hiển thị thời gian Tạo xung Hình 1: Sơ đồ hoạt động tổng qt Sản phẩm sử dụng đầu thành phần linh kiện sau để thực chức năng: a Nút nhấn: Trong mạch thiết kế, sản phẩm sử dụng bốn nút nhấn với tên gọi SET TIME, UP, DOWN RESET Mỗi nút nhấn có chức riêng biệt sau: • • • • SET TIME: thiết lập thời gian cho thơng số hiển thị đồng hồ UP: tăng giá trị thơng số tùy chỉnh lên với phút giây, tháng năm tang thứ tự ngày tuần DOWN: giảm giá trị thơng số tùy chỉnh xuống với phút giây, tháng, năm giảm thứ tự ngày tuần RESET: trả giá trị ban đầu b Vi xử lý PIC16F877A: BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 2: Sơ đồ chân Vi xử lý PIC16F877A Về bản, PIC viết tắt Programmable Intelligent Computer, hãng General Instrument đặt tên cho sản phẩm xử lý họ Hiện nay, thị trường có nhiều họ vi điều khiển 8051, ARM, v.v họ vi điều khiển PIC ưa chuộng nhiều lý do: • • • • Họ vi điều khiển dễ dàng tìm thấy thị trường Việt Nam Giá thành phù hợp với nhu cầu học hỏi sinh viên Có đầy đủ tính vi điều khiển hoạt động độc lập Là bổ sung tốt kiến thức ứng dụng cho họ vi điều khiển mang tính truyền thống 8051 Ngồi ra, hỗ trợ nhà sản xuất trình biên dịch (PIC C Compiler, MickroC), cơng cụ lập trình, nạp chương trình dành cho họ sản phẩm đa dạng, PIC lựa chọn hồn hảo để xây dựng mơ hình sản phẩm Cụ thể hơn, PIC16F877A có tập lận gồm 35 lệnh có độ dài 14 bit Mỗi lệnh thực thi chu kì xung clock Tốc độ tối đa cho phép 20MHz với chu kì lệnh 200ms Bộ nhớ chương trình 8k x 14 bit, nhớ liệu 368 x byte RAM nhớ liệu EEPROM với dung lượng 258 x byte Sổ PORT I/O với 33 chân I/O BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 3: Sơ đồ khối Vi xử lý PIC16F877A Ngồi ra, đặc tính ngoại vi sản phẩm bao gồm khối chức sau: • • • • • • • Timer0: đếm bit với chia tần số bit Timer1: đếm 16 bit với chia tần số, thực chức đếm dựa vào xung clock ngoại vi vi điều khiển hoạt động chế độ ngủ Timer2: đếm bit với chia tần số, postcaler Hai Capture/so sánh/điều chế độ xung Các chuẩn giao tiếp SSP (Synchronous Serial Port), SPI I2C Chuẩn giao tiếp nối USART với địa bit Cổng giao tiếp song song PSP (Parallel Slave Port) với chân điều khiển RD, WR, CS bên ngồi Ngồi ra, nhắc tới đặc tính Analog sau: • • kênh chuyển đổi ADC 10bit Hai so sánh BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM • • • • • • • • Bộ nhớ flash với khả ghi xóa 100,000 lần Bộ nhớ EEPROM với khả xóa 1,000,000 lần Dữ liệu nhớ EEPROM lưu trữ 40 năm Khả tự nạp chương trình với điều khiển phần mềm Watchdog Timer với dao động Chức bảo mật mã chương trình Chế độ Sleep Có thể hoạt động với nhiều dạng Oscillator khác c Khối hiển thị LCD: Màn hình LCD đóng vai trò hiển thị thơng số thời gian ngày tháng năm – phút giây d Khối nguồn: Để mạch hoạt động cách hiệu quả, sản phẩm sử dụng nguồn 5V cung cấp từ adapter USB kết nối với máy tính Ở đây, nhóm chọn nguồn cung cấp cho mạch từ cổng USB e Các thành phần khác: Ngồi ra, để thực mạch hoạt động thực chức điều chỉnh thời gian, sản phẩm sử dụng thêm linh kiện biến trở, điện trở, nút nhấn f u cầu: Mạch hoạt động cách hiệu thời gian hiển thị phù hợp với thời gian chuẩn theo GMT Để thực điều này, ta cần tạo đếm thời gian giây để đồng hồ hoạt động Ngồi ra, người dùng hồn tồn điều chỉnh thời gian theo ý muốn xóa tất thiết lập ban đầu để thiết lập hồn tồn Hơn nữa, sản phẩm phải có giao diện thiết kế đẹp, dễ nhìn hút Đặc tính phần cứng: a Sơ đồ mơ sơ đồ khối mạch: Trước tiên, q trình mơ thực để kiểm tra hoạt động mã nguồn chương trình Sơ đồ mơ mạch thiết kế sau: BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 4: Sơ đồ mạch mơ Proteus Sau đó, để thực sản phẩm, mạch thiết kế với mơ hình ngun lý hoạt động sau đây: Hình 5: Sơ đồ hoạt động mạch BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Vi xử lý PIC16F877A có tần số 20 MHz Ngồi ra, mạch sử dụng định timer0 để tạo đếm giây cho đồng hồ Hơn nữa, mạch nhận thơng tin điều chỉnh thời gian thơng qua nút nhấn thơng tin đầu vào đưa vào cổng E Thơng tin đầu sử dụng cổng D để hiển thị lên LCD Hình 6: Sơ đồ khối hiển thị LCD Khối LCD sử dụng mạch LCD 16 chân: đó, mạch sử dụng chân 1, 2, 3, 4, 5, 6, 11, 12, 13, 14, 15, 16 để hiển thị thời gian Ngồi ra, thành phần tích hợp thêm biến trở để điều khiển độ sáng hình Thạch anh với tần số 20MHz đưa vào chân số 13 OSC1/CLKIN 14 OSC2/CLKOUT tạo xung clock cho đồng hồ Điện trở sử dụng mạch có giá trị 4.7K b Nguồn Hình 7: Sơ đồ nguồn Ngun lý hoạt động bản: Mạch bắt đầu hoạt động cung cấp nguồn 5V thơng qua dây kết nối USB với máy tính cá nhân adapter Khi cấp nguồn cho mạch, vi xử lý PIC16F877A bắt đầu đếm thời gian Ngồi ra, bắt đầu khởi động, giá trị ban đầu 00:00:00 Do đó, để điều chỉnh thời gian, người dùng sử dụng nút nhấn SET TIME, UP, DOWN Khi đó, mạch sử BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM dụng thuật tốn điều chỉnh thời gian xác định năm nhuận để thực xác lập thời gian hiển thị Đặc tính phần mềm a Đồng hồ hoạt động nào? Về bản, đồng hồ hiển ghị ngày – tháng – năm – phút – giây bao gồm thơng số với tầm hoạt động sau đây: • • • • • • Giây: – 59 Phút: – 59 Giờ: – 23 Ngày: SUN – MON – TUE– WED – THU – FRI – SAT tương ứng với chủ nhật, thứ hai, thứ ba, thứ tư, thứ năm, thứ sáu, thứ bảy tuần – tương ứng với ngày tuần Số ngày: – 28/29/30/31 với cận tương ứng với tháng năm Tháng: – 12 Như vậy, để đồng hồ hoạt động, biến giây đồng hồ bắt đầu đếm từ đến 59 Khi đó, biến phút cộng lên 1; đồng thời, biến giây trả lại tiếp tục q trình đếm Sau đó, biến phút tăng từ đến 59; đó, thơng số tăng lên thơng số phút bắt đầu đến lại Tiếp theo, biến đếm từ giá trị đạt 23, ngày số ngày tăng lên đếm lại với giá trị Ngồi ra, thơng số ngày tăng lên mốc tối đa 7, ứng với thứ sau giá trị bắt đầu lại từ (ứng với chủ nhật) Trong đó, thơng số số ngày tăng từ tới 28/29/30/31 với cận tương ứng với tháng năm năm nhuận hay khơng Giả sử tháng nói tới tháng 1, 3, 5, 7, 8, 10 12 số ngày tối đa 31; tháng 4, 6, 9, 10 11 số ngày 30 Nếu tháng tháng năm thường số ngày 28 tháng năm nhuận 29 ngày Khi số ngày tháng đạt mức tối đa, giá trị tháng tăng lên số ngày bắt đầu lại từ Cuối cùng, tháng 12 sau đó, số năm tăng lên giá trị tháng bắt đầu lại b Cách tạo đếm thời gian? Để đồng hồ hoạt động, ta cần tạo đếm thời gian cập nhật thời gian để liên tục đếm hiển thị lên hình LCD Có nhiều cách thực nhiệm vụ này, bật hai cách thức : sử dụng Real Time Clock IC (IC thời gian thực) sử dụng Timer PIC16F877A Dựa u cầu đồ án , phương án thứ hai lựa chọn để thực  Sử dụng Timer PIC16F877A : Timer0 : Đây ba đếm đònh thời vi điều khiển PIC16F877A Timer0 đếm bit kết nối với chia tần số (prescaler) bit Cấu trúc Timer0 cho phép ta lựa chọn xung clock tác động cạnh tích cực xung clock Ngắt Timer0 xuất Timer0 bò tràn Bit TMR0IE (INTCON) bit điều khiển Timer0 TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IF= không cho phép ngắt Timer0 tác động Sơ đồ khối Timer0 sau: BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 8: Sơ đồ khối Timer0 Muốn Timer0 hoạt động chế độ Timer ta clear bit TOSC (OPTION_REG), giá trò ghi TMR0 tăng theo chu kì xung đồng hồ (tần số vào Timer0 ¼ tần số oscillator) Khi giá trò ghi TMR0 từ FFh trở 00h, ngắt Timer0 xuất Thanh ghi TMR0 cho phép ghi xóa giúp ta ấn đònh thời điểm ngắt Timer0 xuất cách linh động Muốn Timer0 hoạt động chế độ counter ta set bit TOSC (OPTION_REG) Khi xung tác động lên đếm lấy từ chân RA4/TOCK1 Bit TOSE (OPTION_REG) cho phép lựa chọn cạnh tác động vào đếm Cạnh tác động cạnh lên TOSE = cạnh tác động cạnh xuống TOSE = Khi ghi TMR0 bò tràn, bit TMR0IF (INTCON) set Đây cờ ngắt Timer0 Cờ ngắt phải xóa chương trình trước đếm bắt đầu thực lại trình đếm Ngắt Timer0 “đánh thức” vi điều khiển từ chế đo sleep Ngoài ra, chia tần số (prescaler) chia sẻ Timer0 WDT (Watchdog Timer) Điều có nghóa prescaler sử dụng cho Timer0 WDT hỗ trợ prescaler ngược lại Prescaler điều khiển ghi OPTION_REG Bit PSA (OPTION_REG) xác đònh đối tượng tác động prescaler Các bit PS2:PS0 (OPTION_REG) xác đònh tỉ số chia tần số prescaler Xem lại ghi OPTION_REG để xác đònh lại cách chi tiết bit điều khiển Các lệnh tác động lên giá trò ghi TMR0 xóa chế độ hoạt động prescaler Khi đối tượng tác động Timer0, tác động lên giá trò ghi TMR0 xóa prescaler không làm thay đổi đối tượng tác động prescaler Khi đối tượng tác động WDT, lệnh CLRWDT xóa prescaler, đồng thời prescaler ngưng tác vụ hỗ trợ cho WDT 10 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM tục trình đếm vi điều khiển chế độ sleep ngắt Timer1 tạo bò tràn có khả “đánh thức” vi điều khiển Ở chế độ đếm bất đồng bộ, Timer1 sử dụng để làm nguồn xung clock cho khối CCP (Capture/Compare/Pulse width modulation) Khi T1SYNC =0 xung đếm vào Timer1 đồng hóa với xung clock bên Ở chế độ Timer1 không hoạt động vi điều khiển chế độ sleep Các ghi liên quan đến Timer1 bao gồm: • • • • • INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE PEIE) PIR1 (đòa 0Ch): chứa cờ ngắt Timer1 (TMR1IF) PIE1( đòa 8Ch): cho phép ngắt Timer1 (TMR1IE) TMR1L (đòa 0Eh): chứa giá trò bit thấp đếm Timer1 TMR1H (đòa 0Eh): chứa giá trò bit cao đếm Timer1 T1CON (đòa 10h): xác lập thông số cho Timer1 Timer2: Hình 10: Sơ đồ hoạt động Timer2 Timer2 đònh thời bit hỗ trợ hai chia tần số prescaler postscaler Thanh ghi chứa giá trò đếm Timer2 TMR2 Bit cho phép ngắt Timer2 tác động TMR2ON (T2CON) Cờ ngắt Timer2 bit TMR2IF (PIR1) Xung ngõ vào (tần số ¼ tần số oscillator) đưa qua chia tần số prescaler bit (với tỉ số chia tần số 1:1, 1:4 1:16 điều khiển bit T2CKPS1:T2CKPS0 (T2CON)) Timer2 hỗ trợ ghi PR2 Giá trò đếm ghi TMR2 tăng từ 00h đến giá trò chứa ghi PR2, sau reset 00h Khi reset ghi PR2 nhận giá trò mặc đònh FFh Ngõ Timer2 đưa qua chia tần số postscaler với mức chia từ 1:1 đến 1:16 Postscaler điều khiển bit T2OUTPS3:T2OUTPS0 Ngõ postscaler đóng vai trò đònh việc điều khiển cờ ngắt Ngoài ngõ Timer2 kết nối với khối SSP, Timer2 đóng vai trò tạo xung clock đồng cho khối giao tiếp SSP 12 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Các ghi liên quan đến Timer2 bao gồm: • • • • • • INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn ngắt (GIE PEIE) PIR1 (đòa 0Ch): chứa cờ ngắt Timer2 (TMR2IF) PIE1 (đòa chò 8Ch): chứa bit điều khiển Timer2 (TMR2IE) TMR2 (đòa 11h): chứa giá trò đếm Timer2 T2CON (đòa 12h): xác lập thông số cho Timer2 PR2 (đòa 92h): ghi hỗ trợ cho Timer2 Ta có vài nhận xét Timer0, Timer1 Timer2 sau: • • • • Timer0 Timer2 đếm bit (giá trò đếm tối đa FFh), Timer1 đếm 16 bit (giá trò đếm tối đa FFFFh) Timer0, Timer1 Timer2 có hai chế độ hoạt động timer counter Xung clock có tần số ¼ tần số oscillator Xung tác động lên Timer0 hỗ trợ prescaler thiết lập nhiều chế độ khác (tần số tác động, cạnh tác động) thông số xung tác động lên Timer1 cố đònh Timer2 hỗ trợ hai chia tần số prescaler postcaler độc lập, nhiên cạnh tác động cố đònh cạnh lên Timer1 có quan hệ với khối CCP, Timer2 kết nối với khối SSP Khi đó, sử dụng Timer, mã nguồn chương trình cần phải tạo hàm tạo thời gian giây cập nhật liên tục thời gian Sau đó, hoạt động lại dựa nút nhấn với vi xử lý PIC c Sơ đồ khối hàm quan trọng Để đồng hồ hoạt động, ta sử dụng sơ đồ khối đoạn mã sau đây: 13 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 11: Sơ đồ khối chung Mã nguồn phần main() chương trình: 14 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Mã nguồn thành phần tạo đếm thời gian cho đồng hồ: Sơ đồ khối Buttonchecked() – Có tác dụng điều khiển hoạt động nút nhấn void main() { int8 prev_sec = 0, next_sec = 0; int1 mode; Initialize_RTC(); enable_interrupts(GLOBAL); lcd_init(); delay_ms(10); port_init(); output_low(PIN_D7); while(true) { buttonchecked(); if (set_time_button) { set_time_button = 0; time_setting_mode(); } LCD_display(); } } void TIMER1_isr() { set_timer0(-125); clear_interrupt(INT_TIMER0); K++; if (K == 126) { if (++secs > 59) { secs = 0; if (++mins > 59) { mins = 0; if (++hours > 23) { hours = 0; if (++day > 7) day = 1; if (++date > end_of_month[month-1][is_leap_year(year + 2000)]) { date = 1; if (++month > 12) { month = 1; ++year; } } } } } K = 0; } } 15 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 12: Sơ đồ khối hàm ButtonChecked 16 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Mã nguồn hàm ButtonChecked() Hàm Incre_Decre – để tăng giảm giá trị nhấn nút UP DOWN void buttonchecked() { if(re0 == 0) // neu nut duoc nhan { delay_ms(8); // khong cho nguoi dung thay doi nut nhan if (re0 == 0) { set_time_button = 1; while (re0 == 0) {} // thay doi nut nhan delay_ms(8); // khong cho nguoi dung thay doi nut nhan } } int8 incre_decre(int8 min_value, int8 value, int8 max_value) { if ( re1 == 0) { delay_ms(8); buttonchecked(); if (re1 == 0) { if (incre_button) incre_button = 1; { while (re1 == 0) {} delay_ms(8); incre_button = 0; } } if (value < max_value) if ( re2 == 0) return(value + 1); { delay_ms(8); else return(min_value); if (re2 == 0) } { decre_button = 1; if (decre_button) while (re2 == 0) {} delay_ms(8); { } } decre_button = 0; } int8 incre_decre(int8 int8 value, int8 max_value) if (min_value < min_value, value) { buttonchecked(); return(value - 1); if (incre_button) { else return (max_value); incre_button = 0; } else if return (value value; < max_value) return(value + 1); } else return(min_value); } if (decre_button) { decre_button = 0; if (min_value < value) return(value - 1); else return (max_value); } else return value; } 17 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 13: Hàm Incre_Decre với phần Incre 18 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 14: Hàm Incre_Decre với phần Decre 19 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Sơ đồ khối Date Setting Mode – Hàm Date Setting Mode có tác dụng điều chỉnh ngày thứ tuần tương ứng với tháng năm Hình 15: Sơ đồ khối hàm Date Setting Mode Mã nguồn hàm Date Setting Mode: 20 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM void date_setting_mode() Sơ đồ khối mã nguồn hàm Time setting mode – Hàm có chức điều chỉnh thời gian hiển thị tương ứng với ngày tuần { } switch(thang) else { while (!set_time_button) { case 1: date = (incre_decre(1, date, 28)); case 3: LCD_DISPLAY(); case 5: } case 7: break; } } case 8: case 10: case 12: while (!set_time_button) { date = incre_decre(1,date,31); LCD_DISPLAY(); } break; case 4: case 6: case 9: case 11: while (!set_time_button){ date = incre_decre(1,date,30); LCD_DISPLAY(); } break; case 2: if (year%4 == 0) while (!set_time_button){ date = (incre_decre(1,date,29)); LCD_DISPLAY(); } else while (!set_time_button) { date = (incre_decre(1, date, 28)); LCD_DISPLAY(); 21 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 16: Sơ đồ khối hàm Time Setting Mode 22 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM void time_setting_mode() { int1 exit_1 = 0; int8 Time_SM = 0; while (exit_1 == 0){ set_time_button = 0; while (!set_time_button) { Time_SM = incre_decre(0,Time_SM,7); disp_lcd_TimeSM(Time_SM); buttonchecked(); } set_time_button = 0; switch (Time_SM) { case 2:while (!set_time_button) {secs = incre_decre(0,secs,59); LCD_DISPLAY();}; break; case 1:while (!set_time_button) {mins = incre_decre(0,mins,59); LCD_DISPLAY();}; break; case 0:while (!set_time_button) {hours = incre_decre(0,hours,23); LCD_DISPLAY();};break; case 3:while (!set_time_button) {day = incre_decre(0,day,7);LCD_DISPLAY();}; break; case 4:date_setting_mode(); break; case 5:while (!set_time_button) {thang = incre_decre(0,thang,12);LCD_DISPLAY();}; break; case 6:while (!set_time_button) {year = incre_decre(0,year,99); LCD_DISPLAY();};break; case 7: exit_1 = 1; break; } } //printf(lcd_putc, "\f"); lcd_gotoxy(1,1); printf(lcd_putc, "FINISHED"); delay_ms(500); } 23 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Đặc tính kiểm tra Q trình kiểm tra bao gồm việc mơ mạch ISIS Proteus, thiết kế mạch in thực mạch thực tế: a Mơ mạch Proteus 8.0: Hình 17: Sơ đồ mạch mơ Proteus b Thiết kế mạch in kết thực tế: Hình 18: Sơ đồ mạch in, thiết kế Layout Orcad 24 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 19: Hình ảnh test mạch hoạt động Để tiến hành kiểm tra hoạt động thực tế mạch, ta tiến hành kiểm nghiệm thành phần: • • • • Điều chỉnh độ sáng hình Nút nhấn: SET_TIME, UP, DOWN RESET Hoạt động LCD Nguồn Sau kiểm kiệm, ta thu kết cụ thể sau đây: Thành phần Độ sáng hình Nút nhấn SET_TIME UP DOWN RESET Hoạt động LCD Nguồn Hoạt động đồng hồ Kết kì vọng Tốt Tốt Tốt Tốt Tốt Tốt Tốt Tốt Kết thực tế Tốt Đạt Đạt Đạt Đạt Tốt Tốt ổn định Tốt Kết luận Sản phẩm tạo thành có chức hiển thị ngày tháng năm, phút giây hoạt động ổn đinh so với kì vọng nhóm 25 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hướng Phát Triển Sản phẩm đáp ứng u cầu đồ án thực tốt chức hiển thị thời gian Tuy nhiên, sản phẩm hồn tồn phát triển lên mức cao với tính sau đây: • • • • Hoạt động độc lập nguồn pin hoăc nguồn pin Li-ON tiến tới phương thức sạc khơng dây Hẹn báo thức với mạch chng bổ sung Hiển thị thơng tin ngày âm lịch Cài đặt lịch làm việc Tham Khảo Bài báo cáo có sử dụng thơng tin từ nguồn sau đây: [1] Thơng tin vi xử lý PIC16F877A trang web www.microchip.com [2] Tài liệu giảng dạy thiết kế hệ thống nhúng PIC16F877A thầy Trương Quang Vinh [3] Một số trang web hỗ trợ: www.dientuvietnam.net , www.payitforward.edu.vn 26 [...]... counter Xung clock có tần số bằng ¼ tần số của oscillator Xung tác động lên Timer0 được hỗ trợ bởi prescaler và có thể được thiết lập ở nhiều chế độ khác nhau (tần số tác động, cạnh tác động) trong khi các thông số của xung tác động lên Timer1 là cố đònh Timer2 được hỗ trợ bởi hai bộ chia tần số prescaler và postcaler độc lập, tuy nhiên cạnh tác động vẫn được cố đònh là cạnh lên Timer1 có quan hệ với... thông số cho Timer1 Timer2: Hình 10: Sơ đồ hoạt động của Timer2 Timer2 là bộ đònh thời 8 bit và được hỗ trợ bởi hai bộ chia tần số prescaler và postscaler Thanh ghi chứa giá trò đếm của Timer2 là TMR2 Bit cho phép ngắt Timer2 tác động là TMR2ON (T2CON) Cờ ngắt của Timer2 là bit TMR2IF (PIR1) Xung ngõ vào (tần số bằng ¼ tần số oscillator) được đưa qua bộ chia tần số prescaler 4 bit (với các tỉ số. .. đếm là đồng bộ (Synchronous) và bất đồng bộ (Asynchronous) Chế độ đếm được quyết đònh bởi bit điều khiển T1SYNC (T1CON) Khi T1SYNC =1 xung đếm lấy từ bên ngoài sẽ không được đồng bộ hóa với xung clock bên trong, Timer1 sẽ tiếp 11 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM tục quá trình đếm khi vi điều khiển đang ở chế độ sleep và ngắt do Timer1 tạo ra khi bò tràn có khả năng “đánh thức” vi điều khiển Ở... SET_TIME, UP, DOWN và RESET Hoạt động LCD Nguồn Sau khi kiểm kiệm, ta thu được kết quả cụ thể sau đây: Thành phần Độ sáng màn hình Nút nhấn SET_TIME UP DOWN RESET Hoạt động LCD Nguồn Hoạt động của đồng hồ Kết quả kì vọng Tốt Tốt Tốt Tốt Tốt Tốt Tốt Tốt Kết quả thực tế Tốt Đạt Đạt Đạt Đạt Tốt Tốt và ổn định Tốt 7 Kết luận Sản phẩm được tạo thành có chức năng hiển thị ngày tháng năm, giờ phút giây và... Sản phẩm trên đã đáp ứng u cầu của đồ án khi thực hiện tốt chức năng hiển thị thời gian Tuy nhiên, sản phẩm hồn tồn có thể phát triển lên một mức cao hơn với các tính năng cơ bản sau đây: • • • • Hoạt động độc lập trên nguồn pin hoăc trên nguồn pin Li-ON tiến tới phương thức sạc khơng dây Hẹn giờ báo thức với mạch chng bổ sung Hiển thị thơng tin về ngày âm lịch Cài đặt lịch làm việc Tham Khảo Bài báo... incre_decre(0,secs,59); LCD_ DISPLAY();}; break; case 1:while (!set_time_button) {mins = incre_decre(0,mins,59); LCD_ DISPLAY();}; break; case 0:while (!set_time_button) {hours = incre_decre(0,hours,23); LCD_ DISPLAY();};break; case 3:while (!set_time_button) {day = incre_decre(0,day,7) ;LCD_ DISPLAY();}; break; case 4:date_setting_mode(); break; case 5:while (!set_time_button) {thang = incre_decre(0,thang,12) ;LCD_ DISPLAY();};... lý PIC c Sơ đồ khối và các hàm quan trọng Để đồng hồ hoạt động, ta sử dụng sơ đồ khối cũng như các đoạn mã sau đây: 13 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Hình 11: Sơ đồ khối chung Mã nguồn phần main() của chương trình: 14 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM Mã nguồn thành phần tạo bộ đếm thời gian cho đồng hồ: Sơ đồ khối Buttonchecked() – Có tác dụng điều khiển hoạt động khi các nút được nhấn void main()... thời gian hiển thị tương ứng với từng ngày trong tuần { } switch(thang) else { while (!set_time_button) { case 1: date = (incre_decre(1, date, 28)); case 3: LCD_ DISPLAY(); case 5: } case 7: break; } } case 8: case 10: case 12: while (!set_time_button) { date = incre_decre(1,date,31); LCD_ DISPLAY(); } break; case 4: case 6: case 9: case 11: while (!set_time_button){ date = incre_decre(1,date,30); LCD_ DISPLAY();... TMR1IF (PIR1) Bit điều khiển của Timer1 sẽ là TMR1IE (PIE) Tương tự như Timer0, Timer1 cũng có hai chế độ hoạt động: chế độ đònh thời (timer) với xung kích là xung clock của oscillator (tần số của timer bằng ¼ tần số của oscillator) vàchế độ đếm (counter) với xung kích là xung phản ánh các sự kiện cần đếm lấy từ bên ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác động là cạnh lên) Việc lựa chọn xung... 5:while (!set_time_button) {thang = incre_decre(0,thang,12) ;LCD_ DISPLAY();}; break; case 6:while (!set_time_button) {year = incre_decre(0,year,99); LCD_ DISPLAY();};break; case 7: exit_1 = 1; break; } } //printf (lcd_ putc, "\f"); lcd_ gotoxy(1,1); printf (lcd_ putc, "FINISHED"); delay_ms(500); } 23 BÁO CÁO ĐỒ ÁN TIẾN HÀNH THỰC NGHIỆM 6 Đặc tính kiểm tra Q trình kiểm tra bao gồm việc mơ phỏng mạch trên ISIS ... nối với chia tần số (prescaler) bit Cấu trúc Timer0 cho phép ta lựa chọn xung clock tác động cạnh tích cực xung clock Ngắt Timer0 xuất Timer0 bò tràn Bit TMR0IE (INTCON) bit điều khiển Timer0... đồng bộ, Timer1 sử dụng để làm nguồn xung clock cho khối CCP (Capture/Compare/Pulse width modulation) Khi T1SYNC =0 xung đếm vào Timer1 đồng hóa với xung clock bên Ở chế độ Timer1 không hoạt động... khiển độ sáng hình Thạch anh với tần số 20MHz đưa vào chân số 13 OSC1/CLKIN 14 OSC2/CLKOUT tạo xung clock cho đồng hồ Điện trở sử dụng mạch có giá trị 4.7K b Nguồn Hình 7: Sơ đồ nguồn Ngun lý hoạt

Ngày đăng: 14/04/2016, 09:35

Từ khóa liên quan

Mục lục

  • Lời mở đầu

  • Giới thiệu chung

  • Công cụ sử dụng

  • Nội Dung

  • Hướng Phát Triển

  • Tham Khảo

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

Tài liệu liên quan