基于51單片機的萬年歷設計_第1頁
基于51單片機的萬年歷設計_第2頁
基于51單片機的萬年歷設計_第3頁
基于51單片機的萬年歷設計_第4頁
基于51單片機的萬年歷設計_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機課程設計 題 目 基于51單片機的萬年歷設計 學生姓名 專業班級 學 號 院 (系) 指導教師 完成時間 目錄1課程設計的目的12課程設計的任務與要求12.1設計任務12.2設計要求13單片機發展概況14設計原理與功能說明44.1設計思想44.2總體電路圖54.3時鐘模塊64.4液晶顯示模塊64.5按鍵模塊75系統測試75.1硬件測試75.2軟件測試86總結8參考文獻10附錄一:總體電路原理圖11附錄二:主程序12附錄三:元器件清單27附錄四:實物圖281課程設計的目的1.通過制作萬年歷,可以對單片機這門課程更好的認識。2.理論與實踐結合,提高自己的動手能力。3.學會與合作者更好的交流學

2、習,共同進步和提高。4.能夠增長查閱資料的能力,視野更加開闊。5.拓展其他學科的聯系,全面發展。 6.培養自我發現問題,解決問題的能力。2課程設計的任務與要求2.1設計任務1.可以去學校圖書館或者網上,搜集整理相關的資料,做好前期理論準備,為以后設計電路,看懂電路圖做理論支持。 2.構想萬年歷電路圖,并且具有可行性,畫出電路圖。3.列舉電路所需的電子元件,仔細對比所需的元件的參數,通過去電子元件經銷商或者網購購買。2.2設計要求1.顯示年、月、日、時、分、秒。2.可通過鍵盤自動調整時間。3.計時精度:月誤差小于20秒。3單片機發展概況單片機誕生于20世紀70年代末,它的發展史大致可分

3、為三個階段: 第一階段(1976-1978):初級單片機微處理階段。該時期的單片機具有 8 位CPU,并行 I/O 端口、8 位時序同步計數器,尋址范圍 4KB,但是沒有串行口。 第二階段(1978-1982):高性能單片機微機處理階段,該時期的單片機具有I/O 串行端口,有多級中斷處理系統,15 位時序同步技術器,RAM、ROM 容量加大,尋址范圍可達 64KB。 第三階段(1982-至今)位單片機微處理改良型及 16 位單片機微處理階段民用電子產品、計算機系統中的部件控制器、智能儀器儀表、工業測控、網絡與通信的職能接口、軍工領域、辦公自動化、集散控制系統、并行多機處理系統和局域網絡系統。S

4、TC系列單片機是由STMicroelectronics 公司生產,并有宏晶公司做大陸代理的。本設計使用STC89C52作為控制核心,其管腳兼容其他51系列的單片機,以下對STC89C52進行簡單講解。   STC89C52單片機包含中央處理器、程序存儲器(ROM)、數據存儲器(RAM)、定時/計數器、并行接口、串行接口和中斷系統等幾大單元及數據總線、地址總線和控制總線等三大總線。采用40Pin封裝的雙列直接DIP結構,圖3.1是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復用。現在對各引腳

5、功能說明如下(圖3.2):(1)主電源引腳Vcc :接5V電源正端。Vss :接5V電源地端。(2)輸入輸出引腳P.0P0.7:P0口的8個引腳。在不接片外存儲器與不擴展IO接口時,可作為準雙向輸入輸出接口。在接有片外存儲器或擴展IO接口時,P0口分時復用為低8位地址總線和雙向數據總線。P1.0P1.7:P1口的8個引腳。可作為準雙向IO接口使用。對于52子系列,P1.0 與 P1.1還有第二種功能:P1.0 可用作定時器計數器2的計數脈沖輸入端T2。P1.1可用作定時器計數器2的外部控制端T2EX。P2.0P2.7:P2口的8個引腳。可作為準雙向IO接口;有接有片外存儲器或擴展IO接口且尋址

