天天看點

51單片機下載下傳完程式後不亮_51單片機的這些學習心得,你悟出來了嗎?

在這裡給大家分享一下學習51單片機心得體會:

1、我從不說51是基礎,如果我這麼說,也請把這句話了解為微機原理是基礎。

2、對51單片機的操作本質上就是對寄存器的操作,對其他單片機也是如此。庫隻是一個接口,友善使用者使用而已。

3、彙編語言在工作中很少用到,了解就好。

4、51單片機的P0口很特别。

5、C語言就是C語言,51單片機就是51單片機,算法就是算法,外圍電路就是外圍電路,傳感器就是傳感器,通信器件就是通信器件,電路圖就是電路圖,PCB圖就是PCB圖,仿真就是仿真。

當你以後再也不使用51了,C語言的知識還在,算法的知識還在,搭建單片機的最小系統的技能還在,傳感器和通信器件的使用方法還在,還會畫電路圖和PCB圖,當然也會仿真。

6、51單片機是這個:

51單片機下載下傳完程式後不亮_51單片機的這些學習心得,你悟出來了嗎?

1.png (462.76 KB, 下載下傳次數: 4)

下載下傳附件  儲存到相冊

2016-9-18 15:24 上傳

7、當程式調試不如人意的時候,靜下心來好好查資料,51單片機最大的好處就是網上資料非常多,你遇到的問題别人肯定也遇到過。作為學習者,問人可能更友善點,但一直這樣是培養不出解決問題的能力的。

8、有些單片機初學者覺得看例程不好,覺得就等于看答案一樣有罪惡感。其實對初學者來說,看例程、了解例程、再看例程的注解是最好的學習途徑。做實驗、做課程設計、做參賽作品的時候也是可以移植程式的,不需要自己重新實作(當然老師布置的作業還是獨立完成好)。

但是,要清楚,移植程式不等于學習單片機,最重要的是知道例程是怎樣的架構及實作方法。初始化了哪些寄存器,做了哪些引腳配置,調用了哪些函數,那些函數又是怎麼實作的,設定了哪些中斷,用到了哪些片上資源(UART、ADC等),查詢了哪些狀态,如果狀态變化(觸發事件)又會做些什麼等等。由此整理出一個流程圖并知道其實作方式,基本上這個例程就學習得差不多了。

總結51單片機上拉電阻的作用:

1.用于為OC和OD門電路,提供驅動能力

以OC(集電極開路)電路為例:

例如,達林頓管(其實就是複合三級管)內建塊ULN2003. 内部一路的電路如圖,就是一個集電極開路電路。

51單片機下載下傳完程式後不亮_51單片機的這些學習心得,你悟出來了嗎?

2.png (16.25 KB, 下載下傳次數: 4)

下載下傳附件  儲存到相冊

2016-9-18 15:24 上傳

如果不加上拉電阻是無法高電平驅動其他器件的。因為當三極管截至市沒有電流流通的路徑,更談不上驅動了。這個跟單片機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高低電平的判決電位),單片機接收到後,不會當作低電平,當然也就無法顯示了(程式設計的時檢測到忙信号,繼續檢測)。

總結:上拉電阻選擇也有要求,既不是越高越好也不是越低越好,得根據需要選擇。這可能也叫,阻抗比對吧。

轉自《嵌入式資訊精選》