為什麼自己設計不出來單片機程序?該怎麼做?

渙量iMyy2912


學習單片機編程,需要有基礎,需要有方法。

一,寫不出單片機程序的原因有哪些?

C語言掌握不夠,常用的語法不理解.

單片機知識點沒有掌握。

單片機編程沒有入門。

第一,要一定C語言基礎,單片機C語言和普通C語言語法差異

1.調用的頭文件不一樣。

2.編譯器的不同會造成單片機C程序編寫過程中細節的差異,比如unsigned int類型,在某些編 譯器當中是與unsigend char一樣的位寬。


第二,要有一定的硬件知識。理解普通的三極管,高低電平,電壓電流等基本概念。這個能看得懂原理圖,從事單片機開發,會需要調試程序,需要通過一定的工具,萬用表,示波器來分析自己的軟件是否正常。

第三。必須要有一塊合適的開發板。資料和教程要齊全,沒有開發板,就沒有練習和實操的機會和平臺,更談不上進步。

單片機分為很多種,8位單片機,16位單片機,32位單片機,從未接觸過單片機開發的初學者,在選擇開發板時,建議用從8位單片機如AT89S51作為單片機入門芯片。

對於基礎知識較薄弱的同學,不建議一開始就學習stm32,因stm32學習難度會大很多,知識點也更多,學不好會打擊積極性。

二,能熟練編寫單片機程序,有什麼方法?

首先,單片機的入門級別的知識點:

1,開發環境的搭建和使用,下載程序的操作。這一塊非常重要,這個學不會,後面的單片機編程無從談起。

2,端口IO輸出,實操LED燈的亮滅,流水燈實驗。

3,端口IO輸入,實操按鍵的輸入高低電平變化,操作LED的亮滅。

4,串口的輸入輸出,掌握ASCII碼的字符與0-255數字的對應關係,並學會利用串口進行調試信息打印,掌握利用串口調試代碼的方法。(這種調試方法很重要,很多單片機不能在線仿真,只能用串口調試)

5,掌握定時器功能。掌握普通定時器中斷函數的寫法和用法,如果對應的單片機包含PWM設置,也必須掌握PWM的配置和使用。

6,掌握IIC時序操作,很多常用芯片都用IIC通信,比如EEPORM存儲芯片,掌握後讀寫相關參數.存儲的數據斷電不丟失。

7,一般開發板都會有實時時鐘芯片如DS1302,掌握其用法,可以在綜合練習中用到。

一定要熟練掌握以上知識點,初學者心中要形成自己單片機開發的知識樹。


接下來說下

第一,多學習和多看教學資料和視頻,目前51級別的開發板非常多,價格實惠,而且有很多優質的教學視頻。可以作為入門教程。

第二,推薦郭天祥的入門書籍《手把手教你學單片機C語言》,以及他的教學視頻《十天學會單片機編程》,我就是看了這本書和視頻,然後不斷練習,才踏入單片機編程領域的。

第二,多練習,想需要單片機,看得懂不一定寫得出來,一定要跟著視頻書籍和老師的要求,自己一點點的編寫出來,並每個知識點做好記錄。並思考總結,消耗吸收變成自己的知識。

綜合實驗

根據自己所學習的知識點,完成一個帶定時鬧鐘功能的實時時鐘,

1 通過按鍵設置鬧鐘,需要將鬧鐘時間存儲在EEPORM中。

2,通過按鍵修改時間,對ds1302的操作,時間計數的累加,

3,通過切換鬧鐘-時間顯示模式,比如長按,短按鍵的搭配等

4,數碼管在不同的模式下分別顯示時間和鬧鐘。

按照我文中的要求來進行操作和學習,最後完成實時時鐘的這個實驗,那麼您的單片機編程能力一定得到很大提升!


科技電小二


設計單片機程序並不難,可以從簡單的開始

設計單片機程序其實並不難,可以先從基礎開始,然後慢慢深入就可以了。當然了,你需要有一定的電子基礎知識,也要有一定的C語言基礎(彙編語言現在用得比較少了)。

單片機其實就是一個“微型”電腦,它集成CPU、RAM、ROM、I/O,還集成PWM、AD、定時器、中斷、UART、SPI等等的各種外設。

如果你有一定的電子基礎知識和C語言基礎,只要花上一兩個月的時間,絕對可以自己設計出單片機程序來。

選擇合適的單片機入門很重要

  • 首先需要跨出第一步,摸到門路,實現從“0”到“1”的轉變;如果找不到門,怎麼努務,怎麼花時間都是沒用的。最好有同事、朋友指導一下,這樣就更容易入門了,可以少走很多彎路。摸清門路後,再努力一兩個月,基本上就可以單獨編寫簡單的程序了。
  • 單片機的品牌很多的,不同的品牌都會有一些差異,如果在公司上班,最好選擇公司常用的單片機品牌進行入門學習,這樣可以得到同事、還有代理商和原廠FAE的幫助。Demo Kit,開發環境都很容易搞定。如果沒有同事、朋友幫助,需要全靠自學的話,可以選擇51單片機,網上資料很多,學起來也容易。