6、范圍超過256個字節時,P2口用作高8位地址總線。P3.0P3.7:P3口的8個引腳。除作為準雙向IO接口使用外,還具有第二種功能 ,詳見圖3.2。圖3.1 STC89C52單片機管腳圖引腳第二功能P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXD(串行口輸入)TXD(串行口輸出)I¯N¯T¯0¯(外部中斷0輸入)I¯N¯T¯1¯(外部中斷1輸入)T0(定時器0的外部輸入)T1(定時器1的外部輸入)W¯R¯(片外數據存儲器寫控制信號)R¯D¯(片外數據存儲

7、器讀控制信號)圖3.2 P3口第二功能表 4設計原理與功能說明4.1設計思想以STC89C52單片機為核心,外接單片機復位電路,單片機晶振電路,時鐘芯片DS1302,按鍵電路,液晶顯示電路,通過控制STC89C52單片機的接口來控制時鐘芯片DS1302模塊,按鍵電路,液晶顯示模塊,使液晶能顯示陽歷年、月、日、星期相應的農歷時間。液晶顯示電路DS1302時鐘電路STC89C52單片機晶振電路按鍵電路復位電路圖4-1 硬件系統設計框架4.2總體電路圖圖4-2 總電路圖4.3時鐘模塊DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分

8、、秒進行計時,具有閏年補償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。DS1302內部有一個31×8的用于臨時性存放數據的RAM寄存器。圖4-3 時鐘電路圖4.4液晶顯示模塊本系統選擇的LCD是AMPIRE128×64的漢字圖形型液晶顯示模塊,可顯示漢字及圖形。單片機P1口作為數據輸出口,RS,RW,E分別通過10K的上拉電阻連接到單片機的P0.0,P0.1,P0.2。VDD接5V電源,VSS接地。VEE為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產生“鬼

9、影”,使用時可以通過一個10K的電位器調整對比度)。RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。R/W為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。E(或EN)端為使能(enable)端,下降沿使能。DB0-DB7為雙向數據總線,同時最高位DB7也是忙信號檢測位。BLA、BLK分別為顯示器背光燈的正、負極。圖4-4 液晶顯示電路圖4.5按鍵模塊本系統使用5個button元件分別設置為增加鍵、減小鍵、退出鍵、設置/OK鍵。4個按鍵與一個4個驅動電阻相連,作為整個按鍵控制功能系統,以觸發AT89C52中斷為方式使用設置功能。圖4-5 按鍵電路圖5系統測

10、試 5.1硬件測試在調試硬件時遇到過很多問題,但只要細心、認真檢查這些問題都是可以避免的,主要問題及解決辦法現列如下:認真檢查電路是否有短路的地方,線與線之間,管腳刺破鄰近的漆包線之間是否連接在一起,有的話要用刀劃開,或者重新焊接。檢查完畢后接通電源后LCD1602沒有正確的顯示。在不通電狀態下用萬用表檢測電路是否正常連接,在檢查回路時發現有的點之間看似連接,但由于虛焊導致其并無電氣連接,只能對焊腳進行在加工直到解決問題。5.2軟件測試由于本系統涉及到多個子程序,多個芯片的編程。首先必須對可編程芯片的控制字即其控制指令要熟記于心。其次,芯片很多都有時鐘輸入端,需要晶振支持。對芯片的讀寫都需要在

11、相應的觸發沿到來時才能進行。由于DS18B20是串行通信數據,只用一個口線傳輸,在處理采集的模擬信號時需要一定的時間,會對延時有較高要求。所以在調用溫度子程序時,先關閉定時器1中斷允許,在溫度子程序反回時再打開定時器1中斷允許。6總結在這幾天的單片機課程設計中,老師先給我們介紹各種電子原件,讓我們了解了各種原件的不同以及注意事項,這次課程不僅僅讓我們動了手動了腦,更讓我們體會到了理論與實踐相結合的重要性,使我又不得不承認理論的重要,我們必須打好基礎。在實驗設計的過程中,讓我們體會到以前從來沒有過的動手能力,以及新穎的思維方式,讓我從中獲益非淺。實驗過程中,剛開始就參看電路指導書,畫出了多電路圖

