




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 . . . X X X XPIC單片機課程設(shè)計數(shù)字鐘設(shè)計報告學(xué)生: x x x學(xué) 號: * 專 業(yè): * 班 級: * 指導(dǎo)教師: * 二一二 年 12 月 16 日目 錄1. 課程設(shè)計目的22. 課程設(shè)計要求23. 課程設(shè)計容24. 問題分析65. 設(shè)計體會66. 參考書目67. 附:PIC程序與仿真圖 71.課程設(shè)計目的1 進(jìn)一步熟悉PIC單片機原理與應(yīng)用;2 鞏固并提高對這學(xué)期PIC單片機知識的學(xué)習(xí)和應(yīng)用;3 熟悉對PIC16F887的編程;4 掌握實驗板上的操作和運用;5 了解數(shù)字鐘的組成和原理,編寫程序并在實驗板上運行。2. 課程設(shè)計要求1) 運用所學(xué)的PIC單片機知識,對PIC1
2、6F887進(jìn)行編程,實現(xiàn)數(shù)字鐘的功能。2) 在軟件仿真可行后,下載到實驗板上進(jìn)行演示。3) 在基本功能實現(xiàn)的基礎(chǔ)上,可以適當(dāng)?shù)奶砑右恍└郊庸δ堋?) 設(shè)計完畢后,總結(jié)和整理資料,寫成設(shè)計報告。3. 課程設(shè)計容運用PIC16F887芯片和DS1307時鐘芯片,用C語言編程,通過ICD2燒寫進(jìn)芯片,在1602液晶顯示屏上實現(xiàn)時間顯示、運行的功能稱為數(shù)字鐘。液晶顯示屏顯示著年、月、日、時、分、秒、星期。數(shù)字鐘有調(diào)整時間的功能,通過對按鍵的操作可以對時間進(jìn)行調(diào)整。3.1系統(tǒng)功能說明顯示屏分兩行顯示,第一行顯示日期:年月日、星期,第二行顯示格式為時間(時:分:秒)。顯示秒由00一直加到59,分鐘由00加
3、到59,小時采用24小時制,由00加到23,星期由1一直加到7,日由01一直加到31,月由01一直加到12,年由2000一直加到2099。按鍵操作時,按鍵S1按下時,數(shù)字加;按鍵S5按下時,數(shù)字減;按鍵S9按下時,位左移;按鍵S13按下時,位右移。3.2設(shè)計步驟1、先畫好仿真圖;2、把數(shù)字鐘分為幾個模塊,分別完成一個一個模塊的編程;3、各個模塊程序編寫完成后,用仿真圖仿真;4、若仿真圖可實現(xiàn),則把各個模塊程序下載到實驗板上運行;5、各個模塊完成后再把各個模塊串聯(lián)起來,進(jìn)行調(diào)試。3.3設(shè)計原理由DS1307芯片完成時間的運行,通過IIC通信,與887單片機進(jìn)行數(shù)據(jù)傳輸,887再把接收到的數(shù)據(jù)通過
4、D口發(fā)送到液晶顯示屏,并顯示出來。按鍵接B口,采用循環(huán)掃描的方式,讀取按鍵狀態(tài),并寫入時鐘芯片設(shè)置時間。3.4設(shè)計思路與仿真圖數(shù)字鐘的程序大致分為3個模塊,可以逐個編程和仿真。仿真完畢后,下載到實驗板上,進(jìn)行調(diào)試和運行。1液晶顯示模塊:仿真圖中顯示屏用LM016L代替實驗板中的LCD YB1602A,采用4位數(shù)據(jù)線方式與887進(jìn)行數(shù)據(jù)傳輸,采用背光顯示。程序編寫步驟:1 讀取程序;2 忙檢測程序;3 寫入程序;4 初始化程序;5 數(shù)據(jù)顯示程序。先定義兩個常數(shù)組“2012-00-00 000”和“00:00:00”,通過編寫程序顯示在顯示屏上,仿真后的圖:2IIC讀寫時鐘模塊:在仿真軟件中,R2
5、0、R21改為數(shù)字型電阻。DS1307芯片通過SCL連接RC3,SDA連接RC4,跟887進(jìn)行通信。通信過程中,先判斷時鐘芯片是否工作,若不工作,則通過寫程序,對時鐘芯片賦初值。時鐘芯片DS1307工作后,在引腳7發(fā)出1Hz脈沖,引腳7連接一個LED燈。脈沖的輸出,會使LED燈一亮一滅,可通過LED燈的亮暗可判斷時鐘芯片DS1307是否運行。用TIM0定時500ms,溢出中斷,每中斷一次,887讀取時鐘芯片里的數(shù)據(jù),然后顯示在液晶屏上。相關(guān)的電路圖:時鐘芯片PIC16F887芯片程序編寫步驟:1 IIC寫程序;2 IIC讀程序;3 IIC初始化程序;4 時鐘讀并顯示在液晶上的程序;5 時鐘寫并
6、顯示在液晶上的程序;6 時鐘初始化程序;3按鍵模塊:按鍵采用普通按鍵,只用到按鍵S1、S5、S9、S13,按鍵另一端接B口,由于B口可通過程序編寫為弱上拉,所以仿真圖中按鍵不需畫出上拉電阻。按鍵S1按下時,數(shù)字加;按鍵S5按下時,數(shù)字減;按鍵S9按下時,位左移;按鍵S13按下時,位右移。模塊相關(guān)圖:各個模塊完成,整合后的仿真圖和仿真結(jié)果:3.6設(shè)計調(diào)試與分析1、軟件調(diào)試在PICC編譯器中編譯,與proteus所畫的仿真圖用Debugger連接,通過在proteus環(huán)境中,對結(jié)果進(jìn)行調(diào)試和分析。用于觀察IIC數(shù)據(jù)的傳輸2、硬件調(diào)試程序經(jīng)PICC編譯后,通過ICD2與課設(shè)板進(jìn)行連接,并把相應(yīng)的短路
7、帽插上,在實驗板進(jìn)行調(diào)試和分析。4. 問題分析1、在仿真軟件上不需要液晶的背光設(shè)置,在實驗板上運行時,RD7要置1.2、IIC通信模塊比較難,可用仿真軟件中的IIC仿真觀察數(shù)據(jù)的傳輸。3、按鍵設(shè)置,要把握好防抖時間。5. 設(shè)計體會PIC單片機課程設(shè)計是電氣工程與其自動化專業(yè)與相近專業(yè)的一門重要的專業(yè)實踐課。通過本次的課程設(shè)計,我學(xué)會了運用PIC單片機來設(shè)計。由于自學(xué)過51單片機,所以對數(shù)字鐘的原理還算了解。但是要完全自己編寫程序還是有一定的困難,經(jīng)過老師的講解,把數(shù)字鐘分為幾個模塊,然后經(jīng)過自己閱讀完相關(guān)的資料后,我才有了一個比較清晰的思路。在這次課設(shè)中,首先按照實驗板的原理圖畫出了仿真圖,然
8、后一個一個模塊開始編程、仿真、調(diào)試,我學(xué)習(xí)到了不少東西。通過實踐,讓我明白了在設(shè)計過程中只有書面知識是不夠的,這還是需要多實踐多積累的。有時仿真可以運行很好的程序,下載到板上時,不一定可以運行的出來。但通過自己判斷和不斷檢查,還是解決了這些問題。在這過程中,學(xué)會了如何排除自己程序里的錯誤。通過該課程設(shè)計,進(jìn)一步掌握了PIC單片機的應(yīng)用,熟練PIC單片機的C程序的編寫與調(diào)試,是畢業(yè)設(shè)計前的一次重要的實踐,為今后走上工作崗位打下堅實的單片機應(yīng)用基礎(chǔ)。參考書目:1PIC16系列單片機C程序設(shè)計與PROTEUS仿真,江和 編,航空航天大學(xué),2010.62PIC單片機課程設(shè)計指導(dǎo)書,江和 編,2012.
9、8附PIC程序#include<pic.h>_CONFIG(0X20F1);_CONFIG(0X3FFF);#define ELCD RD6/數(shù)據(jù)使能:下降沿送入有效#define RWLCD RD5/讀/寫選擇: 1,讀; 0,寫#define RSLCD RD4/命令/數(shù)據(jù)選擇: 1,數(shù)據(jù); 0,命令char NUM116="2012-00-00 000"/LCD數(shù)據(jù)char NUM216="00:00:00"/LCD數(shù)據(jù)char shu;char wei;char Y;/時鐘年char M;/時鐘月char D;/時鐘日char W;/
10、時鐘周char H;/時鐘時char T;/時鐘分char S;/時鐘秒char x;#define L1 0X80#define L2 0XC0/延時n(ms)void delay(unsigned int n)unsigned int a,b;for(a=0;a<n;a+)for(b=0;b<246;b+)NOP();/*=1602LCD=*/讀char RLCD(void)unsigned char p;TRISD|=0X0F;RSLCD=0;NOP();RWLCD=1;NOP();ELCD=1;NOP();p=(PORTD<<4)&0XF0;NOP();
11、ELCD=0;NOP();ELCD=1;NOP();p|=PORTD&0X0F;NOP();ELCD=0;NOP();NOP();NOP();return(p);/忙檢測void LCDBF(void)unsigned char p;while(1)p=RLCD();if(p&0x80)=0)break;/寫void W4LCD(char r,char p)/r:1數(shù)據(jù),0命令;p:輸入值TRISD=0;RWLCD=0;NOP();RSLCD=r;NOP();PORTD&=0XF0;NOP();ELCD=1;NOP();PORTD|=p;NOP();ELCD=0;NOP
12、();NOP();NOP();/寫void W8LCD(char r,char p)/r:1數(shù)據(jù),0命令;p:輸入值char t;LCDBF();t=(p>>4)&0x0F;W4LCD(r,t);t=p&0x0F;W4LCD(r,t);delay(1);/液晶初始化void CSHLCD(void)delay(20);W4LCD(0,0B0011);delay(1);W4LCD(0,0B0011);delay(1);W4LCD(0,0B0011);delay(1);W4LCD(0,0B0010);W8LCD(0,0B00101000);/4位為數(shù)據(jù),2行,5x7W8
13、LCD(0,0B00001100);W8LCD(0,0B00000001);delay(2);W8LCD(0,0B00001100);/LCD顯示L行(L1,L2);w位(015);*p顯示數(shù)據(jù);pw數(shù)據(jù)位數(shù);void LCD(char L,char w,char *p,char pw)char i;W8LCD(0,L+w);for(i=0;i<pw;i+)W8LCD(1,*p+);/*=時鐘IIC讀取=*/IIC寫void WIIC(char ADDR,char DATE)SEN=1;/啟動使能while(SEN=1);SSPBUF=0XD0;/發(fā)送從動方地址(寫)while(RW);
14、/等待發(fā)送完成/while(SSPIF=0);/等待發(fā)送完成while(ACKSTAT=1);/等待應(yīng)答SSPBUF=ADDR;/發(fā)送數(shù)據(jù)地址while(RW);/等待發(fā)送完成/while(SSPIF=0);/等待發(fā)送完成while(ACKSTAT=1);/等待應(yīng)答SSPBUF=DATE;/發(fā)送數(shù)據(jù)while(RW);/等待發(fā)送完成/while(SSPIF=0);/等待發(fā)送完成while(ACKSTAT=1);/等待應(yīng)答PEN=1;/停止使能while(PEN=1);/IIC讀char RIIC(char ADDR)char date;SEN=1;/啟動使能while(SEN=1);SSPBU
15、F=0B11010000;/發(fā)送從動方地址(寫)while(RW);/等待發(fā)送完成while(SSPIF=0);/等待發(fā)送完成while(ACKSTAT=1);/等待應(yīng)答SSPBUF=ADDR;/發(fā)送數(shù)據(jù)地址while(RW);/等待發(fā)送完成while(SSPIF=0);/等待發(fā)送完成while(ACKSTAT=1);/等待應(yīng)答RSEN=1;/重新啟動while(RSEN=1);SSPBUF=0B11010001;/發(fā)送從動方地址(讀)while(RW);/等待發(fā)送完成while(SSPIF=0);/等待發(fā)送完成while(ACKSTAT=1);/等待應(yīng)答SSPIF=0;RCEN=1;/接受使
16、能while(SSPIF=0);date=SSPBUF;SSPIF=0;RCEN=1;/接受使能while(SSPIF=0);/delay(20);PEN=1;/停止使能while(PEN=1);return(date);/IIC初始化void CSHIIC(void)TRISC=0B00011000;SSPCON=0B00101000;SMP=0;SSPADD=4;/=時鐘=/時鐘初始化void CSHTIME(void)char f;f=RIIC(0x00)>>7;if(f=1) WIIC(0x00,0);WIIC(0x07,0B10010000);wei=7;/=時鐘讀取vo
17、id second(void)S=RIIC(0x00);/時鐘秒NUM27=(S&0x0F)+48;W8LCD(0,L2+11);W8LCD(1,NUM27);NUM26=(S&0X70)>>4)+48;W8LCD(0,L2+10);W8LCD(1,NUM26);void minuter(void)T=RIIC(0x01);/時鐘分NUM24=(T&0x0F)+48;W8LCD(0,L2+8);W8LCD(1,NUM24);NUM23=(T&0X70)>>4)+48;W8LCD(0,L2+7);W8LCD(1,NUM23);void ho
18、ur(void)H=RIIC(0x02);/時鐘時NUM21=(H&0x0F)+48;W8LCD(0,L2+5);W8LCD(1,NUM21);NUM20=(H&0X70)>>4)+48;W8LCD(0,L2+4);W8LCD(1,NUM20);void week(void)W=RIIC(0x03);/時鐘周switch(W)/星期函數(shù)case 1:NUM112='M'/星期1NUM113='O'NUM114='N' break;case 2:NUM112='T'/星期2NUM113='U
19、9;NUM114='E' break;case 3:NUM112='W'/星期3NUM113='E'NUM114='D' break;case 4:NUM112='T'/星期4NUM113='H'NUM114='U' break;case 5:NUM112='F'/星期5NUM113='R'NUM114='I' break;case 6:NUM112='S'/星期6NUM113='T'NUM114=
20、9;A' break;case 7:NUM112='S'/星期7NUM113='U'NUM114='N' break;W8LCD(0,L1+15);W8LCD(1,NUM114);W8LCD(0,L1+14);W8LCD(1,NUM113);W8LCD(0,L1+13);W8LCD(1,NUM112); void day(void)D=RIIC(0x04);/時鐘日NUM19=(D&0x0F)+48;W8LCD(0,L1+10);W8LCD(1,NUM19);NUM18=(D&0X30)>>4)+48;W8LC
21、D(0,L1+9);W8LCD(1,NUM18);void month(void)M=RIIC(0x05);/時鐘月NUM16=(M&0x0F)+48;W8LCD(0,L1+7);W8LCD(1,NUM16);NUM15=(M&0X10)>>4)+48;W8LCD(0,L1+6);W8LCD(1,NUM15);void year(void)Y=RIIC(0x06);/時鐘年NUM13=(Y&0x0F)+48;W8LCD(0,L1+4);W8LCD(1,NUM13);NUM12=(Y&0XF0)>>4)+48;W8LCD(0,L1+3);W
22、8LCD(1,NUM12);void TIME(char mode)/mode模式選擇:1,全掃描;0,選擇掃描second();if(S=0|mode)minuter();if(T=0|mode)hour();if(H=0|mode)week();day();if(D=1|mode)month();if(M=1|mode)year();/=時鐘設(shè)置=void TIMESET(void)char i=0;char p=0;char doshu=0;char dowei=0;delay(30);/防抖延時30msif(PORTB!=0X0F)i=PORTB0X0F;delay(30);if(i=
23、1)/數(shù)字加一shu+;doshu=1;switch(wei)/進(jìn)位分類case 0:if(shu=60)shu=0;break;case 1:if(shu=60)shu=0;break;case 2:if(shu=24)shu=0;break;case 3:if(shu=8)shu=1;break;case 4:if(shu=32)shu=1;break;case 5:if(shu=13)shu=1;break;case 6:if(shu=100)shu=0;break;case 7:shu=0;break;if(i=2)/數(shù)字減一switch(wei)/借位分類case 0:if(shu=
24、0)shu=60;break;case 1:if(shu=0)shu=60;break;case 2:if(shu=0)shu=24;break;case 3:if(shu=1)shu=8;break;case 4:if(shu=1)shu=32;break;case 5:if(shu=1)shu=13;break;case 6:if(shu=0)shu=100;break;case 7:shu=1;break;shu-;doshu=1;if(i=4)/位加一,光標(biāo)左移wei+;dowei=1;if(wei=8)wei=0;if(i=8)/return('R');/光標(biāo)右移if
25、(wei=0)wei=8;wei-;dowei=1;if(doshu=1)W8LCD(0,L2);/=W8LCD(1,shu+48);/=if(wei<7)p=(shu/10<<4)+(shu%10);WIIC(wei,p);switch(wei)/選擇掃描case 0:second();break;case 1:minuter();break;case 2:hour();break;case 3:week();break;case 4:day();break;case 5:month();break;case 6:year();break;if(dowei=1)W8LCD(0,L2+1);/=W8LCD(1,wei+48);/=if(wei<7)p=RIIC(wei);shu=(p>>4)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度專利技術(shù)價格保密合同書
- 2025年度休閑漁業(yè)發(fā)展魚塘承包經(jīng)營合同
- 2025年度護(hù)膚品專業(yè)渠道代理商招募合同
- 2025年度業(yè)主起訴解除物業(yè)服務(wù)合同法律依據(jù)與實踐應(yīng)用
- 2025年度商業(yè)街場地租賃合同解除書
- 2025年度大型活動安全預(yù)案人身免責(zé)及應(yīng)急處理合同
- 2025年度山地滑雪場租賃管理服務(wù)協(xié)議
- 2025年廣東環(huán)境保護(hù)工程職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 2025年度智能公寓簡易版租賃合同
- 2025年度教育培訓(xùn)機構(gòu)中途入股投資及分紅合作協(xié)議
- 產(chǎn)品結(jié)構(gòu)設(shè)計概述課件
- 八年級下綜合實踐教案全套
- 胸痹心痛中醫(yī)診療方案及臨床路徑
- 第8課《山山水水》教學(xué)設(shè)計(新人教版小學(xué)美術(shù)六年級上冊)
- word 公章 模板
- 泛讀2unit2-music
- 世界技能大賽PPT幻燈片課件(PPT 21頁)
- 中學(xué)生防溺水安全教育課件(PPT 44頁)
- Python程序設(shè)計ppt課件完整版
- T∕ZSQX 008-2020 建設(shè)工程全過程質(zhì)量行為導(dǎo)則
- 《腹膜透析》ppt課件
評論
0/150
提交評論