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

正文內(nèi)容

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

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

下一頁面
  

【正文】 }}//中斷用延時(shí)(n)ms程序void DELAY_I(unsigned int n){ unsigned int j。j16。 PORTD amp。 //再送低4位 DELAY_US(10)。 0xF0。 //使能 R1=0。 //顯示1字節(jié) LCD_WRITE(r+0x30,DAT)。 START_BIT。 DISP_HEX(AAAA[1])。/39。 LCD_WRITE(0xc0+11,COM)。 //開始條件 while (SEN==1)。 //等待發(fā)送完成 while (ACKSTAT==1)。 //發(fā)送控制序列 DELAY(1)。 DISP_HEX_interrupt(AAAA[0])。0x00。0xF0。 if((AAAA[4]amp。0xF0)4)9) { AAAA[6]=AAAA[6]amp。 } }//秒部分校正if(a==1){ AAAA[0]+=1。 AAAA[2]=AAAA[2]+0x10。 AAAA[4]=AAAA[4]+0x10。 DISP_HEX_interrupt(AAAA[6])。 for(i=0。c==0) //無鬧鐘鍵按下的定位 { a++。//同上 LCD_WRITE(39。r39。,DAT)。,DAT)。amp。 //11h WRITE_DS1307(0x03,0x03)。 //中斷用寫時(shí)鐘芯片//void READ_DS1307_interrupt(char,char)。 //IIC的初始化void IIC_SEND(char)。 \ ACKEN=1。還可以給我們講解軟件的使用。按照老師的提醒,我重新排了一下順序,B口出現(xiàn)了高電平,也就是若上拉使能了。我想說的是IIC中應(yīng)答不了有可能是軟件問題,也有可能是硬件問題的。通過課設(shè),我覺得解決遇到難題的方法是找出問題所在,根據(jù)問題判斷出是軟件問題還是硬件問題,然后再對軟件或硬件進(jìn)行一一更改。T39。 SEN=1。,DAT)。//如果數(shù)組[6]元素值大于0x99,則整個數(shù)都清零 if(c==0) WRITE_DS1307_interrupt(0x06,AAAA[6])。 //發(fā)送 SSPIF=0。其C程序詳見附錄。 //RD高4位先清0 LCD_E=1。 LCD_BUSY()。IIC的初始化,初始化過程實(shí)際上是對幾個相關(guān)的寄存器設(shè)置的過程,其C程序見附錄。RD0~RD3,數(shù)據(jù)輸入端,使用液晶顯示器端口的高4位。端口D端口用來輸出命令和數(shù)據(jù)給液晶顯示器。最后單片機(jī)接收TC74發(fā)出的溫度值。其控制寄存器的地址為07,其值0b11010000,代表允許其7腳輸出每秒1Hz的方波。采用的是電平變化的中斷模式。當(dāng)按第三下時(shí),蜂鳴器停止響,相應(yīng)的變量清零,從重新開始。 //控制LCD1604,全為輸出 IOCB=0b00001111。 //因?yàn)槲次策€有結(jié)束字符 DISP_C(LINE[i])。 //延時(shí)100us}//寫R1的低4位,FLAG為寄存器選擇,1為命令,0為數(shù)據(jù)void LCD_WRITE_4(char R1,char FLAG){ LCD_RW=0。= 0x0F。 //5月WRITE_DS1307(0x06,0x12)。 時(shí)間加減設(shè)置//校正時(shí)候?qū)崿F(xiàn)“加”功能子程序void INC(void){ if(a==7) //年部分校正 { AAAA[6]+=1。 //顯示溫度值 DISP_XINGQI(AAAA[3])。u39。 //等待接收完成 R2=SSPBUF。} 讀溫度值并顯示,具體解釋見上,此不再重復(fù)。我在輸入書上程序時(shí)把控制顯示行數(shù)的位由1改為0,書上1代表顯示四行,0代表顯示兩行。我問過同學(xué),他說他的編譯器能識別OPTION這個寄存器。問題是鬧鐘鍵按第二下的同時(shí)蜂鳴器也響了,而不是等待定時(shí)時(shí)間到才響。附錄1:數(shù)字鐘的全部C程序include __CONFIG(0x20F1)。 //檢測LCD是否忙char LCD_READ(void)。 //讀時(shí)鐘芯片void WRITE_DS1307(char,char)。 //端口,LCD和IIC初始化 DISP_MENU(*MENU0)。 //顯示字母星期 } if(c==1) //C=1時(shí)執(zhí)行 { DISP_TIME(*AAAA)。,DAT)。W39。u39。 LCD_WRITE(39。//同上 }} //中斷子程序void interrupt ISR(void){ DELAY_I(30)。 if(a==8) a=1。0x0F)9) { AAAA[6]=AAAA[6]amp。//如果數(shù)組[5]元素值大于0x12,則整個數(shù)都清零再加1 } if(c==0) WRITE_DS1307_interrupt(0x05,AAAA[5])。 //如果數(shù)組[3]的元素大于7時(shí),則復(fù)位到1 if(c==0) WRITE_DS1307_interrupt(0x03,AAAA[3])。0xF0。 DISP_HEX_interrupt(AAAA[0])。0xF0。 if(AAAA[3]1) AAAA[3]=7。 } }//分部分校正if(a==2){ AAAA[1]=1。 AAAA[0]=AAAA[0]+0x09。 //控制LCD1604,全為輸出 IOCB=0b00001111。 //D(d2)=1:打開顯示,C(d1)=1:光標(biāo)打開,B(d0)=1:光標(biāo)閃爍 LCD_WRITE(0b00000001,COM)。 NOP()。 //接收數(shù)據(jù)存入R1 PEN=1。C39。,DAT)。 STOP_BIT。i++) //共7個數(shù),從先到后分別為秒、分、時(shí)、星期、日、月、年 { RECEIVE_ENABLE_BIT。 LCD_WRITE(r+0x30,DAT)。 //讀PORTD的低4位,R1的高4位不變! LCD_E=0。 R2=R1 amp。NOP()。 //寫行命令 for (i=0。k0。} 附錄2:Proteus完整仿真圖。jn。 }//在line行顯示整行,共16個字符,字符在數(shù)組DD中,注意顯示字符直接將字符放入DD數(shù)組//而顯示數(shù)字時(shí)則要將數(shù)值轉(zhuǎn)換成顯示的ASC碼void DISP_C(char line){char i。NOP()。 //延時(shí)100us}//中斷用void LCD_WRITE_interrupt(char R1,char FLAG){ char R2。 //使能 R1 |= (PORTD amp。 r=(R1amp。 //最低位為1表示讀 for (i=0。 IIC_SEND(ADDRESS)。 LCD_WRITE(39。 //176。 //接收使能 while (RCEN==1)。 //等待發(fā)送完成 while (ACKSTAT==1)。 //LCD忙檢測 LCD_WRITE(0b00101000,COM)。 //B口若上拉 TRISA4=1。0x0F)9) { AAAA[0]=AAAA[0]amp。//將經(jīng)過修改的數(shù)組元素寫入 else if(c==1) { LCD_WRITE_interrupt(LINE2+2,COM)。 DISP_HEX_interrupt(AAAA[4])。 if((AAAA[5]amp。 //如果數(shù)組[0]元素值大于0x59,則整個數(shù)都清零 if(c==0) WRITE_DS1307_interrupt(0x00,AAAA[0])。 if((AAAA[1]amp。 } }//星期部分校正if(a==4){ AAAA[3]+=1。0x00。} //校正時(shí)候?qū)崿F(xiàn)“加”功能子程序void INC(void){ if(a==7) //年部分校正 { AAAA[6]+=1。c==0) //減1 {DEC()。n39。S39。,DAT)。//同上 } else if(b==3) //如果b=3,則顯示W(wǎng)ed { LCD_WRITE(LINE1+13,COM)。 LCD_WRITE(39。 //讀溫度傳感器的的值 DISP_T(R1)。 //DELAY(100)。 //顯示時(shí)鐘的時(shí)間void DISP_HEX(char)。 //初始化void LCD_CSH(void)。這對我們做課設(shè)是相當(dāng)有利的。amp。我之前在MPLAB上編譯寫好的端口設(shè)置,寄存器設(shè)置。后來,我把電腦直接搬到單片機(jī)比較強(qiáng)的同學(xué)宿舍,他反復(fù)幫我查找,最后終于找到問題所在了。C39。 //發(fā)送TC74地址(讀) RCEN=1。,DAT)。 //實(shí)時(shí)顯示時(shí)間 (具體C程序見附錄)R1=READ_T()。先送時(shí)鐘地址,再送要寫入數(shù)據(jù)的地址,再送入數(shù)據(jù)。 //星期3WRITE_DS1307(0x04,0x08)。NOP()。 //高4位清0,取低4位 LCD_WRITE_4(R2,FLAG)。j++) DD[j]=*A++。 //B口若上拉 TRISA4=1。S2可以對時(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可以對時(shí)間進(jìn)行設(shè)定。當(dāng)設(shè)定鬧鐘的時(shí)間到時(shí),蜂鳴器響,按鍵按下,停止響。此數(shù)字鐘用到單片機(jī)的B端口中斷功能,端口若上拉,電平變化下降沿中斷。 LM1602L介紹 字符型LM016L液晶顯示器。單片機(jī)不斷地訪問DS1307芯片,將訪問得到的數(shù)據(jù)顯示在液晶顯示器上。 //端口B全為輸入 TRISC=0b00011000。//完全按照數(shù)組中的字符顯示整屏void DISP_MENU(const char *A){ char i,j。 0xF0。 //使能 PORTD |=R1。 //清屏WRITE_DS1307(0x07,0x10)。 //在主動模式下,判斷發(fā)送是否完成 while (SSPIF==0)。 DISP_HEX_interrupt(AAAA[6])。n39。 //檢測開始條件是否完成? IIC_SEND(TC74_ADD1)。 LCD_WRITE(SW+0x30,DAT)。做完課設(shè),我覺得單片機(jī)也不是那么難學(xué)了。液晶顯示器上的時(shí)間是要求走動的,即一秒一秒地增加。老師要教我們?nèi)绾伟惭b軟件,也可給我們視頻讓我們回去自己看看,這樣就不會占用上課時(shí)間。 \ ACKEN=1。 //顯示溫度值void BCD(char)。 //中斷用寫LCDvoid DISP_HEX_interrupt(char)。 //8日 WRITE_DS1307(0x05,0x05)。 //當(dāng)設(shè)定的時(shí)間到時(shí),蜂鳴器響 }。u39。//同上 LCD_WRITE(39。 LCD_WRITE(39。,DAT)。 } if(RB1==0amp。i++) AAAA[i]=4。 if((AAAA[5]amp。0x00。0x00。0x0F)9) { AAAA[0]=AAAA[0]amp。 AAAA[6]=AAAA[6]+0x99。0xF0。//數(shù)組[2]元素的低四位大于9時(shí),則低四位清零且改為0x09,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1