本文主要是關于51單片機的相關介紹,并著重對51單片機的原理及其應用進行了詳盡的闡述。
51單片機
51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8004單片機,后來隨著Flash rom技術的發展,8004單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用于工業測控系統之中。很多公司都有51系列的兼容機型推出,今后很長的一段時間內將占有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是51系列的單片機一般不具備自編程能力。
功能
·8位CPU·4kbytes程序存儲器(ROM) (52為8K)
·128bytes的數據存儲器(RAM) (52有256bytes的RAM)
·32條I/O口線·111條指令,大部分為單字節指令
·21個專用寄存器
·2個可編程定時/計數器·5個中斷源,2個優先級(52有6個)
·一個全雙工串行通信口
·外部數據存儲器尋址空間為64kB
·外部程序存儲器尋址空間為64kB
·邏輯操作位尋址功能·雙列直插40PinDIP封裝
CPU:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能寄存器;
RAM:用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據;
ROM:用以存放程序、一些原始數據和表格;
I/O口:四個8位并行I/O口,既可用作輸入,也可用作輸出
T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;
五個中斷源的中斷控制系統;
一個全雙工UART(通用異步接收發送器)的串行I/O口,用于實現單片機之間或單片機與微機之間的串行通信;
片內振蕩器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振蕩頻率為6M—12M。
學習
作為一個初學者,如何單片機入門?
實際上,其實不需要多少東西,會簡單的C語言,知道51單片機的基本結構就可以了。一般的大學畢業生都可以了,自學過這2門課程的高中生也夠條件。設備上,一般是建議購買一個仿真器,例如,的“雙功能下載線”就具有良好的穩定性和較快的下載速度,上位機可擴展,可以下載更多的單片機及嵌入式芯片。通過實驗,這樣才可以進行實際的,全面的學習。日后在工作上,仿真器也大有用處。還有,一般光有仿真器是不行,還得有一個實際的電路,即學習板,如圖,即為,單片機最小系統。
學習板以強大的接口為主,單片機的學習分兩方面,一方面是單片機的原理及內部結構,另一方面是單片機的接口技術。這些都是需要平時多積累,多動手,多思考,這樣才能學好單片機技術。
注:“雙功能下載線”在百度文庫里有詳細的使用說明,并且上位機會定期更新以支持更多的單片機。
單片機學習的4個階段
一、整體了解
要知道 單片機是什么?單片機有何用?如何系統學習單片機?單片機系統設計的流程是怎樣的,需要掌握哪些輔助軟件?
了解這些之后,我們的學習就有了目標和方向。
二、揭秘 單片機很難學,是因為其內部結構、編程語言抽象,且實際應用中與其他電子技術和元器件知識相互關聯,需結合起來一起設計開發產品。所以,第二階段要了解單片機的內部結構是怎樣的?單片機開發經常會用到哪些電子技術和元器件知識?如何將一條條編程指令組合成一段段有效的程序?
三、解密 之所以單片機能成為控制核心,設計出包羅萬象的應用系統來,是因為開發者利用了單片機提供的種種功能及各種外設。所以,第三階段我們要掌握單片機的各種功能,再加上諸如傳感器、模數轉換、掃描顯示、串行、中斷的應用思維,結合更多的元器件、電子電路知識,逐個學習、體會實際的單片機系統的秘密。
四、遠航 通過以上三個階段,讀者基本就可掌握單片機的應用了。但要設計出豐富的單片機系統,解決復雜的實際問題,還需要了解更多的外設知識及其與單片機的聯系(如電動機、各類
存儲器、繼電器、紅外管等)。這些需要不斷的學習和積累。有時候,接到一些開發任務,就需要你針對這個任務自覺地去搜集、學習相關知識,在實踐中不斷學習和提高。
51單片機怎么驅動直流電機c語言
有3種方案:
第一種,通過PWM脈寬調制輸出方法控制轉速,控制占空比的大小可以實現調速!
第二種,通過AD轉換的方法控制直流電機的電壓
第三種,用xtr115程控電流源來控制直流電機(類似第二種方法)
如果以上的驅動能力不夠的話再加上一個電壓跟隨器!
一下以L298電機驅動電路為例。
L298是SGS公司的產品,L298N為15個管角的單塊集成電路,高電壓,高電流,四通道驅動,設計用L298N來接收DTL或者TTL邏輯電平,驅動感性負載(比如繼電器,直流和步進馬達)和開關電源晶體管。內部包含4通道邏輯驅動電路,其額定工作電流為 1 A,最大可達 1.5 A,Vss 電壓最小 4.5 V,最大可達 36 V;Vs 電壓最大值也是 36 V。L298N可直接對電機進行控制,無須隔離電路,可以驅動雙電機。
當使能端為高電平時,輸入端IN1為PWM信號,IN2為低電平信號時,電機正轉;輸入端IN1為低電平信號,IN2為PWM信號時,電機反轉;;IN1與IN2相 同時,電機快速停止。當使能端為低電平時,電動機停止轉動。
在對直流電動機電壓的控制和驅動中,半導體功率器件(L298)在使用上可以分為兩種方式:線性放大驅動方式和開關驅動方式在線性放大驅動方式。
半導體功率器件工作在線性區優點是控制原理簡單,輸出波動小,線性好,對鄰近電路干擾小,缺點為功率器件工作在線性區,功率低和散熱問題嚴重。開關驅動方式是使半導體功率器件工作在開關狀態,通過脈調制(PWM)來控制電動機的電壓,從而實現電動機轉速的控制。
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit MOTOR_A_1=P3^6;
sbit MOTOR_A_2=P3^7;
sbit k1=P1^0; //定義k1為p1.0口
sbit k2=P1^1; //定義k2為p1.1口
sbit k3=P1^2; //定義k3為p1.2口
sbit k4=P1^3; //定義k4為p1.3口
uchar T=0; //定時標記
uchar W=0; //脈寬值 0~100
uchar A=0; //方向標記 0,1
uchar k=0; //按鍵標記
uchar i=0; //計數變量
uchar code table1[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code table2[]={0xfe,0xfb,0xfd,0xf7};
void delayms(uint t);
void disp(void)
{
P2=table2[3];
P0=table1[W]; //顯示占空比個位
delayms(1); //延時1ms
P2=0xff; //P0清1
P2=table2[2];
P0=table1[W/100]; //顯示占空比百位
delayms(1); //延時1ms
P2=0xff; //P0清1
P2=table2[1];
P0=table1[W/10]; //顯示占空比十位
delayms(1); //延時1ms
P2=0xff; //P0清1
P2=table2[0];
P0=table1[A]; //顯示方向
delayms(1); //延時1ms
P2=0xff; //P0清1
}
void init(void)
{
//啟動中斷
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
//設置定時時間
TH0=0xff;
TL0=0xf6;
}
void timer0() interrupt 1
{
//重置定時器時間
TH0=0xff;
TL0=0xf6;
T++; //定時標記加1
disp(); //數碼管顯示
if(k==0)
{
if(T》W)
MOTOR_A_1 =0;
else
MOTOR_A_1 =1;
}
else
{
if(T》W)
MOTOR_A_2 =0;
else
MOTOR_A_2 =1;
}
if(T==100)
T=0;
}
void delayms(uint t)
{
uchar j;
while(t--)
{
for(j=0;j《250;j++) //循環250次
{
_nop_(); //系統延時
_nop_(); //系統延時
_nop_(); //系統延時
_nop_(); //系統延時
}
}
}
void key(void) //按鍵判斷程序
{
if(k1==0) //按鍵1按下
{
while(k1==0); //按鍵1抬起
if(W==100) //如果脈寬為100
W=0; //脈寬置0
else
W+=1; //否則加1
}
else if(k2==0) //按鍵2按下
{
while(k2==0); //按鍵2抬起
if(W==0) //如果脈寬為0
W=100; //脈寬設置成100
else
W-=1; //否則減1
}
else if(k3==0) //按鍵3按下
{
while(k3==0); //按鍵3抬起
A=!A; //方向標記取反
k=!k; //按鍵標記取反
}
else if(k4==0) //按鍵4按下
{
while(k4==0); //按鍵4抬起
W=0; //脈寬清0
}
}
void main(void)
{
init(); /////////系統初始化
while(1)
{
if(k==0)
MOTOR_A_2=0;
else
MOTOR_A_1=0;
key(); ////////查詢按鍵
}
}
? ? ? ? 結語
關于51單片機的相關介紹就到這了,如有不足之處歡迎指正。
評論