C51單片機(jī)LCD電子時(shí)鐘課程設(shè)計(jì)精講_第1頁
C51單片機(jī)LCD電子時(shí)鐘課程設(shè)計(jì)精講_第2頁
C51單片機(jī)LCD電子時(shí)鐘課程設(shè)計(jì)精講_第3頁
C51單片機(jī)LCD電子時(shí)鐘課程設(shè)計(jì)精講_第4頁
C51單片機(jī)LCD電子時(shí)鐘課程設(shè)計(jì)精講_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上單片機(jī)原理課程設(shè)計(jì)報(bào)告題目:LCD時(shí)鐘設(shè)計(jì)班級:自動(dòng)111學(xué)號:1104010307姓名:紀(jì)尚峰成績: 指導(dǎo)教師: 蘇維均 北京工商大學(xué)信息工程學(xué)院20146一、設(shè)計(jì)任務(wù)要求分析本設(shè)計(jì)要實(shí)現(xiàn)的功能是:實(shí)時(shí)顯示當(dāng)前的時(shí)鐘,并且可以設(shè)定鬧鈴,以蜂鳴器鳴響5秒的方式作為鬧鈴。1.1設(shè)計(jì)總體方案及其方案論證 按照系統(tǒng)的設(shè)計(jì)功能所要求的,液晶顯示電子時(shí)鐘原理圖如圖所示。 液晶顯示電子時(shí)鐘原理圖 本系統(tǒng)以AT89C51單片機(jī)為核心,該單片機(jī)可把數(shù)據(jù)進(jìn)行處理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊LCD1602液晶顯示器,實(shí)現(xiàn)時(shí)間及日期的顯示。以LCD液晶顯示器為顯示模塊,把單片機(jī)傳來的數(shù)據(jù)顯示

2、出來,并且顯示多樣化,還可以對時(shí)間和日期進(jìn)行設(shè)置,主要靠按鍵來實(shí)現(xiàn)。三、組成電路介紹 1) 復(fù)位電路:復(fù)位電路復(fù)位電路有兩種方式:上電復(fù)位和按鈕復(fù)位,我們主要用按鈕復(fù)位方式。如圖所示:2) 晶振電路:晶振電路如圖所示:晶振模塊原理圖選取原則:電容選取22pF,晶振為12MHz。3) 電源:AT89S51單片機(jī)的供電電源是5V的直流電。4) EA非/Vpp腳:我們沒有用外部擴(kuò)展ROM,因此EA非/Vpp為高電平,即接+5V電源。3.2、鍵盤控制系統(tǒng)設(shè)計(jì):按鍵需要4個(gè),分別實(shí)現(xiàn)為時(shí)間調(diào)整、時(shí)間的加、時(shí)間的減、鬧鐘調(diào)整四個(gè)功能。用單片機(jī)的4個(gè)I/O口接收控制信號,其電路如圖所示:按鍵調(diào)時(shí)電路通過控制

3、鍵來控制所要調(diào)節(jié)的是時(shí)、分、還是秒。在控制鍵按下后LCD中會(huì)在相應(yīng)的位置出現(xiàn)光標(biāo),這時(shí)在通過加數(shù)鍵或減數(shù)鍵來控制時(shí)分秒的加或減。在調(diào)鬧鐘鍵按下后LCD中也會(huì)在相應(yīng)的位置出現(xiàn)光標(biāo),這時(shí)也通過加數(shù)鍵或減數(shù)鍵來設(shè)置鬧鐘。3.3、鬧鐘部分:鬧鐘部分主要由蜂鳴器,三極管,電阻組成。其電路圖如圖所示:鬧鐘電路當(dāng)單片機(jī)的P15接口輸出為高電平時(shí),蜂鳴器響,當(dāng)輸出為低電平時(shí),蜂鳴器停止。3.4顯示電路設(shè)計(jì)3.4.1 LCD1602簡介LCD1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點(diǎn)陣型液晶模塊,它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。

4、每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱?,所以他不能顯示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。 (1)LCD1602的主要技術(shù)參數(shù)顯示容量:16×2個(gè)字符;芯片工作電壓:4.55.5V;工作電流:2.0mA(5.0V);模塊最佳工作電壓:5.0V;字符尺寸:2.95×4

5、.35(W×H)mm。(2)LCD1602引腳功能說明 1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下: 第1腳:VSS為地電源; 第2腳:VDD接5V正電源; 第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對比度; 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器; 第5腳:R/W為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號

