單片機(jī)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告LCD電子時(shí)鐘_第1頁(yè)
單片機(jī)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告LCD電子時(shí)鐘_第2頁(yè)
單片機(jī)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告LCD電子時(shí)鐘_第3頁(yè)
單片機(jī)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告LCD電子時(shí)鐘_第4頁(yè)
單片機(jī)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告LCD電子時(shí)鐘_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)原理與應(yīng)丿課程名稱:單片機(jī)原理與應(yīng)用設(shè)計(jì)題目:LCD電子鐘電子信息工程學(xué)院 自動(dòng)化0706 全宏宇指導(dǎo)教師:,設(shè)計(jì)目標(biāo)LCD顯示電子鐘的基本功能1,實(shí)現(xiàn)時(shí)鐘功能;2,實(shí)現(xiàn)鬧鈴功能;3,實(shí)現(xiàn)秒表功能;4,具有一定的計(jì)時(shí)精度。LCD顯示電子鐘的基本要求1,掌握單片機(jī)幵發(fā)編程設(shè)計(jì)的基本流程;2,了解Keil及Proteus軟件的基本使用;3,了解LCD的基本使用;4,學(xué)習(xí)單片機(jī)硬件制作。,具體實(shí)現(xiàn)1,軟件平臺(tái)1) Keil編程Keil的幵發(fā)工具的使用的基本過(guò)程:0創(chuàng)建C或匯編語(yǔ)言的源程序;編譯或匯編源文件;03 糾正源文件中的錯(cuò)誤;04 從編譯器和匯編器連接目標(biāo)文件;05 測(cè)試連接的應(yīng)用程序。

2、2)Proteus 仿真Proteus 軟件不僅具有其它 EDA 工具軟件的仿真功能,還能仿真單片機(jī)及 外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。在編譯方面,它 也支持 IAR ,Keil , PLAB 等多種編譯器。2,硬件開(kāi)發(fā)平臺(tái)JD51幵發(fā)板的基本資料01 LED 電路,8 只獨(dú)立 LED 發(fā)光管,可做指示或各種閃爍效果用。02 數(shù)碼管電路, 4 只共陽(yáng)一體 8 段數(shù)碼顯示管, 可實(shí)現(xiàn)各種數(shù)據(jù)顯示, 如計(jì)數(shù)、 時(shí)鐘等。03 蜂鳴器電路,可用于設(shè)計(jì)各種提示音、演奏音樂(lè)等。04 鍵盤(pán)電路,學(xué)習(xí)按鍵控制相關(guān)編程。05 LCD 顯示電路,編程控制 LCD 顯示。06 串口電路, 學(xué)習(xí)編

3、程實(shí)現(xiàn) JD51 和 PC 或其他符合該通信協(xié)議的電路之間的通 信。JD51。07 紅外電路,通過(guò)選配的紅外遙控器,學(xué)習(xí)紅外解碼并可實(shí)現(xiàn)紅外遙控08 溫度模塊電路, 采用一線式溫度傳感器實(shí)現(xiàn)溫度的采集并可顯示在數(shù)碼管或 者 LCD 上,通過(guò)溫度數(shù)據(jù)處理便可實(shí)現(xiàn)溫度控制器功能。09 除了以上提到的可編程電路本學(xué)習(xí)板還有一些常用的不可編程電路,包括電源電路、復(fù)位電路、晶振電路等。本次LCD電子鐘實(shí)驗(yàn)用到其中的蜂鳴器,按鍵,LCD顯示接口。3,總體設(shè)計(jì)1) 基本資源的使用本次實(shí)驗(yàn)采用了 8 9C52型單片機(jī),1 6 0 2 LCD液晶顯示屏, 蜂鳴器。為了實(shí)現(xiàn)時(shí)鐘,定時(shí),鬧鐘,秒表的功能,用到了單片

4、機(jī)的外部中斷,計(jì)時(shí)器中斷,及I/O端口.資源功能外部中斷外部中斷INT1模式選擇(時(shí)鐘,調(diào)時(shí),秒表,鬧鐘)外部中斷INTO秒表的暫停,清零定時(shí)器定時(shí)器TO秒表,時(shí)鐘定時(shí)基準(zhǔn)定時(shí)器T1音樂(lè)鬧鈴的音符產(chǎn)生I/O 端口P1,P2LCD接口,蜂鳴器2)軟件仿真(1)程序設(shè)計(jì)的一些關(guān)鍵問(wèn)題(具體參照后面的程序清單)建立Keil工程時(shí),注意對(duì)程序編譯環(huán)境進(jìn)行設(shè)置;設(shè)置內(nèi)容包括器件,頻率,產(chǎn)生hex文件等。LCD管腳及控制字;LCD管腳的定義控制字1602液晶模塊的讀寫(xiě)操作,屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置 指令 2:光標(biāo)復(fù)位,光標(biāo)返回到地址

