實驗十一簡易電子鐘設計_第1頁
實驗十一簡易電子鐘設計_第2頁
實驗十一簡易電子鐘設計_第3頁
實驗十一簡易電子鐘設計_第4頁
實驗十一簡易電子鐘設計_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、電子科技大學中山學院學生實驗報告院別:電子信息學院 課程名稱:微處理器實驗 班級:12電信A 姓名: 學號: 實驗名稱:簡易電子鐘設計 實驗時間:2014 年12月8日成績: 教師簽名: 批改時間:1、 實驗原理與目的1、熟悉電子鐘的基本工作原理。2、掌握簡易電子鐘的硬件結(jié)構(gòu)及程序設計方法。電子鐘是人們?nèi)粘I钪胁豢苫蛉钡挠嫊r工具。與數(shù)字集成電路純硬件實現(xiàn)相比,采用單片機實現(xiàn)的電子鐘,在功能、體積、功耗、成本等方面更有優(yōu)勢。單片機實現(xiàn)電子鐘主要有兩種方案。一種是利用單片機內(nèi)部的定時/計數(shù)器產(chǎn)生標準秒信號,并根據(jù)時間系統(tǒng)的進位原則進行加1調(diào)整。另一種方法是為單片機配置一片可獨立走時的實時鐘(RT

2、C)芯片,單片機通過串行信號線與該芯片進行通信,讀取或設置其當前時間。第一種方案結(jié)構(gòu)簡單、成本低,精度可滿足多數(shù)場合的需要,因此,本設計采用第一種方案。圖3.11.1 簡易電子鐘電路ZSC-1實驗箱配置了簡易電子鐘所需的LCD1602液晶顯示器、蜂鳴器、按鍵等外設,具體電路如圖3.11.1所示。LCD1602用于電子鐘的時間顯示,其8位數(shù)據(jù)線連接單片機的P0口,使能端E和數(shù)據(jù)/命令寄存器選擇端RS分別連接到單片機的P4.5、P4.6,讀/寫選擇端RW固定接地,背光由單片機的P1.5控制,對比度通過VEE端所連10K電位器進行調(diào)節(jié)。按鍵KX0KX3分別連接到單片機的P3.2、P3.4、P3.5、

