(完整word版)基于PIC16F877A的數(shù)字鐘設(shè)計_第1頁
(完整word版)基于PIC16F877A的數(shù)字鐘設(shè)計_第2頁
(完整word版)基于PIC16F877A的數(shù)字鐘設(shè)計_第3頁
(完整word版)基于PIC16F877A的數(shù)字鐘設(shè)計_第4頁
(完整word版)基于PIC16F877A的數(shù)字鐘設(shè)計_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、電子工程系項B考核(報告)項目名稱:數(shù)字時鐘項目名班號課程名稱項目要求:數(shù)碼管默認(rèn)顯示 00:00。數(shù)碼管 1,2 表示小時,數(shù)碼管 3 ,4 表 示分鐘。如此,實(shí)現(xiàn)時鐘功能。要求能夠整點(diǎn)報時、鬧鐘提示;并附 帶有秒表功能。 按鍵可以調(diào)整時鐘時間、 切換顯示頁面和設(shè)定鬧鐘時 間等。二、項目原理分析在項目用的單片機(jī)開發(fā)板上單片機(jī)的 IO 口接四位數(shù)碼管的各 段。同時開發(fā)板共陰數(shù)碼管的陰極由 138 譯碼器的輸出端控制。在 該項目中我采用了數(shù)碼管的動態(tài)顯示,即每位數(shù)碼管點(diǎn)亮 2ms 時間 左右,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng), 只要掃描的 速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),

2、不會有閃爍感, 動態(tài)顯示的效果和靜態(tài)顯示是一樣的, 能夠節(jié)省大量的 I/O 端口,而 且功耗更低。在實(shí)現(xiàn)了數(shù)碼管的動態(tài)顯示的基礎(chǔ)上在主程序中通過計 算定時器 1 的中斷次數(shù),從而得到計時時間和秒表時間的基準(zhǔn)時間。 同時在主程序中添加按鍵處理程序,實(shí)現(xiàn)時鐘的開始、中斷和校時, 同時實(shí)現(xiàn)鬧鐘定時和切換顯示等功能,還有秒表計時功能。三、硬件電路圖以及原理3.1 硬件電路圖如下:*W!Wg-sci aiiooq MUUU-1!Id牛aQ q ei .aBBQ回cQEIQBcq rHMWbUeUliKam 敗 RCTRSIDRiilFSP9 rannnHDHn mmFmpvi alQPW-1 a lD1

3、1 LEMnhnEKAD益M盂那3.2硬件原理:該項目中,主要的功能模塊有:數(shù)碼管顯示模塊;按鍵模塊;蜂鳴器模塊。數(shù)碼管顯示模塊主要是由芯片PIC16F877A內(nèi)部的定時器1的定時中斷實(shí)現(xiàn)數(shù)碼管的動態(tài)顯示。按鍵模塊主要利用矩陣式按鍵 實(shí)現(xiàn)多按鍵功能,矩陣式按鍵原理是在一端加高電平,然后檢測另一 端是否為高電平來判斷按鍵是否按下,通過不同的定義可以讓按鍵實(shí) 現(xiàn)不同的功能。蜂鳴器模塊通過三極管的開關(guān)作用和驅(qū)動作用由芯片 控鳴叫與否。四、程序說明以及程序流程圖該時鐘默認(rèn)顯示頁面為時鐘計時頁面,按鍵 SW1控制時鐘、秒 表的開始和中斷,按按鍵 SW1 一次,如果數(shù)碼管在顯示秒表,則開 始計秒功能;否則

4、,開始正常計時;再按一次 SW1則實(shí)現(xiàn)中斷功能。 按鍵SW2實(shí)現(xiàn)是數(shù)碼管的選位,從第一個數(shù)碼管開始,按一次就選 中下一位數(shù)碼管,循環(huán)選擇。SW3實(shí)現(xiàn)的是加1功能,每按一次就 在SW2選中的位上加1。SW4是實(shí)現(xiàn)數(shù)碼管切換顯示功能,按一次 就進(jìn)入鬧鐘調(diào)時的顯示頁面,再按一次就進(jìn)入秒表顯示頁面, 實(shí)現(xiàn)數(shù)碼管顯示在時鐘計時、鬧鐘定時和秒表計時這三個不同頁面的循環(huán)切換顯示。圖1是時鐘、秒表計時開始和中斷,以及鬧鐘提醒的流程圖; 圖2是顯示頁面的卻換流程圖;圖3是校時和定時流程圖。下面就是 程序的流程圖:鬧時鐘秒表鐘計時計時1 r整點(diǎn)報時, 鬧鐘提醒否時鐘計時中斷秒表計時 中斷,時 鐘正常計上電a=2W

5、3按下a=1W3按下a=4W3按a=3W3按SW2每按一次a加1(1=4)鬧鐘 小時 十位加1鬧鐘 小時 個位加1時鐘小時個位加1時鐘 分鐘 十位加1五、程序清單(要求有詳盡的注釋)ma in ()/主函數(shù)int a=1,b,z,h=1;定義一個標(biāo)志位a,bin ts1=0,s2=0,s3=0,s4=0;/時鐘小時分鐘的十位和個位int n1=0 ,n 2=0, n3=0, n4=0;/鬧鐘小時分鐘的十位和個位int m仁 0,m2=0,m3=0,m4=0;/秒表的標(biāo)志位static bit biaozhi=0;/時鐘的靜態(tài)標(biāo)志位static bit mbz=0;/秒表的靜態(tài)標(biāo)志位ADCON仁

