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

正文內(nèi)容

基于16f887單片機(jī)數(shù)字鐘課設(shè)設(shè)計(jì)報(bào)告word格式-文庫吧

2025-03-27 22:39 本頁面


【正文】 COM)。 DISP_HEX_interrupt(AAAA[6])。 } }}此功能從DS1307中讀出時(shí)間數(shù)據(jù),然后對(duì)數(shù)據(jù)進(jìn)行加減運(yùn)算,再把修改后的時(shí)間寫入到時(shí)鐘芯片中,即可實(shí)現(xiàn)對(duì)時(shí)間的加減運(yùn)算。由于程序篇幅較長(zhǎng),在此只列出部分加的C程序,其余加C程序及減C程序詳見附錄。 顯示時(shí)間﹑讀和顯示溫度﹑顯示字母星期READ_DS1307(0x00,0x07)。 //讀時(shí)鐘芯片 (設(shè)置鬧鐘時(shí)間是沒有這一行指令)DISP_TIME(*AAAA)。 //實(shí)時(shí)顯示時(shí)間 (具體C程序見附錄)R1=READ_T()。 //讀溫度傳感器的值DISP_T(R1)。 //顯示溫度值 DISP_XINGQI(AAAA[3])。 //顯示字母星期 //顯示字母星期void DISP_XINGQI(char b){ if(b==1) //如果b=1,則顯示Mon { LCD_WRITE(LINE1+13,COM)。//第二行第13位 LCD_WRITE(39。M39。,DAT)。 LCD_WRITE(39。o39。,DAT)。 LCD_WRITE(39。n39。,DAT)。//1115分別顯示M、o、n } else if(b==2) //如果b=2,則顯示Tue { LCD_WRITE(LINE1+13,COM)。//同上 LCD_WRITE(39。T39。,DAT)。 LCD_WRITE(39。u39。,DAT)。 LCD_WRITE(39。e39。,DAT)。//同上 }} 其完整程序詳見附錄,在此只給出其中的一部分。//讀TC74的溫度值signed char READ_T(void){ signed char R2。 SEN=1。 //開始條件 while (SEN==1)。 //檢測(cè)開始條件是否完成? IIC_SEND(TC74_ADD1)。 //送TC74地址(寫) IIC_SEND(RTR)。 //寫RTR命令(寫) RSEN=1。 //重新開始條件 while (RSEN==1)。 //等待重新開始條件結(jié)束 IIC_SEND((TC74_ADD1)+1)。 //發(fā)送TC74地址(讀) RCEN=1。 //接收使能 while (RCEN==1)。 //等待接收完成 R2=SSPBUF。 //接收數(shù)據(jù)存入R1 PEN=1。 //停止位 while(PEN==0)。 return(R2)。}//顯示溫度值 void DISP_T(char R1) //溫度為R1{ BCD(R1)。 LCD_WRITE(0xc0+11,COM)。 //DDRAM地址,第2行的第12個(gè)字符 LCD_WRITE(39。T39。,DAT)。 LCD_WRITE(SW+0x30,DAT)。 //顯示十位 LCD_WRITE(GW+0x30,DAT)。 //顯示個(gè)位 LCD_WRITE(0xDF,DAT)。 //176。 LCD_WRITE(39。C39。,DAT)。} 讀溫度值并顯示,具體解釋見上,此不再重復(fù)。關(guān)于延時(shí)程序﹑蜂鳴器響和不響,由于功能設(shè)置比較簡(jiǎn)單,在此不列出,可詳見附錄。 關(guān)于PIC課設(shè)之前我對(duì)PIC課設(shè)感到擔(dān)心害怕,因?yàn)槲乙郧皼]有做過課設(shè),不知道該怎么去做。再者,我的單片機(jī)基礎(chǔ)是零,以前沒有接觸到過單片機(jī),我心里就更沒底了。不過事情還好,沒有我想像的那么難!有課本可以參考,有同學(xué)可以請(qǐng)教。我覺得我之前的恐慌是出于對(duì)課設(shè)的過度擔(dān)心,對(duì)自己的低估。然而課設(shè)中遇到的難題也是不少的,當(dāng)中我免不了焦燥和泄氣。通過課設(shè),我覺得解決遇到難題的方法是找出問題所在,根據(jù)問題判斷出是軟件問題還是硬件問題,然后再對(duì)軟件或硬件進(jìn)行一一更改。即提出問題,分析問題和解決問題。做完課設(shè),我覺得單片機(jī)也不是那么難學(xué)了。 課設(shè)過程遇到的問題及解決措施我就按我做課設(shè)過程的順序來說明一下我遇到的問題和解決方案。,液晶顯示器能顯示第一行,卻顯示不了第二行。我之前有問過同學(xué),他們兩行都有顯示出來。我反復(fù)把書上的程序?qū)α撕脦妆?,都沒有錯(cuò)的。后來,我把電腦直接搬到單片機(jī)比較強(qiáng)的同學(xué)宿舍,他反復(fù)幫我查找,最后終于找到問題所在了。我用的液晶是顯示兩行的,書上的例題液晶是顯示四行的。我在輸入書上程序時(shí)把控制顯示行數(shù)的位由1改為0,書上1代表顯示四行,0代表顯示兩行。我錯(cuò)誤地認(rèn)為把1改為0就行了,正是這個(gè)想法,讓我在這問題上花了不少時(shí)間。我用的是LM1602L液晶,顯示行數(shù)控制位N為1表示顯示兩行,為0表示顯示1行,即第一行。之前問過同學(xué),他說是傳感器的地址輸入錯(cuò)了才不應(yīng)答的,我反復(fù)地把程序和地址對(duì)了好幾遍,還是都沒有錯(cuò)。我搞了好幾個(gè)小時(shí)還是沒有搞出來,后來我硬是請(qǐng)班上的高手幫我查看。他確定軟件問題沒有,就果斷把我Proteus圖上的TC74溫度傳感器重新?lián)Q一個(gè),然后再編譯,結(jié)果能顯示出來,這很神奇吧!我問他為什么會(huì)這樣,他跟我說要去各種嘗試。我想說的是IIC中應(yīng)答不了有可能是軟件問題,也有可能是硬件問題的。液晶顯示器上的時(shí)間是要求走動(dòng)的,即一秒一秒地增加。我在循環(huán)里把時(shí)鐘芯片的時(shí)間不斷讀出來,再把時(shí)間顯示在液晶上,這樣時(shí)間就可以一直走了。但是我那液晶上的時(shí)間一直在閃爍,經(jīng)我同學(xué)指導(dǎo),才發(fā)現(xiàn)原來我把清屏的命令放在循環(huán)里了。等我把清屏命令移到循環(huán)外面,再試一下,果然不會(huì)閃。我之前在MPLAB上編譯寫好的端口設(shè)置,寄存器設(shè)置。編譯時(shí)發(fā)現(xiàn)OPTION這個(gè)寄存器編譯不能識(shí)別,我就納悶了。我問過同學(xué),他說他的編譯器能識(shí)別OPTION這個(gè)寄存器。我再次看我的編譯情況,我腦中閃過一個(gè)念頭,會(huì)不會(huì)是編譯版本問題。,再次編譯,OPTION寄存器可以識(shí)別了。但是接下來問題又出現(xiàn)了。按照我OPTION寄存器的設(shè)置情況,即B口有若上拉,但是仿真時(shí)就是低電平,都出現(xiàn)不來高電平。然后我到實(shí)驗(yàn)室問老師這個(gè)是什么緣故造成的,老師給了我提示。由于仿真軟件還不是非常完善,端口的若上拉使能和端口的方向寄存器的設(shè)置、引腳的模擬口和I/O口選擇和OPTION寄存器設(shè)置即端口若上拉設(shè)置的先后順序有關(guān)。按照老師的提醒,我重新排了一下順序,B口出現(xiàn)了高電平,也就是若上拉使能了。即先設(shè)置端口方向輸入輸出寄存器,再設(shè)置引腳的模擬口和I/O口,再設(shè)置B口若上拉。即我的本意是要鬧鐘設(shè)定的時(shí)間到時(shí),蜂鳴器才響的。我的程序是把鬧鐘設(shè)定的時(shí)間放在一個(gè)數(shù)組CCCC【】中。在鬧鐘鍵按第二下時(shí),數(shù)組AAAA【】將時(shí)間值送給數(shù)組CCCC【】。程序中當(dāng)AAAA【2】=CCCC【2】amp。amp。AAAA【1】=CCCC【1】時(shí)蜂鳴器響。問題是鬧鐘鍵按第二下的同時(shí)蜂鳴器也響了,而不是等待定時(shí)時(shí)間到才響。我覺得這可能是程序的競(jìng)爭(zhēng)問題,我尋思著在按第二下時(shí),當(dāng)數(shù)組AAAA賦值給數(shù)組CCCC后,再賦新值給數(shù)組AAAA。我再次仿真一下,這次鬧鐘鍵第二次按下時(shí),蜂鳴器不直接響了,而是在定時(shí)時(shí)間到時(shí)才響的。,有可能是軟件原因也胡可能是硬件原因。軟件原因是一直把同一數(shù)值寫到液晶LM1602L中,即不斷顯示同一時(shí)間;硬件原因是時(shí)鐘芯片不應(yīng)答,軟件程序不能進(jìn)行下去,即程序停滯不前。當(dāng)然課設(shè)過程中也有我的馬虎問題讓我費(fèi)了不少時(shí)間,這里就不一一列出,上面是讓我印象比較深刻的幾個(gè)。 我的建議我覺得老師你上課的時(shí)候,上課的前二十分鐘給我們講這次課的內(nèi)容,如端口的區(qū)分和使用,中斷的掌握與功能,定時(shí)器的功能與使用方法,然后接下來的二十五分鐘結(jié)合書上的程序給我們講它們的具體應(yīng)用,可以在上課演示給我們看。還可以給我們講解軟件的使用。因?yàn)镸PLAB軟件和Proteus軟件對(duì)于我們當(dāng)中相當(dāng)?shù)囊徊糠秩耸遣皇煜さ?,甚至是剛接觸的。老師要教我們?nèi)绾伟惭b軟件,也可給我們視頻讓我們回去自己看看,這樣就不會(huì)占用上課時(shí)間。不僅要教我們軟件的基本使用方法,也要教我們?nèi)绾斡密浖榫幊绦蛑谐霈F(xiàn)的錯(cuò)誤。班上的高手是有限的,高手的耐心也是有限的,問題問多了自己也會(huì)覺得不好意思再問的。如在MPLAB中編譯C程序查錯(cuò)誤,編寫程序,運(yùn)行出錯(cuò)了,可能是哪些原因出現(xiàn)問題,是軟件還是硬件出錯(cuò)呢?然后嘗試修改程序,看看到底哪里出現(xiàn)了問題。這樣的話我們?cè)诰幾g程序時(shí)出錯(cuò)時(shí)也可以按著老師的步驟一步一步地查程序。這對(duì)我們做課設(shè)是相當(dāng)有利的。參考書目: ★江和,《PIC16系列單片機(jī)C程序設(shè)計(jì)與PROTEUS仿真.》,北京航空航天大學(xué)出版社,2010年6月。附錄1:數(shù)字鐘的全部C程序include __CONFIG(0x20F1)。 //調(diào)試用__CONFIG(0x3FFF)。define LCD_E RD6 //LCD E 讀寫使能控制define LCD_RW RD5 //LCD 讀(1)/寫(0)控制線define LINE1 0b10000000define LINE2 0b11000000define LCD_RS RD4 //LCD 寄存器選擇 數(shù)據(jù)(1)指令(0) //RD4RD7分別接DB4DB7,RD7為忙標(biāo)志define COM 0 //在LCD_WRITE()中的第2參數(shù)為0表示寫命令define DAT 1 //在LCD_WRITE()中的第2參數(shù)為1表示寫數(shù)據(jù)define TC74_ADD 0b1001101 //TC74的7位地址define RTR 0b00000000 //TC74的讀溫度命令define ADDR 0b11010000 //時(shí)鐘芯片的地址define YEAR_P LINE1+2 //年的顯示位置define HOUR_P LINE2+2 //時(shí)的顯示位置define KEY_DEC RB2define KEY_INC RB1define FMQ RC1//產(chǎn)生起始位,檢測(cè)完成起始位?define START_BIT \ SEN=1。 \ while(SEN==1)//停止位,檢查至停止位結(jié)束define STOP_BIT \ PEN=1。 \ while(PEN==1)//發(fā)送重復(fù)開始,確定重復(fù)開始已完成?define RE_START_BIT \ RSEN=1。 \ while(RSEN==1) //接收使能模式,確定接收使能?define RECEIVE_ENABLE_BIT \ RCEN=1。 \ while(RCEN==1)//自動(dòng)應(yīng)答,檢查是否完成應(yīng)答?define ACK_BIT \ ACKDT=0。 \ ACKEN=1。 \ while(ACKEN==1)//不應(yīng)答,檢查是否完成無應(yīng)答?define NOT_ACK_BIT \ ACKDT=1。 \ ACKEN=1。 \ while(ACKEN==1)bank1 char DD[16]。 //一行LCD顯示數(shù)據(jù)暫存bank1 char AAAA[7]。 //存放時(shí)鐘芯片讀出來的數(shù)據(jù)bank1 char CCCC[7]。 //存放鬧鐘設(shè)定的時(shí)間void CSH(void)。 //初始化void LCD_CSH(void)。 //LCD初始化void LCD_BUSY(void)。 //檢測(cè)LCD是否忙char LCD_READ(void)。 //讀LCD,忙檢測(cè)用void LCD_WRITE(char,char)。 //LCD寫1字節(jié),命令或數(shù)據(jù)void LCD_WRITE_4(char,char)。 //LCD寫半字節(jié)void DISP_C(char)。 //在指定行中顯示字符,字符在數(shù)組DD中void DISP_MENU(const char *)。 //由常數(shù)數(shù)組顯示整屏字符signed char READ_T(void)。 //讀溫度傳感器的溫度值void IIC_CSH(void)。 //IIC的初始化void IIC_SEND(char)。 //IIC的發(fā)送與接收void DISP_T(char)。 //顯示溫度值void BCD(char)。 //BCD碼轉(zhuǎn)換void DELAY_US(char)。 //延遲程序,10uS級(jí)void DELAY(unsigned
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1