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

正文內(nèi)容

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

  

【正文】 PEN=1。 //檢測(cè)開(kāi)始條件是否完成? IIC_SEND(TC74_ADD1)。,DAT)。n39。 //顯示字母星期 //顯示字母星期void DISP_XINGQI(char b){ if(b==1) //如果b=1,則顯示Mon { LCD_WRITE(LINE1+13,COM)。 DISP_HEX_interrupt(AAAA[6])。 //如果a==7,則數(shù)組[6]自動(dòng)加1 if((AAAA[6]amp。 //在主動(dòng)模式下,判斷發(fā)送是否完成 while (SSPIF==0)。 //12年//寫ds1307,地址為address,數(shù)為datavoid WRITE_DS1307(char ADDRESS,char da){ START_BIT。 //清屏WRITE_DS1307(0x07,0x10)。 //RD高4位清0}此程序的功能的把給定的字符顯示到LCD液晶顯示器上,字符串有兩行,分行顯示。 //使能 PORTD |=R1。NOP()。 0xF0。 }}//在line行顯示整行,共16個(gè)字符,字符在數(shù)組DD中,注意顯示字符直接將字符放入DD數(shù)組//而顯示數(shù)字時(shí)則要將數(shù)值轉(zhuǎn)換成顯示的ASC碼void DISP_C(char line){char i。//完全按照數(shù)組中的字符顯示整屏void DISP_MENU(const char *A){ char i,j。 //允許電平變化中斷 INTCON=0b11001000。 //端口B全為輸入 TRISC=0b00011000。 蜂鳴器和液晶顯示器模塊 當(dāng)定時(shí)時(shí)間到,RC1輸出高電平,二極管導(dǎo)通,蜂鳴器開(kāi)始響。單片機(jī)不斷地訪問(wèn)DS1307芯片,將訪問(wèn)得到的數(shù)據(jù)顯示在液晶顯示器上。 220V變壓器變壓CUP模塊液晶顯示按鍵輸入DS1307和TC74市電220V電壓經(jīng)變壓器變壓供CPU使用的低壓。 LM1602L介紹 字符型LM016L液晶顯示器。其秒﹑分﹑時(shí)﹑日﹑月﹑年和星期分別存在地址為00﹑01﹑02﹑04﹑05﹑06﹑03中。此數(shù)字鐘用到單片機(jī)的B端口中斷功能,端口若上拉,電平變化下降沿中斷。接著單片機(jī)向TC74發(fā)送第二個(gè)數(shù)據(jù),即讀溫度命令字RTR,即8位0;然后重新開(kāi)始,單片機(jī)再向TC74發(fā)送地址,但此時(shí)的最低位為1,表示接下來(lái)是要讀TC74的溫度值。當(dāng)設(shè)定鬧鐘的時(shí)間到時(shí),蜂鳴器響,按鍵按下,停止響。端口B口用來(lái)進(jìn)行電平變化中斷,端口RC3和RC4用來(lái)進(jìn)行IIC通訊,RC1用來(lái)輸出高電平給蜂鳴器。S2可以對(duì)時(shí)間進(jìn)行加運(yùn)算即每按一下,相應(yīng)的時(shí)間加1;S3可以時(shí)間進(jìn)行減運(yùn)算即每按一下,相應(yīng)的時(shí)間減1;S4是鬧鐘按鍵,按第一下,進(jìn)入鬧鐘設(shè)置模式,此時(shí)再按S2或S3可以對(duì)時(shí)間進(jìn)行設(shè)定。RS為0時(shí),寫命令,為1時(shí)寫數(shù)據(jù);R/為1時(shí)表示讀,0時(shí)表示寫;E數(shù)據(jù)使能端,下降沿送入有效。 //B口若上拉 TRISA4=1。LCD的初始化,上電時(shí)需要延時(shí)15ms及以上,此為延時(shí)20ms,其C程序見(jiàn)附錄。j++) DD[j]=*A++。 //寫16個(gè)數(shù)據(jù),即顯示1行}//寫一字節(jié)數(shù)R1,FLAG為寫命令或數(shù)據(jù)選擇,0為寫命令,1為寫數(shù)據(jù)//寫之前先檢查是否忙,寫完后延時(shí)100us,分二次寫4位數(shù)據(jù)/命令void LCD_WRITE(char R1,char FLAG){ char R2。 //高4位清0,取低4位 LCD_WRITE_4(R2,FLAG)。NOP()。NOP()。c為3 時(shí)蜂鳴器不響。 //星期3WRITE_DS1307(0x04,0x08)。}//發(fā)送數(shù)R并等待發(fā)送完成,收到從機(jī)的應(yīng)答信號(hào),中斷用void IIC_SEND_interrupt(char R) { SSPBUF=R。先送時(shí)鐘地址,再送要寫入數(shù)據(jù)的地址,再送入數(shù)據(jù)。0x00。 //實(shí)時(shí)顯示時(shí)間 (具體C程序見(jiàn)附錄)R1=READ_T()。o39。,DAT)。//讀TC74的溫度值signed char READ_T(void){ signed char R2。 //發(fā)送TC74地址(讀) RCEN=1。 //DDRAM地址,第2行的第12個(gè)字符 LCD_WRITE(39。C39。然而課設(shè)中遇到的難題也是不少的,當(dāng)中我免不了焦燥和泄氣。后來(lái),我把電腦直接搬到單片機(jī)比較強(qiáng)的同學(xué)宿舍,他反復(fù)幫我查找,最后終于找到問(wèn)題所在了。他確定軟件問(wèn)題沒(méi)有,就果斷把我Proteus圖上的TC74溫度傳感器重新?lián)Q一個(gè),然后再編譯,結(jié)果能顯示出來(lái),這很神奇吧!我問(wèn)他為什么會(huì)這樣,他跟我說(shuō)要去各種嘗試。我之前在MPLAB上編譯寫好的端口設(shè)置,寄存器設(shè)置。由于仿真軟件還不是非常完善,端口的若上拉使能和端口的方向寄存器的設(shè)置、引腳的模擬口和I/O口選擇和OPTION寄存器設(shè)置即端口若上拉設(shè)置的先后順序有關(guān)。amp。 我的建議我覺(jué)得老師你上課的時(shí)候,上課的前二十分鐘給我們講這次課的內(nèi)容,如端口的區(qū)分和使用,中斷的掌握與功能,定時(shí)器的功能與使用方法,然后接下來(lái)的二十五分鐘結(jié)合書上的程序給我們講它們的具體應(yīng)用,可以在上課演示給我們看。這對(duì)我們做課設(shè)是相當(dāng)有利的。 \ while(RCEN==1)//自動(dòng)應(yīng)答,檢查是否完成應(yīng)答?define ACK_BIT \ ACKDT=0。 //初始化void LCD_CSH(void)。 //讀溫度傳感器的溫度值void IIC_CSH(void)。 //顯示時(shí)鐘的時(shí)間void DISP_HEX(char)。 //中斷用IIC發(fā)送和接收void WRITE_DS1307_interrupt(char,char)。 //DELAY(100)。 //00分 WRITE_DS1307(0x02,0x11)。 //讀溫度傳感器的的值 DISP_T(R1)。(CCCC[1]==AAAA[1])amp。 LCD_WRITE(39。T39。//同上 } else if(b==3) //如果b=3,則顯示W(wǎng)ed { LCD_WRITE(LINE1+13,COM)。d39。,DAT)。 LCD_WRITE(39。S39。//同上 } else if(b==7) //如果b=7,則顯示Sun { LCD_WRITE(LINE1+13,COM)。n39。amp。c==0) //減1 {DEC()。 } if(c==2) //防止競(jìng)爭(zhēng)現(xiàn)象 { //READ_DS1307(0x00,0x07)。} //校正時(shí)候?qū)崿F(xiàn)“加”功能子程序void INC(void){ if(a==7) //年部分校正 { AAAA[6]+=1。//將經(jīng)過(guò)修改的數(shù)組元素寫入 if(c==1) { LCD_WRITE_interrupt(LINE1+4,COM)。0x00。0xF0。 } }//星期部分校正if(a==4){ AAAA[3]+=1。0xF0。 if((AAAA[1]amp。 DISP_HEX_interrupt(AAAA[1])。 //如果數(shù)組[0]元素值大于0x59,則整個(gè)數(shù)都清零 if(c==0) WRITE_DS1307_interrupt(0x00,AAAA[0])。//數(shù)組[6]元素的低四位大于9時(shí),則低四位清零且改為0x09,而高四位則自動(dòng)減1 } if(((AAAA[6]amp。 if((AAAA[5]amp。 } }//日部分校正if(a==5){ AAAA[4]=1。 DISP_HEX_interrupt(AAAA[4])。0x0F)9) { AAAA[2]=AAAA[2]amp。//將經(jīng)過(guò)修改的數(shù)組元素寫入 else if(c==1) { LCD_WRITE_interrupt(LINE2+2,COM)。0xF0)4)9) { AAAA[1]=AAAA[1]amp。0x0F)9) { AAAA[0]=AAAA[0]amp。//將經(jīng)過(guò)修改的數(shù)組元素寫入 else if(c==1) { LCD_WRITE_interrupt(LINE2+8,COM)。 //B口若上拉 TRISA4=1。 //延時(shí)20ms LCD_WRITE_4(0b0011,COM)。 //LCD忙檢測(cè) LCD_WRITE(0b00101000,COM)。 //在主動(dòng)模式下,判斷發(fā)送是否完成 while (SSPIF==0)。 //等待發(fā)送完成 while (ACKSTAT==1)。 SEN=1。 //接收使能 while (RCEN==1)。}void DISP_T(char R1) //溫度在R1{ BCD(R1)。 //176。 //顯示年的低2位 LCD_WRITE(39。 LCD_WRITE(39。,DAT)。 IIC_SEND(ADDRESS)。} //讀ds1307,讀出的結(jié)果在AAAA[],初始地址為start_addr,要讀的數(shù)字節(jié)數(shù)為n//當(dāng)start_addr=0,n=7時(shí)為時(shí)間void READ_DS1307(char START_ADDR,char n){ char i。 //最低位為1表示讀 for (i=0。 r=R14。 r=(R1amp。NOP()。 //使能 R1 |= (PORTD amp。 //忙檢測(cè) R2=R1 amp。 //延時(shí)100us}//中斷用void LCD_WRITE_interrupt(char R1,char FLAG){ char R2。 //高4位清0,取低4位 LCD_WRITE_4(R2,FLAG)。NOP()。NOP()。 }//在line行顯示整行,共16個(gè)字符,字符在數(shù)組DD中,注意顯示字符直接將字符放入DD數(shù)組//而顯示數(shù)字時(shí)則要將數(shù)值轉(zhuǎn)換成顯示的ASC碼void DISP_C(char line){char i。i++) { for (j=0。jn。NOP()。} 附錄2:Proteus完整仿真圖。 char k。k0。j++) DD[j]=*A++。 //寫行命令 for (i=0。= 0x0F。NOP()。 //延時(shí)100us}//寫R1的低4位,FLAG為寄存器選擇,1為命令,0為數(shù)據(jù)void LCD_WRITE_4(char R1,char FLAG){ LCD_RW=0。 R2=R1 amp。 //低4位清0 R2=R24。 //讀PORTD的低4位,R1的高4位不變! LCD_E=0。 //短延時(shí) R1=(PORTD4) amp。 LCD_WRITE(r+0x30,DAT)。 r=(R1amp。i++) //共7個(gè)數(shù),從先到后分別為秒、分、時(shí)、星期、日、月、年 { RECEIVE_ENABLE_BIT。 IIC_SEND(ADDR)。 STOP_BIT。 //顯示分 LCD_WRITE(39。,DAT)。,DAT)。C39。 //DDRAM地址,第2行的第12個(gè)字符 LCD_WRITE(39。 //接收數(shù)據(jù)存入R1 PEN=1。 //檢測(cè)開(kāi)始條件是否完成? IIC_SEND(TC74_ADD1)。 NOP()。 //等待從機(jī)發(fā)送應(yīng)答信號(hào) NOP()。 //D(d2)=1:打開(kāi)顯示,C(d1)=1:光標(biāo)打開(kāi),B(d0)=1:光標(biāo)閃爍 LCD_WRITE(0b00000001,COM)。 //延時(shí)1ms LCD_WRITE_4(0b0011,COM)。 //控制L
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1