




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
年4月19日單片機課程設計LCD顯示萬年歷EPROM存儲文檔僅供參考,不當之處,請聯(lián)系改正。單片機課程設計報告題目: 基于單片機的LCM1602液晶控制——萬年歷顯示設計所在系部:信息與電氣工程所在專業(yè):通信本所在班級:1001姓名:曹懷寶學號:3615276指導教師:陳勇完成時間:7月3日基于單片機的LCM1602液晶控制——萬年歷顯示設計1.設計目的該設計是基于AT89C52單片機的電子萬年歷系統(tǒng),采用LCD1602液晶屏實現(xiàn)顯示。顯示年月日星期溫度等,雙行顯示,。顯示年、月、日、星期、時間,可設置,設置功能。綜上所述此時鐘具有讀取方便、顯示直觀、功能多樣、電路簡潔、等優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。 2.設計原理及相關說明設計原理:利用DS1302讀取系統(tǒng)中的日期以及時間信息,并分別利用P1.1端口和P3.3端口將相關信息傳送至STC12C5A60S2主芯片之中,利用P0端口使之顯示于LCD1602液晶顯示屏上,四個按鍵分別置于P1口的5、6、7端口能夠?qū)r間進行控制修改。詳細請參閱第三節(jié)的芯片介紹。2.2總體設計框圖日歷時鐘系統(tǒng)設計框圖如圖1所示:DS1302DS1302At89C52鍵掃描電路LCD1602DS18B20蜂鳴器圖1電子萬年歷系統(tǒng)設計框圖3各芯片的設計及其調(diào)用3.1STC12C5A60S2單片機主控模塊STC12C5A60S2簡介STC12C5A60S2是STC生產(chǎn)的單時鐘/機器周期(1T)的單片機,是高速、低功耗、超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換增強型8051CPU,1T(1024G),單時鐘機器周期工作電壓5.5-3.5V3、1280字節(jié)RAM4、通用I/O口,復位后為:準雙向口/弱上拉可設置成四種模式:準雙向口/弱上拉,強推挽/強上拉,僅為輸入/高阻,開漏每個I/O口驅(qū)動能力均可達到20mA,但整個芯片最大不要超過120mA有EEPROM功能6、看門狗7、內(nèi)部集成MAX810專用復位電路8、外部掉電檢測電路9、時鐘源:外部高精度晶體/時鐘,內(nèi)部R/C振蕩器常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機為:11~17MHz3.3V單片機為:8~12MHz針對電機控制,強干擾場合。對應電路圖中的單片機的周圍電路,圖為89C51用protus軟件的仿真圖使用的是89c513.2LCD1602液晶顯示模塊液晶顯示模塊3.2.1引腳及接口說明1602采用標準的16腳接口,其中:第1腳:VSS為電源地第2腳:VDD接5V電源正極第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產(chǎn)生“鬼影”,使用時能夠經(jīng)過一個10K的電位器調(diào)整對比度)。第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。第6腳:E(或EN)端為使能(enable)端。第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。2LCD1602特性+5V電壓,對比度可調(diào)內(nèi)含復位電路提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM內(nèi)建有192個5X7點陣的字型的字符發(fā)生器CGROM8個可由用戶自定義的5X7的字符發(fā)生器CGRAM3.2.2LCD1602模塊內(nèi)部結(jié)構(gòu)LCM1602內(nèi)部主要寄存器有:輸入/輸出緩沖器,指令寄存器(InstuctionRegister,即IR),指令譯碼器,數(shù)據(jù)寄存器(DataRegister,即DR),地址計數(shù)器(AddressCounter,即AC),忙標識(BusyFlag,即BF)以及顯示數(shù)據(jù)存儲器(DisplayDataRAM,即DDRAM),字符發(fā)生器(CharacterGenerateROM,即CGROM)。其各個單元的功能作用如下:輸入/輸出緩沖器,用于緩存輸入/輸出的數(shù)據(jù)與控制信號。指令寄存器(IR),為八位寄存器。用于存放LCD指令、DDRAM或CGROM地址。數(shù)據(jù)輸入流程:數(shù)據(jù)存入DR,然后將該數(shù)據(jù)地址與指令存入IR,最后將該數(shù)據(jù)輸入到DDRAM或CGROM。讀取數(shù)據(jù)流程:將該數(shù)據(jù)地址與指令存入IR,DR取得該地址數(shù)據(jù)。指令譯碼器,將IR里的指令進行譯碼,以獲取DDRAM或CGROM地址。數(shù)據(jù)寄存器(DR),連接LCM內(nèi)部數(shù)據(jù)總線以及緩存DDRAM或CGROM的存取數(shù)據(jù)。當CPU讀取DR內(nèi)容后,DR能自動加載下一個地址的內(nèi)容。地址計數(shù)器(AC),連接LCM內(nèi)部數(shù)據(jù)總線以及緩存DDRAM或CGROM的存取數(shù)據(jù)地址。當存取DDRAM或CGROM的數(shù)據(jù)地址,AC能自動加載下一個存儲地址。忙標識(BF),表示LCM的當前狀態(tài)。若BF=1,則表示LCM處于忙綠狀態(tài),無法接收外部數(shù)據(jù)或指令。顯示數(shù)據(jù)存儲器(DDRAM),存儲所要顯示數(shù)據(jù)的ASCII碼,根據(jù)該ASCII碼地址,即可到CGROM里找到該字符的顯示編碼。字符發(fā)生器(CGROM),是一個只讀存儲器,預制所有數(shù)據(jù)的ASCII碼。其存儲的編碼表如下(表3-5): 另外,還有自定義字符發(fā)生器,串行/并行數(shù)據(jù)轉(zhuǎn)換器,光標閃爍控制電路,時序產(chǎn)生電路,偏壓產(chǎn)生電路,共同端驅(qū)動電路以及段驅(qū)動電路等。3.5蜂鳴器本設計采用的是無源蜂鳴器如下圖:圖13無源蜂鳴器3.6鍵盤接口鍵盤接口電路如圖,本次設計中,按鍵有3個,每個按鍵各占用一根I/O線,各按鍵相互獨立,彼此的工作狀態(tài)互不影響,用查詢法完成按鍵功能。圖1鍵盤接口電路5EPROMEPROM是一種具有可擦除功能,擦除后即可進行再編程的ROM內(nèi)存,寫入前必須先把里面的內(nèi)容用紫外線照射它的IC卡上的透明視窗的方式來清除掉。這一類芯片比較容易識別,其封裝中包含有“石英玻璃窗”,一個編程后的EPROM芯片的“石英玻璃窗”一般使用黑色不干膠紙蓋住,以防止遭到陽光直射。EPROM芯片可重復擦除和寫入,解決了PROM芯片只能寫入一次的弊端。EPROM芯片有一個很明顯的特征,在其正面的陶瓷封裝上,開有一個玻璃窗口,透過該窗口,能夠看到其內(nèi)部的集成電路,紫外線透過該孔照射內(nèi)部芯片就能夠擦除其內(nèi)的數(shù)據(jù),完成芯片擦除的操作要用到EPROM擦除器。EPROM內(nèi)資料的寫入要用專用的編程器,而且往芯片中寫內(nèi)容時必須要加一定的編程電壓(VPP=12—24V,隨不同的芯片型號而定)。EPROM的型號是以27開頭的,如27C020(8*256K)是一片2MBits容量的EPROM芯片。EPROM芯片在寫入資料后,還要以不透光的貼紙或膠布把窗口封住,以免受到周圍的紫外線照射而使資料受損。EPROM芯片在空白狀態(tài)時(用紫外光線擦除后),內(nèi)部的每一個存儲單元的數(shù)據(jù)都為1(高電平)。4.系統(tǒng)軟件設計4.1時間程序使用中斷并定時器T0的方式1,時分秒計數(shù),采用24的時鐘表示法,時計滿23則回0,分秒計滿59則回0,鍵盤輸入可調(diào),為4*4對地獨立鍵盤中的某三個鍵,其中一個為功能鍵,用于調(diào)整時分秒,另外兩個鍵用于調(diào)節(jié)數(shù)字使之上調(diào)和下調(diào),其中日期可顯示初始化程序,不可調(diào),另外能夠顯示星期。初始化時,只需經(jīng)過P1口中的低兩位讀取5.調(diào)試5.1調(diào)試步驟調(diào)試分為硬件調(diào)試和軟件調(diào)試。硬件調(diào)試主要是檢查硬件電路是否有短路、斷路和虛焊等,首先接上電源,電源的指示燈亮了之后,檢測一下單片機的電源腳有沒有電源輸入,如果有這說明焊接無誤,然后能夠用萬用表檢查各個元器件的管腳之間的焊接,檢查過程中需要細心和耐心。硬件調(diào)試無誤后,進行軟件調(diào)試。5.2性能分析將程序燒入單片機后,在proteus軟件中進行仿真。。經(jīng)過測試制作完成后的電子萬年歷,只有部分功能實現(xiàn),它能顯示年、月、日等,但顯示不穩(wěn)定,設計中硬件或軟件有待修正。6.心得首先拿到板子,依據(jù)電路圖和板子,畫電路圖,并生成PCB圖。然后將板子焊接,注意焊接的方法,避免虛焊和過度焊接。在對芯片的管腳功能和用法有充分的了解后,根據(jù)設計要求設計硬件電路,包括單片機控制電路、存儲電路、鍵盤掃描電路、顯示電路。然后經(jīng)過軟件編程,實現(xiàn)了對年、月、日、時、分、秒、星期的自動調(diào)整,用按鍵進行控制,用液晶模塊進行顯示。用PROTUS仿真實現(xiàn)相關的軟件仿真,芯片采用最普遍的89C51,用KEIL軟件編寫程序,編寫程序前,能夠先查閱網(wǎng)上的相關資料,比如LCD芯片的原理圖,有關能夠借鑒的程序等。自己編寫,然后生成hex文件,仿真實現(xiàn)。用焊接好的板子,將文件燒錄進去,調(diào)試,查錯??赡軙霈F(xiàn)LCD屏幕不顯示,或者出現(xiàn)一行黑一行白的現(xiàn)象,可能是插反了,或者驅(qū)動程序有問題,這時候需要根據(jù)實際的板子的需要,調(diào)整延遲時間,等等。調(diào)試成功。電子萬年歷能夠正常顯示時間并進行時間調(diào)整,基本完成了預期要實現(xiàn)的目標。附錄1系統(tǒng)電路原理圖SCH文件——選擇自上而下的文件畫法,可能有些器件的擺放有點亂單片機級復位電路數(shù)碼管和4*4矩陣ISP和電源接口LED燈蜂鳴器和lcd屏頂層文件附錄2,PCB圖附錄四:PCB3D圖附錄3實物圖附錄4系統(tǒng)程序清單/*******************************************************************************************#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#include"24c02.h"/***********LCM1602IO口位定義***********/sbitRS=P2^2;sbitRW=P2^1;sbitEN=P2^0;/*************獨立控制按鍵位定義*****************************************************/sbitkey1=P1^5;//功能sbitkey2=P1^6;//加sbitkey3=P1^7;//減/*************蜂鳴器IO口定義*****************************************************/sbitSpeaker=P2^6;//接蜂鳴器接口sbitRedLed=P2^7;ucharkey1n,count;uinthour,minute,second;ucharcodetab[]="-7-2THU";//定義初始上電時液晶默認顯示狀態(tài)/*************延時子函數(shù),延時z毫秒*****************************************************/voiddelay(uintz){ uinti,j; for(i=0;i<z;i++) for(j=0;j<110;j++);}voiddi(){ Speaker=0; delay(400); Speaker=1; }/////////////////////////////////////////////////////////*******************LCD1602有關子函數(shù)******************/////////////////////////////////////////////////////////*************函數(shù)功能:LCD1602寫命令函數(shù)入口參數(shù):com出口參數(shù):*****************************************************/voidwrite_com(ucharcom){ RS=0; RW=0; EN=0; P0=com; delay(5); EN=1; delay(5); EN=0;}/*************函數(shù)功能:LCD1602寫數(shù)據(jù)函數(shù)入口參數(shù):dat出口參數(shù):*****************************************************/voidwrite_data(uchardat){ RS=1; RW=0; EN=0; P0=dat; delay(5); EN=1; delay(5); EN=0;}/*************函數(shù)功能:時分秒顯示函數(shù)入口參數(shù):出口參數(shù):*****************************************************/voidDisplayTime(ucharadd,uchardat){ uinti,j; i=dat/10; j=dat%10; write_com(0x80+0x40+add); write_data(0x30+i); write_data(0x30+j); }/*************函數(shù)功能:LCM1602初始化入口參數(shù):出口參數(shù):*****************************************************/voidinit_LCD1602(){ uchari; EN=0; minute=0; hour=0; second=0; key1n=0; count=0; init_24c02(); write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80);//日歷顯示固定符號從第一行第1個位置之后開始顯示 for(i=0;i<15;i++) { write_data(tab[i]);//向液晶屏寫日歷顯示的固定符號部分 delay(5); } write_com(0x80+0x40+6);//寫出時間顯示部分的兩個冒號 write_data(':'); delay(5); write_com(0x80+0x40+9); write_data(':'); delay(5); second=read_add(1);//首次上電從AT24C02中讀取出存儲的數(shù)據(jù) minute=read_add(2); hour=read_add(3); DisplayTime(10,second);//分別送去液晶顯示 DisplayTime(7,minute); DisplayTime(4,hour); TMOD=0x01;//設置定時器0工作模式1 TH0=(65536-50000)/256;//定時器裝初值 TL0=(65536-50000)%256; EA=1; //開總中斷 ET0=1; //開定時器0中斷 TR0=1; //啟動定時器0}//////////////////////////////////////////////////////////////////**************按鍵掃描4*4獨立對地矩陣**************************///////////////////////////////////////////////////////////////////*************函數(shù)功能:獨立對地鍵盤掃描入口參數(shù):出口參數(shù):;*****************************************************/voidKeyScan(){ if(key1==0) { delay(5); if(key1==0)//第一次被按下時 { key1n++; while(!key1); di(); RedLed=0; di(); RedLed=1; if(key1n==1)//第一次被按下時 { TR0=0;//關閉定時器 write_com(0x80+0x40+10);//光標定位到秒位置 write_com(0x0f);//光標開始閃爍 } if(key1n==2)//第二次按下光標閃爍定位到分鐘位置 { write_com(0x80+0x40+7); } if(key1n==3)//第三次按下光標閃爍定位到小時位置 { write_com(0x80+0x40+4); } if(key1n==4)//第四次按下 { key1n=0;//記錄按鍵數(shù)清零 write_com(0x0c);//取消光標閃爍 TR0=1; //啟動定時器使時鐘開始走 } } } if(key1n!=0)//只有功能鍵被按下后,增加和減小鍵才有效 { if(key2==0) { delay(5); if(key2==0)//增加鍵確認被按下 { while(!key2);//按鍵釋放 di();//每當有按鍵釋放蜂鳴器發(fā)出滴聲 RedLed=0; delay(10); RedLed=1; if(key1n==1)//若功能鍵第一次按下 { second++;//則調(diào)整秒加1 if(second==60)//若滿60后將清零 second=0; DisplayTime(10,second);//每調(diào)節(jié)一次送液晶顯示一下 write_com(0x80+0x40+10);//顯示位置重新回到調(diào)節(jié)處 write_add(1,second); //數(shù)據(jù)改變立即存入24C02 } if(key1n==2)//若功能鍵第二次按下 { minute++;//則調(diào)整分鐘加1 if(minute==60)//若滿60后將清零 minute=0; DisplayTime(7,minute);//每調(diào)節(jié)一次送液晶顯示一下 write_com(0x80+0x40+7);//顯示位置重新回到調(diào)節(jié)處 write_add(2,minute);//數(shù)據(jù)改變立即存入24C02 } if(key1n==3)//若功能鍵第三次按下 { hour++;//則調(diào)整小時加1 if(hour==24)//若滿24后將清零 hour=0; DisplayTime(4,hour);;//每調(diào)節(jié)一次送液晶顯示一下 write_com(0x80+0x40+4);//顯示位置重新回到調(diào)節(jié)處 write_add(3,hour);//數(shù)據(jù)改變立即存入24C02 } } } if(key3==0) { delay(5); if(key3==0)//確認減小鍵被按下 { while(!key3);//按鍵釋放 di();//每當有按鍵釋放蜂鳴器發(fā)出滴聲 RedLed=0; delay(10); RedLed=1; if(key1n==1)//若功能鍵第一次按下 { second--;//則調(diào)整秒減1 if(second==-1)//若減到負數(shù)則將其重新設置為59 second=59; DisplayTime(10,second);//每調(diào)節(jié)一次送液晶顯示一下 write_com(0x80+0x40+10);//顯示位置重新回到調(diào)節(jié)處 write_add(1,second);//數(shù)據(jù)改變立即存入24C02 } if(key1n==2)//若功能鍵第二次按下 { minute--;//則調(diào)整分鐘減1 if(minute==-1)//若減到負數(shù)則將其重新設置為59 minute=59; DisplayTime(7,minute);//每調(diào)節(jié)一次送液晶顯示一下 write_com(0x80+0x40+7);//顯示位置重新回到調(diào)節(jié)處 write_add(2,minute);//數(shù)據(jù)改變立即存入24C02 } if(key1n==3)//若功能鍵第二次按下 { hour--;//則調(diào)整小時減1 if(hour==-1)//若減到負數(shù)則將其重新設置為23 hour=23;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住房公積金借貸合同范本
- 孵化器企業(yè)入駐合同范本
- 單位攝影勞務合同范例
- 合同詐騙合同范本
- 十五房子買賣合同范本
- 合同范本環(huán)氧樹脂地坪
- 產(chǎn)品獨家運營合同范本
- 廠房樓房出售合同范本
- 同城肥豬出售合同范本
- 制作門窗就合同范本
- 代工生產(chǎn)合同范本
- 人教版英語2025七年級下冊 Unit1Animal Friends教師版 語法講解+練習
- DeepSeek新手入門教程
- 課件:《教育強國建設規(guī)劃綱要(2024-2035年)》學習宣講
- 2025年上海市商品交易市場進場經(jīng)營合同(2篇)
- 2025年全國幼兒園教師資格證考試教育理論知識押題試題庫及答案(共九套)
- 2024年鄭州電力高等??茖W校高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 產(chǎn)品試產(chǎn)流程
- 2024年外貿(mào)業(yè)務員個人年度工作總結(jié)
- 關愛留守兒童培訓
- DB2301-T 108-2022 地下管線探測技術規(guī)程
評論
0/150
提交評論