3、P3.7,可用于選擇電子鐘的模式、設置當前時間及鬧鈴等。蜂鳴器由單片機的P1.0控制,可在鬧鈴、整點或按鍵操作時發(fā)出提示聲。關于LCD1602液晶顯示器的結(jié)構(gòu)及控制方法,可參閱理論課教材第7.4節(jié)。二、實驗設備1、PC機一臺(已安裝Keil uVision、STC_ISP等軟件);2、ZSC-1單片機實驗箱一臺。三、實驗內(nèi)容與分析1、設計程序,實現(xiàn)電子鐘的走時功能,初始時間為12:00:00。 在Keil中編寫源程序。C語言參考程序如下(請將下劃線部分補充完整):/*頭文件聲明*#include #include /*特殊功能寄存器聲明*sfr P4SW = 0xBB; sfr P4 = 0x

4、C0; /*數(shù)據(jù)類型定義*typedef unsigned char uint8;typedef unsigned int uint16;typedef struct char Hour; char Minute; char Second; tsRTClock;/*口線聲明*#define LCD1602_DATA P0sbit LCD1602_RS=P46; sbit LCD1602_EN=P45; sbit LCD1602_BL=P15;/*全局變量聲明* tsRTClock RTClock;uint8 Timer50ms=0;/*函數(shù)原型聲明*void SystemInit();void

5、 LCD1602BLCtrl(uint8 OnOff);void LCD1602CmdWrite(uint8 cmdByte);void LCD1602DataWrite(uint8 DataByte);void LCD1602Init();void LCD1602ClrScr();void LCD1602DispChar(uint8 Row, uint8 Col, char Char);void LCD1602DispStr(uint8 Row, uint8 Col, char *Str);void RTClockInit();void RTClockAdj();void RTClockDi

6、sp();void Delay(uint16 ms);/*中斷服務函數(shù)*void T0ISR(void) interrupt 1 T0定時中斷對應優(yōu)先級1 TH0=(65536-45*1024)8; /設置50ms定時初值(對應晶振11.0592MHz) TL0=(65536-45*1024)&0xFF; if(+Timer50ms8; /設置50ms定時初值(對應晶振11.0592MHz) TL0=(65536-45*1024)&0xFF; TR0=1; /啟動T0 ET0=1; /允許T0中斷 EA=1; LCD1602BLCtrl(0); /背光點亮 LCD1602Init(); /LC

7、D1602初始化/*LCD1602背光控制函數(shù)*void LCD1602BLCtrl(uint8 OnOff) /0:背光點亮,1:背光熄滅 LCD1602_BL=OnOff ; /此處若填0,背光燈就會常亮,不妥 /*LCD1602寫命令函數(shù)*void LCD1602CmdWrite(uint8 cmdByte) uint16 i; for(i=100;i;i-); /適當延時(取代忙狀態(tài)檢測) LCD1602_RS= 0 ; LCD1602_EN=1; LCD1602_DATA=cmdByte; /發(fā)送命令字節(jié) LCD1602_EN=0;/*LCD1602寫數(shù)據(jù)函數(shù)*void LCD160

8、2DataWrite(uint8 DataByte) uint16 i; for(i=100;i;i-); /適當延時(取代忙狀態(tài)檢測) LCD1602_RS= 1; LCD1602_EN=1; LCD1602_DATA=DataByte; /發(fā)送數(shù)據(jù)字節(jié) LCD1602_EN=0;/*LCD1602初始化函數(shù)*void LCD1602Init() LCD1602_EN=0; LCD1602CmdWrite( 0x38 ); /8位總線方式,兩行顯示,5*7點陣 LCD1602CmdWrite(0x0C); /LCD顯示開,無光標 LCD1602CmdWrite(0x06); /寫入一個數(shù)據(jù)字

9、節(jié)后地址計數(shù)器自動加1/*LCD1602清屏函數(shù)*void LCD1602ClrScr() LCD1602CmdWrite(0x01); /發(fā)送清屏命令 Delay(8);/*LCD1602字符顯示函數(shù)*void LCD1602DispChar(uint8 Row, uint8 Col, char Char) if(Row) 此處Row表示,若Row=1(第二行)執(zhí)行下面程序, Col |= 0x40; /顯示第二行時DDRAM地址從40H開始 Col |= 0x80; /拼為DDRAM地址設置命令 LCD1602CmdWrite(Col); /發(fā)送DDRAM地址 LCD1602DataWri

10、te(Char); /發(fā)送ASCII碼/*LCD1602字符串顯示函數(shù)*void LCD1602DispStr(uint8 Row, uint8 Col, char *Str) if(Row) Col |= 0x40; /顯示第二行時DDRAM地址從40H開始 Col |= 0x80; /拼為DDRAM地址設置命令 LCD1602CmdWrite(Col); /發(fā)送DDRAM地址 while(*Str) /直到找到結(jié)束符。否則繼續(xù)發(fā)送ASCII碼 LCD1602DataWrite(*Str+); /連續(xù)發(fā)送每個字符的ASCII碼/*電子鐘初始化函數(shù)*void RTClockInit() RTC

11、lock.Hour=12; /默認從12:00:00開始走時 RTClock.Minute=0; RTClock.Second=0;/*電子鐘時間調(diào)整函數(shù)*void RTClockAdj() if(+RTClock.Second 60 ) return; RTClock.Second=0; if(+RTClock.Minute 60 ) return; RTClock.Minute=0; if(+RTClock.Hour 24 ) return; RTClock.Hour=0; /*電子鐘顯示更新函數(shù)*void RTClockDisp()若hour=10) LCD1602DispChar(1,

12、6,0x30+RTClock.Hour/10); /顯示Hour的十位 else LCD1602DispChar(1,6, ); /Hour的十位為0則隱去 LCD1602DispChar(1,7,0x30+RTClock.Hour%10); /顯示Hour的個位 LCD1602DispChar(1,8,:); 顯示數(shù)字的ASCII碼,上下同 LCD1602DispChar(1,9,0x30+RTClock.Minute/10); /顯示Minute的十位 LCD1602DispChar(1,10,0x30+RTClock.Minute%10); /顯示Minute的個位表示顯示的位置位第2行第13位,上下同 LCD1602DispChar(1,11,:); LCD1602DispChar(1,12,0x30+RTClock.Second/10); /顯示Second的十位 LCD1602DispChar

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論