freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機(jī)的日歷時(shí)鐘顯示系統(tǒng)設(shè)計(jì)畢業(yè)論文(參考版)

2025-07-01 00:35本頁(yè)面
  

【正文】 return DBPort。//在用Proteus仿真時(shí),注意用屏蔽此語(yǔ)句,在調(diào)用GotoXY()時(shí),會(huì)進(jìn)入死循環(huán), //可能在寫該控制字時(shí),該模塊沒(méi)有返回寫入完備命令,即DBPortamp。 //while(DBPortamp。 LcdEn=1。 LcdRw=1。sfr DBPort = 0x80。sbit LcdRw = P2^1。0x7F)。 if(flag) Write1302(DS1302_SECOND, Data|0x80)。 Data=Read1302(DS1302_SECOND)。 DS1302_RST = 0。 // 讀1Byte數(shù)據(jù) pRClock++。 i0。 DS1302InputByte(0xbf)。 DS1302_CLK = 0。} void BurstRead1302(unsigned char *pRClock) //讀取DS1302時(shí)鐘數(shù)據(jù)(時(shí)鐘多字節(jié)方式){ unsigned char i。 } DS1302_CLK = 1。 i) //8Byte = 7Byte 時(shí)鐘數(shù)據(jù) + 1Byte 控制 { DS1302InputByte(*pWClock)。 // 0xbe:時(shí)鐘多字節(jié)寫命令 for (i = 8。 DS1302_RST = 1。 // 控制命令,WP=0,寫操作? DS1302_RST = 0。}/********************************************************************************void BurstWrite1302(unsigned char *pWClock) //往DS1302寫入時(shí)鐘數(shù)據(jù)(多字節(jié)方式){ unsigned char i。 if(Secondamp。\039。039。039。:39。039。039。:39。039。039。\039。039。039。39。039。039。39。039。039。0x0F)。 TimeYear = ((ReadValueamp。0x0F)。 TimeMonth = ((ReadValueamp。0x0F)。 TimeWeek = ((ReadValueamp。0x0F)。 TimeDay = ((ReadValueamp。0x0F)。 TimeHour = ((ReadValueamp。0x0F)。 TimeMinute = ((ReadValueamp。0x0F)。 TimeSecond = ((ReadValueamp。 }void DS1302_GetTime(SYSTEMTIME *Time){ unsigned char ReadValue。}void DS1302_SetTime(unsigned char Address, unsigned char Value) // 設(shè)置時(shí)間函數(shù){ DS1302_SetProtect(0)。}void DS1302_SetProtect(bit flag) //是否寫保護(hù){ if(flag) Write1302(0x8E,0x10)。 DS1302_RST = 0。 // 地址,命令 ucData = DS1302OutputByte()。 DS1302_RST = 1。 DS1302_RST = 0。 DS1302_RST = 0。 // 地址,命令 DS1302InputByte(ucDa)。 DS1302_RST = 1。 }void Write1302(unsigned char ucAddr, unsigned char ucDa) //ucAddr: DS1302地址, ucData: 要寫的數(shù)據(jù){ DS1302_RST = 0。 DS1302_CLK = 0。 //相當(dāng)于匯編中的 RRC ACC7 = DS1302_IO。 i0。 } }unsigned char DS1302OutputByte(void) //實(shí)時(shí)時(shí)鐘讀取一字節(jié)(內(nèi)部函數(shù)){ unsigned char i。 DS1302_CLK = 0。 i) { DS1302_IO = ACC0。 for(i=8。 //定義的時(shí)間類型define AM(X) Xdefine PM(X) (X+12) // 轉(zhuǎn)成24小時(shí)制define DS1302_SECOND 0x80define DS1302_MINUTE 0x82define DS1302_HOUR 0x84 define DS1302_WEEK 0x8Adefine DS1302_DAY 0x86define DS1302_MONTH 0x88define DS1302_YEAR 0x8Cdefine DS1302_RAM(X) (0xC0+(X)*2) //用于計(jì)算 DS1302_RAM 地址的宏 void DS1302InputByte(unsigned char d) //實(shí)時(shí)時(shí)鐘寫入一字節(jié)(內(nèi)部函數(shù)){ unsigned char i。 unsigned char TimeString[9]。 unsigned char Year。 unsigned char Day。 unsigned char Hour。typedef struct __SYSTEMTIME__{ unsigned char Second。 //實(shí)時(shí)時(shí)鐘復(fù)位線引腳sbit ACC0 = ACC^0。 //實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 sbit DS1302_IO = P1^7。 Delay1ms(300)。 GotoXY(6,1)。 GotoXY(6,0)。 TimeToStr(amp。 DateToStr(amp。 while(1) { DS1302_GetTime(amp。 GotoXY(0,1)。 GotoXY(0,0)。 LCD_Initial()。j++)。i++) for(j=0。 for(i=0。感謝提供相關(guān)技術(shù)幫助的老師和同學(xué),你們的支持和鼓勵(lì)使我們對(duì)這次的作品完成有了信心和動(dòng)力,也給了我很多無(wú)私的幫助和支持,我在此深表謝意。致 謝感謝學(xué)院給我提供了一個(gè)展現(xiàn)自己的舞臺(tái),給我一次難得煅煉的機(jī)會(huì),使得我的動(dòng)手能力和專業(yè)技能都有了很大的提高。此次比賽中學(xué)到了很多很多東西,這是最重要的。在此次設(shè)計(jì)中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。對(duì)電路的設(shè)計(jì)、布局要先有一個(gè)好的構(gòu)思,才顯得電路板美觀、大方。在電路焊接時(shí)雖然沒(méi)什么大問(wèn)題,但從中也知道了焊接在整個(gè)作品中的重要性,電路工程量大,不能心急,一個(gè)個(gè)慢慢來(lái)不能急于求成。在整個(gè)設(shè)計(jì)過(guò)程中,充分發(fā)揮人的主觀能動(dòng)性,自主學(xué)習(xí),學(xué)到了許多沒(méi)學(xué)到的知識(shí)。本來(lái)還想實(shí)現(xiàn)更多其他的功能,但由于時(shí)間緊迫,硬件條件限制,未能實(shí)現(xiàn)。所以當(dāng)我們選用了符合32768Hz的晶振,還應(yīng)該使該晶振的負(fù)載電容與DS1302提供的6pF一致,就不會(huì)影響晶振的起振或?qū)е抡袷庮l率的偏移。該晶振通過(guò)引腳XX2直接連接至DS1302,即DS1302是依靠外部晶振與其內(nèi)容的電容配合來(lái)產(chǎn)生時(shí)鐘脈沖的。因此,可能是32768Hz晶振造成DS1302工作不穩(wěn)定的主要原因。從圖中可以看出,DS1302的外部電路十分簡(jiǎn)單,唯一外接的元件是32768Hz的晶振。在實(shí)際使用中,我們發(fā)現(xiàn)DS1302工作情況不夠穩(wěn)定,主要表現(xiàn)在實(shí)時(shí)時(shí)間的傳送會(huì)出現(xiàn)誤差,有時(shí)甚至整個(gè)芯片停止工作。運(yùn)行仿真成功為止。要求在命令字之后的第一個(gè)下降沿就要讀數(shù)據(jù),否則讀出的數(shù)據(jù)就是錯(cuò)誤的。到此步,我們的軟件調(diào)試就完成了。能夠正常編譯的程序說(shuō)明沒(méi)有什么問(wèn)題了,此時(shí)我們?cè)冱c(diǎn)擊相關(guān)欄目。編好的各個(gè)程序進(jìn)行編譯與連接。其革命性的功能是:將電路仿真和微處理器仿真進(jìn)行協(xié)同,直接在基于原理圖的虛擬原型上進(jìn)行處理器編程調(diào)試,并進(jìn)行功能驗(yàn)證,通過(guò)動(dòng)態(tài)器件如單片機(jī)開(kāi)發(fā)板、電機(jī),開(kāi)關(guān)等,實(shí)時(shí)看到運(yùn)行后的輸入、輸出的效果,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等,Proteus為我們建立了完備的電子設(shè)計(jì)開(kāi)發(fā)環(huán)境。圖52 Keil C51uVision3仿真界面Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,該軟件支持眾多不同公司的芯片,集編輯、編譯和程序仿真等于一體,同時(shí)還支持PLM、匯編和C語(yǔ)言的程序設(shè)計(jì)。 軟件調(diào)試 仿真軟件介紹圖51 Proteus仿真界面PROTEUS軟件由公司開(kāi)發(fā),是目前世界上最先進(jìn)、最完整的嵌入式系統(tǒng)設(shè)計(jì)與仿真平臺(tái),可以實(shí)現(xiàn)數(shù)字電路、模擬電路及微控制器系統(tǒng)與外設(shè)的混合電路系統(tǒng)的電路仿真、軟件仿真、調(diào)試與測(cè)試的EDA工具。因?yàn)槲覀兊膯纹瑱C(jī)開(kāi)發(fā)板是新的,為了掌握開(kāi)發(fā)板的各個(gè)模塊的應(yīng)用,也為了檢測(cè)該開(kāi)發(fā)板是否能用,所以起初我們根據(jù)開(kāi)發(fā)板的使用說(shuō)明,選擇了一些小程序進(jìn)行仿真,經(jīng)過(guò)一系列的仿真,確定了該開(kāi)發(fā)板可以使用。調(diào)試是一個(gè)調(diào)試過(guò)程是一個(gè)軟硬件相結(jié)合調(diào)試的過(guò)程,硬件電路是基礎(chǔ),軟件是檢測(cè)硬件電路和實(shí)現(xiàn)其功能的關(guān)鍵。同時(shí)在軟件的編程方面得到更到的提高,對(duì)編程能力得到加強(qiáng),同時(shí)對(duì)所學(xué)的知識(shí)得到很大的提高與鞏固。最后經(jīng)過(guò)多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。(2) 結(jié)果分析帶日歷的電子鐘是多功能的數(shù)字型,可以看當(dāng)前日期,時(shí)間。時(shí)間走時(shí)正常,所有結(jié)果達(dá)到理想中的要求效果。(4) LCD1602顯示器的初始化LCD使用之前須對(duì)它進(jìn)行初始化,初始化可通過(guò)復(fù)位完成,也可在復(fù)位后完成,初始化過(guò)程如下:延時(shí)15ms寫指令38H(不檢測(cè)忙信號(hào))延時(shí)5ms寫指令38H(不檢測(cè)忙標(biāo)志)延時(shí)5ms寫指令38H(不檢測(cè)忙標(biāo)志)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測(cè)忙標(biāo)志信號(hào)寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動(dòng)設(shè)置寫指令0CH:顯示開(kāi)及光標(biāo)設(shè)置LCD1602顯示程序流程圖如圖45所示,該流程圖包括顯示一個(gè)字符到指定位置函數(shù),顯示字符串到指定位置函數(shù),寫指令函數(shù),寫數(shù)據(jù)函數(shù),判忙函數(shù)(內(nèi)部等待函數(shù)),初始化函數(shù)等等。液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。指令11:從DDRAM或CGRAM當(dāng)前位置中讀出數(shù)據(jù)。指令10:向DDRAM或CGRAM當(dāng)前位置中寫入數(shù)據(jù)。指令9:讀忙信號(hào)和光標(biāo)地址 當(dāng)BF=1時(shí)表示忙,這時(shí)不能接受命令和數(shù)據(jù);BF=0時(shí)表示不忙。指令7:設(shè)置用戶自定義CGRAM的地址,對(duì)用戶自定義CGRAM訪問(wèn)時(shí),要先設(shè)定CGRAM的地址,地址范疇為0~63。 設(shè)置顯示行數(shù),當(dāng)N=1時(shí)雙行顯示,N=0時(shí)單行顯示。當(dāng)R/L=1時(shí)光標(biāo)右移,R/L=0時(shí)光標(biāo)左移。 當(dāng)B=1時(shí)字符閃爍,B=0時(shí)字符不閃爍。指令4:顯示開(kāi)關(guān)控制 當(dāng)D=1時(shí)顯示,D=0時(shí)不顯示。當(dāng)I/D=1時(shí),光標(biāo)從左向右移動(dòng);I/D=0時(shí),光標(biāo)從右向左移動(dòng)。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H,即顯示器的左上角,顯示緩沖區(qū)DDRAM的內(nèi)容不變。(2) 基本操作時(shí)序① 讀操作時(shí)序② 寫操作時(shí)序?qū)σ陨蠒r(shí)序圖的說(shuō)明如下:讀狀態(tài):輸入:RS=0,RW=1,E=1 輸出:D0D7為狀態(tài)字寫指令:輸入:RS=0,RW=0,D0~D7為指令碼,E高脈沖 輸出:無(wú)讀數(shù)據(jù):輸入:RS=0,RW=1,E=1 輸出:D0D7為數(shù)據(jù)寫數(shù)據(jù):輸入:RS=1,RW=0,D0~D7為數(shù)據(jù),E高脈沖 輸出:無(wú)(3) LCD1602指令說(shuō)明LCD控制器HD44780內(nèi)有多個(gè)寄存器,通過(guò)RS和R/W引腳共同決定選擇哪一個(gè)寄存器,選擇情況如下表所示:LCD1602液晶模塊內(nèi)部的控制器共有11條控制指令,它們的格式和功能如下表所示:它的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。⑦ 顯示數(shù)據(jù)存儲(chǔ)器:本存儲(chǔ)器(DDRAM)存儲(chǔ)所要顯示的數(shù)據(jù)。⑤ 地址計(jì)數(shù)器:本寄存器(AC)連接內(nèi)部的地址總線,DDRAM或CGRAM的操作都需通過(guò)本計(jì)數(shù)器提供的地址來(lái)尋址。③ 指令譯碼器:本寄存器是將指令寄存器里的指令譯碼,以獲得所要操作DDRAM或CGRAM的地址。① 輸入輸出寄存器:本單元為L(zhǎng)CD的大門,所有數(shù)據(jù)和控制信號(hào)都需通過(guò)本單元才得以進(jìn)出LCD。但是,如果在系統(tǒng)中采用時(shí)鐘芯片DS1302,則能很好地解決這個(gè)問(wèn)題。這種記錄對(duì)長(zhǎng)時(shí)間的連續(xù)測(cè)控系統(tǒng)結(jié)果的分析及對(duì)異常數(shù)據(jù)出現(xiàn)的原因的查找具有重要意義。 (4) 結(jié)論 DS1302 存在時(shí)鐘精度不高,易受環(huán)境影響,出現(xiàn)時(shí)鐘混亂等缺點(diǎn)。DS1302在第一次加電后,必須進(jìn)行初始化操作。如果斷電時(shí)間較短(幾小時(shí)或幾天)時(shí),就可以用漏電較小的普通電解電容器代替。
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1