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

正文內(nèi)容

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

2023-04-26 22:39:59 本頁面
 

【正文】 片的時(shí)間,其中為2時(shí),時(shí)鐘有在比較時(shí)間;為1時(shí)顯示的時(shí)鬧鐘設(shè)定的時(shí)間。 //RD高4位清0}此程序的功能的把給定的字符顯示到LCD液晶顯示器上,字符串有兩行,分行顯示。 //數(shù)據(jù)送入有效 LCD_RS=0。 //使能 PORTD |=R1。= 0xf0。NOP()。 0x0F。 0xF0。i++) LCD_WRITE(DD[i],DAT)。 }}//在line行顯示整行,共16個(gè)字符,字符在數(shù)組DD中,注意顯示字符直接將字符放入DD數(shù)組//而顯示數(shù)字時(shí)則要將數(shù)值轉(zhuǎn)換成顯示的ASC碼void DISP_C(char line){char i。j16。//完全按照數(shù)組中的字符顯示整屏void DISP_MENU(const char *A){ char i,j。 //IIC初始化}此為對端口﹑LCD和IIC的初始化,上面均有詳細(xì)的說明,在此不做過多的重復(fù)。 //允許電平變化中斷 INTCON=0b11001000。 //允許若上拉,下降沿中斷 WPUB=0b11111111。 //端口B全為輸入 TRISC=0b00011000。VEE和VSS都拉低,VDD拉高電平。 蜂鳴器和液晶顯示器模塊 當(dāng)定時(shí)時(shí)間到,RC1輸出高電平,二極管導(dǎo)通,蜂鳴器開始響。 按鍵模塊按鍵S1是用來定位時(shí)間加減用的,來回按7下,分別對秒分時(shí),星期和日月年。單片機(jī)不斷地訪問DS1307芯片,將訪問得到的數(shù)據(jù)顯示在液晶顯示器上。 單片機(jī)最小系統(tǒng)模塊此單片機(jī)的外部晶振為4MHz,引腳1接有高電平和復(fù)位按鈕。 220V變壓器變壓CUP模塊液晶顯示按鍵輸入DS1307和TC74市電220V電壓經(jīng)變壓器變壓供CPU使用的低壓。 蜂鳴器是用來設(shè)置鬧鐘用的。 LM1602L介紹 字符型LM016L液晶顯示器。單片機(jī)首先向TC74改善地址,地址在字節(jié)的高7位,最低位為0表示為寫。其秒﹑分﹑時(shí)﹑日﹑月﹑年和星期分別存在地址為00﹑01﹑02﹑04﹑05﹑06﹑03中。外部晶振設(shè)為4MHz,引腳1接復(fù)位按鍵。此數(shù)字鐘用到單片機(jī)的B端口中斷功能,端口若上拉,電平變化下降沿中斷。其與單片機(jī)的通訊為IIC通訊。接著單片機(jī)向TC74發(fā)送第二個(gè)數(shù)據(jù),即讀溫度命令字RTR,即8位0;然后重新開始,單片機(jī)再向TC74發(fā)送地址,但此時(shí)的最低位為1,表示接下來是要讀TC74的溫度值。要求用4位數(shù)據(jù)線通訊,傳送命令也傳送地址。當(dāng)設(shè)定鬧鐘的時(shí)間到時(shí),蜂鳴器響,按鍵按下,停止響。DS1307和TC74經(jīng)CPU顯示在液晶上。端口B口用來進(jìn)行電平變化中斷,端口RC3和RC4用來進(jìn)行IIC通訊,RC1用來輸出高電平給蜂鳴器。其中芯片上讀出來的星期是數(shù)字星期(01即代表星期一),軟件部分將數(shù)字星期轉(zhuǎn)換成字母星期(如Wed為星期三)。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)RC1輸出低電平時(shí),二極管截止,蜂鳴器停止響。RS為0時(shí),寫命令,為1時(shí)寫數(shù)據(jù);R/為1時(shí)表示讀,0時(shí)表示寫;E數(shù)據(jù)使能端,下降沿送入有效。 //端口C中RC3和RC4為輸入,其余為輸出 ANSELH=0b00000000。 //B口若上拉 TRISA4=1。 //允許全局中斷,B口電平變化中斷 FMQ=0。LCD的初始化,上電時(shí)需要延時(shí)15ms及以上,此為延時(shí)20ms,其C程序見附錄。 for (i=0。j++) DD[j]=*A++。 LCD_WRITE(line,COM)。 //寫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 R2=R24。 //高4位清0,取低4位 LCD_WRITE_4(R2,FLAG)。 //寫模式 LCD_RS=FLAG。NOP()。NOP()。NOP()。先是對要顯示的位置進(jìn)行定位,如第一行第0位。c為3 時(shí)蜂鳴器不響。 //寫控制字到LCDWRITE_DS1307(0x00,0x00)。 //星期3WRITE_DS1307(0x04,0x08)。 IIC_SEND(ADDR)。}//發(fā)送數(shù)R并等待發(fā)送完成,收到從機(jī)的應(yīng)答信號,中斷用void IIC_SEND_interrupt(char R) { SSPBUF=R。 //等待發(fā)送完成 while (ACKSTAT==1)。先送時(shí)鐘地址,再送要寫入數(shù)據(jù)的地址,再送入數(shù)據(jù)。0x0F)9) { AAAA[6]=AAAA[6]amp。0x00。 } }}此功能從DS1307中讀出時(shí)間數(shù)據(jù),然后對數(shù)據(jù)進(jìn)行加減運(yùn)算,再把修改后的時(shí)間寫入到時(shí)鐘芯片中,即可實(shí)現(xiàn)對時(shí)間的加減運(yùn)算。 //實(shí)時(shí)顯示時(shí)間 (具體C程序見附錄)R1=READ_T()。//第二行第13位 LCD_WRITE(39。o39。,DAT)。,DAT)。 LCD_WRITE(39。//讀TC74的溫度值signed char READ_T(void){ signed char R2。 //送TC74地址(寫) IIC_SEND(RTR)。 //發(fā)送TC74地址(讀) RCEN=1。 //停止位 while(PEN==0)。 //DDRAM地址,第2行的第12個(gè)字符 LCD_WRITE(39。 //顯示十位 LCD_WRITE(GW+0x30,DAT)。C39。 關(guān)于PIC課設(shè)之前我對PIC課設(shè)感到擔(dān)心害怕,因?yàn)槲乙郧皼]有做過課設(shè),不知道該怎么去做。然而課設(shè)中遇到的難題也是不少的,當(dāng)中我免不了焦燥和泄氣。 課設(shè)過程遇到的問題及解決措施我就按我做課設(shè)過程的順序來說明一下我遇到的問題和解決方案。后來,我把電腦直接搬到單片機(jī)比較強(qiáng)的同學(xué)宿舍,他反復(fù)幫我查找,最后終于找到問題所在了。我用的是LM1602L液晶,顯示行數(shù)控制位N為1表示顯示兩行,為0表示顯示1行,即第一行。他確定軟件問題沒有,就果斷把我Proteus圖上的TC74溫度傳感器重新?lián)Q一個(gè),然后再編譯,結(jié)果能顯示出來,這很神奇吧!我問他為什么會這樣,他跟我說要去各種嘗試。我在循環(huán)里把時(shí)鐘芯片的時(shí)間不斷讀出來,再把時(shí)間顯示在液晶上,這樣時(shí)間就可以一直走了。我之前在MPLAB上編譯寫好的端口設(shè)置,寄存器設(shè)置。再次編譯,OPTION寄存器可以識別了。由于仿真軟件還不是非常完善,端口的若上拉使能和端口的方向寄存器的設(shè)置、引腳的模擬口和I/O口選擇和OPTION寄存器設(shè)置即端口若上拉設(shè)置的先后順序有關(guān)。即我的本意是要鬧鐘設(shè)定的時(shí)間到時(shí),蜂鳴器才響的。amp。我再次仿真一下,這次鬧鐘鍵第二次按下時(shí),蜂鳴器不直接響了,而是在定時(shí)時(shí)間到時(shí)才響的。 我的建議我覺得老師你上課的時(shí)候,上課的前二十分鐘給我們講這次課的內(nèi)容,如端口的區(qū)分和使用,中斷的掌握與功能,定時(shí)器的功能與使用方法,然后接下來的二十五分鐘結(jié)合書上的程序給我們講它們的具體應(yīng)用,可以在上課演示給我們看。不僅要教我們軟件的基本使用方法,也要教我們?nèi)绾斡密浖榫幊绦蛑谐霈F(xiàn)的錯(cuò)誤。這對我們做課設(shè)是相當(dāng)有利的。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)生起始位,檢測完成起始位?define START_BIT \ SEN=1。 \ while(RCEN==1)//自動(dòng)應(yīng)答,檢查是否完成應(yīng)答?define ACK_BIT \ ACKDT=0。 \ while(ACKEN==1)bank1 char DD[16]。 //初始化void LCD_CSH(void)。 //LCD寫1字節(jié),命令或數(shù)據(jù)void LCD_WRITE_4(char,char)。 //讀溫度傳感器的溫度值void IIC_CSH(void)。 //BCD碼轉(zhuǎn)換void DELAY_US(char)。 //顯示時(shí)鐘的時(shí)間void DISP_HEX(char)。 //按鍵中斷程序void DISP_XINGQI(char)。 //中斷用IIC發(fā)送和接收void WRITE_DS1307_interrupt(char,char)。 //中斷用將一個(gè)字節(jié)顯示成兩個(gè)字節(jié) //整屏界面,每行16個(gè)字符,最后加一個(gè)結(jié)束符const char MENU0[2][17]={{ 010900628 },{ linyixing }}。 //DELAY(100)。 //延遲2秒,看清顯示是什么 LCD_WRITE(0b00000001,COM)。 //00分 WRITE_DS1307(0x02,0x11)。 //5月 WRITE_DS1307(0x06,0x12)。 //讀溫度傳感器的的值 DISP_T(R1)。 //同上 DISP_T(R1)。(CCCC[1]==AAAA[1])amp。 }//顯示字母星期void DISP_XINGQI(char b){ if(b==1) //如果b=1,則顯示Mon { LCD_WRITE(LINE1+13,COM)。 LCD_WRITE(39。n39。T39。,DAT)。//同上 } else if(b==3) //如果b=3,則顯示W(wǎng)ed { LCD_WRITE(LINE1+13,COM)。 LCD_WRITE(39。d39。T39。,DAT)。//同上 } else if(b==5) //如果b=5,則顯示Fri { LCD_WRITE(LINE1+13,COM)。 LCD_WRITE(39。i39。S39。,DAT)。//同上 } else if(b==7) //如果b=7,則顯示Sun { LCD_WRITE(LINE1+13,COM)。 LCD_WRITE(39。n39。 //標(biāo)志位清零 if(RB3==0) //鬧鐘鍵按下 { a=0。amp。amp。c==0) //減1 {DEC()。} if(RB2==0) //同上 {DEC()。 } if(c==2) //防止競爭現(xiàn)象 { //READ_DS1307(0x00,0x07)。 } if(c==3) //鬧鐘按第三下時(shí),蜂鳴器響 {FMQ=0。} //校正時(shí)候?qū)崿F(xiàn)“加”功能子程序void INC(void){ if(a==7) //年部分校正 { AAAA[6]+=1。 AAAA
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1