以下內容為我理解的單片機及程序。51單片機,簡單的可以實現交通燈功能,一般的可以驅動機器人,打印機等,可以實現溫度、壓力自動控制。復雜的可以制成例如俄羅斯方塊等游戲機。其他還有很多等待你改變世界......。
本課程以STC80C51系列芯片為基礎(STC80C52,STC80C51RC,80C52RC均可),強調實用、簡單為特點,適合沒有基礎的學生學習,后續課程陸續更新中。
適應范圍:有一點電子基礎,會用烙鐵(當然不會也可以用面包板),萬用表,這是一個硬件和軟件結合的事業,這里主要討論C程序部分.
學習前的準備工作:1.要有一塊學習版(因為新手焊接技術也不一定過關)或最小系統板。
2.要有電腦并安裝C程序編輯軟件KEIL、和燒錄芯片的軟件stc-isp-v6.86L程序見附件
3.能上網查詢相關資料,STC80C52資料見附件,相關軟件安裝及使用可搜索百度。
準備工作做完了我們來編程:
目標讓一個LED燈亮: 打開vision4軟件輸入
#include <at89x52.h> //斜杠就是注釋的意思,第一行就是將at89x52的注冊表加進來 //也可以在程序里點右鍵打開看看都有啥。編程必備語句。
void main() //程序從這開始,編程必備語句。
{ //程序包含內容的起點標記
P2_0=0; //讓芯片P2.0腳為低電平,如你的機器上P2.0腳連著LED,就可以點亮要注意學習板連接
} //程序包含內容的終點標記
以上程序就寫完了,雖然不太標準,但好用,編輯一下形成.hex文件,這就是點亮一個LED的C 程序,然后用STC-ISP-V6.86燒錄
注意事項:
1. P一定要大寫,后面一定要加分號,0是零不是英文字母O
2. vision4軟件需設置HEX輸出,在閃存---配置閃存工具---輸出---選中產生HEX文件--確定,芯片ATMEL---AT89C51即可。
3. STC-ISP-V6.86軟件,注意先點下載,然后再打開學習版電源才能燒錄成功,芯片型號必須對
是不是很簡單啊,實際編程也沒那么難,不用學太多理論,先點亮一個燈再說這樣比較有興趣。那點亮兩個呢三個呢學習版一般會配7個你都可點亮
擴展:
#include <at89x52.h>
void main()
{
P2_0=0;
P2_2=0;
}
這就是點亮兩個的程序同樣你可以同時點亮7個(一般學習版會有七個供直接點亮的LED),其實能點亮LED理論上你就可以點繼電器模塊、直流小電機、小風扇等等。
讓我們再擴展一下讓蜂鳴器響:
#include <at89x52.h>
void main()
{
P1_5=~P1_5; //假設你的學習版P1.5是蜂鳴器那就可以響了
}
注意:輸入程序一定要在純英文輸入狀態輸入這個~,它的意思是狀態翻轉從高電平到低電平再高電平循環,直接 P1_5=0是不行的,因為得震動,但發過來這個符號是可以點亮LED的,學不在多要會活用。
#include <at89x52.h>
void main()
{
P2_0=~P2_0;
}
雖然是亮了只是有些暗,為什么呢?因為其實它是在快速閃,其實讓燈亮還有正規寫法
#include "at89x52.h"
sbit led=P2^0; //將單片機的P2.0端口定義為led
void main()
{
while(1) //后面括號里的程序循環
{
led=0; //P2.0端口設置為低電平
}
}
這又是一種寫法也可以點亮LED,自己多試驗一下吧。
學習板自帶的燒錄程序也可以燒錄,好處就是可以開機直接燒不用關機,壞處是有些芯片燒不了所以建議一開始就用STC-ISP燒。再拓展一下點亮LED的方法:
#include "at89x52.h"
void main()
{
P2=0xfe; //這點亮的是P2.0口的燈,P2.1是0xfd,全亮是0x00
}
這是16進制的表示方法,以后學習復雜的程序必須用的,所以有時間看看背一下2進制、10進制、16進制的轉換,有助于以后學習。
|