簡單討論一下小白學習單片機所需要的軟體環境、硬體環境
///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比賽///
單片機讓很多同學覺得難,是因為單片機是軟硬體結合的產品。你需要對軟體了解,也需要對硬體了解一些,但是這不是單片機入門最關鍵的要素,大部分同學不入門最關鍵的問題是好高騖遠,另一個關鍵問題是目前市面上大部分的單片機書籍不適合入門。
作者一直提倡學習使用框架法、逆推法、一步步學習,此次也不例外。
直接了當,我們做個學習單片機的知識框架:
·單片機核心當然是必不可少的,單片機就是將電腦所擁有的大部分硬體集成到一個晶片中,當然是精簡過,但是也強悍的不得了。
·都將計算機集成了,我們考慮下,自然需要有些基礎學習單片機才能進展快,所以要了解一些模擬電路、數字電路的基礎知識,但是大家不要被這兩個名詞嚇住了,針對單片機應用來說,我們僅學習其中萬分之一的基礎知識就好。
·當然單片機學習離不開單片機編程,早期學單片機很費勁,要學習彙編語言,機器語言,感謝C語言的發明人和拓展科學家吧!他們把問題簡化,我們可以用中級語言C語言完成單片機編程,C語言是核心,這個要學會,現在甚至有些可以用高級語言或者圖形化單片機編程,但是還不夠實用化,C語言仍然是核心。
·我們用編寫單片機軟體來控制單片機硬體,所以軟體環境、硬體環境都必不可少。軟體環境包括編程平台(軟體開發平台)和調試工具(串口調試助手、TCP/IP/UDP調試助手等等);硬體環境我們要準備單片機開發板和調試工具萬用表、示波器、邏輯分析儀等。
·準備這些很麻煩,有些還比較貴,所以在公司內部和學校學習是最好的方式,另外現在有個神器-Proteus,它包含了單片機編程平台、硬體仿真、硬體調試工具,作為初學者可以從proteus入手學習單片機,事半功倍。
·通訊協議是重點、重點、重點!單片機核心與外部模塊、晶片通訊,都要有通訊協議才行,要用幾根線與外部連線,要發送什麼數據...
嚮導的專欄從來不是勸退專欄,而是想盡各種辦法讓零基礎、非專業的同學入門。
不要被上面的英文單詞或者專業術語嚇住了,實際上框架羅列出來,是讓大家有個清晰的認識,知道單片機系統是什麼。
大部分不適合入門的最大的問題就是無框架、跳躍式講解,任何一個專業術語,都有辦法解釋清楚,一篇文章不夠100篇!
僅以此篇,作為單片機入門專欄的總目錄。
總目錄:
第一篇,單片機入門系列
嚮導:D1.1單片機入門第一課
嚮導:D1.2單片機入門第二課程序語言框架
嚮導:單片機入門框架三學習思路代碼結構流程圖與分析工具
嚮導:單片機核心概念1---定時器
嚮導:PM10單片機調試方法與技巧軟體工具使用
第二篇,進階工程師內容
嚮導:E2.1單片機開源框架--時間片輪詢
嚮導:E2.2單片機開源框架--時間片輪詢--思路
附錄
嚮導:單片機學習方法與步驟
嚮導:代碼分析工具understand與實用化配置
嚮導:玲瓏劍與生鏽刀--串口調試利器
嚮導:嚮導單片機訓練營--開源資料
嚮導:最簡潔的單片機狀態機模型(X-狀態機)
嚮導:單片機--學習全流程框架(初稿)
待補充...
聲明:
文中所有論點、結論皆根據作者經歷經驗總結,限於知識結構、層次、經歷局限性,必然有不少偏頗,甚至部分內容偏激,作者所有的文章也是試錯的過程,歡迎批評斧正,如有不同意見或建議,請與討論區提出討論。
1.數碼管靜態與動態的原理
1.1靜態
概念:每個數碼管必須接8位數據線。當送入一次字形碼後,可保持不變,直至送入新的為止。
優點:CPU占用時間少
缺點:硬體電路複雜,成本高
1.2 動態
特點:將所有數碼管的段選線並聯,由位選線決定哪一個數碼管工作。同一時刻,僅有一個數碼管工作。
動態顯示的亮度要差一些,所以選擇限流電阻時,應略小於靜態顯示電路中的電阻。
2.中斷
2.1概念:略
2.2中斷過程:1.中斷髮生;2.中斷服務;3.中斷返回(自己看書本的描述,記一下)
2.3相關寄存器
2.3.1TCON
TR0=1,定時器0啟動;TF0:定時器0溢出中斷標誌位
2.3.2SCON
TI、RI:收發中斷標誌位,需軟體清零。
2.3.3中斷允許控制
EA:中斷總開關
如果要打開定時器中斷,要開兩個中斷!先EA=1,再ET0=1。
如果要打開串口中斷,則是先EA=1,再ES=1。
2.3.4中斷優先級控制
2.4定時器/計數器
51單片機的定時器,有4種工作方式,通過寄存器M1,M0來設置。
2.5程序(僅摘錄關鍵部分)
2.5.1定時器初始化部分
TMOD=0x01;
TH0=(65536-N)/256;
TL0=(65536-N)%256;
EA=1;
ET0=1;
TR0=1;
2.5.2中斷服務
void T0_time()interrupt 1
{
TH0=...;
TL0=...;
num++;
}
如果時使用定時器1,則是interrupt 3。
2.5.3 延時函數
void delayms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
第四章 鍵盤
1.鍵盤分類
1.1編碼鍵盤
硬體部分已經幫鍵盤編好碼了
1.2非編碼鍵盤
需要軟體去編碼和判斷哪個按鍵按下。其中常見的有獨立鍵盤和矩陣鍵盤。
2.去抖
去抖的關鍵是加delay函數,看程序就很好理解了。
3.獨立鍵盤程序編寫
sbit s1=p3^0;
if(s1 == 0)
{
delayms(0);//去抖
if(s1 == 0)
{
...
while(s1!=0)//等待按鍵放下
}
}
4.矩陣鍵盤編寫
假設,先檢測第2列
P3=0xfd;//關鍵1:0xfd即(11111101),掃描第2列
temp=P3;//
temp=temp&0xf0;//關鍵2:讀取第1、2、3、4行
if(temp!=0xf0)
{
delayms(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case ...//逐行排除,看看是誰被按下了。
}
}
矩陣鍵盤特點:節省I/O口資源,但編程複雜。