5、00H指令 3:光標(biāo)和顯示位置設(shè)置 I/D ,光標(biāo)移動(dòng)方向,高電平右移,低電平左移,S:屏幕上所有文字是否左移或右移,高電平表示有效,低電平表示無(wú)效。指令4:顯示幵關(guān)控制。D:控制整體的顯示幵與關(guān),高電平表示幵顯示,低電 平表示關(guān)顯示。 C: 控制光標(biāo)的開(kāi)與關(guān), 高電平表示有光標(biāo), 低電平表示無(wú)光標(biāo) B : 控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令 5:光標(biāo)或顯示移位 S/C :高電平時(shí)顯示移動(dòng)的文字,低電平時(shí)移動(dòng)光標(biāo) 指令6:功能設(shè)置命令DL :高電平時(shí)為4位總線,低電平時(shí)為8位總線N :低電平時(shí)為單行顯示,高電平時(shí)為雙行顯示,F(xiàn):低電平時(shí)顯示5X7的點(diǎn)陣字符,高電平時(shí)顯示5X10的

6、顯示字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8: DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址 BF :忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接 收命令或數(shù)據(jù),如果為低電平表示不忙。LCD實(shí)現(xiàn)滾動(dòng)顯示;方法一:采用LCD 1 6 0 2控制命令,顯示后畫(huà)面移動(dòng)一個(gè)字符;方法二:循環(huán)使用顯示不同位置,形成滾動(dòng)效果。5 秒表 主要是產(chǎn)生計(jì)時(shí)基準(zhǔn)0 . 01秒, 有了基準(zhǔn)之后需要解決的問(wèn)題是如何實(shí)現(xiàn)有效 的暫停,清零(達(dá)到精準(zhǔn)動(dòng)作) ,采用中斷是很不錯(cuò)的結(jié)果。6 鬧鈴主要是如何實(shí)現(xiàn)鬧鈴關(guān)閉的邏輯, if(f&g) 語(yǔ)句可以實(shí)現(xiàn)這一動(dòng)作。提高計(jì)時(shí)精度本程序除了調(diào)時(shí)模式外,其他模式的時(shí)候時(shí)鐘都在跑動(dòng)

7、,提高了因模式轉(zhuǎn)換而 導(dǎo)致的時(shí)間精度降低。2) Proteus 仿真在Proteus中畫(huà)出如下電路圖,添加hex文件,進(jìn)行虛擬仿真。2) 開(kāi)發(fā)板運(yùn)行調(diào)試在JD5 1板上燒制程序,根據(jù)實(shí)際的效果,對(duì)中斷的反應(yīng)時(shí)間,顯示效果做出了調(diào)整,整體效果不錯(cuò),只是音樂(lè)的效果不佳,主要是由于如果將蜂鳴器換 成揚(yáng)聲器效果會(huì)好些,還可以在程序中增加節(jié)拍來(lái)增加音樂(lè)效果。4,硬件制作根據(jù)仿真電路圖購(gòu)買(mǎi)元件進(jìn)行焊接,下載程序效果后,液晶顯示器顯示亂碼,檢查電路后已無(wú)連接錯(cuò)誤,但功能依然沒(méi)有實(shí)現(xiàn),相關(guān)檢查在進(jìn)行中。本次課程設(shè)計(jì)系統(tǒng)地學(xué)習(xí)了單片編程幵發(fā)及實(shí)際電路的制作。學(xué)習(xí)了Ke 的C語(yǔ)言編程的基本知識(shí),Proteus仿真

8、軟件的模擬仿真,JD51幵發(fā)實(shí)驗(yàn)板的 使用,本次課設(shè),時(shí)間了較多的其他案例,比較全面的掌握了單片機(jī)的運(yùn)營(yíng),包 括編程,電路,LCD器件等,在知識(shí)上有了很多的長(zhǎng)進(jìn)。本次課程設(shè)計(jì)還有很多其他收獲,鍛煉了自學(xué)的能力,特別是動(dòng)手實(shí)踐方面的 東西,讓我深深感受到理論與實(shí)際的差距,實(shí)際當(dāng)中會(huì)有一些小的問(wèn)題,這些問(wèn) 題是意想不到的,需要去思考,去解決,這是很鍛煉人的。四,程序#include#include#define uchar unsigned char#define ulong unsigned long#define uint unsigned intuchar idatawelcome16=cl

