




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、自動化工程訓(xùn)練設(shè)計題目 LCD時鐘程序設(shè)計 指導(dǎo)老師 設(shè)計者 專業(yè)班級 自動化級班號 設(shè)計日期 2016年9月目錄一、設(shè)計任務(wù)要求分析1二、組成電路介紹12.1 復(fù)位電路:12.2晶振電路:12.3鍵盤控制系統(tǒng)設(shè)計:22.4鬧鐘部分:32.5.1 LCD1602簡介3三 、軟件設(shè)計4四、系統(tǒng)測試74.1 測試方法74.2 測試結(jié)果74.3 結(jié)果分析8五、源程序8一、設(shè)計任務(wù)要求分析本設(shè)計要實現(xiàn)的功能是:實時顯示當(dāng)前的時鐘,并且可以設(shè)定鬧鈴,以蜂鳴器鳴響5秒的方式作為鬧鈴。設(shè)計總體方案及其方案論證 按照系統(tǒng)的設(shè)計功能所要求的,液晶顯示電子時鐘原理圖如圖所示。液晶顯示電子時鐘原理圖 本系統(tǒng)以AT8
2、9C51單片機為核心,該單片機可把數(shù)據(jù)進行處理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊LCD1602液晶顯示器,實現(xiàn)時間及日期的顯示。以LCD液晶顯示器為顯示模塊,把單片機傳來的數(shù)據(jù)顯示出來,并且顯示多樣化,還可以對時間和日期進行設(shè)置,主要靠按鍵來實現(xiàn)。二、 組成電路介紹 復(fù)位電路:復(fù)位電路復(fù)位電路有兩種方式:上電復(fù)位和按鈕復(fù)位,我們主要用按鈕復(fù)位方式。如圖所示:2.2晶振電路:晶振電路如圖所示:晶振模塊原理圖選取原則:電容選取22pF,晶振為12MHz。1) 電源:AT89S51單片機的供電電源是5V的直流電。2) EA非/Vpp腳:我們沒有用外部擴展ROM,因此EA非/Vpp為高電平,即接+5V電源。鍵
3、盤控制系統(tǒng)設(shè)計:按鍵需要4個,分別實現(xiàn)為時間調(diào)整、時間的加、時間的減、鬧鐘調(diào)整四個功能。用單片機的4個I/O口接收控制信號,其電路如圖所示:按鍵調(diào)時電路通過控制鍵來控制所要調(diào)節(jié)的是時、分、還是秒。在控制鍵按下后LCD中會在相應(yīng)的位置出現(xiàn)光標(biāo),這時在通過加數(shù)鍵或減數(shù)鍵來控制時分秒的加或減。在調(diào)鬧鐘鍵按下后LCD中也會在相應(yīng)的位置出現(xiàn)光標(biāo),這時也通過加數(shù)鍵或減數(shù)鍵來設(shè)置鬧鐘。鬧鐘部分:鬧鐘部分主要由蜂鳴器,三極管,電阻組成。其電路圖如圖所示:鬧鐘電路當(dāng)單片機的P15接口輸出為高電平時,蜂鳴器響,當(dāng)輸出為低電平時,蜂鳴器停止。顯示電路設(shè)計 LCD1602簡介LCD1602液晶也叫1602字符型液晶,
4、它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,它有若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔,每行之間也有也有間隔,起到了字符間距和行間距的作用,正因為如此,所以他不能顯示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。 (1)LCD1602的主要技術(shù)參數(shù)顯示容量:162個字符;
5、5.5V;工作電流:2.0mA(5.0V);模塊最佳工作電壓:5.0V;4.35(WH)mm。(2)LCD1602引腳功能說明1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下: 第1腳:VSS為地電源; 第2腳:VDD接5V正電源; 第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度; 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器; 第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入
6、指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù); 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令; 第714腳:D0D7,為8位雙向數(shù)據(jù)線; 第15腳:背光源正極; 第16腳:背光源負極。1602液晶模塊的讀寫操作,屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。本顯示電路將單片機的P0口作為液晶的數(shù)據(jù)口,由于P0口沒有上拉電阻,所以需額外加一個排阻作為上拉電阻,利用P1口作為其讀寫控制端,具體電路如圖。顯示電路 三 、軟件設(shè)計軟件設(shè)計是本次設(shè)計中不可缺少的環(huán)節(jié),是本次設(shè)計能夠完成的最重要的環(huán)節(jié)之一。在完成了硬件電路的設(shè)
7、計之后,依據(jù)系統(tǒng)設(shè)計要求和硬件電路開始系統(tǒng)軟件部分的設(shè)計。本系統(tǒng)軟件設(shè)計包括:主程序、系統(tǒng)初始化子程序、延時中斷子程序、時間設(shè)置子程序。首先進行模塊設(shè)計,最后進行各模塊的整合以完成整個軟件系統(tǒng)。程序主流程圖主流程圖3.2初始化流程圖系統(tǒng)初始化模塊的主要功能是完成系統(tǒng)的初始化以及設(shè)定系統(tǒng)的工作狀態(tài),初始化部分包括以下方面的內(nèi)容:(1)單片機定時器0初始化以及各種I/O口定義;(2)1602液晶初始化清屏及設(shè)定工作方式;(3)系統(tǒng)進入正常工作狀態(tài)。初始化流程圖延時中斷子程序延時中斷子程序3.4時間設(shè)置子程序這里僅畫出了秒設(shè)置流程圖,其他時間及日期設(shè)置類似。秒設(shè)置流程圖四、系統(tǒng)測試4.1測試方法系統(tǒng)
8、單片機代碼采用C語言編寫,proteus進行原理圖的設(shè)計,keil軟件進行代碼的編譯,通過keil與proteus軟件的充分利用,將編譯好的執(zhí)行代碼加載到原理圖中的單片機里面進行原理圖仿真,通過仿真對系統(tǒng)的代碼程序和原理圖進行測試,看是否達到系統(tǒng)的設(shè)計要求。4.2測試結(jié)果(1) 通過按調(diào)時健、加減鍵的調(diào)節(jié),我們可以設(shè)定出具體的時間1:00:00,觀察LCD液晶屏如圖所示精確顯示出我們所設(shè)定的時間時間。 (2)通過按鍵調(diào)節(jié)調(diào)鬧鐘健,我們可以五秒聽到清晰的蜂鳴聲。 結(jié)果分析通過對系統(tǒng)原理圖和程序的仿真與調(diào)試基本實現(xiàn)了系統(tǒng)的功能要求。可以通過按鍵(mode)來設(shè)定具體時間、鬧鐘。LCD液晶顯示屏能夠
9、準(zhǔn)確而且清晰地顯示出時間。五、源程序#include#include#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)時鍵的io口sbit k2=P31; /定義加數(shù)鍵的io口sbit k3=P32; /定義減數(shù)鍵的io口sbit k4=P33; /定義調(diào)鬧鐘鍵的io口uchar count,count1,num,
10、num1,num2;char h,min,sec,h1,min1,sec1;uchar table= 23:59:57;uchar table1= 00:00:00;void delay(uint ms)/延時程序 int i;while(ms-) for(i = 0; i0;x-) for(y=110;y0;y-); return 0;bit write_busy() /判斷是否為繁忙狀態(tài) bit result; rs = 0; rw = 1; lcden = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0x80); lc
11、den= 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_(); _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_(); _no
12、p_(); _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,uchar date) /設(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_
13、sfm1(uchar add,uchar date) /設(shè)置鬧鐘時分秒及其顯示與地址uint shi,ge; shi=date/10;ge=date%10;write_com(0x80+add); write_data(0x30+shi); write_data(0x30+ge);void keyscan() /鍵盤掃描 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)
14、; 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=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
15、=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+0x10); 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+
16、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); write_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(
17、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(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
18、) 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_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); /移動光標(biāo) delay(1);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年應(yīng)急管理與安全科學(xué)考試試題及答案
- 2025年社會福利與社會保障考試試卷及答案
- 2025年提升職場能力的綜合素質(zhì)考試試卷及答案
- 2025年商法與合同法的基礎(chǔ)知識能力測試卷及答案
- 2025年企業(yè)財務(wù)分析師職業(yè)能力測試題及答案
- 2025年計算機程序設(shè)計基礎(chǔ)考試題及答案
- 2025年法醫(yī)學(xué)與犯罪學(xué)相關(guān)知識測試題及答案
- 2025年甘肅省天水市投資發(fā)展(集團)有限公司招聘筆試參考題庫及參考答案詳解一套
- 2025年甘肅省特崗教師招聘2261人筆試參考題庫及答案詳解一套
- 特殊場所疫情管理制度
- 中國機長課件教學(xué)課件
- AEO商業(yè)伙伴安全管理制度
- 2025年中考道德與法治一輪復(fù)習(xí):必背重難點知識點提綱
- 中醫(yī)兒科學(xué)全版
- 口服抗凝藥居家管理中國專家共識(2024版)
- 7.1 多面體-中職數(shù)學(xué)教學(xué)設(shè)計(高教版2021基礎(chǔ)模塊 下冊)
- 會計法課件完整版本
- 高中化學(xué)作業(yè)優(yōu)化的研究
- 支票打印模板-電子表格版-
- 消費趨勢與乳制品創(chuàng)新
- 身份證知識課件
評論
0/150
提交評論