6、,當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù); 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令; 第714腳:D0D7,為8位雙向數(shù)據(jù)線; 第15腳:背光源正極; 第16腳:背光源負(fù)極。 1602液晶模塊的讀寫操作,屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。本顯示電路將單片機(jī)的P0口作為液晶的數(shù)據(jù)口,由于P0口沒有上拉電阻,所以需額外加一個(gè)排阻作為上拉電阻,利用P1口作為其讀寫控制端,具體電路如圖。 顯示電路 四、軟件設(shè)計(jì)軟件設(shè)計(jì)是本次設(shè)計(jì)中不可缺少的環(huán)節(jié),是本次設(shè)計(jì)能夠完成的最重要的環(huán)節(jié)之一。在完成了硬件電路的設(shè)計(jì)之后,依據(jù)系統(tǒng)設(shè)計(jì)要求和硬件電路開始系統(tǒng)軟件部分的設(shè)計(jì)。

7、本系統(tǒng)軟件設(shè)計(jì)包括:主程序、系統(tǒng)初始化子程序、延時(shí)中斷子程序、時(shí)間設(shè)置子程序。首先進(jìn)行模塊設(shè)計(jì),最后進(jìn)行各模塊的整合以完成整個(gè)軟件系統(tǒng)。4.1程序主流程圖 主流程圖4.2初始化流程圖系統(tǒng)初始化模塊的主要功能是完成系統(tǒng)的初始化以及設(shè)定系統(tǒng)的工作狀態(tài),初始化部分包括以下方面的內(nèi)容: (1)單片機(jī)定時(shí)器0初始化以及各種I/O口定義; (2)1602液晶初始化清屏及設(shè)定工作方式; (3)系統(tǒng)進(jìn)入正常工作狀態(tài)。初始化流程圖4.3延時(shí)中斷子程序延時(shí)中斷子程序4.4時(shí)間設(shè)置子程序這里僅畫出了秒設(shè)置流程圖,其他時(shí)間及日期設(shè)置類似。秒設(shè)置流程圖五、系統(tǒng)測試5.1 測試方法系統(tǒng)單片機(jī)代碼采用C語言編寫,prote

8、us進(jìn)行原理圖的設(shè)計(jì),keil軟件進(jìn)行代碼的編譯,通過keil與proteus軟件的充分利用,將編譯好的執(zhí)行代碼加載到原理圖中的單片機(jī)里面進(jìn)行原理圖仿真,通過仿真對系統(tǒng)的代碼程序和原理圖進(jìn)行測試,看是否達(dá)到系統(tǒng)的設(shè)計(jì)要求。5.2 測試結(jié)果(1) 通過按調(diào)時(shí)健、加減鍵的調(diào)節(jié),我們可以設(shè)定出具體的時(shí)間1:00:00,觀察LCD液晶屏如圖所示精確顯示出我們所設(shè)定的時(shí)間時(shí)間。 (2)通過按鍵調(diào)節(jié)調(diào)鬧鐘健,我們可以五秒聽到清晰的蜂鳴聲。5.3 結(jié)果分析通過對系統(tǒng)原理圖和程序的仿真與調(diào)試基本實(shí)現(xiàn)了系統(tǒng)的功能要求??梢酝ㄟ^按鍵(mode)來設(shè)定具體時(shí)間、鬧鐘。LCD液晶顯示屏能夠準(zhǔn)確而且清晰地顯示出時(shí)間。源

9、程序#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit beep=P15; /定義蜂鳴器的io口sbit rw=P21; /定義讀寫的io口sbit rs=P20;/定義接收與發(fā)送指令的io口sbit lcden=P22;/定義使能端的io口sbit k1=P30; /定義調(diào)時(shí)鍵的io口sbit k2=P31; /定義加數(shù)鍵的io口sbit k3=P32; /定義減數(shù)鍵的io口sbit k4=P33; /定義調(diào)鬧鐘鍵的io口uchar c

10、ount,count1,num,num1,num2;char h,min,sec,h1,min1,sec1;uchar table=" 23:59:57"uchar table1=" 00:00:00"void delay(uint ms)/延時(shí)程序 int i;while(ms-) for(i = 0; i< 250; i+) _nop_(); _nop_(); _nop_(); _nop_(); delay1(uchar z) /延時(shí)程序 uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-); re