9、ock;/ 定 義 第 一 行 顯示數(shù)組uchar idatalwelcome16=clock;/ 定義第一行顯示數(shù)uchar idatallwelcome16=clock;/定義第一行顯示數(shù)組uchar idatalllwelcome16=clock ;/定義第一行顯示數(shù)組uchar idata sslcdtimer16=00:00:00 ;uchar idata tsslcdtimer16=00:00:00 ;uchar idatalcdtimer16=00:00:00;/定義第二行顯示數(shù)組uchar idatamlcdtimer16=00: :;/定義第二行顯示數(shù)組uchar idata

10、hlcdtimer16=:00:;/定義第二行顯示數(shù)組uchar idatasetlcdtimer16=00:01:00 ;uchar timecount;uchar temps;bit timeflag;bit sstimeflag;song1=26,25,23,25,31,26,25,26,23,25,26,25,23,22,21,16,25,23,22,22,2sbit rin g=PSO;/蜂鳴鬧鈴sbit e=P2A7;/LCD顯示器Esbit rw=P 2八6;/LCD顯示器RWsbit rs二P 2八5;/LCD顯示器RSsbit P1O=PMO; /測(cè)試用閃燈sbit Key二

11、P 3八2;/秒表暫停,清零sbit KeyO=卩3八3;/調(diào)時(shí),設(shè)定鬧鐘時(shí)間,秒表選擇sbit Key1=卩3八4;/調(diào)時(shí),設(shè)定鬧鐘時(shí)間改變uchar th1_f; /在中斷中裝載的 TO 的值高 8 位uchar tl1_f; /在中斷中裝載的 TO 的值低 8 位uint m=O;uint n=O;ulong i;uint f=O,g=1;uint j,k;uchar code freq314=OxF2,Ox42,0xF5,0x17, 0xF5,0xB6, 0xF6,0xD0, 0xF7,0xD1, 0xF8,0xB6, 0xF9,0x21, 0xF9,0xE0, 0xFA,0x8B,

12、0xFA,0xD7, 0xFB,0x68, 0xFB,0xE8, 0xFC,0x5B , 0xFC,0x8D, 0xFC,0xEE, 0xFD,0x44, 0xFD,0x6D, 0xFD,0xB4, 0xFD,0xF4, 0xFE,0x2D,; / 音樂(lè)頻率表,低音,中音,高音,系統(tǒng)振蕩頻率 11.0592MHzuintcode3,23,23,26,23,22,21,25,23,22,21,16,21,15,26,25,23,25,31,26,25,26,23,25 ,26,25,23,22,21,16,25,23,22,22,23,23,23,26,23,22,21,25,23,22,21,

