<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 專題 > 學(xué)習(xí)51單片機的基本調(diào)試經(jīng)驗

          學(xué)習(xí)51單片機的基本調(diào)試經(jīng)驗

          作者: 時間:2016-08-17 來源:網(wǎng)絡(luò) 收藏

          一、單片機的組成:

          本文引用地址:http://www.ex-cimer.com/article/201608/295633.htm

          CPU:由運算和控制邏輯組成,同時還包括中斷系統(tǒng)和部分外部特殊功能寄存器;

          RAM:用以存放可以讀寫的數(shù)據(jù),如運算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù);

          ROM:用以存放、一些原始數(shù)據(jù)和表格;

          I/O口:四個8位并行I/O口,既可用作輸入,也可用作輸出;

          T/C:兩個定時/記數(shù)器,既可以工作在定時模式,也可以工作在記數(shù)模式;

          五個中斷源的中斷控制系統(tǒng);

          一個全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實現(xiàn)單片機之間或單片機與微機之間的串行通信;

          片內(nèi)振蕩器和時鐘產(chǎn)生電路,石英晶體和微調(diào)電容需要外接。最高振蕩頻率取決于單片機型號及性能。

           

          二、I 2C串行總線的組成及工作原理

          一開始出現(xiàn)燈沒有亮的現(xiàn)象,產(chǎn)生原因是在寫信號和讀信號之間沒有延時,添加delay1(100),注意此時間不能過短,然后在SDA及SCL的賦值后面也要添加delay1(1),此處時間似乎沒有多大限制。

           

          三、I 2C串行總線的組成及工作原理-斷電保存顯示的調(diào)試

           

          1. 現(xiàn)警告AT24C02有問題,是由于編寫時的輸入法問題導(dǎo)致,此時應(yīng)該注意是在英文格式下輸入,另外數(shù)碼管的位置顯示不正確

          2. LED顯示十位出現(xiàn)閃爍不穩(wěn)定現(xiàn)象,通過調(diào)整LED中的延遲時間現(xiàn)象得到一定緩解,但問題仍然存在。若將值修改到很小則出現(xiàn)問題3;

          3. 顯示十位數(shù)字出現(xiàn)跟個位數(shù)字一樣的余輝?通過修改主函數(shù)中delay時間數(shù)問題得到解決,但是數(shù)字仍閃爍。

           

          四、時鐘程序

          #include <>格式:引用標(biāo)準(zhǔn)庫頭文件,編譯器從標(biāo)準(zhǔn)庫目錄開始搜索

          #incluce ""格式:引用非標(biāo)準(zhǔn)庫的頭文件,編譯器從用戶的工作目錄開始搜索

          1. 液晶顯示秒位變化過慢?

          問題出現(xiàn)在while下面的if語句中寫的是if(count==0),本應(yīng)為if(count==20)

          2. 液晶顯示時間在有進(jìn)位的時候不正確,在開始設(shè)置23:59:30走時,顯示的卻是按23:59:00開始走,并且在秒進(jìn)位后,分顯示的1,且時鐘也沒有進(jìn)位?

          問題原因:初始化顯示不成功,它是默認(rèn)按照00:00:00開始走的;

          解決問題:初始化shi=23,fen=59,miao=30寫在了display子函數(shù)中,應(yīng)該將其寫在主函數(shù)中。

           

          五、時鐘程序

          1. 初步調(diào)試keyscan()沒反應(yīng),因為沒有將keyscan()寫在大循環(huán)while(1)下

          2. keyscan中if(s1num!=0)應(yīng)寫在與if(s1==0)平級的地方,如果寫在if(s1==0)里頭,將會出現(xiàn)要同時按兩個鍵才會有變化,顯然不符合要求,故不響應(yīng)。

          3. keyscan中miao.fen,shi,應(yīng)該是在為-1的情況下再置為0,而開頭把miao.fen,shi設(shè)置的是uchar型,故應(yīng)改為char型。

          4. 寫完年月日顯示函數(shù)后,在日期有進(jìn)位的情況下,在23;59;59;進(jìn)位時,產(chǎn)生花屏現(xiàn)象,估計是地址指針寫完數(shù)據(jù)后沒有及時設(shè)置的問題?有待解決?

          問題出在自己寫的年月日函數(shù),不能正常讀取數(shù)據(jù)?將寫數(shù)據(jù)函數(shù)寫成了寫命令函數(shù),即將lcdwrite_date()寫成了lcdwrite_date();改后能顯示出年月日,但是年份顯示時間不正確。

          年份是四位數(shù),用uchar型顯然無法正確表達(dá),應(yīng)改用unsignedlong型,并且在write_nian()函數(shù)中也應(yīng)該注意到date類型也應(yīng)該為unsigned long型;

           

          六、萬年歷時鐘程序

          1. 初始化后,初步調(diào)試年月日進(jìn)位成功。

          2. 分開寫大小月的時候調(diào)試出現(xiàn)問題,光標(biāo)在秒位上不斷地閃爍且不移動

           



          關(guān)鍵詞: 51單片機 I2C串行總線 程序

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();