11、turn 0;bit write_busy() /判斷是否為繁忙狀態(tài) bit result; rs = 0; rw = 1; lcden = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0x80); lcden= 0; return result; void write_com(uchar com) /寫指令函數(shù) while(write_busy(); rs=0; rw=0; lcden=0; P0=com; _nop_(); _nop_(); _nop_(); _nop_(); lcden=1; _nop_();

12、_nop_(); _nop_(); _nop_(); lcden=0;void write_data(uchar date) /寫數(shù)據(jù)函數(shù) while(write_busy(); rs=1; rw=0; lcden=0; P0=date; _nop_(); _nop_(); _nop_(); _nop_(); lcden=1; _nop_(); _nop_(); _nop_(); _nop_(); lcden=0;void write_pos(uchar pos) /設(shè)定地址write_com(pos | 0x80); /數(shù)據(jù)指針=80+地址變量void write_sfm(uchar add

13、,uchar date) /設(shè)定時(shí)分秒及其顯示與地址uint shi,ge; shi=date/10;ge=date%10;write_com(0x80+0x40+add); write_data(0x30+shi); write_data(0x30+ge);void write_sfm1(uchar add,uchar date) /設(shè)置鬧鐘時(shí)分秒及其顯示與地址uint shi,ge; shi=date/10;ge=date%10;write_com(0x80+add); write_data(0x30+shi); write_data(0x30+ge);void keyscan() /鍵盤

14、掃描 if(k1=0) delay1(5); if(k1=0) while(!k1); num+; if(num=1) TR0=0; write_com(0x80+0x40+11); write_com(0x0f); if(num=2) write_com(0x80+0x40+8); if(num=3) write_com(0x80+0x40+5); if(num=4) num=0; write_com(0x0c); TR0=1; if(num!=0) if(k2=0) delay1(5); if(k2=0) while(!k2) if(num=1) sec+; if(sec=60) sec=

15、0; write_sfm(10,sec); write_com(0x80+0x40+0x10); if(num=2)min+;if(min=60)min=0;write_sfm(7,min);write_com(0x80+0x40+8); if(num=3)h+;if(h=24)h=0;write_sfm(4,h);write_com(0x80+0x40+5); if(k3=0) delay1(5); if(k3=0) while(!k3); if(num=1) sec-; if(sec=-1) sec=59; write_sfm(10,sec); write_com(0x80+0x40+0x

16、10); if(num=2) min-; if(min=-1)min=59; write_sfm(7,min); write_com(0x80+0x40+8); if(num=3) h-; if(h=-1) h=23; write_sfm(4,h); write_com(0x80+0x40+5); if(k4=0) delay1(5); if(k4=0) while(!k4); num1+; if(num1=1) write_sfm1(10,sec1); write_sfm1(7,min1); write_sfm1(4,h1); if(num1=2) write_com(0x80+11); w

17、rite_com(0x0f); if(num1=3) write_com(0x80+8); if(num1=4) write_com(0x80+5); if(num1=5) num1=0; write_com(0x0c); write_sfm(10,sec); write_sfm(7,min); write_sfm(4,h); if(num1!=0) if(k2=0) delay1(5); if(k2=0) while(!k2) if(num1=2) sec1+; if(sec1=60) sec1=0; write_sfm1(10,sec1); write_com(0x80+0x10); if

18、(num1=3)min1+;if(min1=60)min1=0;write_sfm1(7,min1);write_com(0x80+8); if(num1=4)h1+;if(h1=24)h1=0;write_sfm1(4,h1);write_com(0x80+5); if(k3=0) delay1(5); if(k3=0) while(!k3); if(num1=2) sec1-; if(sec1=-1) sec1=59; write_sfm1(10,sec1); write_com(0x80+0x10); if(num1=3) min1-; if(min1=-1)min=59; write_

19、sfm1(7,min1); write_com(0x80+8); if(num1=4) h1-; if(h1=-1) h1=23; write_sfm1(4,h1); write_com(0x80+5); void init() /程序初始化函數(shù) uint i; h=23; min=59; sec=57; h1=00; min1=00; sec1=00; num=0; lcden=0; write_com(0x38); delay(1); write_com(0x0c); /顯示開,關(guān)光標(biāo) delay(1); write_com(0x06); /移動(dòng)光標(biāo) delay(1); write_com(0x01); /清除LC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論