如果數字電路、摸擬電路和編程基礎都較好,可以直接從32位單片機起步,STM32就是很好的入門平臺,資源很多,也相當火爆。

持之以恆,絕不能三天打漁兩天曬網

如果下定決心學習單片機,最好制定好學習計劃並嚴格執行。這個就像學英語一樣,也是要靠堅持的。下面是本人建議的一個計劃:

  • 選擇好適合單片機入門平臺,選擇合適的開發板,搭建開發環境,實現單片機最小系統運行。
  • 學會單片機時鐘系統的配置,學會上電覆位配置和初始化。
  • 學會GPIO的輸入、輸出配置,點亮LED,讀取按鍵輸入。
  • 學會按鍵控制LED點亮的和熄滅,實現LED跑馬燈功能。
  • 學會定時器的使用,使用定時器計時,實現LED跑馬燈。
  • 學會數碼管驅動顯示
  • 完成自己的第一個作品:電子鐘。
  • 學習用ADC通過NTC測量溫度。
  • 學習外部中斷,通過外部中斷實時響應按鍵輸入。
  • 學習PWM,通過PWM控制LED的亮度和驅動蜂鳴器發聲
  • 完成自己的第二個作品:帶溫度顯示的小鬧鐘。
  • 學習IIC,進行EEPROM讀寫操作。
  • 學習UART,與電腦通過串口進行通訊。

如果這些都學好了,基本上可以自己設計單片機程序了。開發一般的電子產品已經不成問題。基礎打好了,後面可以繼續深入的學習,進一步提升自己。

歡迎關注@電子產品設計方案,一起享受分享與學習的樂趣!關注我,成為朋友,一起交流一起學習

  • 記得點贊和評論哦!非常感謝!

電子產品設計方案


跳出教材的誤導,直接寫程序!

第一個程序,端口線拉高,點亮Led。

案例學習法,照視頻材料,下載樣例程序。

試圖修改參數或增刪語句,看看效果。

單片機教材的學習順序坑死人不償命。

運行一兩個程序後,再補什麼端口和外圍電路。

逐漸瞭解單片機資源。

初學者,不必知道指令系統,存儲結構,接口電路等等。

案例學習法,在樣例基礎上增刪,看得見摸得著,事半功倍。

比如時鐘中斷,不學中斷系統不學定時寄存器也行,把樣例程序的定時設置看成子函數調用就好了。

多把心思放在程序結構,計算模型,控制流程,子程序擴展,資源利用。。。

不用把語法和技巧放在心上!!!

傳統單片機教材害死人,學一學期不知單片機程序為何物。買個單片機板子,帶樣例程序的,第一天不出半小時,自學就能編第一個簡單程序。

不要以為我自己是這麼過來的才鄙視大學單片機教學。。。😄,我就是大學老師!按傳統教材學的,又教學生。。。後來發現沒必要那樣漫長的學習過程。倒過來學,先下載程序運行,後講什麼是程序,再講軟硬件是怎麼工作的。

初學者,不知道指令系統又何妨?你又不用匯編寫程序。不知道中斷系統又何妨?我知道怎麼處理外部事件就行了。不知道通信口又何妨?我調用子函數就好了。不熟悉語法又何妨?編譯一下就知道哪裡錯了。

再重複一遍,案例學習法,拋棄傳統教材。


散居獵人


設計編寫單片機程序是一個漸進的過程不可一蹴而就,畢竟單片機程序是與硬件有密切關係的,我們一般稱為單片機程序叫底層硬件驅動程序。編寫程序不但要對軟件要熟悉而且對硬件也要熟悉才行,所以對於我們從事單片機技術的人員來說能夠編寫出沒有“bug”的優秀程序需要具有“軟硬兼施”的本領,否則編寫的程序就會出現問題。下面根據我學習單片機來談談我對這個問題的體會。

設計不出來單片機程序的原因

我認為初學者感覺設計不出真正的單片機程序是一個普遍的問題。我先說說剛學單片機的朋友為什麼設計不出單片機程序,首先是對軟件知識和硬件知識有“短板”。因為程序的設計少不了使用程序語言,現在比較流行的單片機編程語言是C語言,如果在編程語言方面有欠缺的話編程會受到影響這是其一,其二是硬件方面,我們要知道單片機的外設硬件方面的一些工作原理,比如按鍵、顯示器件、各種驅動芯片等,這些都與數字電路和模擬電路知識有關,如果這方面有欠缺應及時加強。

其次是對單片機程序與硬件的內在聯繫不清楚。我們編寫的程序是與單片機外設的硬件緊密相聯繫的,如果不知道用編程語言的哪種處理方法或技巧去控制硬件工作,那麼就無法編寫出控制程序。比如編寫一個測溫度的程序,如何能採集到溫度、如何編寫把溫度數據轉換成數碼管或者液晶能夠顯示的程序並分理處小數點等等都有一定的處理方法和技巧。

