版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)原理及應(yīng)用課程設(shè)計(jì)說明書題目LCD12864 液晶顯示電子鐘設(shè)計(jì)系(部)專業(yè)(班級(jí))姓名學(xué)號(hào)指導(dǎo)教師起止日期 課程設(shè)計(jì)任務(wù)書系(部): 專業(yè): 課題名稱LCD12864 液晶顯示電子鐘設(shè)計(jì)設(shè)計(jì)要求設(shè)計(jì)一種基于 AT89S52 單片機(jī)的液晶顯示電子時(shí)鐘,要求如下:(1) 、 能正確顯示時(shí)間、 日期和星期顯示格式為: 時(shí)間: XX 小時(shí):XX 分:XX 秒;日期:XX 年:XX 月:XX 日;星期:X。(2) 、時(shí)間能夠由按鍵調(diào)整,誤差小于 1S。(3) 、 鬧鐘功能: 時(shí)間運(yùn)行到與鬧鐘設(shè)定時(shí)間時(shí), 鬧鐘響 (持續(xù)響 3 秒)。(4) 、 報(bào)時(shí)功能: 時(shí)間運(yùn)行到正點(diǎn)時(shí)間時(shí), 鬧鐘響, 幾點(diǎn)鐘
2、就響幾聲 (每聲持續(xù)響 2 秒,每?jī)陕曋g時(shí)間間隔 1 秒)。液晶顯示器第一行顯示“數(shù)字電子鐘” ;第二行顯示“當(dāng)前時(shí)間” ;第三行顯示日期和星期;第四行顯示最近一個(gè)鬧鐘的設(shè)定時(shí)間。2、要求:完成該系統(tǒng)的硬件和軟件的設(shè)計(jì),在 Proteus 軟件上仿真通過, 并提交一篇課程設(shè)計(jì)說明書。設(shè)計(jì)工作量1、匯編或 C51 語(yǔ)言程序設(shè)計(jì);2、程序調(diào)試;3、在 Proteus 上進(jìn)行仿真成功,進(jìn)行實(shí)驗(yàn)板下載調(diào)試;4、提交一份完整的課程設(shè)計(jì)說明書,包括設(shè)計(jì)原理、程序設(shè)計(jì)、程序分析、仿真分析、調(diào)試過程,參考文獻(xiàn)、設(shè)計(jì)總結(jié)等。工作計(jì)劃起止日期工作內(nèi)容第一天 課題紹,答疑,收集材料,C51介紹第二天設(shè)計(jì)方案論證,
3、練習(xí)編寫 C51 程序第三天第六天程序設(shè)計(jì)第六天第八天程序調(diào)試、仿真第九天第十天 系統(tǒng)測(cè)試并編寫設(shè)計(jì)說明書教研室意見 年 月 日系(部)主管領(lǐng)導(dǎo)意見 年 月 日目錄一、12864液晶的工作原理5二、方案設(shè)計(jì)52.1 實(shí)物硬件設(shè)計(jì)52.2 系統(tǒng)硬件設(shè)計(jì)62.2.1 主芯片模塊62.2.2 晶振和復(fù)位模塊62.2.3 按鈕模塊72.3 系統(tǒng)軟件設(shè)計(jì)72.3.1 主程序設(shè)計(jì)7三、仿真和分析8四、總結(jié)體會(huì)9參考文獻(xiàn)10一、12864液晶的工作原理 液晶顯示屏中的業(yè)態(tài)光電顯示材料,利用液晶的電光效應(yīng)把電信號(hào)轉(zhuǎn)換成數(shù)字符、圖像等可見信號(hào)。如圖1-1,液晶正常情況下,其分子排列很有秩序,顯得清澈透明,一旦加
4、上直流電場(chǎng)后,分子的排列被打亂,一部分液晶變的不透明,顏色加深因而能顯示數(shù)字和圖像。管腳一共1個(gè)CS1左半屏片選端,CS2右半屏片選端;V0液晶顯示驅(qū)動(dòng)電壓,通過一個(gè)電位器接到VCC;RS數(shù)據(jù)指令選擇信號(hào),H為數(shù)據(jù),L為指令,也叫D/I;R/W讀寫選擇信號(hào),H為讀,L為寫,。E為L(zhǎng)CD使能端,R/W為L(zhǎng)時(shí),E信號(hào)下降沿鎖存DB7-DB0;R/W為H時(shí),E為H,DDRAM數(shù)據(jù)讀到DB7-DB0。DB0-DB7數(shù)據(jù)傳輸端口。RST復(fù)位信號(hào)。-VOUT和V0為液晶顯示驅(qū)動(dòng)電壓。 12864是一種圖形點(diǎn)陣液晶顯示器,它主要由行驅(qū)動(dòng)器/列驅(qū)動(dòng)器及128×64全點(diǎn)陣液晶顯示器組成??赏瓿蓤D形顯示
5、,也可以顯示8×4個(gè)(16×16點(diǎn)陣)漢字。 圖1-1 12864LCD液晶顯示屏二、方案設(shè)計(jì) 2.1 實(shí)物硬件設(shè)計(jì) 單片機(jī)控制液晶顯示屏系統(tǒng)總共可分為六個(gè)環(huán)節(jié),分別是單片機(jī)控制系統(tǒng)、12864字符顯示模塊、控制開關(guān)模塊、晶振控制模塊、復(fù)位電路模塊和DS1302時(shí)鐘控制模塊。通過這六個(gè)模塊的協(xié)調(diào)工作就可以完成相應(yīng)的液晶屏控制和顯示功能。這六個(gè)模塊的相互連接如圖2-1: 圖2-1 硬件組成框圖 2.2 系統(tǒng)硬件設(shè)計(jì) 本硬件電路主要由四大模塊組成:主芯片模塊;晶振和復(fù)位電路模塊;控制接鈕模塊;顯示電路模塊。 2.2.1 主芯片模塊 主芯片模塊即單片機(jī)模塊,XTAL1:接外部晶振
6、和微調(diào)電容的一端。在片內(nèi),它是振蕩電路反相放大器的輸入端。XTAL2:接外部晶振和微調(diào)是容的一端。RST:AT89C51的復(fù)位信號(hào)輸入引腳,高電平有效。當(dāng)此輸入端保持兩個(gè)機(jī)器周期的高電平時(shí),就可以完成復(fù)位操作。ALE:允許地址鎖存信號(hào)端。EA:該引腳為低電平時(shí),則讀取外部的程序代碼來(lái)執(zhí)行程序。P0、P1、P2、P3:8位并行輸入輸出口。每個(gè)端口都是8位準(zhǔn)雙向口,共占32只引腳。每一條都能獨(dú)立地用作輸入或輸出。每個(gè)端口都包括一個(gè)鎖存器、一個(gè)輸出驅(qū)器和輸入緩沖器。作輸出時(shí),數(shù)據(jù)可以鎖存;作輸入時(shí),數(shù)據(jù)可以緩沖。圖如圖31。 圖3-1 單片機(jī)引腳圖 2.2.2 晶振和復(fù)位模塊 89C51芯片內(nèi)部有一
7、個(gè)高增益反相放大器,用于構(gòu)成振蕩器。如圖32,反相放大器的輸入端為XTAL1,輸出端XTAL2,兩個(gè)跨接石英晶體及兩個(gè)電容就可以構(gòu)成穩(wěn)定的自激振蕩器。XTAL1 是片內(nèi)振蕩器的反相放大器輸入端,XTAL2 則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到XTAL1,而XTAL2 懸空。一個(gè)晶體振蕩器,接在單片機(jī)內(nèi)部的振蕩電路上,兩個(gè)電容是起振電容,頻率越高,應(yīng)該越小。 圖4-1 晶振模塊 在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24 個(gè)振蕩周期)以上的高電平出現(xiàn)在此引腳時(shí),將使單片機(jī)復(fù)位,只要這個(gè)腳保持高電平,51 芯片便循環(huán)復(fù)位。復(fù)位后P0P3 口均置1 引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄
8、存器SFR 全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM 的00H 處開始運(yùn)行程序。如上圖5-1所示復(fù)位電路,由于復(fù)位時(shí)高電平有效,當(dāng)剛接上電源的瞬間,電容C1兩端相當(dāng)于短路,即相當(dāng)于給RESET引腳一個(gè)高電平,等充電結(jié)束時(shí)(這個(gè)時(shí)間很短暫),電容相當(dāng)于斷開,這時(shí)已經(jīng)完成了復(fù)位動(dòng)作。 圖5-1 復(fù)位模塊 2.2.3 按鈕模塊 本模塊采用四個(gè)按鈕進(jìn)行控制,通過串行口輸入輸出連接,當(dāng)K1按鍵波動(dòng)一次后,方可進(jìn)行年、月、日、星期、時(shí)、分的改變,當(dāng)循環(huán)滿時(shí),按下K0可實(shí)現(xiàn)對(duì)鬧鐘的改變。按鍵K2、K3分別實(shí)現(xiàn)加一減一的操作。 圖6-1 按鈕模塊2.3 系統(tǒng)軟件設(shè)計(jì) 2.3.1 主程序設(shè)計(jì) 圖7-
9、1 主程序流程圖 圖8-1 LCD顯示程序和初始化子程序流程圖三、仿真和分析將程序下載到單片機(jī)開發(fā)板上,LCD12864顯示如下圖,第一行為漢字“數(shù)字電子鐘”,第二行為時(shí)分秒,第三行為年月日以及星期,第四行為鬧鐘,通過按鍵可實(shí)現(xiàn)時(shí)間的調(diào)整,也可實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)和鬧鐘。符合設(shè)計(jì)要求。 圖9-1 實(shí)物仿真圖程序:#include<reg52.h>#include<intrins.h>#include<stdlib.h>#define uchar unsigned char#define uint unsigned intsbit rs=P10;/12864引腳定義s
10、bit rw=P11;sbit en=P12;sbit PSB=P13;sbit beep=P34;/蜂鳴器引腳定義sbit k1=P35;/按鍵定義sbit k2=P36;sbit k3=P37;sbit k0=P00;uint t,k,kk;uchar shi,fen,miao,nian=13,yue,ri,zhou,shi0,fen0,miao0;uchar code dis1=0xca,0xfd,"字電子鐘"/顯示字組uchar code dis2="00時(shí)00分00秒"uchar code dis3="00年00月00日 1"
11、;uchar code dis4="鬧鐘00時(shí)00分00秒"void delayms(uint xms)/延時(shí)xms函數(shù)uchar i,j;for(i=xms;i>0;i-)for(j=110;j>0;j-);void warn(uchar xn)/“嘟”xn次函數(shù)uint nn;for(nn=0;nn<xn;nn+)uint n;for(n=2000;n>0;n-)beep=1;delayms(1);beep=0;delayms(2);for(n=1000;n>0;n-)beep=1;delayms(3);void warn3s()/3s報(bào)警
12、函數(shù)uint n;for(n=3000;n>0;n-)beep=0;delayms(2);beep=1;delayms(1); void write_com(uchar com)/12864寫指令函數(shù)rs=0;rw=0;en=0;P2=com;delayms(5);en=1;delayms(5);en=0;void write_data(uchar date)/12864數(shù)據(jù)指令函數(shù)rs=1;rw=0;en=0;P2=date;delayms(5);en=1;delayms(5);en=0;void lcd_pos(uchar X,uchar Y)/12864顯示位置函數(shù)uchar po
13、s;if(X=0)X=0x80;if(X=1)X=0x90;if(X=2)X=0x88;if(X=3)X=0x98;pos=X+Y;write_com(pos);void write_sfm(int add,uint date)/時(shí)鐘數(shù)值函數(shù)uchar shi,ge;shi=date/10;ge=date%10;lcd_pos(1,0+add);write_data(0x30+shi);write_data(0x30+ge);void write_sfm1(int add1,uint date1)/年月日數(shù)值函數(shù)uchar shi,ge;shi=date1/10;ge=date1%10;lcd
14、_pos(2,0+add1);write_data(0x30+shi);write_data(0x30+ge);void write_sfm2(int add2,uint date2)/鬧鐘數(shù)值函數(shù)uchar shi,ge;shi=date2/10;ge=date2%10;lcd_pos(3,0+add2);write_data(0x30+shi);write_data(0x30+ge);void keyscan()/按鍵掃描函數(shù)if(k0=0)/鬧鐘按鍵操作delayms(5);if(k0=0)while(!k0);kk+;if(kk=1)TR0=0;write_com(0x0f);lcd_
15、pos(3,2);if(kk=2)lcd_pos(3,4);if(kk=3)lcd_pos(3,6);if(kk=4)kk=0;TR0=1;write_com(0x0c);if(k1=0)/調(diào)試按鍵操作delayms(5);if(k1=0)k+;while(!k1);if(k=1)TR0=0;write_com(0x0f);lcd_pos(1,4);if(k=2)lcd_pos(1,2);if(k=3)lcd_pos(1,0);if(k=4)lcd_pos(2,4);if(k=5)lcd_pos(2,2);if(k=6)lcd_pos(2,0);if(k=7)lcd_pos(2,7);if(k
16、=8)k=0;write_com(0x0c);TR0=1;if(k!=0)if(k2=0)/“+1”按鍵操作delayms(5);if(k2=0)while(!k2);if(k=1)miao+;if(miao=60)miao=0;write_sfm(4,miao);lcd_pos(1,4);/write_sfm(4,miao);if(k=2)fen+;if(fen=60)fen=0;write_sfm(2,fen);lcd_pos(1,2);/write_sfm(2,fen);if(k=3)shi+;if(shi=24)shi=0;write_sfm(0,shi);lcd_pos(1,0);/
17、write_sfm(0,shi);if(k=4)ri+;if(ri=32)ri=1;write_sfm1(4,ri);lcd_pos(2,4);/write_sfm1(4,ri);if(k=5)yue+;if(yue=13)yue=1;write_sfm1(2,yue);lcd_pos(2,2);/write_sfm1(2,yue);if(k=6)nian+;if(nian=50)nian=0;write_sfm1(0,nian);lcd_pos(2,0);/write_sfm1(0,nian);if(k=7)zhou+;if(zhou=8)zhou=0;write_sfm1(7,zhou);
18、lcd_pos(2,7);/write_sfm1(7,zhou);if(k3=0)/“-1按鍵操作”delayms(5);if(k3=0)while(!k3);if(k=1)miao-;if(miao=-1)miao=59;write_sfm(4,miao);lcd_pos(1,4);/write_sfm(4,miao);if(k=2)fen-;if(fen=-1)fen=59;write_sfm(2,fen);lcd_pos(1,2);/write_sfm(2,fen);if(k=3)shi-;if(shi=-1)shi=23;write_sfm(0,shi);lcd_pos(1,0);/w
19、rite_sfm(0,shi);if(k=4)ri-;if(ri=-1)ri=31;write_sfm1(4,ri);lcd_pos(2,4);/write_sfm1(4,ri);if(k=5)yue-;if(yue=-1)yue=12;write_sfm1(2,yue);lcd_pos(2,2);/write_sfm1(2,yue);if(k=6)nian-;if(nian=-1)nian=50;write_sfm1(0,nian);lcd_pos(2,0);/write_sfm1(0,nian);if(k=7)zhou-;if(zhou=-1)zhou=7;write_sfm1(7,zho
20、u);lcd_pos(2,7);/write_sfm1(7,zhou);if(k=0)if(k2=0)delayms(5);if(k2=0)while(!k2);if(kk=3)miao0+;if(miao0=60)miao0=0;write_sfm2(6,miao0);lcd_pos(3,6);/write_sfm2(6,miao0);if(kk=2)fen0+;if(fen0=60)fen0=0;write_sfm2(4,fen0);lcd_pos(3,4);/write_sfm2(4,fen0);if(kk=1)shi0+;if(shi0=24)shi0=0;write_sfm2(2,s
21、hi0);lcd_pos(3,2);/write_sfm2(2,shi0);if(k3=0)delayms(5);if(k3=0)while(!k3);if(kk=3)miao0-;if(miao0=-1)miao0=59;write_sfm2(6,miao0);lcd_pos(3,6);/write_sfm2(6,miao0);if(kk=2)fen0-;if(fen0=-1)fen0=59;write_sfm2(4,fen0);lcd_pos(3,4);/write_sfm2(4,fen0);if(kk=1)shi0-;if(shi0=-1)shi0=23;write_sfm2(2,shi
22、0);lcd_pos(3,2);/write_sfm2(2,shi0);void init()/初始化函數(shù)(12864初始化,定時(shí)器初始化)PSB=1;write_com(0x30);delayms(5);write_com(0x0c);delayms(5);write_com(0x01);delayms(5);TH0=(65535-50000)/256;TL0=(65535-50000)%256;TMOD=0x01;ET0=1;EA=1;TR0=1;void main()/主函數(shù)uchar i;delayms(10);init();lcd_pos(0,2);/第一排顯示i=0;while(d
23、is1i!='0')write_data(dis1i);i+;lcd_pos(1,0);/第二排顯示i=0;while(dis2i!='0')write_data(dis2i);i+;lcd_pos(2,0);/第三行顯示i=0;while(dis3i!='0')write_data(dis3i);i+;lcd_pos(3,0);/第四行顯示i=0;while(dis4i!='0')write_data(dis4i);i+;while(1)keyscan();if(miao=0&&fen=0&&TR
24、0=1)/整點(diǎn)報(bào)時(shí)判斷warn(shi);if(miao=miao0&&fen=fen0&&shi=shi0&&TR0=1)/鬧鐘判斷warn3s();if(miao=0&&fen=0&&miao=miao0&&fen=fen0&&shi=shi0&&TR0=1)/整點(diǎn)報(bào)時(shí)、鬧鐘時(shí)沖突操作warn3s();while(1);void timer() interrupt 1/定時(shí)器函數(shù)TH0=15535/256;TL0=15535%256;t+; /50ms計(jì)數(shù)一次if
25、(t=20)t=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;zhou+;if(zhou=8)zhou=1;ri+;if(yue=1|yue=3|yue=5|yue=7|yue=8|yue=10|yue=12)if(ri=32)ri=1;yue+;if(yue=13)yue=1;nian+;if(yue=4|yue=6|yue=9|yue=11)if(ri=31)ri=1;yue+;if(yue=13)yue=1;nian+;if(yue=2)if(nian%4)=0)if(ri=30)ri=1;yue+
26、;if(yue=13)yue=1;nian+;if(nian%4)!=0)if(ri=29)ri=1;yue+;if(yue=13)yue=1;nian+;write_sfm1(0,nian);write_sfm1(2,yue);write_sfm1(7,zhou);write_sfm1(4,ri);write_sfm(0,shi);write_sfm(2,fen);write_sfm(4,miao);四、總結(jié)體會(huì) 通過這為期兩個(gè)星期的課程設(shè)計(jì),我從中認(rèn)識(shí)到了自己很多方面的不足。在第一個(gè)星期的課程設(shè)計(jì)中,是通過proteus仿真來(lái)實(shí)現(xiàn)要求中的各種功能。由于自己課余時(shí)間沒有對(duì)單片機(jī)相關(guān)的知識(shí)進(jìn)行
27、深入了解,所以在開始做設(shè)計(jì)時(shí),無(wú)從下手,不知道該怎么布置仿真圖,更不知道怎么通過寫程序來(lái)實(shí)現(xiàn)課題要求。不過有的課題可以參考課本上的程序,例如彩燈中斷,就是在課本上流水燈的基礎(chǔ)上加入一個(gè)中斷程序,不過中斷程序加在何處自己還是有一點(diǎn)疑惑,通過翻閱課本上有關(guān)中斷方面的知識(shí)后,了解了中斷系統(tǒng)的結(jié)構(gòu)及工作原理,再加入了中斷程序后,程序還是有一點(diǎn)小問題,在請(qǐng)教了同學(xué)之后,找到了問題所在,修改程序以后實(shí)現(xiàn)了要求。而串轉(zhuǎn)并,在以前的實(shí)驗(yàn)中做過類似的,所以整體比較順利。利用彩燈計(jì)數(shù)一開始不太明白這個(gè)要求的意思,請(qǐng)教了同學(xué)才明白要求的意思。根據(jù)二進(jìn)制的計(jì)算轉(zhuǎn)化成彩燈的亮滅,雖然程序很短,但我心里還是有很大的成就感。在做方波的輸出時(shí),在寫程序之前參考了一下同學(xué)的程序,搞懂了原理,才完成了設(shè)計(jì)。在這之后,有關(guān)于LCD的設(shè)計(jì),在這之前,還沒有接觸過LCD,所以上網(wǎng)查了
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《計(jì)算機(jī)離港系統(tǒng)》課件
- 《數(shù)字社區(qū)整體方案》課件
- 《撰寫專利》課件
- 《講課體內(nèi)受精和早期胚胎發(fā)育》課件
- 孕期胰腺炎的健康宣教
- 產(chǎn)后睡眠淺的健康宣教
- 孕期關(guān)節(jié)響的健康宣教
- 懸雍垂過長(zhǎng)癥的健康宣教
- 《機(jī)械設(shè)計(jì)基礎(chǔ)》課件-第7章
- 八年級(jí)英語(yǔ)Blindmanandeyesinfiredrama課件
- 2024年錦州師范高等??茖W(xué)校單招職業(yè)技能測(cè)試題庫(kù)及答案解析
- MOOC 能源與氣候變化應(yīng)對(duì)法-西南政法大學(xué) 中國(guó)大學(xué)慕課答案
- MOOC 概率論與數(shù)理統(tǒng)計(jì)-重慶大學(xué) 中國(guó)大學(xué)慕課答案
- MOOC 電子技術(shù)-北京科技大學(xué) 中國(guó)大學(xué)慕課答案
- 2024年鍍鋅管行業(yè)發(fā)展趨勢(shì)及前景展望分析報(bào)告
- 新能源汽車充電樁項(xiàng)目計(jì)劃書
- 《水電工程運(yùn)行調(diào)度規(guī)程編制導(dǎo)則》(NB-T 10084-2018)
- 廣東清大智興生物技術(shù)有限公司 公司介紹
- (2024年)院感知識(shí)培訓(xùn)內(nèi)容(完整詳細(xì)版)x
- 《光伏發(fā)電工程工程量清單計(jì)價(jià)規(guī)范》
- (高清版)DZT 0342-2020 礦坑涌水量預(yù)測(cè)計(jì)算規(guī)程
評(píng)論
0/150
提交評(píng)論