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

正文內(nèi)容

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

2025-05-17 22:39上一頁面

下一頁面
  

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