一、51單片機的P0口很特別。
二、對51單片機的操做本質上就是對寄存器的操做,對其餘單片機也是如此。庫只是一個接口,方便使用者使用而已。算法
在這裏給你們分享一下學習51單片機心得體會:
一、我從不說51是基礎,若是我這麼說,也請把這句話理解爲微機原理是基礎。框架
二、對51單片機的操做本質上就是對寄存器的操做,對其餘單片機也是如此。庫只是一個接口,方便使用者使用而已。函數
三、彙編語言在工做中不多用到,瞭解就好。學習
四、51單片機的P0口很特別。spa
五、C語言就是C語言,51單片機就是51單片機,算法就是算法,外圍電路就是外圍電路,傳感器就是傳感器,通訊器件就是通訊器件,電路圖就是電路圖,PCB圖就是PCB圖,仿真就是仿真。設計
當你之後不再使用51了,C語言的知識還在,算法的知識還在,搭建單片機的最小系統的技能還在,傳感器和通訊器件的使用方法還在,還會畫電路圖和PCB圖,固然也會仿真。 調試
七、當程序調試不如人意的時候,靜下心來好好查資料,51單片機最大的好處就是網上資料很是多,你遇到的問題別人確定也遇到過。做爲學習者,問人可能更方便點,但一直這樣是培養不出解決問題的能力的。接口
八、有些單片機初學者以爲看例程很差,以爲就等於看答案同樣有罪惡感。其實對初學者來講,看例程理解例程再看例程的註解是最好的學習途徑。作實驗作課程設計作參賽做品的時候也是能夠移植程序的,不須要本身從新實現。(固然老師佈置的做業仍是獨立完成好)事件
可是,要清楚,移植程序不等於學習單片機,最重要的是知道例程是怎樣的框架及實現方法。初始化了哪些寄存器,作了哪些引腳配置,調用了哪些函數,那些函數又是怎麼實現的,設置了哪些中斷,用到了哪些片上資源(UART、ADC等),查詢了哪些狀態,若是狀態變化(觸發事件)又會作些什麼等等。由此整理出一個流程圖並知道其實現方式,基本上這個例程就學習得差很少了信盈達嵌入式企鵝要妖氣嗚嗚吧久零就要。資源
總結51單片機之上拉電阻
(1) 用於爲OC和OD門電路,提供驅動能力。
以OC(集電極開路)電路爲例:
例如,達林頓管(其實就是複合三級管)集成塊ULN2003. 內部一路的電路如圖,就是一個集電極開路電路。
若是不加上拉電阻是沒法高電平驅動其餘器件的。由於當三極管截至市沒有電流流通的路徑,更談不上驅動了。這個跟單片機P0口加上拉電阻的原理同樣。
(2)提升高電平電位:
單片機P1口外接4×4矩陣鍵盤。另外複用P1.0~P1.3外接ULN2003控制驅動步進電機。
實驗中遇到的問題:當接入ULN2003時鍵盤沒法工做,去掉ULN2003後鍵盤工做正常。ULN2003工做正常。(注,兩個部分不一樣時工做)
問題分析:因爲鍵盤的結構,無非就是兩個金屬片的接通或斷開。可是接入ULN2003 後沒法正常工做,說明是接入ULN2003影響到了P1口電平的變化。用萬用表測的電壓,當單片機輸出高電平時,P1.0~P1.3電壓1V左右,P1.4~P1.7電壓4.3V左右,因而測AT89s52高低電平的判決電位,在1.3V左右。這樣P1.0~P1.3始終是低電平,鍵盤根本沒法實現掃描功能。
解決方法,只要擡高P1口高電平時的電位,就能夠正常工做,
1. 在P1口到ULN2003上串接電阻,起到分壓的做用,就能夠擡高電平。
2. 給P1口接上拉電阻,跟P1口內部電阻並聯,減少上拉電阻阻值,減少分得的電壓,從而擡高P0口高電平電位。
採用第二種方案能夠擡高電平到2.5V左右。鍵盤工做正常。
另外:我在作液晶顯示實驗的時候,數據線用的P0口,沒法正常工做,不顯示字符。可是亂動一下數據線就能夠完成顯示,可是顯示現象並不正常,字符不是一次寫入,而是亂動幾回才能寫徹底部內容,正常應該一次所有顯示 。緣由是因爲,個人P0口中有六個端口都外接並聯三個發光二極管。,由於從資料上查到,P0口每個端口最大能夠吸取10MA電流,總電流不能超過26MA電流。這樣算個人總電流已經到了40MA,呵呵。見笑了。因此懷疑是驅動的問題。因而去掉了幾個二極管。顯示一切正常。彷佛問題已經解決,但總以爲仍是有點問題,因而又通過幾回試驗,發現只有當P0.7端口的並聯二極管去掉一個,再在其餘端口接上一個發光二極管。此時也能夠正常顯示。可是這樣P0口吸取電流在38MA,也超過了26MA很多。因此不是吸取電流太大的問題。仔細分析當端口並聯外接三個二極管的時候等效於加了一個700歐左右的電阻,因而把二極管去掉換成一個1k電阻,液晶也沒法顯示。
通過仔細分析,我認爲,因爲P0.7是液晶忙信號的返回線路當這個端口返回高電平時說明,液晶正在處理數據,沒法接收新的數據,返回0時說明空閒,能夠接收新數據。
這樣當上拉電阻過小了,液晶返回低電平時就有可能高過1.3V(AT89s52高低電平的判決電位),單片機接收到後,不會看成低電平,固然也就沒法顯示了。(程序設計的時檢測到忙信號,繼續檢測)
總結:上拉電阻選擇也有要求,呵呵。既不是越高越好也不是越低越好。根據須要選擇。
在這裏給你們分享一下學習51單片機心得體會:
一、我從不說51是基礎,若是我這麼說,也請把這句話理解爲微機原理是基礎。
二、對51單片機的操做本質上就是對寄存器的操做,對其餘單片機也是如此。庫只是一個接口,方便使用者使用而已。
三、彙編語言在工做中不多用到,瞭解就好。
四、51單片機的P0口很特別。
五、C語言就是C語言,51單片機就是51單片機,算法就是算法,外圍電路就是外圍電路,傳感器就是傳感器,通訊器件就是通訊器件,電路圖就是電路圖,PCB圖就是PCB圖,仿真就是仿真。
當你之後不再使用51了,C語言的知識還在,算法的知識還在,搭建單片機的最小系統的技能還在,傳感器和通訊器件的使用方法還在,還會畫電路圖和PCB圖,固然也會仿真。