單片機(jī)課程設(shè)計(jì)電子日歷時(shí)鐘顯示器設(shè)計(jì)講解_第1頁
單片機(jī)課程設(shè)計(jì)電子日歷時(shí)鐘顯示器設(shè)計(jì)講解_第2頁
單片機(jī)課程設(shè)計(jì)電子日歷時(shí)鐘顯示器設(shè)計(jì)講解_第3頁
單片機(jī)課程設(shè)計(jì)電子日歷時(shí)鐘顯示器設(shè)計(jì)講解_第4頁
單片機(jī)課程設(shè)計(jì)電子日歷時(shí)鐘顯示器設(shè)計(jì)講解_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

題目設(shè)計(jì)要求開發(fā)平臺(tái)簡(jiǎn)介系統(tǒng)硬件設(shè)計(jì)設(shè)計(jì)原理器件的功能與作用單片機(jī)復(fù)位電路塊引腳功能及結(jié)構(gòu)數(shù)據(jù)輸入輸出液晶顯示系統(tǒng)軟件設(shè)計(jì)程序流程程序代碼系統(tǒng)仿真調(diào)試仿真原理圖設(shè)計(jì)仿真運(yùn)行過程仿真運(yùn)行結(jié)果參考文獻(xiàn)題目設(shè)計(jì)要求通過串行日歷時(shí)鐘芯片生成當(dāng)前日期和是時(shí)間,通過口傳輸?shù)叫酒?,然后再將接收到的?shù)據(jù)輸出到上。要求上顯示的日期和時(shí)間與當(dāng)前系統(tǒng)時(shí)間保持一開發(fā)平臺(tái)簡(jiǎn)介軟件是由英國史,在全球得到了廣泛應(yīng)用。軟件的功能強(qiáng)大,它集電路設(shè)計(jì)、制版及仿真等多種功能于一身,不僅能夠?qū)﹄姽?、電子技術(shù)學(xué)科涉及的電路進(jìn)行設(shè)計(jì),還能夠?qū)ξ⑻幚砥鬟M(jìn)行設(shè)計(jì)和仿真,并且功能齊全,界面多彩。和我們手頭其他的電路設(shè)計(jì)仿真軟件,他最大的不同即它的功能不是單是美國公司出品的系列兼容單片機(jī)語言軟件開發(fā)系統(tǒng),與匯通過一個(gè)集成開發(fā)環(huán)境()將這些部分組合在一起。生成的目標(biāo)代碼效率之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。系統(tǒng)硬件設(shè)計(jì)圖電路原理圖ammableandErasableReadOnlyryCMOSATCK編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。圖3.2.2復(fù)位電路主控制模塊復(fù)位是單片機(jī)的初始化操作。單片機(jī)啟運(yùn)運(yùn)行時(shí),都需要先復(fù)位,其作用是使和系統(tǒng)中其他部件處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。因而,復(fù)位是一個(gè)很重要的操作方式。但單片機(jī)本身是不能自動(dòng)進(jìn)行復(fù)位的,必須配合相應(yīng)的外部電路才能實(shí)現(xiàn)。復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開關(guān)或電源插頭分合過程中圖復(fù)位電路圖晶振電路晶體振蕩器電路給數(shù)字鐘提供一個(gè)頻率穩(wěn)定準(zhǔn)確的的方波信號(hào),可保證數(shù)字鐘的走時(shí)是美國公司推出的一種高性能、低功耗、帶的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為~。采用三線接口與進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或數(shù)據(jù)。內(nèi)部有一個(gè)×的用于臨時(shí)性存放數(shù)據(jù)的寄存器。是的升級(jí)產(chǎn)品,與兼容,但增加了主電源后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。3.2.5引腳功能及結(jié)構(gòu)供電。當(dāng)大于時(shí),給是復(fù)位片選線,通過把輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。輸入有兩種功能:節(jié)數(shù)據(jù)的傳送手段。當(dāng)為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)進(jìn)行操作。如果據(jù)傳送,引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在行數(shù)據(jù)輸入輸出端雙向,后面有詳細(xì)說明。為低電平時(shí),才能將下圖為的引腳功能圖:圖封裝圖3.2.6DS1302的控制字節(jié)的控制字節(jié)如下圖所示??刂谱止?jié)的最高有效位位必須是邏輯,如果它為,則不能把數(shù)據(jù)寫入中,位如果為,則表示存取日歷時(shí)鐘數(shù)據(jù),為表示存取數(shù)據(jù)位至位指示操作單元的地址最低有效位位如為表示要進(jìn)行寫操作,為表示進(jìn)行讀操作,控制字節(jié)總開始輸出。3.2.7數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個(gè)時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入,數(shù)據(jù)輸入從低位即后的下一個(gè)脈沖的下降沿讀出的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位位到高位。圖的寄存器DS器有個(gè)寄存器,其中有個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為碼形式其日歷、時(shí)間寄存器及其控制字見表。此外,還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有個(gè),每個(gè)單元組態(tài)為一個(gè)位的字節(jié),其命令控制字為~,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的寄存器,此方式下可一次性讀寫所有的的個(gè)字節(jié),命令控制字為寫、讀。讀圖的寄存器1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義CGRAM,顯示效果也不好)。目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。管腳功能圖采用表中的腳接口:選擇端,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器。圖模塊顯示系統(tǒng)的組成與工作原理系統(tǒng)由單片機(jī),串行日歷時(shí)鐘片液晶顯示模組。是公司拖出的涓流充電時(shí)鐘芯片,內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘日歷和個(gè)季節(jié)靜態(tài),通過簡(jiǎn)單地串行接口與單片機(jī)進(jìn)行通信,實(shí)時(shí)時(shí)鐘日歷電路提供秒、分、時(shí)、日、日期、月、年的信息,每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整,時(shí)鐘操作可通過指示決定采用小時(shí)或串行方式進(jìn)行通信,僅需用到復(fù)位、字符組方式。工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息是功率小于。廣泛應(yīng)用于電話傳真、便攜式儀器及電池供電的儀器儀表等產(chǎn)品領(lǐng)域中。字符型液晶模塊是以兩行個(gè)子的點(diǎn)陣吐信來顯示字符的液晶顯示器。:復(fù)位引腳,低電平有效。:數(shù)據(jù)輸入輸出引腳,具有三態(tài)功能。:串行時(shí)鐘輸入引腳。源引腳。源引腳。DS12個(gè)日歷,時(shí)鐘寄存器和31個(gè)RAM。控制寄存器放DS1302的控制命令字,DS1302的RST引腳回到高電平后寫入的第一個(gè)字就為控制命令。它用于對(duì)DS1302讀寫過程進(jìn)行控制,它的格式如下:表控制寄存器的格式D7D6D5D4D3D2D1D0A4A3A2A1A0各項(xiàng)功能說明如下。RAMCK歷、時(shí)鐘寄存器進(jìn)行讀寫。D5~D1:地址位,用于選擇進(jìn)行讀寫的日歷、時(shí)鐘寄存器或片內(nèi)RAM。對(duì)日歷、時(shí)鐘寄存器或DS歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)為BCD碼形式。日歷、慢充電寄存器的TCS位為控制慢充電的選擇,當(dāng)它為1010時(shí)才能是慢充電工作。DS為二極管系統(tǒng)軟件設(shè)計(jì)4程序流程LCD初始化函數(shù)Lcdlnitiate();寫數(shù)據(jù)的顯示地址函數(shù)dress用DisPlay(),圖程序流程圖#include<reg51.h>//包含單片機(jī)寄存器的頭文件#include<intrins.h>//包含_nop_()函數(shù)定義的頭文件/***********************************************************************S************************************************************************/unsignedcharcodedigit[10]={"0123456789"};//定義字符數(shù)組顯示數(shù)字sbitDATAPP1.7引腳sbitRST=P1^5;//位定義1302芯片的接口,復(fù)位端口定義在P1.5引腳sbitSCLK=P1^6;//位定義1302芯片的接口,時(shí)鐘輸出端口定義在P1.6引腳/*****************************************************函數(shù)功能:延時(shí)若干微秒***************************************************/voiddelaynus(unsignedcharn){unsignedchari;for(i=0;i<n;i++);}/********************************************************************************************************/voidWrite1302(unsignedchardat){unsignedchari;SCLK=0;//拉低SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準(zhǔn)備delaynus(2);//稍微等待,使硬件做好準(zhǔn)備for(i=0;i<8;i++)//連續(xù)寫8個(gè)二進(jìn)制位數(shù)據(jù){delaynus(2);//稍微等待,使硬件做好準(zhǔn)備SCLK=1;//上升沿寫入數(shù)據(jù)delaynus(2);//稍微等待,使硬件做好準(zhǔn)備datdat移1位,準(zhǔn)備寫入下一個(gè)數(shù)據(jù)位}}/*****************************************************函數(shù)功能:根據(jù)命令字,向1302寫一個(gè)字節(jié)數(shù)據(jù)***************************************************/voidWriteSet1302(unsignedcharCmd,unsignedchardat){RST=0;//禁止數(shù)據(jù)傳遞SCLK=0;//確保寫數(shù)居前SCLK被拉低RST=1;//啟動(dòng)數(shù)據(jù)傳輸delaynus(2);//稍微等待,使硬件做好準(zhǔn)備Write1302(Cmd);//寫入命令字Write1302(dat);//寫數(shù)據(jù)SCLK=1;//將時(shí)鐘電平置于已知狀態(tài)RST=0;//禁止數(shù)據(jù)傳遞}/********************************************************************************************************/unsignedcharRead1302(void){unsignedchari,dat;delaynus(2);//稍微等待,使硬件做好準(zhǔn)備for(i=0;i<8;i++)//連續(xù)讀8個(gè)二進(jìn)制位數(shù)據(jù){dat;//將dat的各數(shù)據(jù)位右移1位,因?yàn)橄茸x出的是字節(jié)的最低位tSCLK=1;//將SCLK置于高電平,為下降沿讀出delaynus(2);//稍微等待SCLKSCLK脈沖下降沿delaynus(2);//稍微等待}returndat;//將讀出的數(shù)據(jù)返回}/*****************************************************函數(shù)功能:根據(jù)命令字,從1302讀取一個(gè)字節(jié)數(shù)據(jù)***************************************************/unsignedcharReadSet1302(unsignedcharCmd){unsignedchardat;SCLK=0;//確保寫數(shù)居前SCLK被拉低RST=1;//啟動(dòng)數(shù)據(jù)傳輸Write1302(Cmd);//寫入命令字dat=Read1302();//讀出數(shù)據(jù)SCLK=1;//將時(shí)鐘電平置于已知狀態(tài)RST=0;//禁止數(shù)據(jù)傳遞returndat;//將讀出的數(shù)據(jù)返回/*******************************************************************************以下是對(duì)液晶模塊的操作程序*******************************************************************************/sbitRSP選擇位,將RS位定義為P2.0引腳sbitRWPRW為P2.1引腳sbitEPEP2.2引腳/*****************************************************(3j+2)*i=(3×33+2)×10=1010(微秒),可以認(rèn)為是1毫秒***************************************************/voiddelay1ms(){unsignedchari,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函數(shù)功能:延時(shí)若干毫秒***************************************************/voiddelaynms(unsignedcharn){unsignedchari;for(i=0;i<n;i++)delay1ms();}/*****************************************************函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)***************************************************/{E=1;//E=1,才允許讀寫_nop_();//空操作_nop_();_nop_();_nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間ltsult}/*****************************************************函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊***************************************************/voidWriteInstruction(unsignedchardictate){while(BusyTest()==1);//如果忙就等待E=0;//E置低電平_nop_();_nop_();//空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間_nop_();_nop_();_nop_();_nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間E=1;//E置高電平_nop_();_nop_();_nop_();_nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間E=0;//當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令}/*****************************************************函數(shù)功能:指定字符顯示的實(shí)際地址***************************************************/voidWriteAddress(unsignedcharx){WriteInstruction(x|0x80);//顯示位置的確定方法規(guī)定為"80H+地址碼x"}/*****************************************************函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn)ASCII碼)寫入液晶模塊***************************************************/voidWriteData(unsignedchary){whileBusyTest()==1);_nop_();_nop_();_nop_();_nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間E=1;//E置高電平_nop_();_nop_();_nop_();_nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間E=0;//當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令}/*****************************************************函數(shù)功能:對(duì)LCD的顯示模式進(jìn)行初始化設(shè)置***************************************************/voidLcdInitiate(void){delaynms//延時(shí)15ms,首次寫指令時(shí)應(yīng)給LCD一段較長的反應(yīng)時(shí)間delaynms(5);//延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間WriteInstruction(0x38);delaynms(5);//延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間WriteInstruction(0x38);//連續(xù)三次,確保初始化成功delaynms(5);//延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間WriteInstruction(0x0c);//顯示模式設(shè)置:顯示開,無光標(biāo),光標(biāo)不閃爍delaynms(5);//延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間WriteInstruction(0x06);//顯示模式設(shè)置:光標(biāo)右移,字符不移delaynms(5);//延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間WriteInstruction(0x01);//清屏幕指令,將以前的顯示內(nèi)容清除delaynms(5);//延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間}/****************************************************************************************************************************/voidDisplay(unsignedcharx,unsignedchary){unsignedchari,j;j=x%10;WriteAddress(y);WriteData(digit[i]);WriteData(digit[j]);delaynms(50);//延時(shí)1ms給硬件一點(diǎn)反應(yīng)時(shí)間}/*****************************************************函數(shù)功能:主函數(shù)***************************************************/voidmain(void){unsignedcharsecond,minute,hour,day,month,year;//分別儲(chǔ)存秒、分、小時(shí),日,月,年unsignedcharReadValue數(shù)據(jù)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);//從秒寄存器讀數(shù)據(jù)second=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化Display(second,0x4c);//顯示秒ReadValue=ReadSet1302(0x83);//從分寄存器讀minute=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化Display(minute,0x49);//顯示分ReadValue=ReadSet1302(0x85);//從小時(shí)寄存器讀hour=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化Display(hour,0x46);//顯示小時(shí)ReadValue=ReadSet1302(0x87);//從分寄存器讀day=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化Display(day,0x0c);//顯示日ReadValue=ReadSet1302(0x89);//從分寄存器讀month=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化Display(month,0x09);//顯示月ReadValue=ReadSet1302(0x8d);//從分寄存器讀year=((ReadValue&0xf0)>>4)*10+(ReadValue&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化Displayyear0x06);//顯示年}}HY

溫馨提示

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

評(píng)論

0/150

提交評(píng)論