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

正文內(nèi)容

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

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

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