13、16,21, 15;/ 編制音樂(lè)/* /軟件延時(shí)函數(shù)(系統(tǒng)晶振為 11.0592MHz),延時(shí)時(shí)間約為40 口 s/入口條件:無(wú)符號(hào)整型變量del1,最終的延時(shí)時(shí)間為(del1*40 )卩s/* void delay( uint dell)uchar del2;for(;del10;del1-)for(del2=10;del20;del2-);/* / 液晶顯示器判忙函數(shù)/* void busy()uchar temp;rs=0;temp=0x00;rw=1;while(temp&0x80)=0x80)P0=0xff;e=1;temp=P0;e=0;/* / 向液晶顯示器寫(xiě)命令函數(shù)/* voi

14、d WR_Com(uchar temp)busy();rs=0;rw=0;P0=temp;e=1;e=0;/*/ 向液晶顯示器寫(xiě)數(shù)據(jù)函數(shù)/* void WR_Data(uchar num)busy();rs=1;rw=0;P0=num;e=1;e=0;/* / 向液晶顯示器寫(xiě)入顯示數(shù)據(jù)函數(shù)/ 入口條件:液晶顯示器行首地址(指示第一行還是第二行)和待顯示數(shù)組的首 地址/* /void disp_lcdchar(uchar addr,uchar temp1)/WR_Com(addr);/delay(100);/WR_Data(temp1);/void disp_lcd(uchar addr,uch

15、ar *temp1)uchar i;WR_Com(addr);delay(100);for(i=0;i0;i-)P0=0x30;rs=0;rw=0;e=1;e=0;delay(100);P0=0x38;rs=0;rw=0;e=1;e=0;delay(100);/* / 液晶顯示器復(fù)位函數(shù)/* void lcd_Reset()WR_Com(0x01);delay(100);WR_Com(0x06);delay(100);WR_Com(0x0c);delay(100);/* / 外部中斷函數(shù),秒表暫停,清零/* void modess() interrupt 0 using 0delay(1000

16、0);n+;if(n=3)n=0;/* / 外部中斷函數(shù),模式選擇/* void modepp() interrupt 2 using 1delay(30000);m+;if(m=6)n=0;if(m=7)m=0;/* / 定時(shí)/ 計(jì)數(shù)器中斷函數(shù), 1S 及 0.01S /* void timer0() interrupt 1 using 2TH0=0xdc;TL0=0x23;sstimeflag=1;if(-timecount=0)timecount=100;timeflag=1;/* / 定時(shí)/ 計(jì)數(shù)器中斷函數(shù),裝入音樂(lè)頻率計(jì)數(shù)初值/* void timer1() interrupt 3

17、using 3ring=!ring; /取反音樂(lè)輸出 IOTL1=tl1_f;TH0=th1_f; /調(diào)入預(yù)定時(shí)值/* / 主函數(shù)/* void main()P10=1;lcd_ini();lcd_Reset();/* for(i=0;i=0x3a)sslcdtimer11=0x30;sslcdtimer10+=1;if(sslcdtimer10=0x3a)sslcdtimer10=0x30;sslcdtimer8+=1;if(sslcdtimer8=0x3a)sslcdtimer8=0x30;sslcdtimer7+=1;if(sslcdtimer7=0x36)sslcdtimer7=0x3

18、0;disp_lcd(0xc0,sslcdtimer);if(n=1)/ 秒表暫停disp_lcd(0xc0,sslcdtimer);if(n=2)/ 秒表清零disp_lcd(0xc0,tsslcdtimer);for(i=0;i=3) / 時(shí)鐘程序,只要不是調(diào)時(shí),就一直運(yùn)行IE=0x86;if(timeflag=1)timeflag=0;lcdtimer11+=1;if(lcdtimer11=0x3a)lcdtimer11=0x30;lcdtimer10+=1;if(lcdtimer10=0x36)lcdtimer10=0x30;lcdtimer8+=1;if(lcdtimer8=0x3a

19、)lcdtimer8=0x30;lcdtimer7+=1;if(lcdtimer7=0x36)lcdtimer7=0x30;lcdtimer5+=1;if(lcdtimer5=0x3a)lcdtimer4+=1;if(lcdtimer4=0x33&lcdtimer5=0x35)lcdtimer5=0x30;lcdtimer4=0x30;if(m=0)disp_lcd(0xc0,lcdtimer);if(!Key1)/ 關(guān)掉鬧鐘g=0;if(lcdtimer8=setlcdtimer8&lcdtimer7=setlcdtimer7&lcdtimer5=setlcdtimer5&lcdtimer4

20、=setlcdtimer4)f=1; /開(kāi)啟鬧鐘 ,播放音樂(lè)if(f&g)/*ring=1;delay(10000);ring=0;f=0; */IE=0x8e;j=song1i/10-1;/ 取k=2*(song1i%10-1);th1_f=freqjk;while(m=1)/調(diào)時(shí)分出對(duì)應(yīng)的定時(shí)值送給 T0tl1_f=freqj+k;TR1=1;for(n=0;n=0x3a)lcdtimer8=0x30;lcdtimer7+=1;if(lcdtimer7=0x36)lcdtimer7=0x30;disp_lcd(0xc0,lcdtimer);delay(8000);mlcdtimer11=l

21、cdtimer11;mlcdtimer4=lcdtimer4;mlcdtimer10=lcdtimer10;mlcdtimer5=lcdtimer5;disp_lcd(0xc0,mlcdtimer);while(m=2) / 調(diào)時(shí)時(shí)if(!Key1)delay(10000);lcdtimer5+=1;if(lcdtimer5=0x3a)lcdtimer5=0x30;lcdtimer4+=1;if(lcdtimer4=0x32&lcdtimer5=0x34)lcdtimer5=0x30;lcdtimer4=0x30;disp_lcd(0xc0,lcdtimer);delay(8000);hlcdtimer10=lcdtimer10;hlcdtimer8=lcdtimer8;hlcdtimer7=lcdtimer7;disp_lcd(0xc0,hlcdtimer);while(m=3)/ 顯示鬧鈴時(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論