版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機原理與應丿課程名稱:單片機原理與應用設計題目:LCD電子鐘電子信息工程學院 自動化0706 全宏宇指導教師:,設計目標LCD顯示電子鐘的基本功能1,實現(xiàn)時鐘功能;2,實現(xiàn)鬧鈴功能;3,實現(xiàn)秒表功能;4,具有一定的計時精度。LCD顯示電子鐘的基本要求1,掌握單片機幵發(fā)編程設計的基本流程;2,了解Keil及Proteus軟件的基本使用;3,了解LCD的基本使用;4,學習單片機硬件制作。,具體實現(xiàn)1,軟件平臺1) Keil編程Keil的幵發(fā)工具的使用的基本過程:0創(chuàng)建C或匯編語言的源程序;編譯或匯編源文件;03 糾正源文件中的錯誤;04 從編譯器和匯編器連接目標文件;05 測試連接的應用程序。
2、2)Proteus 仿真Proteus 軟件不僅具有其它 EDA 工具軟件的仿真功能,還能仿真單片機及 外圍器件。它是目前最好的仿真單片機及外圍器件的工具。在編譯方面,它 也支持 IAR ,Keil , PLAB 等多種編譯器。2,硬件開發(fā)平臺JD51幵發(fā)板的基本資料01 LED 電路,8 只獨立 LED 發(fā)光管,可做指示或各種閃爍效果用。02 數(shù)碼管電路, 4 只共陽一體 8 段數(shù)碼顯示管, 可實現(xiàn)各種數(shù)據(jù)顯示, 如計數(shù)、 時鐘等。03 蜂鳴器電路,可用于設計各種提示音、演奏音樂等。04 鍵盤電路,學習按鍵控制相關編程。05 LCD 顯示電路,編程控制 LCD 顯示。06 串口電路, 學習編
3、程實現(xiàn) JD51 和 PC 或其他符合該通信協(xié)議的電路之間的通 信。JD51。07 紅外電路,通過選配的紅外遙控器,學習紅外解碼并可實現(xiàn)紅外遙控08 溫度模塊電路, 采用一線式溫度傳感器實現(xiàn)溫度的采集并可顯示在數(shù)碼管或 者 LCD 上,通過溫度數(shù)據(jù)處理便可實現(xiàn)溫度控制器功能。09 除了以上提到的可編程電路本學習板還有一些常用的不可編程電路,包括電源電路、復位電路、晶振電路等。本次LCD電子鐘實驗用到其中的蜂鳴器,按鍵,LCD顯示接口。3,總體設計1) 基本資源的使用本次實驗采用了 8 9C52型單片機,1 6 0 2 LCD液晶顯示屏, 蜂鳴器。為了實現(xiàn)時鐘,定時,鬧鐘,秒表的功能,用到了單片
4、機的外部中斷,計時器中斷,及I/O端口.資源功能外部中斷外部中斷INT1模式選擇(時鐘,調時,秒表,鬧鐘)外部中斷INTO秒表的暫停,清零定時器定時器TO秒表,時鐘定時基準定時器T1音樂鬧鈴的音符產(chǎn)生I/O 端口P1,P2LCD接口,蜂鳴器2)軟件仿真(1)程序設計的一些關鍵問題(具體參照后面的程序清單)建立Keil工程時,注意對程序編譯環(huán)境進行設置;設置內容包括器件,頻率,產(chǎn)生hex文件等。LCD管腳及控制字;LCD管腳的定義控制字1602液晶模塊的讀寫操作,屏幕和光標的操作都是通過指令編程來實現(xiàn)的。指令1:清顯示,指令碼01H,光標復位到地址00H位置 指令 2:光標復位,光標返回到地址
5、00H指令 3:光標和顯示位置設置 I/D ,光標移動方向,高電平右移,低電平左移,S:屏幕上所有文字是否左移或右移,高電平表示有效,低電平表示無效。指令4:顯示幵關控制。D:控制整體的顯示幵與關,高電平表示幵顯示,低電 平表示關顯示。 C: 控制光標的開與關, 高電平表示有光標, 低電平表示無光標 B : 控制光標是否閃爍,高電平閃爍,低電平不閃爍。指令 5:光標或顯示移位 S/C :高電平時顯示移動的文字,低電平時移動光標 指令6:功能設置命令DL :高電平時為4位總線,低電平時為8位總線N :低電平時為單行顯示,高電平時為雙行顯示,F(xiàn):低電平時顯示5X7的點陣字符,高電平時顯示5X10的
6、顯示字符。指令7:字符發(fā)生器RAM地址設置。指令8: DDRAM地址設置。指令9:讀忙信號和光標地址 BF :忙標志位,高電平表示忙,此時模塊不能接 收命令或數(shù)據(jù),如果為低電平表示不忙。LCD實現(xiàn)滾動顯示;方法一:采用LCD 1 6 0 2控制命令,顯示后畫面移動一個字符;方法二:循環(huán)使用顯示不同位置,形成滾動效果。5 秒表 主要是產(chǎn)生計時基準0 . 01秒, 有了基準之后需要解決的問題是如何實現(xiàn)有效 的暫停,清零(達到精準動作) ,采用中斷是很不錯的結果。6 鬧鈴主要是如何實現(xiàn)鬧鈴關閉的邏輯, if(f&g) 語句可以實現(xiàn)這一動作。提高計時精度本程序除了調時模式外,其他模式的時候時鐘都在跑動
7、,提高了因模式轉換而 導致的時間精度降低。2) Proteus 仿真在Proteus中畫出如下電路圖,添加hex文件,進行虛擬仿真。2) 開發(fā)板運行調試在JD5 1板上燒制程序,根據(jù)實際的效果,對中斷的反應時間,顯示效果做出了調整,整體效果不錯,只是音樂的效果不佳,主要是由于如果將蜂鳴器換 成揚聲器效果會好些,還可以在程序中增加節(jié)拍來增加音樂效果。4,硬件制作根據(jù)仿真電路圖購買元件進行焊接,下載程序效果后,液晶顯示器顯示亂碼,檢查電路后已無連接錯誤,但功能依然沒有實現(xiàn),相關檢查在進行中。本次課程設計系統(tǒng)地學習了單片編程幵發(fā)及實際電路的制作。學習了Ke 的C語言編程的基本知識,Proteus仿真
8、軟件的模擬仿真,JD51幵發(fā)實驗板的 使用,本次課設,時間了較多的其他案例,比較全面的掌握了單片機的運營,包 括編程,電路,LCD器件等,在知識上有了很多的長進。本次課程設計還有很多其他收獲,鍛煉了自學的能力,特別是動手實踐方面的 東西,讓我深深感受到理論與實際的差距,實際當中會有一些小的問題,這些問 題是意想不到的,需要去思考,去解決,這是很鍛煉人的。四,程序#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; /測試用閃燈sbit Key二
11、P 3八2;/秒表暫停,清零sbit KeyO=卩3八3;/調時,設定鬧鐘時間,秒表選擇sbit Key1=卩3八4;/調時,設定鬧鐘時間改變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,; / 音樂頻率表,低音,中音,高音,系統(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;/ 編制音樂/* /軟件延時函數(shù)(系統(tǒng)晶振為 11.0592MHz),延時時間約為40 口 s/入口條件:無符號整型變量del1,最終的延時時間為(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;/* / 向液晶顯示器寫命令函數(shù)/* voi
14、d WR_Com(uchar temp)busy();rs=0;rw=0;P0=temp;e=1;e=0;/*/ 向液晶顯示器寫數(shù)據(jù)函數(shù)/* void WR_Data(uchar num)busy();rs=1;rw=0;P0=num;e=1;e=0;/* / 向液晶顯示器寫入顯示數(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);/* / 液晶顯示器復位函數(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ù)器中斷函數(shù), 1S 及 0.01S /* void timer0() interrupt 1 using 2TH0=0xdc;TL0=0x23;sstimeflag=1;if(-timecount=0)timecount=100;timeflag=1;/* / 定時/ 計數(shù)器中斷函數(shù),裝入音樂頻率計數(shù)初值/* void timer1() interrupt 3
17、using 3ring=!ring; /取反音樂輸出 IOTL1=tl1_f;TH0=th1_f; /調入預定時值/* / 主函數(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) / 時鐘程序,只要不是調時,就一直運行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)/ 關掉鬧鐘g=0;if(lcdtimer8=setlcdtimer8&lcdtimer7=setlcdtimer7&lcdtimer5=setlcdtimer5&lcdtimer4
20、=setlcdtimer4)f=1; /開啟鬧鐘 ,播放音樂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)/調時分出對應的定時值送給 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) / 調時時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)/ 顯示鬧鈴時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024廣州建筑裝飾工程施工合同
- 2024至2030年緞面人絲布項目投資價值分析報告
- 2024至2030年模糊PID自整定控制儀項目投資價值分析報告
- 2024個人房屋租賃合同簡易模板
- 2024年氣動拔蓋機項目可行性研究報告
- 2024勞動合同甘肅勞動合同
- 2024年1L塑料桶項目可行性研究報告
- 2024至2030年中國聚氨酯復合鋼管三通數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國筆記本電腦移動軟驅數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國柔性石墨金屬纏繞式密封件數(shù)據(jù)監(jiān)測研究報告
- 食堂承包策劃方案
- 繪制進度計劃橫道圖
- 圓的周長與面積 (奧數(shù))
- 滬教版九年級化學上冊單元測試題及答案全套
- 常州高級中學2022-2023學年高一上學期期中質量檢查物理試題(解析版)
- 簡愛英文版課件
- 結腸炎癥與潰瘍性結腸炎的關系研究
- 口腔種植護士管理制度
- 職業(yè)道德與商業(yè)道德培訓
- 學科教研基地匯報材料
- 物聯(lián)網(wǎng)人工智能融合應用
評論
0/150
提交評論