12、,進行了仿真,但是由于實驗元件選擇的不恰當,是的電燈不能依次閃爍,許但最后用萬用表才得以發現問題的所在,并在老師的指導下,終于完成了實驗設計,雖然道路艱難,但我們卻也樂在其中,既鍛煉了動手能力,有培養了動腦能力,更加利于我們在社會上工作。經過我們組員三天的不懈努力,終于成功完成了萬年歷的設計,完成了任務給出的所有要求,期間遇到了很多問題,相關資料的搜集、整理,編寫、調試程序的時候所出現的錯誤,硬件電路的選擇、連接。例如:液晶屏時間顯示出現了錯誤即亂碼現象,我們通過查找書籍和上網搜索的形式知道了問題所在,與延時程序有關,修改了延時程序之后問題得到了解決。在畫原理圖的時候,剛開始每個原件是用線連接

13、的,但是后來發現越連越多,越連越亂,可視性太差了,很容易連錯線,而且一旦出現錯誤,很難檢查出錯誤,所以我們換了一種更好的方法,對其進行標號處理,從而使得原理圖更加的簡潔、直觀,而且操作起來很方便。最終還是解決了這個難題,諸如此類的錯誤在本次設計中有不少,但是通過我們組員之間的通力合作與不懈努力終于克服了這些困難,本次實訓不僅鞏固了我們所學的知識,而且學到了很多課本之外的東西,真正做到了學以致用,加強了邏輯思維能力,對我們大學生來說試一次很好的經歷,同時也讓我們深刻體會到了團結合作的重要性,組員之間合理分工,更加高效、迅速。另外對于了解較少的知識,我們不要氣餒,我們可以通過上網查閱、到圖書館借書

14、瀏覽等方式了解學習,一定要相信自己,要持之以恒,這次經歷加強了我們分析問題、解決問題的能力,為我們以后的工作學習打下堅實的基礎。本次設計中同學之間明確分工,互相幫助,才有了本次設計的圓滿成功。參考文獻1 何立民. MCS-51單片機應用系統設計(系統配置與接口技術).北京:北京航空航天大學出版社,2003.2 周立功. 單片機實驗與實踐教程(三).北京航空航天大學出版社,2006.3 譚浩強. C語言程序設計.北京:清華大學出版社,2006.4 付家才. 單片機實驗與實踐.北京:高等教育出版社,2006.5淡海英. 關于單片機控制的數字萬年歷設計J. 電子制作,2014.6魯廣英. 基于單片機

15、電子萬年歷的設計與實現J. 硅谷,2010.附錄一:總體電路原理圖 總體電路原理圖附錄二:主程序#include"lcd.h"/* 函 數 名 : Lcd1602_Delay1ms* 函數功能 : 延時函數,延時1ms* 輸 入 : c* 輸 出 : 無* 說 名 : 該函數是在12MHZ晶振下,12分頻單片機的延時。*/void Lcd1602_Delay1ms(uint c) /誤差 0us uchar a,b;for (; c>0; c-) for (b=199;b>0;b-) for(a=1;a>0;a-); /* 函 數 名 : LcdWrite

16、Com* 函數功能 : 向LCD寫入一個字節的命令* 輸 入 : com* 輸 出 : 無*/#ifndef LCD1602_4PINS /當沒有定義這個LCD1602_4PINS時void LcdWriteCom(uchar com) /寫入命令LCD1602_E = 0; /使能LCD1602_RS = 0; /選擇發送命令LCD1602_RW = 0; /選擇寫入LCD1602_DATAPINS = com; /放入命令Lcd1602_Delay1ms(1);/等待數據穩定LCD1602_E = 1; /寫入時序Lcd1602_Delay1ms(5); /保持時間LCD1602_E =

17、0;#else void LcdWriteCom(uchar com) /寫入命令LCD1602_E = 0; /使能清零LCD1602_RS = 0; /選擇寫入命令LCD1602_RW = 0; /選擇寫入LCD1602_DATAPINS = com;/由于4位的接線是接到P0口的高四位,所以傳送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1; /寫入時序Lcd1602_Delay1ms(5);LCD1602_E = 0;/Lcd1602_Delay1ms(1);LCD1602_DATAPINS = com << 4; /發送低四位Lcd1602

18、_Delay1ms(1);LCD1602_E = 1; /寫入時序Lcd1602_Delay1ms(5);LCD1602_E = 0;#endif/* 函 數 名 : LcdWriteData* 函數功能 : 向LCD寫入一個字節的數據* 輸 入 : dat* 輸 出 : 無*/ #ifndef LCD1602_4PINS void LcdWriteData(uchar dat)/寫入數據LCD1602_E = 0;/使能清零LCD1602_RS = 1;/選擇輸入數據LCD1602_RW = 0;/選擇寫入LCD1602_DATAPINS = dat; /寫入數據Lcd1602_Delay1

