版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
湖北理工學(xué)院電氣與電子信息工程學(xué)院智能電子產(chǎn)品設(shè)計(jì)與制作設(shè)計(jì)題目:萬年歷的設(shè)計(jì)與制作專業(yè)班級(jí):學(xué)號(hào):姓名:指導(dǎo)教師:李玉平王海華設(shè)計(jì)時(shí)間:2012/5/28?2012/6/10設(shè)計(jì)地點(diǎn):K2—407
智能電子產(chǎn)品設(shè)計(jì)與制作課程設(shè)計(jì)成績?cè)u(píng)定表姓名學(xué)號(hào)專業(yè)班級(jí)課程設(shè)計(jì)題目:課程設(shè)計(jì)答辯或質(zhì)疑記錄:成績?cè)u(píng)定依據(jù):實(shí)物制作(40%):課程設(shè)計(jì)考勤情況(20%):課程設(shè)計(jì)答辯情況(20%):完成設(shè)計(jì)任務(wù)及報(bào)告規(guī)范性(20%):最終評(píng)定成績(以優(yōu)、良、中、及格、不及格評(píng)定)指導(dǎo)教師簽字:2012年6月10日電氣與電子信息工程學(xué)院課程設(shè)計(jì)報(bào)告電氣與電子信息工程學(xué)院課程設(shè)計(jì)報(bào)告#Write_LCD_Command(0x01);}//向DS1302中寫入一字節(jié)(上升沿寫入)voidWrite_Byte_TO_DS1302(ucharx){uchari;for(i=0;i<8;i++)//循環(huán)8次寫入數(shù)據(jù){IO=x&0x01;//每次傳輸?shù)妥止?jié)SCLK=0;delayus(2);SCLK=1;x>>=1;//右移一位}}//從DS1302中讀取一字節(jié)(下降沿讀取)ucharGet_Byte_FROM_DS1302(){uchari,dat=0x00;for(i=0;i<8;i++){if(IO)dat|=0x80;SCLK=1;delayus(2);SCLK=0;dat>>=1;}returndat/16*10+dat%16;//將讀出的BCD碼值轉(zhuǎn)化為十進(jìn)制}//從DS1302的指定地址讀取一字節(jié)數(shù)據(jù)ucharRead_Data(ucharaddr){uchardat;RST=0;SCLK=0;RST=1;Write_Byte_TO_DS1302(addr);//先寫地址在讀取dat=Get_Byte_FROM_DS1302();RST=0;SCLK=1;returndat;}//向指定的地址寫入一字節(jié)數(shù)據(jù)voidWrite_DS1302(ucharadd,ucharnum){RST=0;SCLK=0;RST=1;Write_Byte_TO_DS1302(add);//先寫地址再寫數(shù)據(jù)Write_Byte_TO_DS1302(num);RST=0;SCLK=1;}//讀取當(dāng)前日期時(shí)間voidGetDateTime(){uchari,addr=0x81;//讀取秒地址開始(地址最高位10表示要讀/寫clock數(shù)據(jù),//最低位表示是讀(1)還是寫(0)for(i=0;i<7;i++){DateTime[i]=Read_Data(addr);addr+=2;}}//禁止涓流充電voiddenot(){Write_DS1302(0x8e,0x00);//寫控制字節(jié),取消寫保護(hù)Write_DS1302(0x90,0x8b);//禁止涓流充電Write_DS1302(0x8e,0x80);//加保護(hù)}//寫改動(dòng)后的數(shù)據(jù)到DS1302中voidSetDateTime(){uchari;Write_DS1302(0x8e,0x00);//寫控制字節(jié),取消寫保護(hù)for(i=0;i<7;i++){Write_DS1302(0x80+2*i,(DateTime[i]/10<<4)|(DateTime[i]%10));}Write_DS1302(0x8e,0x80);//加保護(hù)}//判斷是否為閏年ucharIsLeapYear(uinty){if((y%4==0&&y%100!=0)||(y%400==0))return1;elsereturn0;}//根據(jù)設(shè)定的日期自動(dòng)刷新星期voidRefreshWeekday(){uinti,d,w=5;//已知1999.12.31是周五for(i=2000;i<2000+DateTime[6];i++){d=IsLeapYear(i)?366:365;w=(w+d)%7;}for(d=0,i=1;i<DateTime[4];i++)d+=days[i];d+=DateTime[3];DateTime[5]=(w+d)%7+1;}//根據(jù)按鍵情況調(diào)整時(shí)間voidDateTime_Adjust(charx){switch(Adjust_Index){case6://年00--99if(x==1){DateTime[6]++;if(DateTime[6]==100)DateTime[6]=0;}else{DateTime[6]--;if(DateTime[6]==0xff)DateTime[6]=99;}days[2]=IsLeapYear(2000+DateTime[6])?29:28;if(DateTime[3]>days[DateTime[4]])DateTime[3]=days[DateTime[4]];RefreshWeekday();break;case4://月01--12if(x==1){DateTime[4]++;if(DateTime[4]==13)DateTime[4]=1;}else{DateTime[4]--;if(DateTime[4]==0)DateTime[4]=12;}days[2]=IsLeapYear(2000+DateTime[6])?29:28;if(DateTime[3]>days[DateTime[4]])DateTime[3]=days[DateTime[4]];RefreshWeekday();break;case3://日days[2]=IsLeapYear(2000+DateTime[6])?29:28;if(x==1){DateTime[3]++;if(DateTime[3]>days[DateTime[4]])DateTime[3]=1;}else{DateTime[3]--;if(DateTime[3]==0)DateTime[3]=days[DateTime[4]];}if(DateTime[3]>days[DateTime[4]])DateTime[3]=days[DateTime[4]];RefreshWeekday();break;case2://時(shí)if(x==1){DateTime[2]++;if(DateTime[2]==24)DateTime[2]=0;}else{DateTime[2]--;if(DateTime[2]==0xff)DateTime[2]=23;}break;case1://分if(x==1){DateTime[1]++;if(DateTime[1]==60)DateTime[1]=0;}else{DateTime[1]--;if(DateTime[1]==0xff)DateTime[1]=59;}break;case0://秒if(x==1){DateTime[0]++;if(DateTime[0]==60)DateTime[0]=0;}else{DateTime[0]--;if(DateTime[0]==0xff)DateTime[0]=59;}break;}}//復(fù)位,初始化DS18B20voiddsreset(){do{DQ=1;//DQ復(fù)位delayus(4);//延時(shí)DQ=0;//DQ拉低delayus(75);//精確延時(shí)480us~~960usDQ=1;//拉高delayus(5);}while(DQ==1);delayus(50);//最少480us}//讀一個(gè)字節(jié)函數(shù)uchartmpread(void){uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號(hào)dat>>=1;DQ=1;//給脈沖信號(hào)if(DQ)dat|=0x80;delayus(4);//延時(shí)〉30us}return(dat);}//寫一個(gè)字節(jié)函數(shù)voidtmpwritebyte(uchardat){uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;//低位在前dat=dat>>1;if(testb)//寫“1“{DQ=0;i++;i++;DQ=1;i=8;while(i>0)i--;}else//寫”0"{DQ=0;i=8;while(i>0)i--;DQ=1;i++;i++;}}}//開始獲取溫度并轉(zhuǎn)換voidTempChang(){dsreset();delayms(1);tmpwritebyte(Oxcc);//*跳過讀序列號(hào)*/tmpwritebyte(0x44);//*啟動(dòng)溫度轉(zhuǎn)換*/}//獲取溫度并轉(zhuǎn)換Get_Temp(){uchara,b;dsreset();delayms(1);tmpwritebyte(Oxcc);//*跳過讀序列號(hào)*/tmpwritebyte(Oxbe);//*讀取溫度*/a=tmpread();b=tmpread();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<=0x07ff)tflag=0;else{tvalue=~tvalue+1;tflag=1;}tvalue二tvalue*0.625+0.5;//溫度值擴(kuò)大10倍,精確到1位小數(shù),return(tvalue);//小數(shù)點(diǎn)第二位四舍五入}//溫度報(bào)警voidtempbaojing(){ucharc;if((tvalue>=0x040)&(tvalue<=0x00)){for(c=0;c<5;c++){buzz=~buzz;delayms(10);}}}//溫度值顯示模塊voidDS18B20Disp()//溫度值顯示{Temp_BUFFER[1]=tvalue/1000+0x30;//百位數(shù)Temp_BUFFER[2]=tvalue%1000/100+0x30;//十位數(shù)Temp_BUFFER[3]=tvalue%100/10+0x30;//個(gè)位數(shù)Temp_BUFFER[4]=0x2e;//寫小數(shù)點(diǎn)Temp_BUFFER[5]=tvalue%10+0x30;//小數(shù)位Temp_BUFFER[6]=0xdf;//寫溫度單位Temp_BUFFER[7]=0x43;if(tflag==0)Temp_BUFFER[0]=0x20;//正溫度不顯示符號(hào)elseTemp_BUFFER[0]=0x2d;//負(fù)溫度顯示負(fù)號(hào):-if(Temp_BUFFER[1]==0x30){Temp_BUFFER[1]=Temp_BUFFER[0];//如果百位為0,不顯示Temp_BUFFER[0]=0x20;if(Temp_BUFFER[2]==0x30){Temp_BUFFER[2]=Temp_BUFFER[1];//在百位為0的同時(shí)十位為0,不顯示Temp_BUFFER[1]=0x20;}}}//主函數(shù)voidmain(){uchartcount=0;Initialize_LCD();denot();EA=1;EX0=1;IT0=1;while(1){TempChang();Get_Temp();tempbaojing();DS18B20Disp();LCD_ShowString(8,1,Temp_BUFFER);if(tvalue>=310){tcount++;//單片機(jī)沒執(zhí)行到此需要約0.2s;if(tcount==2){tcount=0;led"=l;}}elseled=1;if(Adjust_Index==-1)GetDateTime();Refresh_LCD_BUFFER();LCD_ShowString(0,0,LCD_DSY_BUFFER1);LCD_ShowString(0,1,LCD_DSY_BUFFER2);LCD_ShowString(11,0,week[DateTime[5]-1]);}}//中斷0服務(wù)程序voidint0()interrupt0{if(K1==0){delayms(100);if(K1==0){while(!K1);if(Adjust_Index==-1||Adjust_Index==0)Adjust_Index=7;Adjust_Index--;f(Adjust_Index==5)Adjust_Index=4;//跳過星期的調(diào)整,自行刷新switch(Adjust_Index){case6:Write_LCD_Command(0x8f);//寫‘N'Write_LCD_Data(0x4e);break;case4:Write_LCD_Command(0x8f);//寫‘Y'Write_LCD_Data(0x59);break;case3:Write_LCD_Command(0x8f);//寫'R'Write_LCD_Data(0x52);break;case2:Write_LCD_Command(0x8f);//寫‘S'Write_LCD_Data(0x53);break;case1:Write_LCD_Command(0x8f);Write_LCD_Data(0x46);//寫'F'break;case0:Write_LCD_Command(0x8f);Write_LCD_Data(0x4d);//寫‘M'break;}}}elsef(K2==0&&Adjust_Index!=-l)//加{delayms(100);if(K2==0){while(!K2);DateTime_Adjust(1);}}elsef(K3==0&&Adjust_Index!=-l)//減{delayms(100);if(K3==0){while(!K3);DateTime_Adjust(-1);}}elsef(K4==0&&Adjust_Index!=-l)//確定{delayms(100);if(K4==0){while(!K4);SetDateTime();Adjust_Index=-1;Write_LCD_Command(0x8f);//去除標(biāo)志位Write_LCD_Data(0x20);}}elsef(K5==0&&Adjust_Index!=-l)//取消{delayms(100);if(K5==0){while(!K5);Adjust_Index=-1;Write_LCD_Command(0x8f);//去除標(biāo)志位Write_LCD_Data(0x20);}}}五、調(diào)試1、建立工程和仿真圖(1)打開proteus軟件,新建一個(gè)工程,然后在工作窗口內(nèi)畫好原理圖并保存。(2)打開keil軟件新建一個(gè)工程,選擇所用單片機(jī)的型號(hào),然后新建一個(gè)文件保存為?c文件并添加到工程中去,開始寫源程序,寫好后編譯生成Hex文件。(3)將生成的Hex文件下載到單片機(jī)內(nèi),觀察結(jié)果,并調(diào)試,觀察數(shù)碼管上是否有相應(yīng)正確的變化。若結(jié)果不正確,思考問題的所在,修改源程序,繼續(xù)調(diào)試,直到觀察到正確的運(yùn)行結(jié)果。2、keil軟件調(diào)試結(jié)果圖7C程序調(diào)試結(jié)果3、proteus軟件仿真結(jié)果LCD-門35口0口?-X3旳8CLKRETVCC3■wilmriiBG1s■T2-■s□-bXTHJJpnrvArnFEEHADIPEIHAD二XTA12pnTAmPD.^AD*P口STUSP口后AD6RBTPD.TCXDTPZIU-'CP2.1KCpz^A-nPSSIAL£P(guān)2.^A12EKP2SA13FZjQfAd*P*1□p-qrvR^nP*l*1PlP12P32?FIDP1PA/TDP1£P(guān)3fnP1ApiAimrP17pi.TiHF圖8仿真結(jié)果六、實(shí)物的組裝與調(diào)試1.實(shí)物的組裝由于班上每組同學(xué)設(shè)計(jì)題目,所以采取的是手工焊接。于是我自己畫pcb板可是一上午過去了,還是畫不好,下午只好根據(jù)已畫的pcb及原理圖來對(duì)元器件進(jìn)行擺放和布局,這對(duì)電路板最后的走線增添了一定的難度。2、實(shí)物焊接小小的板,在我們的不懈努力下終于焊好了。焊接電路如下圖。圖9焊接實(shí)物圖3、調(diào)試電路焊接完成后,插上usb線,加上5v電壓,只有電源供電的指示燈亮著,而顯示器沒有任何反應(yīng)。于是,開始排查電路中那個(gè)模塊出現(xiàn)了問題。首先當(dāng)然想到的是顯示器總存在著虛焊的點(diǎn)。利用萬用表,測著每個(gè)引腳與接地短的電壓,發(fā)現(xiàn)了果然有幾個(gè)點(diǎn)存在著虛焊現(xiàn)象。排除這一問題后,加上電壓,顯示器亮了,卻沒有顯示日期。結(jié)果發(fā)現(xiàn)AT89C51芯片沒有加載程序。將其改正后,電路基本上實(shí)現(xiàn)了我們所需的日期和溫度的顯示功能。當(dāng)我們嘗試著讓每個(gè)鍵是否能正常調(diào)時(shí)時(shí),發(fā)現(xiàn)全部按鍵按下沒有什么反應(yīng)。剛開始想著是否是按鍵出現(xiàn)了問題,利用萬用表檢測,發(fā)現(xiàn)按鍵工作狀態(tài)是對(duì)的。最終將問題鎖定在了74HC08芯片上,結(jié)果發(fā)現(xiàn)少接了一根線。接好后,按鍵都能正常調(diào)時(shí)了。經(jīng)過不懈的努力我們的萬年歷終于做成功了。調(diào)試結(jié)果如下圖:■MBW■■■IK山山審A■圖10調(diào)試實(shí)物圖七、心得體會(huì)本次課程設(shè)計(jì)是做一個(gè)多功能的電子萬年歷。經(jīng)過一學(xué)期的學(xué)習(xí)后,應(yīng)用起Proteus軟件時(shí)便顯得得心應(yīng)手,對(duì)程序的編譯,以及生成相應(yīng)的hex文件,將匯編源程序加載等也能熟練掌握。而且通過此次做電子萬年歷使我對(duì)單片機(jī)更加感興趣了,雖然我還沒有能力自己編寫復(fù)雜的程序,但我將會(huì)在以后的學(xué)習(xí)中更加深入地學(xué)習(xí)它。通過這兩周的課程設(shè)計(jì),我學(xué)到了不少的知識(shí)。把以前沒有學(xué)好的模擬電路的知識(shí)進(jìn)行了補(bǔ)充和加強(qiáng),這使我受益匪淺。并加深了我對(duì)于單片機(jī)和數(shù)字電路的認(rèn)識(shí),相信在今后的學(xué)習(xí)和工作中我會(huì)做的越來越好。通過查
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《未成年人保護(hù)制度》
- 食品安全法律法規(guī)知識(shí)培訓(xùn)考核試題及答案
- 2026年大學(xué)心理學(xué)課程教案(完整版)
- 骨干教師培訓(xùn)計(jì)劃及青年教師培養(yǎng)方案
- 企業(yè)培訓(xùn)效果評(píng)估與反饋工具
- 公文寫作格式與范例專題培訓(xùn)
- 我國農(nóng)地金融制度中政策性擔(dān)保機(jī)制的深度剖析與路徑探索
- 北京版四年級(jí)勞動(dòng)技術(shù)教案
- 部編版一年級(jí)語文同步教案設(shè)計(jì)
- 2026年醫(yī)保制度考試試題及答案
- 腹痛的診斷與治療
- 《幼兒良好生活習(xí)慣培養(yǎng)的探究》8700字(論文)
- 中國郵票JT目錄
- 食堂食材配送采購 投標(biāo)方案(技術(shù)方案)
- D700-(Sc)13-尼康相機(jī)說明書
- T-CHAS 20-3-7-1-2023 醫(yī)療機(jī)構(gòu)藥事管理與藥學(xué)服務(wù) 第3-7-1 部分:藥學(xué)保障服務(wù) 重點(diǎn)藥品管理 高警示藥品
- 水利水電工程建設(shè)用地設(shè)計(jì)標(biāo)準(zhǔn)(征求意見稿)
- 建設(shè)工程施工專業(yè)分包合同(GF-2003-0213)
- 標(biāo)準(zhǔn)化在企業(yè)知識(shí)管理和學(xué)習(xí)中的應(yīng)用
- 高中思政課考試分析報(bào)告
- 發(fā)展?jié)h語中級(jí)閱讀教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論