6、0X06;/初始化TRISA=0X00;TRISB=0X01;外部中斷輸入PORTB=0X00;TRISD=0X01;/設(shè)置 RD0 輸入PORTD=0X01;/設(shè)置 RD0 輸入TRISE=0X00;timer1i nit();/定時器1初始化 INTE=1; /外部中斷使能INTEDG=1;外部中斷上升沿RA仁1;/使能138譯碼器LED1=0;LED2=0;LED3=0;LED4=0;/數(shù)碼管1顯示4 while(1)RD4=1;/按鍵SW1 一端高電平if(RD0=1)/判斷按鍵是否按下delay(10); 延時 10mS 去鍵抖if(RD0=1)/再次確認(rèn)按鍵是否按下RD2=1;de

7、lay(30);RD2=0;蜂鳴器響30mSif(h=3) 判斷是否是秒表顯示頁面mbz=!mbz;t=0;秒表標(biāo)志位取反,開始計時或中斷elsebiaozhi=!biaozhi;time=0; 時鐘標(biāo) 志位取反,開始計時或中斷while(RD0=1);/ 等待放手RD4=0;RD5=1;按鍵SW2 一端高電平if(RD0=1)/判斷按鍵SW2是否按下delay(10);延時 10mS去鍵抖if(RD0=1)再次確認(rèn)按鍵SW2是否按下RD2=1;delay(30);RD2=0; 蜂鳴器 響 30mSa+;位選標(biāo)志位加1if(a=5) a=1;if(a=1)b=LED1;先關(guān)閉數(shù)碼管300毫秒,

8、然后再點(diǎn)亮LED1=10;delay(300);延時 300 毫秒LED1=b;if(a=2)b=LED2;先關(guān)閉數(shù)碼管300毫秒,然后再點(diǎn)亮LED2=10;delay(300);延時 300 毫秒LED2=b;if(a=3)b=LED3;先關(guān)閉數(shù)碼管300毫秒,然后再點(diǎn)亮LED3=10;delay(300);延時 300 毫秒LED3=b;if(a=4)b=LED4;先關(guān)閉數(shù)碼管300毫秒,然后再點(diǎn)亮LED4=10;delay(300);延時 300 毫秒LED4=b;while(RD0=1); 等待放手RD5=0;RD6=1;按鍵SW3 一端高電平if(RD0=1) 判斷按鍵SW3是否按下

9、delay(10); 延時10mS去鍵抖if(RD0=1) 再次確認(rèn)按鍵SW3是否按下RD2=1;delay(30);RD2=0; 蜂鳴器響 30mSif(h=1)判斷顯示標(biāo)志位 LED仁s1;LED2=s2;LED3=s3;LED4=s4;數(shù)碼管顯示時鐘頁面if(a=1) s1+;如果位選標(biāo)志位a=1,則小時十位加1if(a=2) s2+;如果位選標(biāo)志位a=2,則小時個位加1if(a=3) s3+;如果位選標(biāo)志位a=3,則分鐘十位加1if(a=4) s4+;如果位選標(biāo)志位a=4,則分鐘十位加1if(s1=3)s1=0; / 使時鐘在校 時時也能按計時規(guī)則進(jìn)行if(s12)if(s2=10)s

10、2=0;if(s1=2)if(s2=4)s2=0;if(s3=6)s3=0; if(s4=10)s4=0;if(h=2)判斷顯示標(biāo)志位 LED仁n1;LED2=n2;LED3=n3;LED4=n4;數(shù)碼管顯示鬧鐘定時頁面if(a=1) n1+;/如果位選標(biāo)志位a=1,則小時十位加1if(a=2) n2+; 如果位選標(biāo)志位a=2,則小時個位加1if(a=3) n3+; 如果位選標(biāo)志位a=3,則分鐘十位加1if(a=4)n 4+;如果位選標(biāo)志位a=4,則分鐘十位加1if(s1=3)s 1=0;使鬧鐘在定時時也能按計時規(guī)則進(jìn)行if(s1=400)/time為定時器1的中斷次數(shù),利用定 時器1提供的2

11、.5mS的基準(zhǔn)時間計時time=0;z+;/1秒計算if(z=60)s4+;z=0;/時鐘計時if(s4=10) s3+;s4=0;if(s3=6)s2+;s3=0;if(s1=40)RD2=0;if(s3=0&s4=0) RD2=1; 蜂 if(time=40)RD2=0;if(mbz)/判斷秒表標(biāo)志位if(t=40)/實(shí)現(xiàn)秒表0.1秒精度 t=0;/秒表計時m4+;if(m4=10) m3+;m4=0; if(m3=10) m2+;m3=0;if(m2=6)m1+;m2=0;if(m仁=10) m仁0;六、心得體會在這次的時鐘項目中,我根據(jù)一些電子鐘的功能要求,在這個時鐘項目中集 成了較多的功能,包括常用的時鐘、鬧鐘、整點(diǎn)報時、校時和定時功能,另外我 還新增了一個秒表的功能;所以這個時鐘的功能還是比較強(qiáng)大的。但對于我的設(shè) 計來說卻是一個挑戰(zhàn),因為我還沒有編寫過多顯示頁面的程序,后來我通過定義 標(biāo)志位來實(shí)現(xiàn)數(shù)碼管顯示頁面的切換,但這種方法原理雖然簡單,但程序卻變得 復(fù)雜。標(biāo)志

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論