




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
題目設計要求開發平臺簡介系統硬件設計設計原理器件的功能與作用單片機復位電路塊引腳功能及結構數據輸入輸出液晶顯示系統軟件設計程序流程程序代碼系統仿真調試仿真原理圖設計仿真運行過程仿真運行結果參考文獻題目設計要求通過串行日歷時鐘芯片生成當前日期和是時間,通過口傳輸到芯片中,然后再將接收到的數據輸出到上。要求上顯示的日期和時間與當前系統時間保持一開發平臺簡介軟件是由英國史,在全球得到了廣泛應用。軟件的功能強大,它集電路設計、制版及仿真等多種功能于一身,不僅能夠對電工、電子技術學科涉及的電路進行設計,還能夠對微處理器進行設計和仿真,并且功能齊全,界面多彩。和我們手頭其他的電路設計仿真軟件,他最大的不同即它的功能不是單是美國公司出品的系列兼容單片機語言軟件開發系統,與匯通過一個集成開發環境()將這些部分組合在一起。生成的目標代碼效率之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。系統硬件設計圖電路原理圖ammableandErasableReadOnlyryCMOSATCK編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。圖3.2.2復位電路主控制模塊復位是單片機的初始化操作。單片機啟運運行時,都需要先復位,其作用是使和系統中其他部件處于一個確定的初始狀態,并從這個狀態開始工作。因而,復位是一個很重要的操作方式。但單片機本身是不能自動進行復位的,必須配合相應的外部電路才能實現。復位電路的基本功能是:系統上電時提供復位信號,直至系統電源穩定后,撤銷復位信號。為可靠起見,電源穩定后還要經一定的延時才撤銷復位信號,以防電源開關或電源插頭分合過程中圖復位電路圖晶振電路晶體振蕩器電路給數字鐘提供一個頻率穩定準確的的方波信號,可保證數字鐘的走時是美國公司推出的一種高性能、低功耗、帶的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為~。采用三線接口與進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或數據。內部有一個×的用于臨時性存放數據的寄存器。是的升級產品,與兼容,但增加了主電源后備電源雙電源引腳,同時提供了對后備電源進行涓細電流充電的能力。3.2.5引腳功能及結構供電。當大于時,給是復位片選線,通過把輸入驅動置高電平來啟動所有的數據傳送。輸入有兩種功能:節數據的傳送手段。當為高電平時,所有的數據傳送被初始化,允許對進行操作。如果據傳送,引腳變為高阻態。上電運行時,在行數據輸入輸出端雙向,后面有詳細說明。為低電平時,才能將下圖為的引腳功能圖:圖封裝圖3.2.6DS1302的控制字節的控制字節如下圖所示??刂谱止澋淖罡哂行晃槐仨毷沁壿嫞绻鼮?,則不能把數據寫入中,位如果為,則表示存取日歷時鐘數據,為表示存取數據位至位指示操作單元的地址最低有效位位如為表示要進行寫操作,為表示進行讀操作,控制字節總開始輸出。3.2.7數據輸入輸出(I/O)在控制指令字輸入后的下一個時鐘的上升沿時,數據被寫入,數據輸入從低位即后的下一個脈沖的下降沿讀出的數據,讀出數據時從低位位到高位。圖的寄存器DS器有個寄存器,其中有個寄存器與日歷、時鐘相關,存放的數據位為碼形式其日歷、時間寄存器及其控制字見表。此外,還有年份寄存器、控制寄存器、充電寄存器、時鐘突發寄存器及與相關的寄存器等。時鐘突發寄存器可一次性順序讀寫除充電寄存器外的所有個,每個單元組態為一個位的字節,其命令控制字為~,其中奇數為讀操作,偶數為寫操作;另一類為突發方式下的寄存器,此方式下可一次性讀寫所有的的個字節,命令控制字為寫、讀。讀圖的寄存器1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。目前市面上字符液晶絕大多數是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應用于市面上大部分的字符型液晶。管腳功能圖采用表中的腳接口:選擇端,高電平時選擇數據寄存器,低電平時選擇指令寄存器。圖模塊顯示系統的組成與工作原理系統由單片機,串行日歷時鐘片液晶顯示模組。是公司拖出的涓流充電時鐘芯片,內含有一個實時時鐘日歷和個季節靜態,通過簡單地串行接口與單片機進行通信,實時時鐘日歷電路提供秒、分、時、日、日期、月、年的信息,每月的天數和閏年的天數可自動調整,時鐘操作可通過指示決定采用小時或串行方式進行通信,僅需用到復位、字符組方式。工作時功耗很低,保持數據和時鐘信息是功率小于。廣泛應用于電話傳真、便攜式儀器及電池供電的儀器儀表等產品領域中。字符型液晶模塊是以兩行個子的點陣吐信來顯示字符的液晶顯示器。:復位引腳,低電平有效。:數據輸入輸出引腳,具有三態功能。:串行時鐘輸入引腳。源引腳。源引腳。DS12個日歷,時鐘寄存器和31個RAM。控制寄存器放DS1302的控制命令字,DS1302的RST引腳回到高電平后寫入的第一個字就為控制命令。它用于對DS1302讀寫過程進行控制,它的格式如下:表控制寄存器的格式D7D6D5D4D3D2D1D0A4A3A2A1A0各項功能說明如下。RAMCK歷、時鐘寄存器進行讀寫。D5~D1:地址位,用于選擇進行讀寫的日歷、時鐘寄存器或片內RAM。對日歷、時鐘寄存器或DS歷、時鐘相關,存放的數據為BCD碼形式。日歷、慢充電寄存器的TCS位為控制慢充電的選擇,當它為1010時才能是慢充電工作。DS為二極管系統軟件設計4程序流程LCD初始化函數Lcdlnitiate();寫數據的顯示地址函數dress用DisPlay(),圖程序流程圖#include<reg51.h>//包含單片機寄存器的頭文件#include<intrins.h>//包含_nop_()函數定義的頭文件/***********************************************************************S************************************************************************/unsignedcharcodedigit[10]={"0123456789"};//定義字符數組顯示數字sbitDATAPP1.7引腳sbitRST=P1^5;//位定義1302芯片的接口,復位端口定義在P1.5引腳sbitSCLK=P1^6;//位定義1302芯片的接口,時鐘輸出端口定義在P1.6引腳/*****************************************************函數功能:延時若干微秒***************************************************/voiddelaynus(unsignedcharn){unsignedchari;for(i=0;i<n;i++);}/********************************************************************************************************/voidWrite1302(unsignedchardat){unsignedchari;SCLK=0;//拉低SCLK,為脈沖上升沿寫入數據做好準備delaynus(2);//稍微等待,使硬件做好準備for(i=0;i<8;i++)//連續寫8個二進制位數據{delaynus(2);//稍微等待,使硬件做好準備SCLK=1;//上升沿寫入數據delaynus(2);//稍微等待,使硬件做好準備datdat移1位,準備寫入下一個數據位}}/*****************************************************函數功能:根據命令字,向1302寫一個字節數據***************************************************/voidWriteSet1302(unsignedcharCmd,unsignedchardat){RST=0;//禁止數據傳遞SCLK=0;//確保寫數居前SCLK被拉低RST=1;//啟動數據傳輸delaynus(2);//稍微等待,使硬件做好準備Write1302(Cmd);//寫入命令字Write1302(dat);//寫數據SCLK=1;//將時鐘電平置于已知狀態RST=0;//禁止數據傳遞}/********************************************************************************************************/unsignedcharRead1302(void){unsignedchari,dat;delaynus(2);//稍微等待,使硬件做好準備for(i=0;i<8;i++)//連續讀8個二進制位數據{dat;//將dat的各數據位右移1位,因為先讀出的是字節的最低位tSCLK=1;//將SCLK置于高電平,為下降沿讀出delaynus(2);//稍微等待SCLKSCLK脈沖下降沿delaynus(2);//稍微等待}returndat;//將讀出的數據返回}/*****************************************************函數功能:根據命令字,從1302讀取一個字節數據***************************************************/unsignedcharReadSet1302(unsignedcharCmd){unsignedchardat;SCLK=0;//確保寫數居前SCLK被拉低RST=1;//啟動數據傳輸Write1302(Cmd);//寫入命令字dat=Read1302();//讀出數據SCLK=1;//將時鐘電平置于已知狀態RST=0;//禁止數據傳遞returndat;//將讀出的數據返回/*******************************************************************************以下是對液晶模塊的操作程序*******************************************************************************/sbitRSP選擇位,將RS位定義為P2.0引腳sbitRWPRW為P2.1引腳sbitEPEP2.2引腳/*****************************************************(3j+2)*i=(3×33+2)×10=1010(微秒),可以認為是1毫秒***************************************************/voiddelay1ms(){unsignedchari,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函數功能:延時若干毫秒***************************************************/voiddelaynms(unsignedcharn){unsignedchari;for(i=0;i<n;i++)delay1ms();}/*****************************************************函數功能:判斷液晶模塊的忙碌狀態***************************************************/{E=1;//E=1,才允許讀寫_nop_();//空操作_nop_();_nop_();_nop_();//空操作四個機器周期,給硬件反應時間ltsult}/*****************************************************函數功能:將模式設置指令或顯示地址寫入液晶模塊***************************************************/voidWriteInstruction(unsignedchardictate){while(BusyTest()==1);//如果忙就等待E=0;//E置低電平_nop_();_nop_();//空操作兩個機器周期,給硬件反應時間_nop_();_nop_();_nop_();_nop_();//空操作四個機器周期,給硬件反應時間E=1;//E置高電平_nop_();_nop_();_nop_();_nop_();//空操作四個機器周期,給硬件反應時間E=0;//當E由高電平跳變成低電平時,液晶模塊開始執行命令}/*****************************************************函數功能:指定字符顯示的實際地址***************************************************/voidWriteAddress(unsignedcharx){WriteInstruction(x|0x80);//顯示位置的確定方法規定為"80H+地址碼x"}/*****************************************************函數功能:將數據(字符的標準ASCII碼)寫入液晶模塊***************************************************/voidWriteData(unsignedchary){whileBusyTest()==1);_nop_();_nop_();_nop_();_nop_();//空操作四個機器周期,給硬件反應時間E=1;//E置高電平_nop_();_nop_();_nop_();_nop_();//空操作四個機器周期,給硬件反應時間E=0;//當E由高電平跳變成低電平時,液晶模塊開始執行命令}/*****************************************************函數功能:對LCD的顯示模式進行初始化設置***************************************************/voidLcdInitiate(void){delaynms//延時15ms,首次寫指令時應給LCD一段較長的反應時間delaynms(5);//延時5ms,給硬件一點反應時間WriteInstruction(0x38);delaynms(5);//延時5ms,給硬件一點反應時間WriteInstruction(0x38);//連續三次,確保初始化成功delaynms(5);//延時5ms,給硬件一點反應時間WriteInstruction(0x0c);//顯示模式設置:顯示開,無光標,光標不閃爍delaynms(5);//延時5ms,給硬件一點反應時間WriteInstruction(0x06);//顯示模式設置:光標右移,字符不移delaynms(5);//延時5ms,給硬件一點反應時間WriteInstruction(0x01);//清屏幕指令,將以前的顯示內容清除delaynms(5);//延時5ms,給硬件一點反應時間}/****************************************************************************************************************************/voidDisplay(unsignedcharx,unsignedchary){unsignedchari,j;j=x%10;WriteAddress(y);WriteData(digit[i]);WriteData(digit[j]);delaynms(50);//延時1ms給硬件一點反應時間}/*****************************************************函數功能:主函數***************************************************/voidmain(void){unsignedcharsecond,minute,hour,day,month,year;//分別儲存秒、分、小時,日,月,年unsignedcharReadValue數據LcdInitiate();//將液晶初始化eteDataDLCDWriteAddress(0x01);eDataaLCDWriteAddress(0x02);iteDatatLCDWriteAddress(0x03);iteDataeLCDWriteAddress(0x04);iteDataLCDteDataLCDteDataLCDWriteAddress(0x40);WriteData('T');WriteAddress(0x41);WriteDatai');WriteAddress(0x42);WriteData('m');WriteAddress(0x43);WriteData('e');WriteAddress(0x44);WriteData');WriteAddress(0x48);iteDataLCDWriteAddress(0x4b);iteDataLCDhile{ReadValue=ReadSet1302(0x81);//從秒寄存器讀數據second=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數據轉化Display(second,0x4c);//顯示秒ReadValue=ReadSet1302(0x83);//從分寄存器讀minute=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數據轉化Display(minute,0x49);//顯示分ReadValue=ReadSet1302(0x85);//從小時寄存器讀hour=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數據轉化Display(hour,0x46);//顯示小時ReadValue=ReadSet1302(0x87);//從分寄存器讀day=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數據轉化Display(day,0x0c);//顯示日ReadValue=ReadSet1302(0x89);//從分寄存器讀month=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數據轉化Display(month,0x09);//顯示月ReadValue=ReadSet1302(0x8d);//從分寄存器讀year=((ReadValue&0xf0)>>4)*10+(ReadValue&0x0F);//將讀出數據轉化Displayyear0x06);//顯示年}}HY
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 休閑農業場地租賃合同終止及生態補償協議
- 茶葉種植與科技研發合作承包合同范本
- 離婚后彩禮退還及婚后財產分配合同范本
- 車輛抵押貸款信用保險合同范本
- 吉林草原承包經營權變更與生態修復工程合同
- 拆遷補償還建住房買賣合同樣本
- 廠房股權轉讓與新型城鎮化建設項目合同
- 廠房設備投資合作與分紅合同
- 數字內容采購合同知識產權授權及內容審查補充協議
- 通信設備場營銷部技術資料保密及競業禁止合同
- 2025屆河南省青桐鳴5月全真模擬卷·高考考前適應性考試-生物試題(含答案)
- 辦公軟件MS Office應用試題及答案
- 人員結構分析總結模版
- 農村三資管理
- 2025年“鑄牢中華民族共同體意識”知識競賽題庫及答案
- 2024年湖南出版中南傳媒招聘筆試真題
- 合肥市2025屆高三年級5月教學質量檢測(合肥三模)生物試題+答案
- 建筑節能材料試題及答案
- 7 什么比獵豹的速度更快 第二課時 課件
- 青馬工程筆試試題及答案
- 重大活動保供電工作流程
評論
0/150
提交評論