版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 單片機 課程設(shè)計(論文)</p><p> 2014年 12 月 18 日</p><p> 題 目用數(shù)碼管設(shè)計的可調(diào)式數(shù)字鐘 </p><p> 專 ?業(yè)? 班? 級</p><p> 學(xué) ?? ? 號</p><p> 姓 ?名</p>
2、<p> 指 導(dǎo) 教 師</p><p> 學(xué) 院 名 稱電氣信息學(xué)院 </p><p><b> 摘 要</b></p><p> 數(shù)字電子時鐘電路設(shè)計系統(tǒng),以AT89C51單片機為控制核心,由鍵盤顯示、定時鬧鈴、LED共陰極數(shù)碼管和LED燈顯示等功能模塊組成?;陬}目基本要求,本系統(tǒng)對時
3、間 顯示和定時報警進行了重點設(shè)計。本系統(tǒng)大部分功能由軟件來實現(xiàn),吸收了硬件軟件化的思想,大部分功能通過軟件來實現(xiàn),使電路簡單明了,系統(tǒng)穩(wěn)定性大大提高。本系統(tǒng)不僅成功的實現(xiàn)了要求的基本功能,而且有一定的創(chuàng)新功能。 </p><p> 關(guān)鍵字:單片機;AT89C51;數(shù)字鐘 </p><p><b>
4、Abstract </b></p><p> This digial electronic clock circuit design system ,based o n c hip microcomputer AT89C51,is com
5、posed by the following functional modules : keyboard displaying , timing alarmg. common cathode LED digital tube, LED lights
6、display,and so on. According to the basic requirements of the subject ,the system stresses on the realization of Time display
7、 and regularly report to the police.The design achieved the required basic technical indexes. Furthermore , adopting the iedao
8、0;fhardware-to-software, mo</p><p> Key words:chip microcomputer;AT89C51:digital electronic clock</p><p><b> 目 錄</b></p><p><b> 課題說明
9、</b></p><p> 1.1 課題背景..............................................................................................................3</p><p> 1.2 系統(tǒng)功能.....................................
10、.........................................................................3</p><p><b> 方案設(shè)計</b></p><p> 2.1 系統(tǒng)總體設(shè)計要求.................................................................
11、............................4</p><p> 2.2 方案論證..............................................................................................................4</p><p><b> 電路設(shè)計</b><
12、;/p><p> 3.1系統(tǒng)硬件設(shè)計......................................................................................................6</p><p> 3.2最小系統(tǒng)..........................................................
13、....................................................6</p><p> 3.3按鍵電路..............................................................................................................7</p><p> 3.4
14、顯示電路..............................................................................................................8</p><p><b> 程序設(shè)計</b></p><p> 4.1主程序..............................
15、....................................................................................9</p><p> 4.2顯示子程序........................................................................................................
16、.11</p><p> 4.3定時器/計數(shù)器T0中斷服務(wù)程序.....................................................................12</p><p><b> 系統(tǒng)仿真</b></p><p> 5.1調(diào)試步驟.............................
17、................................................................................16</p><p> 5.2實際出現(xiàn)的問題及解決方法.............................................................................16</p><p>
18、 5.3仿真圖.................................................................................................................16</p><p> 設(shè)計經(jīng)驗與總結(jié)...................................................................
19、.......................18</p><p> 參考文獻........................................................................................................19</p><p> 附錄一....................................
20、..................................................................................20</p><p> 附錄二..............................................................................................................
21、........21</p><p><b> 一.課題說明</b></p><p><b> 1.1 課題背景</b></p><p> 20世紀末,電子技術(shù)獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高。目前,單片機正朝著高性能和多品種方向發(fā)
22、展,發(fā)展趨勢將進一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。單片機應(yīng)用的重要意義在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。</p><p> 單片機模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無
23、機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。</p><p><b> 1.2 系統(tǒng)功能</b></p><p> 此次設(shè)計是單片機內(nèi)部的定時/計數(shù)器來實現(xiàn)電子時鐘的方法以及借助鍵盤直接控制整時的調(diào)整,本設(shè)計根據(jù)AT89C51單片機系統(tǒng)擴展的基本原理和方法,由單片機AT89C51芯片,LED數(shù)碼管和鍵盤為核心,輔以必要的電路,構(gòu)成了一個單片機電子時鐘。一
24、塊單片機芯片就是一臺計算機,由于單片機以其集成度高、體積小、可靠性高、控制功能強、低電壓、低功耗等特點使它應(yīng)用于智能儀器儀表、機電一體化、實時程控、人類生活中。除此之外還廣泛應(yīng)用辦公自動化領(lǐng)域、商業(yè)營銷領(lǐng)域、汽車及通信系統(tǒng)、計算機外部設(shè)備等各領(lǐng)域中,并且單片機已成為計算機發(fā)展和應(yīng)用的一個重要方面。由此可見掌握單片機的使用方法和利用單片機解決實際問題具有重要的意義。而此次的設(shè)計剛好用到單片機相關(guān)的知識可以說這是這次設(shè)計的重要意義和目的所在
25、。</p><p> 再者,此設(shè)計的LED電子時鐘主要是顯時間的,是時鐘用途。在此設(shè)計的基礎(chǔ)上人們還可根據(jù)不同的需求和不同的設(shè)計水平做出不同的設(shè)計項目。也可以加上日期,溫度的顯示和鬧鐘的功能。如果設(shè)計水平還更高的話還可以設(shè)計LED電子顯示屏。因此說,LED電子時鐘設(shè)計是最簡單和基礎(chǔ)的。而且電子時鐘很實用,準確性也很好,也容易調(diào)節(jié),若有毀壞更換元器件也簡單,制作原理和過程也很易懂易做,成本也不高。在此設(shè)計間也包含
26、了很多的知識,跟我所學(xué)專業(yè)又對口,所以,做這個LED電子時鐘是個很用很好很值得做的設(shè)計。</p><p><b> 二.方案設(shè)計</b></p><p> 2.1 系統(tǒng)總體設(shè)計要求</p><p> 本次設(shè)計中的LED數(shù)碼管電子時鐘電路采用24小時制記時方式。本次設(shè)計采用AT89C51單片機的擴展芯片和1個74LS45做驅(qū)動,由八塊LED
27、數(shù)碼管構(gòu)成的顯示系統(tǒng),與傳統(tǒng)的基于8/16位普通單片機的LED顯示系統(tǒng)相比較,本系統(tǒng)在不顯著地增加系統(tǒng)成本的情況下,可支持更多的LED數(shù)碼管穩(wěn)定顯示。設(shè)計采用AT89C51單片機,配備12MHz晶振,復(fù)位電路為上電自動復(fù)位。采用軟件譯碼動態(tài)顯示,考慮直接用單片機I/O口作為位選時可能驅(qū)動功率不夠,可采用三極管作驅(qū)動共陽極數(shù)碼管顯示。8位8段LED數(shù)碼管作正常、調(diào)時顯示,時間按時分秒排列,時鐘誤差:24小時誤差3~5秒,并且在按鍵的作用下
28、可以進行調(diào)時,調(diào)分,復(fù)位功能。本電路采用直流5V電源供電。同時為了限流保護電路也用了若干個阻值不等的電阻。</p><p> 按照系統(tǒng)設(shè)計功能的要求,確定系統(tǒng)由4個模塊組成:主控制器、掃描驅(qū)動、調(diào)節(jié)電路和顯示電路。</p><p> 數(shù)碼管電子鐘電路結(jié)構(gòu)框圖如圖2-1所示</p><p> 圖2-1 電路結(jié)構(gòu)圖</p><p><
29、b> 2.2 方案論證</b></p><p> 在本文一開始做了一些概述主要說明此設(shè)計的目的和意義,并會對這類設(shè)計項目發(fā)展情況做個簡介。這是對這次設(shè)計很重要的一個認識是前提和設(shè)計者必須明確和了解的。</p><p> 然后本文對此設(shè)計做了一些簡要分析,這對理清設(shè)計思想很重要。然后還對設(shè)計中用到的元器件進行比較全面的介紹。只有真正了解了元器件的特性和功能才能讓這些元
30、器件在設(shè)計中起到作用。電子整個設(shè)計第一步是電路原理圖,它直接關(guān)系著后續(xù)的工作。</p><p> 緊接著就是程序了,如果只有硬件電路而沒有程序,那么這個設(shè)計將一文不值,也就是說是一堆破銅爛鐵。所以這部分也是非常重要的。</p><p> 最后結(jié)合整個設(shè)計總結(jié)了一些心得體會為這次的設(shè)計畫上完滿的句號。也為以后更好的設(shè)計提供經(jīng)驗。</p><p><b>
31、 三. 電路設(shè)計</b></p><p><b> 3.1系統(tǒng)硬件設(shè)計</b></p><p> 電子鐘的原理框圖如圖3-1所示。它由以下幾個部件組成:單片機AT89C51、電源、時分秒顯示部件。</p><p> 時分秒顯示采用動態(tài)掃描,以降低對單片機端口數(shù)的要求,同時也降低系統(tǒng)的功耗。時分顯示模塊以及顯示驅(qū)動都通過AT8
32、9C51的I/O口控制。</p><p> 電源部分:整流穩(wěn)壓來得到+5V電壓,維持系統(tǒng)的正常工作。</p><p> 電子鐘系統(tǒng)原理框圖如圖2-2所示:</p><p> 圖3-1電子鐘系統(tǒng)原理框圖</p><p> 3.2 最小單片機系統(tǒng)</p><p> 51單片機最小系統(tǒng)復(fù)位電路的極性電容C1的大小直
33、接影響單片機的復(fù)位時間,一般采用10~30uF,51單片機最小系統(tǒng)容值越大需要的復(fù)位時間越短。51單片機最小系統(tǒng)晶振Y1也可以采用6 M H Z 或者12MHz,在正常工作的情況下可以采用更高頻率的晶振,51單片機最小系統(tǒng)晶振的振蕩頻率直接影響單片機的處理速度,頻率越大處理速度越快。51單片機最小系統(tǒng)起振電容C2、C3一般采用15~33pF
34、,并且電容離晶振越近越好,晶振離單片機越近越好4.P0口為開漏輸出,作為輸出口時需加上拉電阻,阻值一般為10k。設(shè)置為定時器模式時,加1計數(shù)器是對內(nèi)部機器周期計數(shù)(1個機器周期等于12個振蕩周期,即計數(shù)頻率為晶振頻率的1/12)。計數(shù)值N乘 以 機器周期Tcy就是定時時間t。設(shè)置為計數(shù)器模式時,外部事件計數(shù)脈沖由T0或T1從引腳進入到計數(shù)器。在每個機器周期的S5P2期間采樣T0、T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣
35、到一低電平時,則計數(shù)器加1,更新的計數(shù)值在下一個機器周期的S3P1期間裝</p><p> 最小系統(tǒng)如圖3-2所示:</p><p><b> 圖3-2 最小系統(tǒng)</b></p><p><b> 3.3按鍵電路</b></p><p> 按鍵電路使用的是AT89C51單片機的P1和P2管腳
36、,可調(diào)試電子中的按鍵總共為二個,按鍵功能分別為分鐘,小時的加減。通過按鍵電路,我們可以隨意調(diào)整電子鐘的時間,使單片機發(fā)揮它的作用。</p><p> 按鍵電路圖如圖3-3所示:</p><p><b> 圖3-3 按鍵電路</b></p><p><b> 3.4顯示電路</b></p><p&g
37、t; 可調(diào)試電子鐘的顯示電路采用8位數(shù)碼管,顯示出時間的時,分,秒。使用的是AT89C51單片機的P0和P3管腳,顯示電路中還將用到一塊74LS245。</p><p> 顯示電路圖如圖3-4所示:</p><p> 圖3-4 顯示電路 </p><p><b> 四.程序設(shè)計</b></p><p><b
38、> 4.1主程序</b></p><p> 主程序執(zhí)行流程如圖4-1所示,主程序先對顯示單元和定時器/計數(shù)器初始化,然后重復(fù)調(diào)用數(shù)碼管顯示模塊和按鍵處理模塊,當(dāng)有鍵按下,則轉(zhuǎn)入相應(yīng)的功能程序。</p><p> 圖4-1 主程序執(zhí)行流程圖</p><p><b> 主程序如下所示:</b></p><
39、;p> void main()</p><p><b> {</b></p><p><b> time0();</b></p><p><b> while(1) </b></p><p><b> {</b></p>&l
40、t;p><b> Keyget();</b></p><p> Segplay(); </p><p><b> }</b></p><p><b> }</b></p><p> /***************************************
41、********************************************************</p><p><b> 中斷</b></p><p> ***********************************************************************************************/&
42、lt;/p><p> void timer0() interrupt 1 </p><p><b> { </b></p><p> TH0=0xf8; //高八位</p><p> TL0=0xcb; //低八位</p>
43、<p> counter++;</p><p> if(counter==500) </p><p><b> {sign=1;}</b></p><p> if(counter==999) </p><p><b> {sign=0;}</b></p><
44、;p> if(counter==999) </p><p> {counter=0;</p><p><b> second++;</b></p><p> if(second==60)</p><p> {second=0;minute++;}
45、//秒進位</p><p> if(minute==60)</p><p> {minute=0;hour++;} // //分進位</p><p> if(hour==24)</p><p><b> {hour=0;}</b></p><p><b&g
46、t; } }</b></p><p><b> 4.2顯示子程序</b></p><p> 本系統(tǒng)共用8個數(shù)碼管,從右到左依次顯示秒個位、秒十位、橫線、分個位、分十位、橫線、時個位和時十位。采用軟件譯碼動態(tài)顯示。由于采用8位 共 陰LED數(shù)碼管動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示,所以顯示用十進制BCD碼數(shù)據(jù)的對應(yīng) 段 碼 存放在ROM中。</p>&
47、lt;p><b> 顯示子程序如下:</b></p><p> #include <reg51.h></p><p> Unsigned char Seg[]={0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f,0x40,0x00};//數(shù)碼管顯示1-9和—的斷碼</p><
48、p> unsigned char Com[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; //數(shù)碼管亮滅的數(shù)組</p><p> /***********************************************************************************************</p
49、><p><b> 定義全局變量</b></p><p> **********************************************************************************************/</p><p> unsigned int counter;
50、 //定義計數(shù)數(shù)據(jù)</p><p> unsigned char sign; //定義閃爍標(biāo)志位</p><p> unsigned char mode; //定義模式</p><p> unsigned char second=0,minute=0,hour
51、=0; //定義秒分時的初值</p><p> unsigned char ADD_bit=0,DEC_bit=0,flag=0; //加標(biāo)志位和減標(biāo)志位賦初值0,</p><p> /******************************************************************************************
52、*****</p><p><b> 定義按鍵</b></p><p> ***********************************************************************************************/</p><p> sbit ms=P1^0;
53、 //按鍵P^0調(diào)節(jié)模式變化</p><p> sbit ADD=P1^1; //按鍵P1^1實現(xiàn)加一</p><p> sbit DEC=P1^2; //按鍵P1^2實現(xiàn)減一 </p><p> 4.3定時器/計數(shù)器
54、T0中斷服務(wù)程序</p><p> 定時器/計數(shù)器T0用于時間計時。選擇方式1,重復(fù)定時,定時時間設(shè)為50ms,定時時間到則中斷,在中斷服務(wù)程序中用一個計數(shù)器對50ms計數(shù),計20次則對秒單元加1,秒單元加到60則對分單元加1,同時秒單元清0;分單元加到60則對時單元加1,同時分單元清0;時單元加到24則對時單元清0,標(biāo)志一天時間 計滿。在對各單元計數(shù)的同時,把它們的值放到存儲單元的指定位置。定時器/計數(shù)器T0
55、中斷服務(wù)程序流程圖如圖4-2所示。</p><p> 圖4-2 定時器/計數(shù)器T0中斷服務(wù)程序流程圖</p><p> 定時器/計數(shù)器T0中斷服務(wù)程序如下:</p><p><b> 延時函數(shù)</b></p><p> ***********************************************
56、*************************************************/</p><p> void delay(unsigned int t)</p><p><b> {</b></p><p> while(--t);</p><p><b> }</b>&
57、lt;/p><p> /***********************************************************************************************</p><p><b> 數(shù)碼管掃描</b></p><p> ********************************
58、****************************************************************/</p><p> void Segplay()</p><p><b> {</b></p><p> //模式0 正常模式</p><p> if(mode==0)</p&
59、gt;<p><b> { </b></p><p> P0=Seg[second%10]; P3=Com[7];delay(100);P3=Com[8];</p><p> P0=Seg[second/10]; P3=Com[6];delay(100);P3=Com[8];</p><p> P0=Seg[10];
60、 P3=Com[5];delay(100);P3=Com[8];</p><p> P0=Seg[minute%10]; P3=Com[4];delay(100);P3=Com[8];</p><p> P0=Seg[minute/10]; P3=Com[3];delay(100);P3=Com[8];</p><p> P0=Seg[10];
61、 P3=Com[2];delay(100);P3=Com[8];</p><p> P0=Seg[hour%10]; P3=Com[1];delay(100);P3=Com[8];</p><p> P0=Seg[hour/10]; P3=Com[0];delay(100);P3=Com[8];</p><p><b> }&l
62、t;/b></p><p> //模式1 可加減分</p><p> if(mode==1)</p><p><b> {</b></p><p> if(sign==1)</p><p><b> {</b></p><p>
63、P0=Seg[second%10]; P3=Com[7]; delay(100);P3=Com[8];</p><p> P0=Seg[second/10]; P3=Com[6]; delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[5]; delay(100);P3=Com[8];</p><p>
64、 P0=Seg[minute%10]; P3=Com[4]; delay(100);P3=Com[8];</p><p> P0=Seg[minute/10]; P3=Com[3]; delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[2] ;delay(100);P3=Com[8];</p><
65、;p> P0=Seg[hour%10]; P3=Com[1]; delay(100);P3=Com[8];</p><p> P0=Seg[hour/10]; P3=Com[0]; delay(100);P3=Com[8];</p><p><b> }</b></p><p> if(sign==0)</p>
66、<p><b> {</b></p><p> P0=Seg[second%10];P3=Com[7];delay(100);P3=Com[8];</p><p> P0=Seg[second/10];P3=Com[6];delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3
67、=Com[5];delay(100);P3=Com[8];</p><p> P0=Seg[11]; P3=Com[4];delay(100);P3=Com[8];</p><p> P0=Seg[11]; P3=Com[3];delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=
68、Com[2];delay(100);P3=Com[8];</p><p> P0=Seg[hour%10]; P3=Com[1];delay(100);P3=Com[8];</p><p> P0=Seg[hour/10]; P3=Com[0];delay(100);P3=Com[8];</p><p><b> }</b></
69、p><p><b> }</b></p><p> //模式2 可加減時</p><p> if(mode==2)</p><p><b> { </b></p><p> if(sign==1)</p><p><b>
70、{</b></p><p> P0=Seg[second%10]; P3=Com[7];delay(100); P3=Com[8];</p><p> P0=Seg[second/10]; P3=Com[6];delay(100); P3=Com[8];</p><p> P0=Seg[10]; P3=Com[5];delay(100
71、); P3=Com[8];</p><p> P0=Seg[minute%10]; P3=Com[4];delay(100); P3=Com[8];</p><p> P0=Seg[minute/10]; P3=Com[3]; delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[2] ;del
72、ay(100);P3=Com[8];</p><p> P0=Seg[hour%10]; P3=Com[1]; delay(100);P3=Com[8];</p><p> P0=Seg[hour/10]; P3=Com[0]; delay(100);P3=Com[8];</p><p><b> }</b></p>
73、<p> if(sign==0)</p><p><b> {</b></p><p> P0=Seg[second%10]; P3=Com[7];delay(100); P3=Com[8];</p><p> P0=Seg[second/10]; P3=Com[6];delay(100); P3=Com[8];</p
74、><p> P0=Seg[10]; P3=Com[5];delay(100); P3=Com[8];</p><p> P0=Seg[minute%10]; P3=Com[4];delay(100); P3=Com[8];</p><p> P0=Seg[minute/10]; P3=Com[3]; delay(100);P3=Com[8];<
75、/p><p> P0=Seg[10]; P3=Com[2] ;delay(100);P3=Com[8];</p><p> P0=Seg[11]; P3=Com[1]; delay(100);P3=Com[8];</p><p> P0=Seg[11]; P3=Com[0]; delay(100);P3=Com[8]
76、;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /******************************************************************
77、*****************************</p><p><b> 按鍵掃描</b></p><p> ***********************************************************************************************/</p><p> voi
78、d Keyget()</p><p><b> { </b></p><p> //通過標(biāo)志位來控制模式</p><p> if(ms==0){flag=1;}</p><p> if((ms)&&(flag)){flag=0;mode++;if(mode==3) mode=0;}</p&
79、gt;<p> if(mode==1)</p><p><b> {</b></p><p><b> //加按鍵</b></p><p> if(ADD==0){ADD_bit=1;}</p><p> if((ADD)&&(ADD_bit)){ ADD_b
80、it=0;minute++;if(minute==60)minute=0;}</p><p><b> //減按鍵</b></p><p> if(DEC==0){DEC_bit=1;} </p><p> if((DEC)&&(DEC_bit==1)){DEC_bit=0;if(minute==0)minute=59;
81、minute--;}</p><p><b> }</b></p><p> if(mode==2) </p><p><b> {</b></p><p> if(
82、ADD==0){ADD_bit=1;}</p><p> if((ADD)&&(ADD_bit)){ADD_bit=0;hour++;if(hour==24)hour=0;}</p><p> if(DEC==0){DEC_bit=1;} </p><p> if((DEC)&&(DEC_bit==1)){DEC_bit=0;
83、if(hour==0)hour=24;hour--;}</p><p><b> }</b></p><p><b> }</b></p><p> /***********************************************************************************
84、************</p><p><b> 初始化</b></p><p> ***********************************************************************************************/</p><p> void time0()
85、 </p><p><b> {</b></p><p> TMOD=0x01; //設(shè)置定時器模式1</p><p> TH0=0xf8; //高八位賦初值</p><p> TL0=0xcb; //
86、低八位賦初值</p><p> TR0=1; //啟動定時器0計數(shù)</p><p> ET0=1; //使能定時器中斷</p><p> EA=1; //使能總中斷</p><p><b> }</b&g
87、t;</p><p><b> 五.系統(tǒng)仿真</b></p><p><b> 5.1調(diào)試步驟</b></p><p> 在KEIL軟件中編寫程序,完成后,單擊“項目”下的“編譯”,產(chǎn)生“.hex”文件。</p><p> ?。?)打開proteus軟件,畫上硬件電路圖,保存。</p&g
88、t;<p> (3)雙擊AT89C51芯片,在program file中加入“.hex”文件,按確定。</p><p><b> ?。?)調(diào)試運行。</b></p><p> 5.2實際出現(xiàn)的問題及解決方法</p><p> 在keil中建立工程時遇到了困難,由于之前不太熟悉keil這個軟件,不知道如何新建工程和如何將程序?qū)?/p>
89、入protues中。經(jīng)過上網(wǎng)查詢和同學(xué)的幫助我學(xué)會了如何建立工程和如何添加工程。</p><p> 5.3仿真圖如圖所示</p><p> 運行前如圖5-1所示:</p><p><b> 圖5-1 原理圖</b></p><p> 運行后如圖5-2所示:</p><p> 圖5-2 仿
90、真運行圖</p><p><b> 六.設(shè)計總結(jié)與心得</b></p><p> 由于電路設(shè)計合理,功能電路基本能實現(xiàn)設(shè)計要求。在編程中遇到的最大困難就是延時的計算和數(shù)碼管的顯示程序段,在整體程序來看,我采用程序的結(jié)構(gòu)化,使程序明朗,各功能程序段都以子程序的方式調(diào)用,所以在主程序中是相當(dāng)?shù)暮唵蚊骼实?。在硬件和軟件的結(jié)合過程中也遇到比較大的問題,就是一開始數(shù)碼管不是
91、顯示8,就是亂碼之類的,進過調(diào)試,現(xiàn)在沒有出現(xiàn)這樣的現(xiàn)象了。這也是我的一大攻關(guān)吧。但是,對于程序我還是很不好以后在這方面要多多加強。而在硬件的調(diào)試中,由于選用電阻過大,數(shù)碼管的亮度非常的低,我觀察周圍的同學(xué)有做相似 課題的也多少會有這個問題。關(guān)于這個問題我本來的解決方案是采用三極管對電路信號進行放大,但后來考慮到我板子上的線路已經(jīng)成型且非常密集。最終采取降阻 來提高信號,過程中我發(fā)現(xiàn)直接將電阻短接可以取得更好的效果,也可以是板面保持美觀
92、,所以將段選上的電阻全部短接,最終實物才取得令我比較滿意的效果。</p><p> 在整個設(shè)計過程中我學(xué)會了很多,不僅鞏固了我的專業(yè)知識,提升了我的學(xué)習(xí)能力和知識能力,也使我學(xué)習(xí)到很多書上沒有的,更加強了我的動手能力。從這次的設(shè)計中我確實受益匪淺,我想也不枉陸老師對我的一路輔導(dǎo)與幫助。我相信,以后有機會一定會做更多這樣的設(shè)計。</p><p><b> 七.參考文獻</
93、b></p><p> 秦實宏 許春輝/主編《MCS-51單片機原理及應(yīng)用》華中科技大學(xué)出版社,2010.</p><p> (2)郭天祥. 新概念51單片機C語言教程[M]. 北京:電子工業(yè)出版社, 2010.</p><p> (3)張毅剛,彭喜元,董繼成. 單片機原理及其應(yīng)用[M]. 北京:高等教育出版社, 2008.</p><
94、;p> ?。?)彭偉. 單片機C語言設(shè)計實訓(xùn)100例[M]. 北京:電子工業(yè)出版社, 2010.</p><p> (5)陳益飛. 單片機原理及應(yīng)用技術(shù)[M]. 北京:國防工業(yè)出版社, 2011.</p><p><b> 附錄一</b></p><p> 74LS245 三態(tài)輸出的雙向八組總線收發(fā)器
95、;</p><p><b> 引出端符號: </b></p><p> A A總線端 B B總線端 /G 三態(tài)允許端(低電平有效) DIR 方向控制端 </p><p>
96、; 74LS245是用來驅(qū)動LED或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。 </p><p> 如果用C51的P0口輸出到數(shù)碼管,那就要考慮到數(shù)碼管的亮度以及P0口帶負載的能力,當(dāng)8051單片機的P0口總線負載達到或超過P0最大負載能力時,必須接入74LS245等總線驅(qū)動器。選用74LS245提高驅(qū)動能
97、力。P0口的輸出經(jīng)過74LS245提高驅(qū)動后,輸出到數(shù)碼管顯示電路。 </p><p><b> 工作原理: </b></p><p> 當(dāng)片選端/CE低電平有效時, </p><p> DIR=“0”,信號由 B 向 A 傳輸;(接收)
98、0; DIR=“1”,信號由 A 向 B 傳輸;(發(fā)送) </p><p> 當(dāng)CE為高電平時,A、B均為高阻態(tài)。</p><p><b> 附錄二</b></p><p><b> 程序:</b></p><p> #includ
99、e <reg51.h></p><p> unsigned char Seg[]={0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f,0x40,0x00};//數(shù)碼管顯示1-9和—的斷碼</p><p> unsigned char Com[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
100、,0xff}; //數(shù)碼管亮滅的數(shù)組</p><p><b> /</b></p><p><b> 定義全局變量</b></p><p><b> /</b></p><p> unsigned int counter;
101、 //定義計數(shù)數(shù)據(jù)</p><p> unsigned char sign; //定義閃爍標(biāo)志位</p><p> unsigned char mode; //定義模式</p><p> unsigned char second=0,minute=0,ho
102、ur=0; //定義秒分時的初值</p><p> unsigned char ADD_bit=0,DEC_bit=0,flag=0; //加標(biāo)志位和減標(biāo)志位賦初值0,</p><p><b> / 定義按鍵/</b></p><p> sbit ms=P1^0;
103、 //按鍵P^0調(diào)節(jié)模式變化</p><p> sbit ADD=P1^1; //按鍵P1^1實現(xiàn)加一</p><p> sbit DEC=P1^2; //按鍵P1^2實現(xiàn)減一</p><p><b> /延時函數(shù)/</b>&l
104、t;/p><p> void delay(unsigned int t)</p><p><b> {</b></p><p> while(--t);</p><p><b> }</b></p><p><b> / 數(shù)碼管掃描/</b><
105、;/p><p> void Segplay()</p><p><b> {</b></p><p> //模式0 正常模式</p><p> if(mode==0)</p><p><b> { </b></p><p> P0=Seg[s
106、econd%10]; P3=Com[7];delay(100);P3=Com[8];</p><p> P0=Seg[second/10]; P3=Com[6];delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[5];delay(100);P3=Com[8];</p><p> P0=Seg[m
107、inute%10]; P3=Com[4];delay(100);P3=Com[8];</p><p> P0=Seg[minute/10]; P3=Com[3];delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[2];delay(100);P3=Com[8];</p><p> P0=Seg
108、[hour%10]; P3=Com[1];delay(100);P3=Com[8];</p><p> P0=Seg[hour/10]; P3=Com[0];delay(100);P3=Com[8];</p><p><b> }</b></p><p> //模式1 可加減分</p><p> if
109、(mode==1)</p><p><b> {</b></p><p> if(sign==1)</p><p><b> {</b></p><p> P0=Seg[second%10]; P3=Com[7]; delay(100);P3=Com[8];</p><p
110、> P0=Seg[second/10]; P3=Com[6]; delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[5]; delay(100);P3=Com[8];</p><p> P0=Seg[minute%10]; P3=Com[4]; delay(100);P3=Com[8];</p><
111、;p> P0=Seg[minute/10]; P3=Com[3]; delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[2] ;delay(100);P3=Com[8];</p><p> P0=Seg[hour%10]; P3=Com[1]; delay(100);P3=Com[8];</p>
112、;<p> P0=Seg[hour/10]; P3=Com[0]; delay(100);P3=Com[8];</p><p><b> }</b></p><p> if(sign==0)</p><p><b> {</b></p><p> P0=Seg[secon
113、d%10];P3=Com[7];delay(100);P3=Com[8];</p><p> P0=Seg[second/10];P3=Com[6];delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[5];delay(100);P3=Com[8];</p><p> P0=Seg[11];
114、 P3=Com[4];delay(100);P3=Com[8];</p><p> P0=Seg[11]; P3=Com[3];delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[2];delay(100);P3=Com[8];</p><p> P0=Seg[hour%10];
115、 P3=Com[1];delay(100);P3=Com[8];</p><p> P0=Seg[hour/10]; P3=Com[0];delay(100);P3=Com[8];</p><p><b> }</b></p><p><b> }</b></p><p> //模式2
116、 可加減時</p><p> if(mode==2)</p><p><b> { </b></p><p> if(sign==1)</p><p><b> {</b></p><p> P0=Seg[second%10]; P3=Com[7];delay
117、(100); P3=Com[8];</p><p> P0=Seg[second/10]; P3=Com[6];delay(100); P3=Com[8];</p><p> P0=Seg[10]; P3=Com[5];delay(100); P3=Com[8];</p><p> P0=Seg[minute%10]; P3=Com[4];del
118、ay(100); P3=Com[8];</p><p> P0=Seg[minute/10]; P3=Com[3]; delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[2] ;delay(100);P3=Com[8];</p><p> P0=Seg[hour%10]; P3=Com[1
119、]; delay(100);P3=Com[8];</p><p> P0=Seg[hour/10]; P3=Com[0]; delay(100);P3=Com[8];</p><p><b> }</b></p><p> if(sign==0)</p><p><b> {</b>&l
120、t;/p><p> P0=Seg[second%10]; P3=Com[7];delay(100); P3=Com[8];</p><p> P0=Seg[second/10]; P3=Com[6];delay(100); P3=Com[8];</p><p> P0=Seg[10]; P3=Com[5];delay(100); P3=Com[8];
121、</p><p> P0=Seg[minute%10]; P3=Com[4];delay(100); P3=Com[8];</p><p> P0=Seg[minute/10]; P3=Com[3]; delay(100);P3=Com[8];</p><p> P0=Seg[10]; P3=Com[2] ;delay(100);P3=Co
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機數(shù)字鐘課程設(shè)計
- 單片機數(shù)字鐘課程設(shè)計
- 單片機課程設(shè)計---數(shù)字鐘設(shè)計
- eda技術(shù)課程設(shè)計--數(shù)碼管顯示數(shù)字鐘設(shè)計
- 單片機課程設(shè)計--基于單片機數(shù)字鐘的設(shè)計
- 單片機課程設(shè)計--- 簡易數(shù)字鐘
- 單片機課程設(shè)計數(shù)字鐘
- 基于單片機的數(shù)字鐘課程設(shè)計
- 簡易數(shù)字鐘的單片機課程設(shè)計
- 單片機課程設(shè)計--數(shù)字鐘電子鐘
- 基于單片機的數(shù)字鐘課程設(shè)計
- 課程設(shè)計--單片機控制的數(shù)字鐘
- 單片機課程設(shè)計報告-數(shù)字鐘的設(shè)計
- 凌陽單片機課程設(shè)計驅(qū)動數(shù)碼管
- 課程設(shè)計---基于單片機的數(shù)字鐘的設(shè)計
- 單片機課程設(shè)計數(shù)字鐘報告
- 單片機課程設(shè)計--智能電子數(shù)字鐘設(shè)計
- 簡易數(shù)字鐘的單片機課程設(shè)計1
- 單片機原理及應(yīng)用課程設(shè)計--單只數(shù)碼管顯示數(shù)字
- 用單片機控制數(shù)碼管顯示數(shù)字的設(shè)計與研究
評論
0/150
提交評論