再次是缺乏設計編寫程序的經驗。有句話叫“萬事開頭難”,我們在做許多事情時剛開始都會感覺到無所適從,我認為這是很正常的現象,我建議剛開始學習時我建議從最簡單的開始,比如從控制LED小燈開始再到各種花樣的“跑馬燈”小程序、模擬交通燈程序、具有數碼管倒計時的模擬交通燈程序等,通過這樣的循序漸進,由簡入難地訓練經過一段時間就會見到成效;最後一點我認為是缺乏整體佈局的能力。因為一個完整的程序除了需要主程序外,還要有許多子程序。要完成整個控制流程就要對各個程序之間的不斷調用來實現,這就要在程序的編排上要考慮周全。所以設計編寫也就是對整個控制流程有整體的把控才行。

如何能編寫出合格的單片機程序

其實設計單片機並不是很難能,那麼如何才能設計編寫出合格的單片機程序呢?我認為要從以下幾個方面。一方面除了把我們自己感覺有“短板”的地方補齊外,另一方面我感覺還要做到以下幾點:


第一點就是在設計程序時先要對控制的對象做全面的分析,也就是要把解決的問題的條件、初始化的數據、輸入與輸出的信息以及要達到的控制目的都要知道,雖然達不到“庖丁解牛”的那種嫻熟的程度,最起碼要做到心中有數。

第二點是在設計程序時要確定程序的“算法”,這個詞聽起來有點高大上,其實我們在設計程序時要知道根據控制的要求和我們所有的條件來確定我們所用的計算方法。我在學C語言時經常聽老師說:算法是程序的靈魂這一句話,當時剛接觸對這句話並不理解,現在回頭看來這句話是很有道理的。這就像我們炒菜一樣,如果我們能按菜譜去做就非常好吃,若是隨心所欲去做菜那肯定難以下嚥,我認為在這方面兩者有“異工同曲”之處。

第三點是要善於繪製流程圖,這一點在我們剛學習設計程序時我感覺很有必要。繪製流程圖可以直觀地體現我們編寫程序的思路,它也是我們設計程序時的依據。從一定程度上說能繪製完一個控制流程圖也就離設計出程序不遠了。

第四點就是要抱著“他山之石,可以攻玉”的心態去多看別人的程序,學習別人的設計編寫程序的技巧。我們知道C語言的可移植性很好,看到有非常好的子程序只要略微修改一下就可以為我所用,這樣有時會節省很多時間。

我認為只要通過以上幾點堅持下去,我們編寫出沒有“bug”的合格程序應該是水到渠成的事情了!

以上就是我對這個問題的回答,歡迎朋友們參與討論。敬請關注電子及工控技術,歡迎大家轉載、點贊!


電子及工控技術


你好 ,我來回答一下。

熟悉單片機的原理、結構;學好數電、模電,為設計電路打好基礎;熟練使用C語言,多學習他人的程序;對操作系統原理有一定的瞭解,Protel有一定的基礎;培養實際動手調試電路的能力。一般可以通過專業的書籍和課程進行持之以恆的學習,注意理論與實踐並重,遇到問題耐心檢查並適當投資購買實驗器材。

自己買一套實驗51單片機。多練習一下。

希望對你有幫助!



自動化電控戴哥


找一種單片機,看他的數據手冊。它能做哪些功能都有例子!需要不同功能,用不同的單片機。C語言這種藏著掩著的高級語言其實不太好理解單片機的工作情況,還不如用匯編指令來寫,一步一步都知道在幹什麼。功能變複雜以後,才需要高級語言來整理,複用。[害羞]


下次再說吧1236


單片機學習不單單是編寫程序,往往需要搭建實物平臺作為練習,我們上學時都是51的開發板,都需要專用下載線,現在有arduino uno開發板搭建簡單程序易學一根usb線就能往單片機下載程序,擴展也很簡單都是模塊話的焊上排針用杜邦線都可以連接起來




農夫差點甜


如果不是電子專業學生,建議買本《單片機原理與實戰》學習一下,然後在某寶上買塊stm32單片機學習板跟著練習。一般情況下,應該在上個月內可以掌握基本的單片機軟件開發。

花點錢找個培訓機構學習一下也可以,主要是可以和大家相互討論和學習。



方覺閒


從理論過渡到實際,向來是比較複雜的。自己設計程序,首先要對自己的設計目的有清晰的認識,對過程中涉及的軟件及硬件都有一定程度的瞭解。其次要多看一些成品程序,爭取能夠深度理解,熟練掌握。

要充分了解硬件的規格與使用說明,在與軟件配合時不容易出錯。

在程序設計過程中,清晰梳理程序中的邏輯關係,用適當的語句完成想達到的功能,符合所用語言的規定。做到條理清晰,邏輯通達。


星痕閃爍


不知道你硬件水平怎麼樣,學單片機要有點硬件基礎,要不然不知道怎麼控制,有些功能沒有硬件看不到現象,就不容易理解。

買一個單片機開發板也可以,先改程序,換io控制,改參數,多改,熟能生巧。

以後自己在慢慢寫,有些問題暫時不理解,以後慢慢就理解了。


分享到:


相關文章: