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

正文內(nèi)容

液晶lcd電子鐘設(shè)計論文(編輯修改稿)

2025-07-21 18:08 本頁面
 

【文章內(nèi)容簡介】 沒有對液晶清平所致。于是我又在不同界面程序前加入調(diào)用填充空格函數(shù)(void clrram_lcd ()),然后又下載,結(jié)果與前面一樣,崩潰??!經(jīng)過幾個小時后,無意間我去掉 調(diào)用函數(shù)前void。結(jié)果疊屏現(xiàn)象解決。但是顯示還是亂碼。謝天謝地啊!有進步! 又經(jīng)過幾天,排錯,上網(wǎng)查閱與參考程序?qū)φ?。最后在void R1302()函數(shù)中DS1302InputByte(ucAddr|0x01)。掉了|0x01,加上生成HEX文件,下載到單片機中。能夠正常顯示了。呵呵!又進一步!最后對程序進行相應的擴展完善,由于按鍵不靈敏我們加上聲音程序。加上另一個鬧鐘實現(xiàn)設(shè)計需求。 通過單片機學習板對照,程序基本實現(xiàn)我所預期的要求,但是界面顯示鬧鐘1,鬧鐘2閃爍時,液晶竟然出現(xiàn)顯示淡化。據(jù)分析,可能使程序的問題。由于這部分顯示復雜,用了多個if語句,可能出現(xiàn)語句冗余。我只有問度娘啰! 2)硬件調(diào)試 硬件調(diào)試,我們用萬用表,單片機學習板來完成的。首先,我們調(diào)試LCD1602顯示。我將液晶顯示程序下載到單片機內(nèi),連好所有的線,通電后,觀察顯示結(jié)果。唉!液晶竟然不顯示。我們用萬用表測試各連線是否導通及某些點的電壓,發(fā)現(xiàn)沒問題。最后在網(wǎng)上發(fā)現(xiàn)我的P0口竟然沒接上拉電阻,通過計算電阻應該去5K至10K。由于沒準備多的電阻。開始布局沒有為上拉電阻留下空間,我們在單片機插槽里插電阻,解決一些連線的復雜度。后來在調(diào)試液晶能夠顯示了。然后,我們調(diào)試DS1302時鐘芯片。連上按鍵模塊,液晶顯示模塊,單片機 最小系統(tǒng),時鐘系統(tǒng),溫度系統(tǒng),連接所有線,通上電源后,我們觀察到液晶顯示 2085—85—85 85:85:85 溫度能正常顯示,時鐘不能正常顯示。我們還是用萬用表檢查所用線路,對照電路原理圖,最后發(fā)現(xiàn)時鐘上拉電阻沒焊上電源。接上電源后,時鐘能夠正常顯示,按鍵也能控制。 最后,我們對報警模塊進行簡單調(diào)試。最后發(fā)現(xiàn)沒問題 整個硬件調(diào)試完成。 五.總結(jié)與體會經(jīng)過將近一個星期的設(shè)計,終于完成LCD液晶時鐘設(shè)計,雖然達到設(shè)計要求,但單片機的資源并沒完全應用,畢竟這次設(shè)計把實物都做了出來,心底是很高興的,這次不是用單片機學習板而是自己動手制作的作品。在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計但這次設(shè)計真的讓我長進了很多,單片機課程設(shè)計重點就在于軟件算法的設(shè)計,需要有很巧妙的程序算法。這次設(shè)計是液晶,單片機,鍵盤控制的綜合應用,其間,遇到許多困難,甚至,有時竟然想放棄。從這次的課程設(shè)計中,我真真正正的意識到,在寫程序時,邏輯思維要清晰,要有耐心。在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次設(shè)計中的最大收獲。參考文獻:2.《C語言程序設(shè)計》 譚浩強編 清華大學出版社3.《單片機原理與應用及C51程序設(shè)計》 謝維成 楊加國 主編 清華大學出版社附件:LCD液晶時鐘設(shè)計原理電路圖另外再附上我們的PCB圖LCD液晶時鐘設(shè)計部分參考程序液晶部分顯示程序: includeinclude define uchar unsigned char define uint unsigned intsbit BEEP = P3^7。 sbit rs=P2^0。sbit rw=P2^1。sbit ep=P2^2。sbit s1=P1^0。sbit s2=P1^1。sbit s3=P1^2。sbit s4=P1^3。sbit rd=P1^4。sbit DQ = P3^3 。 //定義DS18B20端口DQ bit presence 。 //檢測18b20是否插好uchar count,s1num,num,num2。char m,n,miao,shi,fen,yue,ri,week。uchar data armhour,armmin,armsec。//鬧鐘時、分、秒uint nian。unsigned char code dis_week[]={THU,FRI,SAT,SUN,MON,TUE,WED}。uchar code table[]=B 20130101 。uchar code table1[]=23:59:55 。bit arm。 //標識是否啟用鬧鐘,1啟用,0關(guān)閉unsigned char code para_month[13]={0,0,3,3,6,1,4,6,2,5,0,3,5}。 //星期月參變數(shù)unsigned char data temp_data[2] = {0x00,0x00} 。unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} 。unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} 。void beep() 。 unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00} 。define delayNOP() 。 {_nop_() 。_nop_() 。_nop_() 。_nop_() 。} 。// 延時程序void delay(unsigned char ms){ while(ms) { unsigned char i。 for(i = 0。 i i++) { _nop_()。 //執(zhí)行一條_nop_()指令為一個機器周期 _nop_()。 _nop_()。 _nop_()。 } }} //測試LCD忙碌狀態(tài)bit lcd_busy(){ bit result。 rs = 0。 rw = 1。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 result =(bit)(P0amp。0x80)。 //LCD的D0D7中,D7=1為忙碌,D7=0為空閑 ep = 0。 return result。 }//寫入指令到LCDvoid lcd_wcmd(char cmd){ while(lcd_busy())。 //當lcd_busy為1時,再次檢測LCD忙碌狀態(tài),lcdbusy為0時,開始寫指令 rs = 0。 rw = 0。 ep = 0。 _nop_()。 _nop_()。 P0 = cmd。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 0。 }//寫入數(shù)據(jù)到LCDvoid lcd_wdat(char dat) { while(lcd_busy())。 //當lcd_busy為1時,再次檢測LCD忙碌狀態(tài),lcdbusy為0時,開始寫數(shù)據(jù) rs = 1。 rw = 0。 ep = 0。 P0 = dat。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 0。 }// 設(shè)定顯示位置 void lcd_pos(uchar pos){ lcd_wcmd(pos | 0x80) 。 //數(shù)據(jù)指針=80+地址變量}//自定義字符寫入CGRAM void writetab() { unsigned char i 。 lcd_wcmd(0x40) 。 //寫CGRAM for (i = 0 。 i 8 。 i++) lcd_wdat(mytab[ i ]) 。 }//us級延時函數(shù) void Delay1(unsigned int num){ while( num ) 。}//初始化ds1820 Init_DS18B20(void){ DQ = 1 。 //DQ復位 Delay1(8) 。 //稍做延時 DQ = 0 。 //單片機將DQ拉低 Delay1(90) 。 //精確延時 大于 480us DQ = 1 。 //拉高總線 Delay1(8) 。 presence = DQ 。 //如果=0則初始化成功 =1則初始化失敗 Delay1(100) 。 DQ = 1 。 return(presence) 。 //返回信號,0=presence,1= no presence}// 讀一個字節(jié) ReadOneChar(void){ unsigned char i = 0 。 unsigned char dat = 0 。 for (i = 8 。 i 0 。 i) { DQ = 0 。 // 給脈沖信號 dat = 1 。 DQ = 1 。 // 給脈沖信號 if(DQ) dat |= 0x80 。 Delay1(4) 。 } return (dat) 。}/* 寫一個字節(jié) */ WriteOneChar(unsigned char dat){ unsigned char i = 0 。 for (i = 8 。 i 0 。 i) { DQ = 0 。 DQ = datamp。0x01 。 Delay1(5) 。 DQ = 1 。 dat=1 。 }}// 讀取溫度 Read_Temperature(void){ Init_DS18B20() 。 WriteOneChar(0xCC) 。 // 跳過讀序號列號的操作 WriteOneChar(0x44) 。 // 啟動溫度轉(zhuǎn)換 Init_DS18B20() 。 WriteOneChar(0xCC) 。 //跳過讀序號列號的操作 WriteOneChar(0xBE) 。 //讀取溫度寄存器 temp_data[0] = ReadOneChar() 。 //溫度低8位 temp_data[1] = ReadOneChar() 。 //溫度高8位 }// 數(shù)據(jù)轉(zhuǎn)換與溫度顯示 Disp_Temperature(){ display[4]=temp_data[0]amp。0x0f 。 display[0]=ditab[display[4]]+0x30 。//查表得小數(shù)位的值 display[4]=((temp_data[0]amp。0xf0)4)|((temp_data[1]amp。0x0f)4) 。 display[3]=display[4]/100+0x30 。 display[1]=display[4]%100 。 display[2]=display[1]/10+0x30 。 display[1]=display[1]%10+0x30 。 if(display[3]==0x30)
點擊復制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1