19、ms(1);LCD1602_E = 1; /寫入時序Lcd1602_Delay1ms(5); /保持時間LCD1602_E = 0;#elsevoid LcdWriteData(uchar dat)/寫入數據LCD1602_E = 0; /使能清零LCD1602_RS = 1; /選擇寫入數據LCD1602_RW = 0; /選擇寫入LCD1602_DATAPINS = dat;/由于4位的接線是接到P0口的高四位,所以傳送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1; /寫入時序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD160

20、2_DATAPINS = dat << 4; /寫入低四位Lcd1602_Delay1ms(1);LCD1602_E = 1; /寫入時序Lcd1602_Delay1ms(5);LCD1602_E = 0;#endif/* 函 數 名 : LcdInit()* 函數功能 : 初始化LCD屏* 輸 入 : 無* 輸 出 : 無*/ #ifndefLCD1602_4PINSvoid LcdInit() /LCD初始化子程序 LcdWriteCom(0x38); /開顯示LcdWriteCom(0x0c); /開顯示不顯示光標LcdWriteCom(0x06); /寫一個指針加1LcdW

21、riteCom(0x01); /清屏LcdWriteCom(0x80); /設置數據指針起點#elsevoid LcdInit() /LCD初始化子程序LcdWriteCom(0x32); /將8位總線轉為4位總線LcdWriteCom(0x28); /在四位線下的初始化LcdWriteCom(0x0c); /開顯示不顯示光標LcdWriteCom(0x06); /寫一個指針加1LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /設置數據指針起點#endif/* 實驗名 : 定時器實驗* 使用的IO : * 實驗效果 :1602顯示時鐘,按K3進入時鐘設置,按K

22、1選擇設置的時分秒,按K2選擇*選擇設置加1。 *注意 :*/#include<reg51.h>#include"lcd.h"sbit K1=P36;sbit K4=P34;sbit K3=P35;sbit K2=P33;unsigned char Time;/用來計時間的值void Delay1ms(unsigned int c);void TimerConfiguration();void Int0Configuration();unsigned char SetPlace; /* 函 數 名 : main* 函數功能 : 主函數* 輸 入 : 無* 輸 出

23、 : 無*/void main(void)unsigned char hour,minit,second;unsigned int i;TimerConfiguration();Int0Configuration();LcdInit();hour=12;LcdWriteData('0'+hour/10);LcdWriteData('0'+hour%10);LcdWriteData('-');LcdWriteData('0'+minit/10);LcdWriteData('0'+minit%10);LcdWriteD

24、ata('-');LcdWriteData('0'+second/10);LcdWriteData('0'+second%10);while(1)if(TR0=0)if(K1=0)/檢測按鍵K2是否按下Delay1ms(10);/消除抖動if(K1=0)SetPlace+;if(SetPlace>=3)SetPlace=0;while(i<50)&&(K1=0) /檢測按鍵是否松開Delay1ms(1);i+;i=0;if(K2=0)/檢測按鍵K3是否按下Delay1ms(10);/消除抖動if(K2=0)if(Set

25、Place=0)second+;if(second>=60)second=0;else if(SetPlace=1)minit+;if(minit>=60)minit=0;elsehour+;if(hour>=24)hour=0;while(i<50)&&(K2=0) /檢測按鍵是否松開Delay1ms(1);i+;i=0;if(Time>=20) /一秒鐘來到改變數值Time=0;second+;if(second=60)second=0;minit+;if(minit=60)minit=0;hour+;if(hour=24)hour=0; /-顯示時鐘-/LcdWriteCom(0x80);LcdWriteData('0'+hour/10);LcdWriteData('0'+hour%10);LcdWriteCom(0x83);LcdWriteData('0'+minit/10);LcdWriteData('0'+minit%10);LcdWriteCom(0x86);LcdWriteData('0'+second/10);LcdWriteData('0'+second%10);/* 函 數 名 : De

溫馨提示

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

評論

0/150

提交評論