第一篇:基于單片機(jī)的定時(shí)鬧鐘課程設(shè)計(jì)報(bào)告書(shū)
任務(wù)書(shū)
一、設(shè)計(jì)目的
本設(shè)計(jì)主要是對(duì)51單片機(jī)的一個(gè)方面的擴(kuò)展,是能實(shí)現(xiàn)一般定時(shí)鬧鐘功能的設(shè)計(jì)。需要實(shí)現(xiàn)某一功能時(shí),按對(duì)應(yīng)的按鍵即可,經(jīng)過(guò)多次驗(yàn)證,此設(shè)計(jì)靈活簡(jiǎn)便,可以實(shí)現(xiàn)顯示、定時(shí)、修改定時(shí)、定時(shí)時(shí)間到能發(fā)出報(bào)警聲的功能。
二、設(shè)計(jì)要求
1、能顯示時(shí)時(shí)—分分—秒秒。
2、能夠設(shè)定定時(shí)時(shí)間,并修改定時(shí)時(shí)間。
3、定時(shí)時(shí)間到能發(fā)出警報(bào)聲。
目 錄
1.緒論..........................................................................................................1 2.方案論證..................................................................................................1 3.方案說(shuō)明..................................................................................................2 4.硬件方案設(shè)計(jì).........................................................................................2 4.1單片機(jī)STC89C52.........................................................................2 4.2 時(shí)鐘電路.......................................................................................4 4.3數(shù)碼管顯示電路............................................................................4 4.4鍵盤電路........................................................................................6 4.5報(bào)警電路........................................................................................7 5.軟件方案設(shè)計(jì).........................................................................................7 5.1系統(tǒng)軟件設(shè)計(jì)................................................................................7 5.2鍵盤程序........................................................................................7 5.3 LED.................................................................................................8 5.4音響報(bào)警電路................................................................................8 5.5 程序流程圖...................................................................................8 6.調(diào)試..........................................................................................................9 7.小結(jié)........................................................................................................10 8.參考文獻(xiàn)................................................................................................11 9.附錄:定時(shí)鬧鐘源程序.......................................................................12 1.緒論
系統(tǒng)采用單片機(jī)STC89C52作為本設(shè)計(jì)的核心元件,在其基礎(chǔ)上外圍擴(kuò)展芯片和外圍電路,附加時(shí)鐘電路,復(fù)位電路,鍵盤接口及LED顯示器。鍵盤采用獨(dú)立連接式。還有定時(shí)報(bào)警系統(tǒng),即定時(shí)時(shí)間到,通過(guò)揚(yáng)聲器發(fā)出報(bào)警聲,提示預(yù)先設(shè)定時(shí)間時(shí)間到,從而起到定時(shí)作用。
外圍器件有LED顯示驅(qū)動(dòng)器及相應(yīng)的顯示數(shù)字電子鐘設(shè)計(jì)與制作可采用單片機(jī)來(lái)完成。由于其功能的實(shí)現(xiàn)主要通過(guò)軟件編程來(lái)完成,那么就降低了硬件電路的復(fù)雜性,而且其成本也有所降低,所以在該設(shè)計(jì)與制作中采用單片機(jī)STC89C52,它是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有8KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外, STC89C52的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有512B的RAM、32條I/O口線、3個(gè)16位定時(shí)計(jì)數(shù)器、4個(gè)外部中斷、一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu))等。
在LED顯示器中,分成靜態(tài)顯示和動(dòng)態(tài)顯示兩類,在這個(gè)設(shè)計(jì)的最小系統(tǒng)中主要用了它的動(dòng)態(tài)顯示功能,動(dòng)態(tài)顯示器利用了人視覺(jué)的短暫停留,在數(shù)據(jù)的傳輸中是一個(gè)一個(gè)傳輸?shù)?,且先傳輸?shù)臀弧?/p>
2.方案論證
單片機(jī)作為核心的控制元件,使得電路的可靠性比較高,功能也比較強(qiáng)大,而且可以隨時(shí)的更新系統(tǒng),進(jìn)行不同狀態(tài)的組合。
本系統(tǒng)采用單片機(jī)STC89C52作為本設(shè)計(jì)的核心元件,利用兩個(gè)4位7段共陰LED作為顯示器件。接入共陰LED顯示器,可顯示時(shí),分鐘,秒,單片機(jī)外圍接有定時(shí)報(bào)警系統(tǒng),定時(shí)時(shí)間到,蜂鳴器發(fā)出報(bào)警聲,提示預(yù)先設(shè)定時(shí)間到。
電路由下列部分組成:時(shí)鐘電路、復(fù)位電路、控制電路、LED顯示、報(bào)警電路,芯片選用STC89C52單片機(jī)。
系統(tǒng)基本框圖如圖2.1所示: 時(shí)鐘電路數(shù)碼顯示STC89C52鍵盤電路報(bào)警電路
圖2.1 系統(tǒng)基本框圖
3.方案說(shuō)明
此設(shè)計(jì)主要是通過(guò)單片機(jī)系統(tǒng),綜合運(yùn)用定時(shí)器、中斷、數(shù)碼顯示等知識(shí)設(shè)計(jì)一個(gè)可定時(shí)的電子鐘。它包括系統(tǒng)總體方案及硬件設(shè)計(jì),軟件設(shè)計(jì),Proteus軟件仿真等部分。
系統(tǒng)總體方案及硬件設(shè)計(jì)是本設(shè)計(jì)的重要組成部分,在這部分詳細(xì)介紹了時(shí)鐘原理,硬件設(shè)計(jì),數(shù)碼管LED,以及在設(shè)計(jì)過(guò)程中考慮到技術(shù)指標(biāo),機(jī)型的選擇,器件的選擇等一系列問(wèn)題。
硬件設(shè)計(jì)的主要任務(wù)是根據(jù)總體設(shè)計(jì)要求,以及在所選機(jī)型的基礎(chǔ)上,確定系統(tǒng)擴(kuò)展所要用的存儲(chǔ)器,I/O電路及有關(guān)外圍電路等然后設(shè)計(jì)出系統(tǒng)的電路原理圖。
合理的軟件結(jié)構(gòu)是設(shè)計(jì)出一個(gè)性能優(yōu)良的單片機(jī)應(yīng)用性系統(tǒng)軟件的基礎(chǔ),因此必須充分重視。在本設(shè)計(jì)中采用應(yīng)用廣泛的C語(yǔ)言。用Proteus軟件仿真檢查設(shè)計(jì)是否合理。
4.硬件方案設(shè)計(jì)
4.1單片機(jī)STC89C52 STC89C52是一個(gè)低電壓,高性能CMOS型8位單片機(jī),片內(nèi)含8KB的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器(ROM)和512B的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用STC公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,內(nèi)置功能強(qiáng)大的微型計(jì)算機(jī)的STC89C52提供了高性價(jià)比的解決方案。其引腳圖如下圖4.1所示:
P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST940VCC***2P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EAALEPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.010P3.111P3.212P3.313P3.414P3.515P3.616P3.717XTAL218XTAL119GND20STC89C523***2524232221
圖4.1 STS89C52 STC89C52具體介紹如下: 1)主電源引腳(2根)
VCC(40):電源輸入,接+5V電源
GND(20):接地線 2)外接晶振引腳(2根)
XTAL1(19):片內(nèi)振蕩電路的輸入端
XTAL2(18):片內(nèi)振蕩電路的輸出端 3)控制引腳(4根)
RST/VPP(9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。
ALE/PROG(30):地址鎖存允許信號(hào)
PSEN(29):外部存儲(chǔ)器讀選通信號(hào)
EA/VPP(31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程序存儲(chǔ)器讀指令。4)可編程輸入/輸出引腳(32根)
STC89C52單片機(jī)有4組8位的可編程I/O口,分別為P0、P1、P2、P3口,每個(gè)口有8位(8根引腳),共32根。
PO口(39~32):8位雙向I/O口線,名稱為P0.0~P0.7
P1口(1~8):8位準(zhǔn)雙向I/O口線,名稱為P1.0~P1.7
P2口(21~28):8位準(zhǔn)雙向I/O口線,名稱為P2.0~P2.7
P3口(10~17):8位準(zhǔn)雙向I/O口線,名稱為P3.0~P3.7 4.2 時(shí)鐘電路
單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。
本系統(tǒng)中STC89C52單片機(jī)采用內(nèi)部時(shí)鐘方式。最常用的內(nèi)部時(shí)鐘方式是采用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz~12MHz之間。電容值無(wú)嚴(yán)格要求,但電容取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小和振蕩電路起振速度有少許影響,一般可在20pF~100pF之間取值。STC89C52單片機(jī)的時(shí)鐘電路如圖4.2所示。
XTAL230pF12MHzSTC89C5230pFXTAL1
圖4.2 時(shí)鐘電路
4.3數(shù)碼管顯示電路
單片機(jī)中通常使用7段LED,LED是發(fā)光二極管顯示器的縮寫。LED顯示器由于結(jié)構(gòu)簡(jiǎn)單,價(jià)格便宜,體積小,亮度高,電壓低,可靠性高,壽命長(zhǎng),響應(yīng)速度快,顏色鮮艷,配置靈活,與單片機(jī)接口方便而得到廣泛應(yīng)用。LED顯示器是由若干個(gè)發(fā)光二極管組成顯示字段的顯示部件,當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆劃發(fā)光,控制不同組合的二極管導(dǎo)通,就能顯示出各種字符。LED顯示器有多種形式,如:“米”字型顯示器,點(diǎn)陣顯示器和七段數(shù)碼顯示器等,在單片機(jī)系統(tǒng)中使用最多的是七段數(shù)碼顯示器。
LED七段數(shù)碼顯示器由8個(gè)發(fā)光二極管組成顯示字符,根據(jù)內(nèi)部發(fā)光二極管 的連接形式不同,LED有共陰極和共陽(yáng)極兩種,如圖4.3.1所示為4為7段共陰數(shù)碼管的引腳圖。
A1afA2A3beddpcgA4
圖4.3.1 4段共陰數(shù)碼管引腳圖
采用高亮共陰型s位數(shù)碼管,為示區(qū)別,顯示秒的兩個(gè)數(shù)碼管個(gè)頭較小,另外4個(gè)較大。共陰數(shù)碼管連接線路如下:一般用7個(gè)發(fā)光二極管構(gòu)成顯示數(shù)字和符號(hào),另外還用一段發(fā)光二極管顯示小數(shù)點(diǎn)。這種顯示器一般分為兩種,共陽(yáng)極顯示器和共陰極顯示器,共陽(yáng)極顯示器是把每個(gè)二極管的正端連在一起,共陰極顯示器是把每個(gè)二極管的陰極連在一起。一只顯示器是有8個(gè)發(fā)光二極管構(gòu)成,當(dāng)把某段加正向電壓時(shí),則該段所對(duì)應(yīng)的筆劃亮,不加正向電壓則暗,為了保護(hù)各段不受損壞需要加限流電阻,無(wú)論是共陽(yáng)極顯示器還是共陰極顯示器,它的8段排列順序都是一樣的:A段、B段、C段、D段、E段、F段、G段和DP段。在單片機(jī)中通常使用7段LED。數(shù)碼管的顯示電路如下圖4.3.2所示:
圖4.3.2 數(shù)碼管的顯示電路 數(shù)碼管中二極管電流的計(jì)算
二極管本身有2V的電壓降,一般二極管電流取10mA,則需添加的電阻為
R=(U-ULed)/ILed,代入相關(guān)數(shù)值,即為300Ω。
本設(shè)計(jì)中,選用的電阻為470Ω,則電流為
I=(U-ULed)/R′, 代入實(shí)際數(shù)值,即為6.4mA,能夠滿足顯示效果。
4.4鍵盤電路
設(shè)計(jì)方案中使用的是3個(gè)開(kāi)關(guān)鍵組成的鍵盤電路,如下圖4.4所示:
圖4.4 鍵盤電路圖 4.5報(bào)警電路
設(shè)計(jì)方案中,采用的是蜂鳴器和PNP型三極管組成的報(bào)警電路。如下圖4.5所示:
圖4.5 報(bào)警電路
5.軟件方案設(shè)計(jì)
5.1系統(tǒng)軟件設(shè)計(jì)
該系統(tǒng)軟件主要有主程序模塊,定時(shí)中斷服務(wù)程序,中斷等待服務(wù)程序,鍵盤程序,顯示子程序服務(wù)程序等六大模塊組成,因?yàn)镃語(yǔ)言容易理解和記憶,所以我們用C語(yǔ)言來(lái)寫此程序。
5.2鍵盤程序
鍵盤采用查詢的方式,放在主程序中,當(dāng)沒(méi)有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦有鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束后再返回。5.3 LED 七段LED由七個(gè)發(fā)光二極管按日字排開(kāi),所有發(fā)光二極管的陽(yáng)極連在一起成共陽(yáng)極,陰極連在一塊稱共陰極接法。當(dāng)采用芯片驅(qū)動(dòng)時(shí)不需要加限流電阻,其他情況下一般應(yīng)外接限流電阻。動(dòng)態(tài)顯示電路有顯示塊,字形碼封鎖驅(qū)動(dòng)器,字位鎖存驅(qū)動(dòng)器三部分組成。
5.4音響報(bào)警電路
在STC89C52外圍的一個(gè)管口上加蜂鳴器,通過(guò)軟件與硬件的結(jié)合可實(shí)現(xiàn)定時(shí)鬧鐘功能。
5.5 程序流程圖
開(kāi)始初始化判斷鬧鐘時(shí)間是否到調(diào)用顯示程序否P1.0是否按下是P1.1和P1.2調(diào)節(jié)時(shí)間和鬧鐘圖5.5 程序流程圖
6.調(diào)試
設(shè)幾個(gè)按鍵從左往右為K1,K2,K3。K1與P1.0相連,K2與P1.1相連,K3與P1.2相連。
按一下啟動(dòng)開(kāi)關(guān),顯示為時(shí)間顯示。按一下K1,進(jìn)入時(shí)間顯示的小時(shí)設(shè)定狀態(tài);按兩下K1,進(jìn)入時(shí)間顯示的分鐘設(shè)定狀態(tài);按三下K1,進(jìn)入定時(shí)的小時(shí)設(shè)定狀態(tài);按四下K1,進(jìn)入定時(shí)的分鐘設(shè)定狀態(tài);按五下K1,退出設(shè)定,進(jìn)入當(dāng)前時(shí)間顯示狀態(tài);K2和K3分別是對(duì)當(dāng)前設(shè)定值的加和減。如下圖6.1和6.2所示。
圖6.1 調(diào)時(shí)仿真效果圖
圖6.2 定時(shí)仿真效果圖
7.小結(jié)
在做課程設(shè)計(jì)的過(guò)程中,我進(jìn)一步認(rèn)識(shí)到全面專業(yè)知識(shí)以及邏輯思考方式對(duì)研究問(wèn)題的重要性,同時(shí)我也更加具體的掌握了課程設(shè)計(jì)的基本方法。
經(jīng)過(guò)不斷的努力,我終于完成了這次課程設(shè)計(jì),總的來(lái)說(shuō),我學(xué)到了不少的東西,知道了理論聯(lián)系實(shí)際的重要性。在設(shè)計(jì)過(guò)程中我遇到了很多的困難,但沒(méi)放棄,查閱了許多相關(guān)的書(shū)籍,自己獨(dú)立思考和借鑒了前人的許多優(yōu)秀成果,并與所學(xué)的知識(shí)緊密的結(jié)合了起來(lái)。我相信這過(guò)程對(duì)我今后的學(xué)習(xí)和工作有著積極的影響,并搭好了平臺(tái)。
通過(guò)這次設(shè)計(jì),我對(duì)這門課有了更好的理解,尤其結(jié)合了這幾年學(xué)的相關(guān)的專業(yè)知識(shí),對(duì)各門課都有了一個(gè)較全面的理解。這必將對(duì)我以后的學(xué)習(xí)和工作有很大的幫助。本次課程設(shè)計(jì)的定時(shí)鬧鐘電路,可以滿足人們的基本要求,但因?yàn)橹R(shí)水平有限,此電路中存在一定的問(wèn)題,雖可以通過(guò)增加電路解決,但過(guò)于復(fù)雜和現(xiàn)有水平有限,本次設(shè)計(jì)就未深入涉及,想要更好的改進(jìn)電路,需要進(jìn)一步的努力,如果有好的意見(jiàn),希望老師給予支持指導(dǎo)。8.參考文獻(xiàn)
[1] 何立民.單片機(jī)應(yīng)用技術(shù)選編10.北京:北京航空航天大學(xué)出版社 [2] 林立.單片機(jī)原理及應(yīng)用.北京:電子工業(yè)出版社
[3] 沙占友等.單片機(jī)外圍電路設(shè)計(jì).西安:電子工業(yè)出版社
[4] 江力.蔡駿.王艷春.董澤芳.單片機(jī)原理與應(yīng)用技術(shù).北京,清華大學(xué)出版社 [5] 潘永紅.柳殊.單片機(jī)原理與應(yīng)用.西安,西安電子科技大學(xué)出版社 9.附錄:定時(shí)鬧鐘源程序
#include
9、橫杠、全滅 unsigned char a[8];
unsigned char second=0,minute=0,hour=1;unsigned char minute1=0,hour1=0;unsigned char b[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//掃描 unsigned char k=0;unsigned int temp;// 記錄毫秒為秒的變量
unsigned char M,S_flag;//M是模式,更新時(shí)間的種模式加上正常模式 S_flag閃爍標(biāo)志 sbit K1=P1^0;sbit K2=P1^1;sbit K3=P1^2;sbit BEEP=P3^3;void delay(unsigned n)//0.2毫秒 { int x,y;for(x=0;x void time1()interrupt 3 //定時(shí)器中斷函數(shù) { TH1=0xfc; //定時(shí)ms TL1=0x18;temp++;if(temp==1000)//配合定時(shí)器定時(shí)s { temp=0;second++;} if(second==59){ second=0;if(minute<59)minute++;else { minute=0; hour++; hour%=24; } } if(hour1==hour&&minute1==minute&&second<10){ if(M==0)BEEP=!BEEP;} if(temp%250==0)//每ms S_flag=!S_flag;//閃爍標(biāo)志位取反 if(k==8)k=0;P0=a[k]; P2=b[k++];delay(1); P2=0xff; } void display(){ switch(M){ case 0: { a[0]=led[hour/10]; a[1]=led[hour%10]; a[2]=led[10]; a[3]=led[minute/10]; a[4]=led[minute%10]; a[5]=led[10]; a[6]=led[second/10]; a[7]=led[second%10]; }break;case 1: { if(S_flag==1) { a[0]=led[hour/10]; a[1]=led[hour%10]; } else { //鬧鐘時(shí)間到 a[0]=led[11]; a[1]=led[11]; } a[2]=led[10]; a[3]=led[minute/10]; a[4]=led[minute%10]; a[5]=led[10]; a[6]=led[second/10]; a[7]=led[second%10];}break;case 2: { a[0]=led[hour/10]; a[1]=led[hour%10]; a[2]=led[10]; if(S_flag==1) { a[3]=led[minute/10]; a[4]=led[minute%10]; } else { a[3]=led[11]; a[4]=led[11]; } a[5]=led[10]; a[6]=led[second/10]; a[7]=led[second%10];}break;case 3: { if(S_flag==1) { a[0]=led[hour1/10]; a[1]=led[hour1%10]; } else { a[0]=led[11]; a[1]=led[11]; } a[2]=led[10]; a[3]=led[minute1/10]; a[4]=led[minute1%10]; a[5]=led[11]; a[6]=led[11]; a[7]=led[11]; }break;case 4: { a[0]=led[hour1/10]; a[1]=led[hour1%10]; a[2]=led[10]; if(S_flag==1) { a[3]=led[minute1/10]; a[4]=led[minute1%10]; } else { a[3]=led[11]; a[4]=led[11]; } a[5]=led[11]; a[6]=led[11]; a[7]=led[11]; } } } void key_prc(){ if(K1==0) { delay(10);//延時(shí)去抖 if(K1==0)//按K1進(jìn)行模式切換 { M++; if(M==5)M=0; } while(!K1);//等待按鍵釋放 } if(M!=0){ switch(M){ case 1: //模式--調(diào)時(shí) { if(K2==0) { delay(10);//延時(shí)去抖 if(K2==0)//加鍵按下 { if(hour<23)hour++; else hour=0; } while(!K2);//等待按鍵釋放 } if(K3==0) { delay(10); if(K3==0) { if(hour> 0)hour--; else hour=23; } while(!K3); } } break; case 2: //模式--調(diào)分 { if(K2==0) { delay(10); if(K2==0) { if(minute<59)minute++; else minute=0; } while(!K2); } if(K3==0) { delay(10); if(K3==0) { if(minute>0)minute--; else minute=59; } while(!K3);} } break;case 3: //模式--鬧鐘調(diào)時(shí) { if(K2==0) { delay(10); if(K2==0) { if(hour1<23) hour1++; else hour1=0; } while(!K2); } if(K3==0) { delay(10); if(K3==0) { if(hour1>0)hour1--; else hour1=23;} while(!K3); } } break; case 4: //模式--鬧鐘調(diào)分 { if(K2==0) { delay(10); if(K2==0) { if(minute1<59) minute1++; else minute1=0; } while(!K2); } if(K3==0) { delay(10);//延時(shí)去抖 if(K3==0)//減鍵按下 { if(minute1>0) minute1--; else minute1=59; } while(!K3); } } break; } } } void main(){ M=0;S_flag=0;//閃爍標(biāo)志位 TMOD=0x10;//定時(shí)器以方式定時(shí) TL1=0x18;EA=1;//打開(kāi)總中斷 ET1=1;//允許定時(shí)器中斷 TR1=1;//開(kāi)啟定時(shí)器(開(kāi)始定時(shí)計(jì)數(shù))while(1){ key_prc(); display();} } 單片機(jī)課程設(shè)計(jì)報(bào)告 定時(shí)鬧鐘,共29頁(yè),6864字 摘要 本設(shè)計(jì)是定時(shí)鬧鐘的設(shè)計(jì),由單片機(jī)AT89C51芯片和LED數(shù)碼管為核心,輔以必要的電路,構(gòu)成的一個(gè)單片機(jī)電子定時(shí)鬧鐘。電子鐘設(shè)計(jì)可采用數(shù)字電路實(shí)現(xiàn),也可以采用單片機(jī)來(lái)完成。數(shù)字電子鐘是用數(shù)字集成電路構(gòu)成的,用數(shù)碼管顯示“時(shí)”,“分”,“秒”的現(xiàn)代計(jì)時(shí)裝置。若用數(shù)字電路完成,所設(shè)計(jì)的電路相當(dāng)復(fù)雜,大概需要十幾片數(shù)字集成塊,其功能也主要依賴于數(shù)字電路的各功能模塊的組合來(lái)實(shí)現(xiàn),焊接的過(guò)程比較復(fù)雜,成本也非常高。若用單片機(jī)來(lái)設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過(guò)軟件編程來(lái)完成,那么就降低了硬件電路的復(fù)雜性,而且其成本也有所降低,所以在該設(shè)計(jì)中采用單片機(jī)利用AT89C51,它是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有4KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外, AT89C51的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有128B 的RAM、32條I/O口線、2個(gè)16位定時(shí)計(jì)數(shù)器、5個(gè)中斷源、一個(gè)全雙工串行口等。AT89C51單片機(jī)結(jié)合七段顯示器設(shè)計(jì)的簡(jiǎn)易定時(shí)鬧鈴時(shí)鐘,可以設(shè)置現(xiàn)在的時(shí)間及顯示鬧鈴設(shè)置時(shí)間,若時(shí)間到則發(fā)出一陣聲響,進(jìn)—步可以擴(kuò)充控制電器的啟停。設(shè)計(jì)內(nèi)容包括了秒信號(hào)發(fā)生器、時(shí)間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分的設(shè)計(jì)。采用四個(gè)開(kāi)關(guān)來(lái)控制定時(shí)鬧鐘的工作狀態(tài),分別為:K1、設(shè)置時(shí)間和鬧鐘的小時(shí);K2、設(shè)置小時(shí)以及設(shè)置鬧鐘的開(kāi)關(guān);K3、設(shè)置分鐘和鬧鐘的分鐘;K4、設(shè)置完成退出。 課設(shè)準(zhǔn)備中我根據(jù)具體的要求,查找資料,然后按要求根據(jù)已學(xué)過(guò)的時(shí)鐘程序編寫定時(shí)鬧鐘的程序,依據(jù)程序利用proteus軟件進(jìn)行了仿真試驗(yàn),對(duì)出現(xiàn)的問(wèn)題進(jìn)行分析和反復(fù)修改源程序,最終得到正確并符合要求的結(jié)果。 設(shè)計(jì)完成的定時(shí)鬧鐘達(dá)到課程設(shè)計(jì)的要求,在到達(dá)定時(shí)的時(shí)間便立即發(fā)出蜂鳴聲音,持續(xù)一分鐘。顯示采用的六位數(shù)碼管電路,如果亮度感覺(jué)不夠,可以通過(guò)提升電阻來(lái)調(diào)節(jié),控制程序中延遲時(shí)間的長(zhǎng)短,可以獲得不同的效果。也可以改蜂鳴器為繼電器,通過(guò)控制繼電器從而進(jìn)一步擴(kuò)展的來(lái)控制一些家電開(kāi)關(guān)。 目錄概述……………………………………………………………………………… 系統(tǒng)總體方案及硬件設(shè)計(jì)……………………………………………………… 42.1 總體設(shè)計(jì)……………………………………………………………………4 2.2 系統(tǒng)時(shí)鐘電路設(shè)計(jì)…………………………………………………………4 2.3 系統(tǒng)復(fù)位電路設(shè)計(jì)…………………………………………………………4 2.4 鬧鐘指示電路設(shè)計(jì)………………………………………………………… 52.5 電子鬧鐘的顯示電路設(shè)計(jì)…………………………………………………5軟件設(shè)計(jì) 3.1 概述…………………………………………………………………………6 3.2 主模塊的設(shè)計(jì)………………………………………………………………6 3.3 基本顯示模塊設(shè)計(jì)…………………………………………………………7 3.4 時(shí)間設(shè)定模塊設(shè)計(jì)…………………………………………………………7 3.5 鬧鐘功能的實(shí)現(xiàn)……………………………………………………………8Proteus軟件仿真………………………………………………………………1課程設(shè)計(jì)體會(huì)……………………………………………………………………13 參考文獻(xiàn)……………………………………………………………………………13 附1:源程序代碼…………………………………………………………………14 附2:系統(tǒng)原理圖…………………………………………………………………27 相關(guān)說(shuō)明: 1、欲下載本站資料,必須成為本站會(huì)員。如果你尚未注冊(cè)或登錄,請(qǐng)首先注冊(cè)或登錄。 2、48小時(shí)內(nèi)下載同一文件,不重復(fù)扣金幣。 3、下載后請(qǐng)用解壓縮后使用。 4、下載后仍有問(wèn)題,請(qǐng)看常見(jiàn)問(wèn)題解答。 下載地址: 目錄: 0、任務(wù)書(shū)...............................................................................2 1、系統(tǒng)總體設(shè)計(jì)方案規(guī)劃與選定.......................................2 2、硬件設(shè)計(jì)...........................................................................5 3、軟件設(shè)計(jì)...........................................................................6 4、調(diào)試...................................................................................8 5、新增功能及實(shí)現(xiàn)方法.......................................................8 6、小結(jié)與體會(huì).......................................................................9 7、參考文獻(xiàn)...........................................................................9 8、附錄.................................................................................10 單片機(jī)課程設(shè)計(jì) 0.任務(wù)書(shū) 基于51單片機(jī)設(shè)計(jì)一個(gè)電子數(shù)字鐘,顯示時(shí)、分、秒,且具有鬧鐘功能。用8255接口實(shí)現(xiàn)4*8鍵盤及8位LED顯示。 32個(gè)鍵:0~9共10個(gè)鍵,調(diào)時(shí)(設(shè)置當(dāng)前時(shí)間)鍵;設(shè)定鬧鐘(定時(shí))鍵;走時(shí)鍵;光標(biāo)左右移動(dòng)各一個(gè)鍵。 要求鍵復(fù)位后,應(yīng)該最后面的LED上顯示H(待命狀態(tài))。 1.系統(tǒng)總體設(shè)計(jì)方案規(guī)劃與選定 1.1主控制芯片選擇 方案一:采用ARM微處理,做主控芯片,計(jì)算速度快,缺點(diǎn);成本高,控制較復(fù)雜,不容易焊接。 方案二:采用80C51單片機(jī)做主控制器,由單片機(jī)來(lái)完成采集和信號(hào)處理等底層的核心計(jì)算,做主控芯片,成本低,易控制,易實(shí)現(xiàn)。 經(jīng)過(guò)以上兩個(gè)方案比較,在此題方案二明顯優(yōu)于方案一,故采用80C51單片機(jī)做主控制器。 1.2定時(shí)模塊選擇 方案一:采用時(shí)鐘芯片DS1302。 DS1302 可以用于數(shù)據(jù)記錄,特別是對(duì)某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄,且較單片機(jī)計(jì)時(shí)簡(jiǎn)單節(jié)約硬件資源,但存在時(shí)鐘精度不高,易受環(huán)境影響,出現(xiàn)時(shí)鐘混亂等缺點(diǎn)。 方案二:采用單片機(jī)內(nèi)部的定時(shí)系統(tǒng),外接晶振進(jìn)行分頻脈沖計(jì)數(shù)。 單片機(jī)課程設(shè)計(jì) 此系統(tǒng)采用12MHz晶振。 由于方案二使用簡(jiǎn)單,比方案一更適用該系統(tǒng)設(shè)計(jì),所以選擇方案二。 1.3 LED顯示及計(jì)時(shí)模塊選擇 方案一:74LS192計(jì)數(shù)器——74LS47七點(diǎn)顯示譯碼器 74LS192芯片是一塊可預(yù)置數(shù)可逆計(jì)數(shù)芯片,功能強(qiáng)大。將74LS192芯片CPU引腳接高電平可實(shí)現(xiàn)減法計(jì)數(shù),以倒計(jì)時(shí)顯示??赏ㄟ^(guò)74LS47與LED共陽(yáng)極數(shù)字顯示器配合使用。 方案二:使用移位寄存器74HC595與譯碼器相連 74HC595具有8位移位寄存器和一個(gè)存儲(chǔ)器,使用時(shí)可直接與數(shù)字顯示器相連。 方案三:使用8255擴(kuò)展LED顯示計(jì)時(shí)模塊 8255是一個(gè)可編程并行接口芯片,有一個(gè)控制口和三個(gè)8位數(shù)據(jù)口,外設(shè)通過(guò)數(shù)據(jù)口與單片機(jī)進(jìn)行數(shù)據(jù)通信,各數(shù)據(jù)口的工作方式和數(shù)據(jù)傳送方向是通過(guò)用戶對(duì)控制口寫控制字控制的。我們用到了A與B口分別進(jìn)行對(duì)數(shù)碼顯示管的片選和段選,且B口同時(shí)作為鍵盤掃描模塊的輸入口,與數(shù)碼顯示模塊分時(shí)復(fù)用。故采用方案三 1.4蜂鳴器的選擇 方案一:電磁式蜂鳴器 電磁式蜂鳴器主要是利用通電導(dǎo)體會(huì)產(chǎn)生磁場(chǎng)的特性,用一個(gè)固定的永久磁鐵與通電導(dǎo)體產(chǎn)生磁力推動(dòng)固定在線圈上的鼓膜。電磁式由于音色好,所以多用于語(yǔ)音、音樂(lè)等設(shè)備。對(duì)于不同提示音且考慮實(shí)際,此種較好。 方案二:壓電式蜂鳴器 單片機(jī)課程設(shè)計(jì) 壓電式蜂鳴器用的是壓電材料,即當(dāng)受到外力導(dǎo)致壓電材料發(fā)生形變時(shí)壓電材料會(huì)產(chǎn)生電荷。同樣,當(dāng)通電時(shí)壓電材料會(huì)發(fā)生形變。壓電式結(jié)構(gòu)簡(jiǎn)單耐用但音調(diào)單一音色差,適用于警報(bào)器等設(shè)備。 由于鬧鈴為音樂(lè)鬧鈴,所以使用電磁式蜂鳴器更為合適。 2.硬件設(shè)計(jì) 2.1 芯片的選擇 2.1.1 單片機(jī)80C51 2.1.1.1單片機(jī)80C51的組成 80c51單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說(shuō)明: 中央處理器: 中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。 數(shù)據(jù)存儲(chǔ)器(RAM)8051內(nèi)部有128個(gè)8位用戶數(shù)據(jù)存儲(chǔ)單元和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問(wèn),而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個(gè),可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型表。 程序存儲(chǔ)器(ROM): 8051共有4096個(gè)8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。 單片機(jī)課程設(shè)計(jì) 定時(shí)/計(jì)數(shù)器(ROM): 8051有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。 并行輸入輸出(I/O)口: 8051共有4組8位I/O口(P0、P1、P2或P3),用于對(duì)外部數(shù)據(jù)的傳輸。 2.1.1.2 MCS-51的引腳說(shuō)明: MCS-52系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對(duì)這些引腳的功能加以說(shuō)明: MCS-51的引腳說(shuō)明: MCS-52系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用。 單片機(jī)課程設(shè)計(jì) 圖1 80C51的引腳 2.1.1.3 MCS-51單片機(jī)內(nèi)部定時(shí)器計(jì)數(shù)器、中斷系統(tǒng)簡(jiǎn)介(1)定時(shí)器計(jì)數(shù)器 1、MCS-51系列中51子系列有兩個(gè)16位的可編程定時(shí)計(jì)數(shù)器可:定時(shí)計(jì)數(shù)器T0和定時(shí)計(jì)數(shù)器T1。它由加法計(jì)數(shù)器、方式寄存器TMOD、控制寄存器TCON等組成。方式寄存器用于設(shè)定定時(shí)計(jì)數(shù)器T0和T1的工作方式,控制寄存器用于對(duì)定時(shí)計(jì)數(shù)器啟動(dòng)、停止進(jìn)行控制。 2、每個(gè)定時(shí)計(jì)數(shù)器既可以對(duì)系統(tǒng)時(shí)鐘計(jì)數(shù)實(shí)現(xiàn)定時(shí),也可以外部信號(hào)計(jì)數(shù)實(shí)現(xiàn)計(jì)數(shù)功能通過(guò)編程設(shè)定來(lái)實(shí)現(xiàn)。 3、每個(gè)定時(shí)計(jì)數(shù)器都有多種工作方式,其中T0有四種工作方式,T1有三種工作方式,T2有三種工作方式。通過(guò)編程可設(shè)定工作于某種方式。四種工作方式為:13位定時(shí)計(jì)數(shù)器、16位定時(shí)計(jì)數(shù)器、8位自動(dòng)重置定時(shí) 6 單片機(jī)課程設(shè)計(jì) 計(jì)數(shù)器、兩個(gè)8位定時(shí)計(jì)數(shù)器(只有T0有) 4、每一個(gè)定時(shí)計(jì)數(shù)器定時(shí)計(jì)數(shù)時(shí)間到時(shí)產(chǎn)生溢出,使相應(yīng)的溢出位置位,溢出可通過(guò)查詢或中斷方式處理。 (2)中斷系統(tǒng) 1、MCS-51單片機(jī)提供5個(gè)硬件中斷源,2個(gè)外部中斷源,2個(gè)定時(shí)計(jì)數(shù)器T0和T1的溢出中斷TF0和TF1,1個(gè)串行口發(fā)送TI和接收RI中斷。 2、MCS-51單片機(jī)中沒(méi)有專門的開(kāi)中斷和關(guān)中斷指令,對(duì)各個(gè)中斷源的允許和屏蔽是由內(nèi)部的中斷允許寄存器IE的各位來(lái)控制的。中斷允許寄存器IE的字節(jié)地址為A8H,可以進(jìn)行位尋址。系統(tǒng)復(fù)位時(shí),中斷允許寄存器IE的內(nèi)容為00H,如果要開(kāi)放某個(gè)中斷源,則必須使IE中的總控置位和對(duì)應(yīng)的中斷允許位置“1”。 3、MCS-51單片機(jī)有5個(gè)中斷源,為了處理方便,每個(gè)中斷源有兩級(jí)控制,高優(yōu)先級(jí)和低優(yōu)先級(jí)。通過(guò)由內(nèi)部的中斷優(yōu)先級(jí)寄存器IP來(lái)設(shè)置,中斷優(yōu)先級(jí)寄存器IP的字節(jié)地址為B8H,可以進(jìn)行位尋址。如果某位被置“1”,則對(duì)應(yīng)的中斷源被設(shè)為高優(yōu)先級(jí);如果某位被清零,則對(duì)應(yīng)的中斷源被設(shè)為低優(yōu)先級(jí)。對(duì)于同級(jí)中斷源,系統(tǒng)有默認(rèn)的優(yōu)先權(quán)順序,從高到低優(yōu)先權(quán)順序?yàn)橥獠恐袛?、定時(shí)計(jì)數(shù)器T0中斷、外部中斷 1、定時(shí)計(jì)數(shù)器T1中斷、串行口中斷。通過(guò)設(shè)置中斷優(yōu)先級(jí)寄存器IP能夠改變系統(tǒng)默認(rèn)的優(yōu)先級(jí)順序。 4、MCS-51單片機(jī)響應(yīng)中斷的條件為:中斷源有請(qǐng)求且中斷允許。 2.1.2 八位一體七段數(shù)碼管 單片機(jī)課程設(shè)計(jì) 數(shù)碼管使用條件: a、段及小數(shù)點(diǎn)上加限流電阻。 b、使用電壓:段:根據(jù)發(fā)光顏色決定; 小數(shù)點(diǎn):根據(jù)發(fā)光顏色決定。c、使用電流:靜態(tài):總電流 80mA(每段 10mA);動(dòng)態(tài):平均電流 4-5mA 峰值電流 100mA 上圖為七段數(shù)碼管引腳圖,其中共陽(yáng)極數(shù)碼管引腳圖和共陰極相同。LED數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽(yáng)兩類,了解LED的這些特性,對(duì)編程是很重要的,因?yàn)椴煌愋偷臄?shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。右圖是共陰和共陽(yáng)極數(shù)碼管的內(nèi)部電路,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。 將多只LED的陰極連在一起即為共陰式,而將多只LED的陽(yáng)極連在一起即為共陽(yáng)式。以共陰式為例,如把陰極接地,在相應(yīng)段的陽(yáng)極接上正電源,該段即會(huì)發(fā)光。當(dāng)然,LED的電流通常較小,一般均需在回路中接上限流電阻。假如我們將“b”和“c”段接上正電源,其它端接地或懸空,那么“b”和“c”段發(fā)光,此時(shí),數(shù)碼管顯示將顯示數(shù)字“1”。而將“a”、“b”、“d”、“e”和“g”段都接上正電源,其它引腳懸空,此時(shí)數(shù)碼管將顯示“2”。其它字符的顯示原理類同。 單片機(jī)課程設(shè)計(jì) 2.1.3 并行接口擴(kuò)展芯片8255 8255內(nèi)部包括三個(gè)并行數(shù)據(jù)輸入/輸出端口,兩個(gè)工作方式控制電路,一個(gè)讀/寫控制邏輯電路和8位總線緩沖器。 各部分功能概括如下:(1)端口A、B、C A口:是一個(gè)8位數(shù)據(jù)輸出鎖存器/緩沖器和一個(gè)8位數(shù)據(jù)輸入鎖存器。B口:是一個(gè)8位數(shù)據(jù)輸入/輸出鎖存器/緩沖器和一個(gè)8位數(shù)據(jù)輸入鎖存器。C口:是一個(gè)8位數(shù)據(jù)輸出鎖存器/緩沖器和一個(gè)8位數(shù)據(jù)輸入緩沖器(輸入不鎖存)。 通常A口、B口作為數(shù)據(jù)輸入/輸出端口。C口作為控制/狀態(tài)信息端口,它在“方式控制字”的控制下可分為兩個(gè)4位端口,每個(gè)端口有一個(gè)4位鎖存器,分別與A口、B口配合使用,作為控制信號(hào)輸出或狀態(tài)信息輸入端口。 (2)工作方式控制電路 工作方式控制電路有兩個(gè),一個(gè)是A組控制電路,另一個(gè)是B組控制電路。 單片機(jī)課程設(shè)計(jì) 這兩組控制電路具有一個(gè)控制命令寄存器,用來(lái)接受中央處理器發(fā)來(lái)的控制字,以決定兩組端口的工作方式,也可根據(jù)控制字的要求對(duì)C口按位清“0”或者按位置“1”。 A組控制電路用來(lái)控制A口和C口的上半部分(PC7-PC4)。B組控制電路用來(lái)控制B口和C口的下半部分(PC3-PC0)。 (3)總線數(shù)據(jù)緩沖器 總線數(shù)據(jù)緩沖器是一個(gè)三態(tài)雙向8位緩沖器,作為8255與系統(tǒng)總線之間的接口,用來(lái)傳送數(shù)據(jù)、指令、控制命令以及外部狀態(tài)信息。 (4)讀/寫控制邏輯電路 讀/寫控制邏輯電路接受CPU發(fā)來(lái)的控制信號(hào)RD、WR、RESET、地址信號(hào)A1-A0等,然后根據(jù)控制信號(hào)的要求,將端口數(shù)據(jù)讀出,發(fā)往CPU,或者將CPU送來(lái)的數(shù)據(jù)寫入端口。 2.2 電路的組成 2.2.1 數(shù)碼管顯示電路 數(shù)碼管顯示器成本低,配置靈活,與單片機(jī)接口簡(jiǎn)單,在單片機(jī)應(yīng)用系統(tǒng)中廣泛應(yīng)用。 數(shù)碼管的工作原理如下: 數(shù)碼管是由8個(gè)發(fā)光二極管構(gòu)成的顯示器件。在數(shù)碼管中,若將二極管的陽(yáng)極連在一起,稱為共陽(yáng)極數(shù)碼管;若將二極管的陰極連在一起,稱為共陰極數(shù)碼管。本次課程設(shè)計(jì)用到的8個(gè)數(shù)碼管均是共陽(yáng)極的。當(dāng)發(fā)光二極管導(dǎo)通時(shí),它就會(huì)發(fā)光。每個(gè)二極管就是一個(gè)筆劃,若干個(gè)二極管發(fā)光時(shí),就 單片機(jī)課程設(shè)計(jì) 構(gòu)成了一個(gè)顯示字符。將單片機(jī)的I/O口控制相應(yīng)的芯片與數(shù)碼管的a-g相連,高電平的位對(duì)應(yīng)的發(fā)光二極管亮,這樣,由I/O口輸出不同的代碼,就可以控制數(shù)碼管顯示不同的字符。8個(gè)數(shù)碼管均采用動(dòng)態(tài)顯示方式,顯示當(dāng)前的時(shí)間。 2.2.2 鍵盤掃描電路 鍵盤掃描電路圖 鍵盤可分為兩類:非編碼鍵盤和編碼鍵盤;常見(jiàn)的非編碼鍵盤有兩種結(jié)構(gòu):獨(dú)立式鍵盤和矩陣式鍵盤。本次課程設(shè)計(jì)使用矩陣式鍵盤。 矩陣鍵盤的工作原理:按鍵設(shè)置在行、列線交點(diǎn)上,行、列線分別連接到按鍵開(kāi)關(guān)的兩端。列線通過(guò)上拉電阻接到+5V 電源上。無(wú)按鍵按下時(shí),列線處于高電平的狀態(tài),而當(dāng)有按鍵按下時(shí),列線電平與此列線相連的行線電平?jīng)Q定。 行列掃描法原理:第一步,使列線為編程的輸入線,行線是輸出線,拉低所有的行線,判斷列線的變化,如果有按鍵按下,按鍵按下的對(duì)應(yīng)列線被拉低,否則所有的列線都為高電平。第二步,在第一步判斷有鍵按下后,延時(shí)10ms消除機(jī)械抖動(dòng),再次讀取列值,如果此列線還處于低電平狀態(tài)則進(jìn)入下一步,否則返回第一步重新判斷。第三步,開(kāi)始掃描按鍵位置,采用 11 單片機(jī)課程設(shè)計(jì) 逐行掃描,分別拉低第一行,第二行,第三行,第四行,無(wú)論拉低哪一行其他三行都為高電平,讀取列值找到按鍵的位置,分別把行值和列值儲(chǔ)存在寄存器里。第四步,從寄存器中找到行值和列值并把其合并,得到按鍵值,對(duì)此按鍵值進(jìn)行編碼,與已經(jīng)設(shè)定好的鍵碼表進(jìn)行一一對(duì)比,如果不等,則繼續(xù)比較,如果相等,則利用轉(zhuǎn)移指令實(shí)現(xiàn)鍵盤掃描到按鍵功能的轉(zhuǎn)移。 2.2.3 音樂(lè)鬧鈴電路 蜂鳴器電路 2.2.3.1 蜂鳴器 蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型,他廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電話 12 單片機(jī)課程設(shè)計(jì) 機(jī)等電子產(chǎn)品中作發(fā)聲器件。 2.2.3.2 單片機(jī)驅(qū)動(dòng) 單片機(jī)上面使用的蜂鳴器一般都是無(wú)源電磁式的蜂鳴器(如下圖所示)。它由振蕩器、電磁線圈、磁鐵、振動(dòng)膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號(hào)電流通過(guò)電磁線圈,使電磁線圈產(chǎn)生磁場(chǎng),振動(dòng)膜片在電磁線圈和磁鐵的相互作用下,周期性地振動(dòng)發(fā)聲。 蜂鳴器發(fā)聲原理是電流通過(guò)電磁線圈,使電磁線圈產(chǎn)生磁場(chǎng)來(lái)驅(qū)動(dòng)振動(dòng)膜發(fā)聲的,因此需要一定的電流才能驅(qū)動(dòng)它,單片機(jī)IO引腳輸出的電流較小,單片機(jī)輸出的TTL電平基本上驅(qū)動(dòng)不了蜂鳴器,因此需要增加一個(gè)電流放大的電路。 2.2.4 復(fù)位電路 RESET/Vpd為復(fù)位信號(hào)復(fù)用腳,當(dāng)80C51通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計(jì)數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開(kāi)始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),80C51的初始態(tài)。 上電復(fù)位:上電復(fù)位電路是—種簡(jiǎn)單的復(fù)位電路,只要在RST復(fù)位引腳接一個(gè)電容到VCC,接一個(gè)電阻到地就可以了。上電復(fù)位是指在給系統(tǒng)上電時(shí),復(fù)位電路通過(guò)電容加到RST復(fù)位引腳一個(gè)短暫的高電平信號(hào),這個(gè)復(fù) 13 單片機(jī)課程設(shè)計(jì) 位信號(hào)隨著VCC對(duì)電容的充電過(guò)程而回落,所以RST引腳復(fù)位的高電平維持時(shí)間取決于電容的充電時(shí)間。為了保證系統(tǒng)安全可靠的復(fù)位,RST引腳的高電平信號(hào)必須維持足夠長(zhǎng)的時(shí)間。 電路圖如下: 上電自動(dòng)復(fù)位是通過(guò)外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的。只要Vcc的上升時(shí)間不超過(guò)1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位。 3軟件設(shè)計(jì) 4.調(diào)試 5.新增功能及實(shí)現(xiàn)方法 5.1定時(shí)器產(chǎn)生音樂(lè)的原理 音樂(lè)的產(chǎn)生主要是通過(guò)單片機(jī)的I/O口輸出高低不同的脈沖信號(hào)來(lái)控制蜂鳴器發(fā)音。要想產(chǎn)生音頻脈沖信號(hào),需要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(shí)間。利用單片機(jī)定時(shí)器計(jì)時(shí)這個(gè)半個(gè)周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O口反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O口反相,這樣就能在此I/O口上得到此頻率的脈沖。 單片機(jī)課程設(shè)計(jì) 通常,利用單片機(jī)的內(nèi)部定時(shí)器0,工作在方式1下,改變計(jì)數(shù)初值TH0和TL0來(lái)產(chǎn)生不同頻率。 對(duì)于音樂(lè)的節(jié)拍,每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍。如果1拍為0.4S,1/4拍為0.1S,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的時(shí)間。假設(shè)1/4拍為1DELAY,那么1拍應(yīng)為4DELAY,以此類推。所以只要求得1/4拍的DELAY,其余的節(jié)拍就是它的倍數(shù)。 總而言之,一首樂(lè)曲是由音階和節(jié)拍兩大要素構(gòu)成。一首樂(lè)曲演奏的原理是:不同音階分別對(duì)應(yīng)不同的頻率,發(fā)出不同的音調(diào),而節(jié)拍則控制發(fā)出音調(diào)時(shí)間的長(zhǎng)短;若將樂(lè)曲的音調(diào)連續(xù)發(fā)出,并使其按相應(yīng)的節(jié)拍變化,即可演奏一首樂(lè)曲。根據(jù)這一特點(diǎn),我們采用單片機(jī)輔以相應(yīng)的接口來(lái)設(shè)計(jì)音樂(lè)播放器。 5.2實(shí)現(xiàn)方法 利用定時(shí)器產(chǎn)生音樂(lè),添加了音樂(lè)鬧鐘功能,能在鬧鐘時(shí)間到來(lái)時(shí)蜂鳴器發(fā)出《祝你生日快樂(lè)》歌,但缺點(diǎn)是在響鈴時(shí)間里,無(wú)法正常顯示時(shí)間。在此次課程設(shè)計(jì)中,產(chǎn)生的音樂(lè)是利用查表法來(lái)改變定時(shí)器T1的初值,即改變音高,而通過(guò)延時(shí)來(lái)確定每個(gè)音符的長(zhǎng)短,即確定音長(zhǎng)。 6.小結(jié)與體會(huì) 7.參考文獻(xiàn) 【1】《單片機(jī)原理、接口及應(yīng)用——單片機(jī)嵌入式系統(tǒng)技術(shù)基礎(chǔ)(第2版)》,肖看、李群芳,清華大學(xué)出版社 【2】《單片機(jī)原理及應(yīng)用》,霍孟友,機(jī)械工程出版社 【3】《51系列單片機(jī)設(shè)計(jì)實(shí)例(第二版)》,樓然苗、李光飛,北京航 單片機(jī)課程設(shè)計(jì) 空航天大學(xué)出版社 8.附錄 8.1 源程序代碼ORG 0000H LJMP START ORG 000BH LJMP T0INT;T0中斷服務(wù)程序 ORG 001BH LJMP TIM0 ;;;;;主程序;;;;;;;;START:LCALL CLEA START1:LCALL SCAN LCALL BELLSCAN LCALL KEYSCAN SJMP START1 CLEA:MOV R0,#70H MOV R7,#0EH CLEAR:MOV @R0,#00H INC R0 DJNZ R7,CLEAR;70H~7CH賦值0 MOV TMOD,#11H MOV TL0,#0B0H MOV TH0,#03CH SETB EA SETB ET0 SETB EX0 SETB TR0 CLR IT0 MOV 72H,#10 MOV 75H,#10 MOV 68H,#55H MOV 69H,#01H MOV 6AH,#00H CLR P1.0 RET ;延時(shí)子程序1MS DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET DL10MS:ACALL SCAN ACALL SCAN ACALL SCAN RET ;《祝你生日快樂(lè)》音樂(lè)鬧鈴程序BELLSCAN:MOV A,6AH CJNE A,7AH,BELLOUT MOV A,69H CJNE A,79H,BELLOUT MOV A,68H CJNE A,78H,BELLOUT LCALL MUSIC BELLOUT:RET MUSIC: MOV IE,#8AH MOV 30H,#00H NEXT1:MOV A,30H MOV DPTR,#TABLE MOVC A,@A+DPTR MOV R2,A JZ END0 ANL A,#0FH MOV R5,A MOV A,R2 SWAP A ANL A,#0FH 單片機(jī)課程設(shè)計(jì) JNZ SING CLR TR1 LJMP D1 SING:DEC A MOV 22H,A RL A MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV TH1,A MOV 21H,A MOV A,22H RL A INC A MOVC A,@A+DPTR MOV TL1,A MOV 20H,A SETB TR1 D1:LCALL DELAY INC 30H LJMP NEXT1 END0:CLR TR1 LCALL BELLOUT TIM0:PUSH ACC PUSH PSW MOV TL1,20H MOV TH1,21H CPL P1.0 POP PSW POP ACC RETI DELAY:MOV R7,#02H D2:MOV R4,#187 D3:MOV R3,#248 DJNZ R3,$ DJNZ R4,D3 DJNZ R7,D2 DJNZ R5,DELAY RET TABLE1:DW 64260,64400,64521,64580 DW 64684,64777,64820,64898 DW 64968,65030,65058,65110 DW 65157,65178,65217 TABLE:;1 DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H;2 DB 82H,01H,81H,0F4H,0D4H DB 0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H DB 0C4H,0B4H,04H DB 00H SCAN:;把記的數(shù)送給偏移量 MOV DPTR,#7FFFH MOV A,#80H MOVX @DPTR,A;寫控制字,在顯示程序中A口輸出,B口輸出 MOV A,78H;秒 MOV B,#0AH DIV AB MOV 71H,A MOV 70H,B MOV A,79H;分 MOV B,#0AH DIV AB MOV 74H,A MOV 73H,B MOV A,7AH;時(shí) MOV B,#0AH DIV AB MOV 77H,A MOV 76H,B; 單片機(jī)課程設(shè)計(jì) T0中斷允許 ;循環(huán)掃描顯示,數(shù)碼管顯示程序,數(shù)碼管為共陽(yáng)型 MOV R1,#70H MOV R5,#80H;位選 MOV R3,#08H SCAN1:MOV A,R5 MOV DPTR,#7FFCH MOVX @DPTR,A;送A口位選 MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#7FFDH MOVX @DPTR,A;送B口字形碼 LCALL DL1MS INC R1;字形碼偏移量 MOV A,R5 RR A;位選碼 MOV R5,A DJNZ R3,SCAN1;8次 MOV DPTR,#7FFCH MOV A,#00H MOVX @DPTR,A;A口清位選 RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH;對(duì)應(yīng)于“0”~“9”、“_” ;定時(shí)器T0中斷服務(wù)程序 T0INT:PUSH ACC CLR ET0;停 CLR TR0;停T0工作 MOV TL0,#0B0H MOV TH0,#03CH SETB TR0;開(kāi)T0工作 INC 7BH;7BH存放20 MOV A,7BH CJNE A,#14H,OUTT0;20 MOV 7BH,#00H INC 78H;78H秒 MOV A,78H CJNE A,#3CH,OUTT0;60 MOV 78H,#00H INC 79H ;79H分 MOV A,79H CJNE A,#3CH,OUTT0;60 MOV 79H,#00H INC 7AH ;7AH時(shí) MOV A,7AH CJNE A,#18H,OUTT0;24 MOV 7AH,#00 OUTT0:SETB ET0;開(kāi)T0中斷允許 POP ACC RETI ;;;;;;鍵盤掃描子程序;;;;;;;; KEYSCAN:MOV DPTR,#7FFFH MOV A,#82H MOVX @DPTR,A;寫控制字,此時(shí)A口輸出,B口輸入 MOV DPTR,#7FFEH MOV A,#00H MOVX @DPTR,A;C口寫0 單片機(jī)課程設(shè)計(jì) MOV DPTR,#7FFDH MOVX A,@DPTR MOV B,A ;B口輸入 CJNE A,#0FFH,HAVE KEYOUT: RET HAVE: LCALL DL10MS1 MOVX A,@DPTR CJNE A,B,KEYOUT;延時(shí)一段時(shí)間再檢測(cè)有鍵按下才開(kāi)始掃描處理 INC DPTR MOV A,#0FEH MOV B,A MOVX @DPTR,A;C口輸出行值 MOV DPTR,#7FFDH MOVX A,@DPTR;B口輸入列值 CJNE A,#0FFH,KEYLIE0 MOV A,B RL A MOV B,A MOV DPTR,#7FFEH MOVX @DPTR,A;C口輸出行值 MOV DPTR,#7FFDH MOVX A,@DPTR;B口輸入列值 CJNE A,#0FFH,KEYLIE1 MOV A,B RL A MOV B,A MOV DPTR,#7FFEH MOVX @DPTR,A;C口輸出行值 MOV DPTR,#7FFDH MOVX A,@DPTR;B口輸入列值 CJNE A,#0FFH,KEYLIE2 MOV A,B RL A MOV DPTR,#7FFEH MOVX @DPTR,A;C口輸出行值 MOV DPTR,#7FFDH MOVX A,@DPTR;B口輸入列值 CJNE A,#0FFH,KEYLIE3 ACALL KEYOUT; KEYLIE0:MOV R2,#00H;R2 鍵碼 行值,第1行八個(gè)數(shù) LJMP KEYGET KEYLIE1:MOV R2,#08H;第2行,八個(gè)數(shù) LJMP KEYGET KEYLIE2:MOV R2,#10H;第3行,八個(gè)數(shù) LJMP KEYGET KEYLIE3:MOV R2,#18H;第4行,八個(gè)數(shù) LJMP KEYGET KEYGET:MOV B,A ;B中存放B口讀入的列值 MOV DPTR,#KEYTAB MOV A,#0 NEXT: PUSH ACC MOVC A,@A+DPTR CJNE A,B,AGAIN POP ACC;A是偏移值,即列值 ADD A,R2;A中存放鍵碼 單片機(jī)課程設(shè)計(jì) MOV B,A RL A ADD A,B;PC偏移量 MOV LJMP KEYFUN30 LJMP KEYFUN31 RET KEYTAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH DPTR,#KEYFUNTAB JMP @A+DPTR AGAIN: POP ACC INC A CJNE A,#8,NEXT ACALL KEYOUT KEYFUNTAB: LJMP KEYFUN00 LJMP KEYFUN01 LJMP KEYFUN02 LJMP KEYFUN03 LJMP KEYFUN04 LJMP KEYFUN05 LJMP KEYFUN06 LJMP KEYFUN07 LJMP KEYFUN08 LJMP KEYFUN09 LJMP KEYFUN10 LJMP KEYFUN11 LJMP KEYFUN12 LJMP KEYFUN13 LJMP KEYFUN14 LJMP KEYFUN15 LJMP KEYFUN16 LJMP KEYFUN17 LJMP KEYFUN18 LJMP KEYFUN19 LJMP KEYFUN20 LJMP KEYFUN21 LJMP KEYFUN22 LJMP KEYFUN23 LJMP KEYFUN24 LJMP KEYFUN25 LJMP KEYFUN26 LJMP KEYFUN27 LJMP KEYFUN28 LJMP KEYFUN29 ;0 1 2 3 4 5 6 7 RET DL10MS1:MOV R4,#20 DL3: MOV R5,#7DH DL4: NOP NOP DJNZ R5,DL4 DJNZ R4,DL3 RET KEYFUN00:MOV @R0,#00H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN01:MOV @R0,#01H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN02:MOV @R0,#02H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN03:MOV @R0,#03H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN04:MOV @R0,#04H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN05:MOV @R0,#05H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN06:MOV @R0,#06H MOV A,7EH CJNE A,#0FFH,CALCU RET 單片機(jī)課程設(shè)計(jì) KEYFUN07:MOV @R0,#07H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN08:MOV @R0,#08H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN09:MOV @R0,#09H MOV A,7EH CJNE A,#0FFH,CALCU RET CALCU: MOV A,71H MOV B,#0AH MUL AB ADD A,70H MOV 78H,A MOV A,74H MOV B,#0AH MUL AB ADD A,73H MOV 79H,A MOV A,77H MOV B,#0AH MUL AB ADD A,76H MOV 7AH,A RET KEYFUN10://調(diào)時(shí)鍵 CLR TR0 MOV R0,#77H;R0指向時(shí)的偏移量 MOV 7DH,#00H;閃爍標(biāo)志位 LCALL FLASH RET FLASH:MOV A,@R0 MOV @R0,#0BH;R0(此時(shí)77H)指向熄滅的偏移量 MOV 7CH,#3DH;7CH單元存放循環(huán)次數(shù) RE: LCALL OFFSCAN DJNZ 7CH,RE;調(diào)用OFFSCAN60次,半秒 MOV @R0,A;R0(此時(shí)77H)指向原來(lái)的偏移量 MOV 7CH,#3DH RE1: LCALL OFFSCAN DJNZ 7CH,RE1;調(diào)用OFFSCAN60次,半秒 LCALL KEYSCAN;鍵盤掃描 MOV A,7DH CJNE A,#0FFH,FLASH;判斷閃爍標(biāo)志位 RET OFFSCAN: PUSH ACC MOV R1,#70H MOV R5,#80H;位選 MOV R3,#08H OFFSCAN1:MOV DPTR,#7FFFH MOV A,#80H MOVX @DPTR,A;寫控制字 MOV A,R5 MOV DPTR,#7FFCH MOVX @DPTR,A;A口輸出位選 MOV A,@R1 MOV DPTR,#OFFTAB MOVC A,@A+DPTR MOV DPTR,#7FFDH MOVX @DPTR,A;B口輸出字形碼 LCALL DL1MS INC R1 ;R1指向下一個(gè)單元 MOV A,R5 RR A MOV R5,A;位選 DJNZ R3,OFFSCAN1;8次 單片機(jī)課程設(shè)計(jì) MOV DPTR,#7FFCH MOV A,#00H MUL AB ADD A,73H MOV 69H,A MOVX @DPTR,A;A口位選清零 POP ACC RET OFFTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,0FFH,89H RET //調(diào)時(shí)鍵按下 KEYFUN11:INC R0 RET KEYFUN12:DEC R0 RET KEYFUN13://走時(shí)鍵 MOV 7DH,#0FFH SETB TR0 RET KEYFUN14://鬧鈴鍵 MOV R0,#77H MOV 7EH,#0FFH;改變顯示單元,不改變計(jì)數(shù)單元 MOV 7DH,#00H;開(kāi)FLASH標(biāo)志位 LCALL FLASH RET KEYFUN15://鬧鐘時(shí)間確認(rèn)鍵,寫入計(jì)數(shù)比較單元 MOV A,71H MOV B,#0AH MUL AB ADD A,70H MOV 68H,A MOV A,74H MOV B,#0AH MOV A,77H MOV B,#0AH MUL AB ADD A,76H MOV 6AH,A RET KEYFUN16:RET KEYFUN17:MOV 7DH,#00H MOV 70H,#0CH MOV 71H,#0BH MOV 72H,#0BH MOV 73H,#0BH MOV 74H,#0BH MOV 75H,#0BH MOV 76H,#0BH MOV 77H,#0BH;送熄滅符以及H符 MOV R0,#70H LCALL FLASH RET KEYFUN18:MOV 7DH,#0FFH;關(guān)閉閃爍 LCALL CLEA RET KEYFUN19:RET KEYFUN20:RET KEYFUN21:RET KEYFUN22:RET KEYFUN23:RET KEYFUN24:RET KEYFUN25:RET KEYFUN26:RET KEYFUN27:RET KEYFUN28:RET KEYFUN29:RET KEYFUN30:RET KEYFUN31:RET ACALL KEYOUT END 單片機(jī)課程設(shè)計(jì) 8.2電路圖 總體電路圖 單片機(jī)課程設(shè)計(jì) 課題: 簡(jiǎn)易電子琴設(shè)計(jì) 學(xué) 院: 電氣與信息工程學(xué)院 專 業(yè): 電子信息工程 姓 名: 李琳琳 學(xué) 號(hào): 093411106 指導(dǎo)老師: 田巍 河南城建學(xué)院 2014年 01 月 01 日 課 程 設(shè) 計(jì) 設(shè)計(jì)題目: 基于單片機(jī)的8*8點(diǎn)陣顯示數(shù)字設(shè)計(jì) 學(xué)生姓名: 指導(dǎo)教師: 二級(jí)學(xué)院: 專 業(yè): 班 級(jí): 學(xué) 號(hào): 目 錄 摘要??????????????????????????Ⅱ 1 方案選擇及總體設(shè)計(jì)???????????????????1 1.1方案確定?????????????????????1 1.1.1功能要求????????????????????1 1.1.2方案確定????????????????????1 1.2器件選擇?????????????????????1 2 控制系統(tǒng)設(shè)計(jì)??????????????????????2 2.1 控制系統(tǒng)硬件設(shè)計(jì)?????????????????2 2.1.1整體模塊設(shè)計(jì)??????????????????2 2.1.2單片機(jī)AT89C51?????????????????2 2.1.3單片機(jī)最小系統(tǒng)設(shè)計(jì)???????????????5 2.1.3.1晶振電路設(shè)計(jì)?????????????????5 2.1.3.2復(fù)位電路設(shè)計(jì)?????????????????5 2.1.4驅(qū)動(dòng)電路設(shè)計(jì)??????????????????6 2.1.5LED點(diǎn)陣顯示設(shè)計(jì)????????????????9 2.2控制系統(tǒng)軟件設(shè)計(jì)?????????????????11 2.2.1軟件設(shè)計(jì)思想??????????????????11 2.2.2主程序流程圖??????????????????11 2.2.3子程序流程圖??????????????????13 3 系統(tǒng)仿真及調(diào)試????????????????????14 3.1系統(tǒng)調(diào)試?????????????????????14 3.2系統(tǒng)仿真?????????????????????14 3.2.1protrus軟件仿真????????????????14 3.2.2程序??????????????????????14 總結(jié)?????????????????????????^?17 參考文獻(xiàn)????????????????????????18 I 摘 要 現(xiàn)在市場(chǎng)上各類基于LED的顯示屏較多,但大部分產(chǎn)品為單一模式的LED顯示屏,其在顯示內(nèi)容的更換及顯示屏的重組等方面都存在不便之處。但隨著信息化社會(huì)的迅速發(fā)展,LED顯示屏正在向顯示內(nèi)容豐富、信息更改方便等方面發(fā)展。因此制作一款多功能的LED廣告顯示屏是非常有意義地。 LED驅(qū)動(dòng)顯示采用動(dòng)態(tài)掃描方法,動(dòng)態(tài)掃描方式是逐行輪流點(diǎn)亮,這樣掃描驅(qū)動(dòng)電路就可以實(shí)現(xiàn)多行的同名列共用一套列驅(qū)動(dòng)器。以8×8點(diǎn)陣為例,把所有同一行的發(fā)光管的陽(yáng)極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽(yáng)的接法),先送出對(duì)應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第1行使其燃亮一定的時(shí)間,然后熄滅;再送出第2行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時(shí)間,然后熄滅;第8行之后,又重新燃亮第1行,反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺(jué)暫留現(xiàn)象,就能看到顯示屏上穩(wěn)定的圖形。該方法能驅(qū)動(dòng)較多的LED,控制方式較靈活,而且節(jié)省單片機(jī)的資源。 本次課程設(shè)計(jì)的題目為8×8點(diǎn)陣數(shù)字顯示,設(shè)計(jì)的任務(wù)為使用單片機(jī)控制8×8的點(diǎn)陣顯示0到9的數(shù)字,不僅顯示清晰,并且每經(jīng)過(guò)一定時(shí)間,顯示的數(shù)字加一,從0 到 9 循環(huán)。以AT89C51單片機(jī)為核心,采用串行傳輸、動(dòng)態(tài)掃描技術(shù),制作一款模塊化LED多功能顯示屏。 在資料收集方面,主要是參考了《51單片機(jī)原理及應(yīng)用—基于Keil C與Proteus》一書(shū),結(jié)合了一些網(wǎng)絡(luò)資料,以及一些集成塊的使用說(shuō)明書(shū)。 在整個(gè)工作過(guò)程中,根據(jù)收集來(lái)的資料繪制出大概的原理圖,然后通過(guò)Proteus仿真,與此同時(shí)運(yùn)用Keil 編程,用Keil 與Proteus進(jìn)行聯(lián)調(diào),調(diào)試成功后確定了原理圖和控制程序。 II 第一章 方案選擇及總體設(shè)計(jì) 1.1 方案確定 1.1.1 功能要求 1、采用STC-51單片機(jī)作為微處理器。 2、設(shè)計(jì)一個(gè)8×8點(diǎn)陣LED數(shù)碼字符顯示器。 3、在目測(cè)條件下LED顯示屏各點(diǎn)亮度均勻、充足、穩(wěn)定、清晰無(wú)串?dāng)_。 4、動(dòng)態(tài)顯示“0——9”幾個(gè)字符。 1.1.2 方案確定 采用ST89C51單片機(jī)作為微處理器,將共陽(yáng)極二極管用共陰型接法連接成8×8點(diǎn)陣LED數(shù)碼字符陣列,通過(guò)程序控制,采用動(dòng)態(tài)顯示,建立字符庫(kù)“0——9”。 1.2 器件選擇 微處理器采用ST89C51系列單片機(jī),ST89C51單片機(jī)是這幾年在我國(guó)非常流行的單片機(jī),是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)高性能單片機(jī),可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次,具有低功耗、高性能的特點(diǎn)。 AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 第二章 控制系統(tǒng)設(shè)計(jì) 2.1控制系統(tǒng)硬件設(shè)計(jì) 2.1.1整體模塊設(shè)計(jì) 本設(shè)計(jì)行、列驅(qū)動(dòng)電路,顯示器電路,運(yùn)用單片機(jī)的智能化,系統(tǒng)的將每個(gè)功能電路模塊連接在一起,總體結(jié)構(gòu)設(shè)計(jì)如圖2-1所示。 點(diǎn)陣顯示器行驅(qū)動(dòng)電路PC上位機(jī)單片機(jī)8×8點(diǎn)陣LED顯示器電路點(diǎn)陣顯示器列驅(qū)動(dòng)電路 圖2-1 硬件系統(tǒng)框圖 此次需要實(shí)現(xiàn)的功能是利用一個(gè)ST89C51,一個(gè)8×8LED點(diǎn)陣,動(dòng)態(tài)顯示“0——9”10個(gè)字,采用PC上位機(jī)驅(qū)動(dòng)顯示電路。 2.1.2 單片機(jī)AT89C51 AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn), 兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C51單片機(jī)能提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。 AT89C51單片機(jī)引腳圖如圖2-2所示。 圖2-2 AT89C51引腳圖 AT89C51管腳說(shuō)明: VCC:供電電壓。GND:接地。 P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行 存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如下所示: P3口管腳 備選功能: P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。 /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2: 來(lái)自反向振蕩器的輸出。 2.1.3 單片機(jī)最小系統(tǒng)設(shè)計(jì) 單片機(jī)的最小系統(tǒng)是能夠讓單片機(jī)工作的最小硬件電路。除了單片機(jī)外,最小系統(tǒng)還包括復(fù)位電路和時(shí)鐘電路。 復(fù)位電路:?jiǎn)纹瑱C(jī)的復(fù)位電路接在復(fù)位信號(hào)RST上,復(fù)位電路用于將單片機(jī)內(nèi)部電路的狀態(tài)恢復(fù)到初始值。需要復(fù)位時(shí)按下按鈕即可。 時(shí)鐘電路:時(shí)鐘電路為單片機(jī)工作提供基本時(shí)鐘。時(shí)鐘電路中包含一個(gè)晶體振蕩器,簡(jiǎn)稱晶振,頻率范圍是1.2~12MHz。晶體振蕩頻率越高,系統(tǒng)的時(shí)鐘頻率也越高,單片機(jī)的運(yùn)行速度也就越快 ST89C51單片機(jī)最小系統(tǒng)電路由復(fù)位電路、晶振電路兩部分組成。2.1.3.1 晶振電路設(shè)計(jì) ST89C52單片機(jī)芯片內(nèi)部設(shè)有一個(gè)由反向放大器構(gòu)成的振蕩器,XTAL1和XTAL2分別為振蕩電路的的輸入端和輸出端,時(shí)鐘可有內(nèi)部或外部生成,在XTAL1和XTAL2引腳上外接定時(shí)元件,內(nèi)部振蕩電路就會(huì)產(chǎn)生自激振蕩。系統(tǒng)采用的定時(shí)元件為石英晶體和電容組成的并聯(lián)諧振回路。晶振頻率采用12MHZ,C1、C2的電容值取30pF,電容的大小起頻率微調(diào)的作用。晶振電路圖如圖2-3所示。 C1XTAL130pFC2XTAL230pF圖2-3 晶振電路圖 X112MHZ 2.1.3.2 復(fù)位電路設(shè)計(jì) ST89C51單片機(jī)在啟動(dòng)運(yùn)行時(shí)或者出現(xiàn)死機(jī)時(shí)需要復(fù)位,使CPU以及其他功能部件處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作。單片機(jī)有多種復(fù)位方式,常用的復(fù)位操作有上電復(fù)位和手動(dòng)復(fù)位方式。本設(shè)計(jì)采用最簡(jiǎn)單的上電復(fù)位方式,電路如圖2-4所示。上電復(fù)位是通過(guò)外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的,復(fù)位電路產(chǎn)生的復(fù)位信號(hào)(高電平有效)由RST引腳送入到內(nèi)部的復(fù)位電路,對(duì)ST89C51單片機(jī)進(jìn)行復(fù)位,復(fù)位信號(hào)要持續(xù)兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)以上,才能使ST89C51單片機(jī)可靠復(fù)位。當(dāng)上電時(shí),C1相當(dāng)于短路,有時(shí)碰到干擾時(shí)會(huì)造成錯(cuò)誤復(fù)位,可在復(fù)位端加個(gè)去耦電容,可以取得很好的效果。 ST89C51單片機(jī)復(fù)位電路如下圖所示: VCCAT89C51VCCC510MF/25VRSTR94.7KVSSR24.7KVSSRSTR1C10MF/25VS5 RSTVCCAT89C51VCC 圖2-4 上電復(fù)位電路圖 圖2-5 按鍵電平復(fù)位電路圖 復(fù)位電路工作原理: 上電瞬間RST引腳的電位與VCC等電位,RST引腳為高電平,隨著電容C5充電電流的減少,RST引腳的電位不斷下降,可以保持RST引腳在為高電平的時(shí)間內(nèi)完成復(fù)位操作。 當(dāng)單片機(jī)已在運(yùn)行當(dāng)中時(shí),按下復(fù)位鍵S5后再松開(kāi),也能使RST引腳為一段時(shí)間的高電平,從而實(shí)現(xiàn)ST89C51單片機(jī)復(fù)位。 2.1.4 驅(qū)動(dòng)電路設(shè)計(jì) 驅(qū)動(dòng)電路圖如圖2-6所示。 圖2-6 驅(qū)動(dòng)電路圖 74LS245引腳圖如圖2-7所示。 圖2-7 74LS245引腳圖 引出端符號(hào): A A總線端 B B總線端 /G 三態(tài)允許端(低電平有效)DIR 方向控制端 74LS245是用來(lái)驅(qū)動(dòng)LED或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。 如果用89C51的P0口輸出到數(shù)碼管,那就要考慮到數(shù)碼管的亮度以及P0口帶負(fù)載的能力,當(dāng)89C51單片機(jī)的P0口總線負(fù)載達(dá)到或超過(guò)P0最大負(fù)載能力時(shí),必須接入74LS245等總線驅(qū)動(dòng)器。選用74LS245提高驅(qū)動(dòng)能力。P0口的輸出經(jīng)過(guò)74LS245提高驅(qū)動(dòng)后,輸出到數(shù)碼管顯示電路。 工作原理: 當(dāng)片選端/CE低電平有效時(shí),DIR=“0”,信號(hào)由B向A傳輸;(接收)DIR=“1”,信號(hào)由A向B傳輸;(發(fā)送)當(dāng)CE為高電平時(shí),A、B均為高阻態(tài)。 正向點(diǎn)亮一顆LED,至少也要10~20mA,若電流不夠大,則LED不夠大。而不管是ST89C51的I/O口,還是TTL、CMOS的輸出端,其高態(tài)輸出電流都不是很高,不過(guò)1~2mA而已。因此很難直接高態(tài)驅(qū)動(dòng)LED,這時(shí)候就需要額外的驅(qū)動(dòng)電路,通常有共陽(yáng)型與共陰型LED陣列驅(qū)動(dòng)電路,本設(shè)計(jì)才用共陰型高態(tài)掃描信號(hào)驅(qū)動(dòng)電路。 共陰型LED陣列驅(qū)動(dòng)電路采用高態(tài)掃描,也就是任何時(shí)間只有一個(gè)高態(tài)信號(hào),其它則為低態(tài)。一行掃描完成后,再把高態(tài)信號(hào)轉(zhuǎn)化到近鄰的其他行,掃描信號(hào)接用一個(gè)反向驅(qū)動(dòng)器,ST89C51本身內(nèi)置一個(gè)反向驅(qū)動(dòng)器,本設(shè)計(jì)將ST89C51作為點(diǎn)矩陣顯示控制系統(tǒng)的控制核心,通過(guò)點(diǎn)矩陣實(shí)時(shí)顯示并移動(dòng)字符。 單片機(jī)的串口與行驅(qū)動(dòng)器相連,用來(lái)發(fā)送顯示數(shù)據(jù)信息。P3口與LED陣列的行引腳相連,送出數(shù)據(jù)、地址以及系統(tǒng)控制信號(hào)。輸出低態(tài)時(shí),最大可吸取0.5A,即500mA,若每個(gè)LED取30mA,7個(gè)LED同時(shí)點(diǎn)亮,需要210mA,完全滿足LED點(diǎn)亮的基本條件。 所要顯示的信號(hào)送入74LS245芯片,然后連接到LED陣列的列陣腳。對(duì)于高態(tài)的顯示信號(hào),將可提供其所連接LED的驅(qū)動(dòng)電流,而這個(gè)驅(qū)動(dòng)電流經(jīng)過(guò)LED到輸出端,形成正向回路,即可點(diǎn)亮該LED。其中每個(gè)晶體管任何時(shí)間只需負(fù) 責(zé)驅(qū)動(dòng)一個(gè)LED,所以選擇30mA射極電流的晶體管。驅(qū)動(dòng)電路如圖2-6所示。 2.1.5 LED點(diǎn)陣顯示設(shè)計(jì) 本設(shè)計(jì)采用ATMEL公司的AT89C51作矩陣顯示控制系統(tǒng)控制核心,12MHZ晶振,8?8點(diǎn)陣共陽(yáng)LED顯示器。其中,P0口作為字符數(shù)據(jù)輸出口,P3口為字符顯示掃描輸出口,第31腳(EA)接電源,改變電阻(270×8)的大小可改變顯示字符的亮度,驅(qū)動(dòng)用74LS245芯片。 本設(shè)計(jì)LED矩陣顯示器電路選用8×8點(diǎn)陣模塊,系統(tǒng)由單片機(jī)控制。LED顯示屏是將發(fā)光二極管按行按列布置的,在掃描驅(qū)動(dòng)方式下可以按行掃描按列控制,也可以按列掃描按行控制。本文就是使用1塊8×8點(diǎn)陣,采用按列掃描按行控制控制方式,掃描順序自左向右,以滿足數(shù)字顯示的要求。8×8點(diǎn)陣LED結(jié)構(gòu)如圖2-8所示。 8×8點(diǎn)陣LEDabcdefgh12345678 圖2-8 LED數(shù)碼顯示管 8×8 點(diǎn)陣LED的工作原理:LED點(diǎn)陣的顯示方式是按顯示編碼的順序,一行一行地顯示。對(duì)于共陽(yáng)型的點(diǎn)陣來(lái)說(shuō),當(dāng)某一點(diǎn)所在的行對(duì)應(yīng)高電平“1”并且其所在的列對(duì)應(yīng)低電平“0”的時(shí)候,這一點(diǎn)就會(huì)被點(diǎn)亮。將每一行的顯示時(shí)間進(jìn)行一定的延時(shí),由于人的視覺(jué)暫留現(xiàn)象,就會(huì)感覺(jué)到8行LED是在同時(shí)顯示的。若顯示的時(shí)間太短,則亮度不夠,若顯示的時(shí)間太長(zhǎng),將會(huì)感覺(jué)到閃爍。圖2-9為8×8點(diǎn)陣LED外觀及引腳圖,其等效電路如圖2-10所示,只要其對(duì)應(yīng)的X、Y軸順向偏壓,即可使LED發(fā)亮。例如如果想使左上角LED點(diǎn)亮,則Y0=1,X0=0即可。應(yīng)用時(shí)限流電阻可以放在X軸或Y軸。一個(gè)8×8點(diǎn)陣是由64個(gè)發(fā)光二極管按規(guī)律組成的,如圖2-10所示。圖中,行接高電平,列接低電平,發(fā)光二極管導(dǎo)通發(fā)光。 圖2-9 8×8點(diǎn)陣LED外觀及引腳圖 圖2-10 8×8點(diǎn)陣LED等效電路 8×8點(diǎn)陣數(shù)字顯示的編碼原理: 8×8點(diǎn)陣數(shù)字顯示主要應(yīng)用行掃描動(dòng)態(tài)顯示的方法實(shí)現(xiàn),如圖2-11所示,將行線依次置零,一次對(duì)列線編碼,有紅色填充部分為1,無(wú)填充部分為0。 圖2-11 8×8點(diǎn)陣數(shù)字顯示的編碼原理 如此可得到“0”的編碼為{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},同理可得到: {0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00} //1 {0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00} //2 {0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00} //3 {0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00} //4 {0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00} //5 {0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00} //6 {0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00} //7 {0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00} //8 {0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00} //9 2.2控制系統(tǒng)軟件設(shè)計(jì) 2.2.1 軟件設(shè)計(jì)思想 主程序先進(jìn)行設(shè)置中斷,并啟動(dòng),再進(jìn)行鍵盤掃描載入“0——9”字型,然后判斷一組字型是否掃描完,按不同情況進(jìn)行循環(huán)調(diào)用子程序。進(jìn)入子程序后,首先設(shè)置相應(yīng)的程序,反復(fù)調(diào)用顯示子程序,并在顯示過(guò)程中反復(fù)調(diào)用鍵盤掃描子程序進(jìn)行延時(shí),判斷是否退出相應(yīng)的方式顯示子程序。設(shè)計(jì)過(guò)程中,能很好得提高按鍵響應(yīng)速度。 2.2.2 主程序流程圖 主程序首先設(shè)置并啟動(dòng)T0中斷,然后調(diào)用初始化程序,為后面程序要用到的數(shù)據(jù)調(diào)入,并清零一些用到的數(shù)據(jù)單元,然后載入“0——9”字型,進(jìn)行掃描。圖2-12為主程序流程圖。 圖2-12 主程序流程圖 2.2.3 子程序流程圖(定時(shí)中斷服務(wù)程序) 圖11 子程序流程圖(定時(shí)中斷服務(wù)程序) 第三章 系統(tǒng)仿真及調(diào)試 3.1系統(tǒng)調(diào)試 根據(jù)硬件電路圖核對(duì)了元器件的型號(hào)、極性,安裝是否正確,檢查硬件電路連線是否與電路原理圖一致,檢查電路元器件是否都已經(jīng)連接好。 通電后,用示波器檢測(cè)單片機(jī)的復(fù)位和晶振電路是否有復(fù)位信號(hào)和振蕩信號(hào)。 3.2 系統(tǒng)仿真 3.2.1 proteus軟件仿真 使用proteus原理及仿真如圖3-1所示。 如圖3-1 proteus原理及仿真圖 3.2.2 程序 #include { 0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00, 0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00,//0 //1 0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,//2 0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00,//3 0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00,//4 0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00, 0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00, 0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00 };uchar i=0,t=0,Num_Index;//主程序 void main(){ P3=0x80; Num_Index=0; //從0開(kāi)始顯示 TMOD=0x00; //T0方式0 TH0=(8192-2000)/32;//2ms定時(shí) TL0=(8192-2000)%32;IE=0x82; //允許T0中斷 TR0=1; //啟動(dòng)T0 while(1);} //T0中斷函數(shù) void LED_Screen_Display()interrupt 1 { TH0=(8192-2000)/32; //恢復(fù)初值 TL0=(8192-2000)%32;P0=0xff; //輸出位碼和段碼 P0=~Table_of_Digits[Num_Index*8+i];P3=_crol_(P3,1); //P3循環(huán)向左一位 //5 //6 //7 //8 //9 } if(++i==8)i=0;if(++t==250){ } t=0; //每屏一個(gè)數(shù)字由8個(gè)字節(jié)構(gòu)成 //每個(gè)數(shù)字刷新顯示一段時(shí)間 if(++Num_Index==10)Num_Index=0;//顯示下一個(gè)數(shù)字 總結(jié) 經(jīng)過(guò)單片機(jī)的課程設(shè)計(jì),我有了很大的收獲。 首先,就是讓我加深了對(duì)單片機(jī)的掌握和理解與應(yīng)用,知道單片機(jī)到底是怎樣控制點(diǎn)陣,怎樣應(yīng)用在生活中的。并且讓我懂得了要善于思考,追求嚴(yán)謹(jǐn),認(rèn)真解決問(wèn)題,才會(huì)有更多的收獲。 然后,提高了通過(guò)查閱資料解決問(wèn)題的能力。通過(guò)查閱大量的相關(guān)資料,詳細(xì)了解了LED的發(fā)光原理和LED顯示屏的原理,了解了LED的現(xiàn)狀,清楚地了解了LED顯示屏與其它顯示屏相比較有那些優(yōu)點(diǎn),明確了研究目標(biāo)。并且通過(guò)對(duì)單片機(jī)資料的查閱和應(yīng)用,更進(jìn)一步增加了對(duì)單片機(jī)知識(shí)的理解和運(yùn)用能力。并證實(shí)了自己的思路:“查資料→思考總結(jié)→運(yùn)用→找出差錯(cuò),再查資料和向別人詢問(wèn)→再次運(yùn)用”的正確性。 最后,本系統(tǒng)能夠完成設(shè)計(jì)任務(wù),能夠顯示數(shù)字0-9,并且顯示也較為穩(wěn)定清晰。本系統(tǒng)具有硬件少,結(jié)構(gòu)簡(jiǎn)單,容易實(shí)現(xiàn),性能穩(wěn)定可靠,成本低等特點(diǎn)。在本次課程設(shè)計(jì)中,主要使用了Proteus和Keil等軟件進(jìn)行硬件電路和控制程序的設(shè)計(jì),加深了對(duì)這些軟件的了解。感到Proteus對(duì)電子專業(yè)的同學(xué)來(lái)說(shuō)是一個(gè)很有用的軟件??傮w來(lái)說(shuō)這次的課程設(shè)計(jì)很成功,達(dá)到了預(yù)想的目的:學(xué)到了知識(shí),提高了能力,完成了任務(wù)。 參考文獻(xiàn) [1] 張靖武,周靈彬 《單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真》北京 電子工業(yè)出版社 [2] 吳金戌,沈慶陽(yáng),郭庭吉 《8051單片機(jī)實(shí)踐與應(yīng)用》北京 清華大學(xué)出版社 [3] 李群芳,肖看 《單片機(jī)原理、接口及應(yīng)用》北京 清華大學(xué)出版社 [4] 張毅剛,彭喜元等 《新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì) 》黑龍江 哈爾濱工業(yè)大學(xué)出版社 [5] 李朝青,劉艷玲編著 《單片機(jī)原理及接口技術(shù)》北京 航空航天大學(xué)出版社第二篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告 定時(shí)鬧鐘
第三篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)音樂(lè)鬧鐘定時(shí)器
第四篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)
第五篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)