日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

工程師手把手教你學(xué)習(xí)單片機(jī)(作者原創(chuàng))

第一章  認(rèn)識單片機(jī)及其如何工作

一、單片機(jī)簡單說明
目前單片機(jī)主要8位、16位、32位單片機(jī), 8位單片機(jī)應(yīng)用最為廣泛,教材也比較多,16位和32位在最近幾年也應(yīng)用的越來越廣泛.
51單片機(jī)是8位單片機(jī)中使用最早,在我國使用最廣泛的一種.常見的品牌有atmel, STC, SST, NXP(飛利浦) ,freescale(原摩托羅拉),華邦,高性能C8051F等品牌.
Intel的8031,8051早就不生產(chǎn)了,其它公司都是根據(jù)其內(nèi)核生產(chǎn)的,使用其指令系統(tǒng)和結(jié)構(gòu),但是各個品牌又增加了自己很多功能,如FLASH存儲器,內(nèi)置看門狗,AD功能等功能,各個品牌的功能也不大一樣.
作為學(xué)生或者初學(xué)者,學(xué)習(xí)51非常適合入門,資料豐富,例子較多,對以后學(xué)習(xí)其它高級的單片機(jī)是一個非常好的基礎(chǔ).
本開發(fā)板選用的是STC89C51單片機(jī),該單片機(jī)是最近幾年新出的,完全兼容MCS-51,增加了FLASH,ISP下載,大容量RAM,看門溝,內(nèi)部復(fù)位電路,EEPROM,及最高80M的運(yùn)行速度等功能.
大家如果對以上介紹的不太了解,不要緊,隨著學(xué)習(xí)和積累經(jīng)驗(yàn),就明白了.

二、單片機(jī)工作的條件
1、一個51單片機(jī)要工作需要具備哪些條件?
DC5V電源(有的單片機(jī)是3.3V),復(fù)位電路,和晶振,單片機(jī)只要有了這三點(diǎn)就可以工作了.(但是有的單片機(jī)內(nèi)部集成了復(fù)位電路或晶振,這時候外部的電路就可有可無了,比如STC單片機(jī)的內(nèi)部集成了復(fù)位電路,C8051F單片機(jī)的內(nèi)部集成了晶振電路)

復(fù)位電路,大部分51是高電平復(fù)位的(如下圖),C8051F是低電平復(fù)位的,電阻和電容要更換位置.


晶振電路:常用的電容是22P或30P,晶振選擇11.0592是為了通信的時候撥特率0誤差.大家可以找教程查查撥特率和晶振的對應(yīng)關(guān)系.


三、單片機(jī)如何編寫程序呢?
    單片機(jī)除了具備以上的硬件條件,還要有程序才能真正運(yùn)行,就象電腦需要裝操作系統(tǒng)才能用一樣的道理.
    單片機(jī)編程可以使用MCS-51匯編語言和C語言編程.其實(shí)單片機(jī)真正執(zhí)行的是BIN或HEX文件,那么BIN和HEX文件是如何得到的呢,是通過匯編語言或C語言編寫的程序,經(jīng)過專門的軟件編譯后最后生成的.
C語言的編譯軟件主要用KEIL軟件,也是最好用最常用的軟件.匯編語言的編譯軟件比較多了,常用的有WAVE軟件.
   四、單片機(jī)如何下載/燒錄程序呢?
       1、使用通用的編程器燒錄(并口燒錄,可以燒錄各種品牌的)
       2、使用下載線進(jìn)行ISP下載,(只需要2-3根線),這種下載方式非常方便,缺點(diǎn)是各個品牌的下載方式不統(tǒng)一.比如STC,SST,飛利浦的使用TXD,RXD下載,比較方便;而atmel的,只有AT89S系列的才可以下載,AT89C51的就不可以ISP下載,并且使用P15,P16,P17三個引腳下載,而且下載線要有專用的下載電路.
ISP下載的非常適合學(xué)習(xí)和實(shí)驗(yàn),而通用燒錄的適合工廠生產(chǎn).

現(xiàn)在,你已經(jīng)學(xué)會了單片機(jī)怎么使用了,休息一下!進(jìn)行第二章的講解

全部回復(fù)(11)
正序查看
倒序查看
2008-12-04 12:11
基礎(chǔ)的東西,表示支持
0
回復(fù)
ahai0306
LV.4
3
2008-12-04 12:30
@gdxizhilang
基礎(chǔ)的東西,表示支持
為什么復(fù)制上去的圖片都沒有了呢
0
回復(fù)
ahai0306
LV.4
4
2008-12-04 12:33
第二章  單片機(jī)基礎(chǔ)實(shí)驗(yàn)

一、單片機(jī)控制發(fā)光二極管實(shí)驗(yàn)

500) {this.resized=true; this.width=500; this.alt='這是一張縮略圖,點(diǎn)擊可放大。\n按住CTRL,滾動鼠標(biāo)滾輪可自由縮放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/72/67561228365123.jpg');}" onmousewheel="return imgzoom(this);">

首先學(xué)習(xí)一下硬件,拿第一路為例,R1為限流電阻,發(fā)光二極管導(dǎo)通后的壓降為Ud,那么流過此二極管的電流為(U-Ud)/R,大家可以根據(jù)二極管的大小來調(diào)整電阻大小,以保證亮度.開發(fā)板用的0805/1206發(fā)光二極管使用1K電阻即可.如果是大功率的發(fā)光管需要加驅(qū)動如三極管電路之類的,不能直接連接單片機(jī)引腳的.各種品牌的IO驅(qū)動能力不一樣的,STC89C51的IO灌電流能力是20mA.

上面發(fā)光二極管的原理是,P00為高電平(5V),D1截止,不亮;P00為低電平(0V),D1導(dǎo)通,發(fā)光.二極管控制就這么簡單,下面來編寫程序吧

C語言程序:
#include           //調(diào)用頭文件(單片機(jī)內(nèi)部的寄存器定義)
sbit  LED0   = P0 ^ 0;  //必須定義,P0 ^ 0 脫離開sbit指令是其它意思
main()         //主函數(shù)
{
  LED0=0;      //LED0發(fā)光二極管亮(P00輸出低電平)

  while(1);    //單片機(jī)在這里等待(待機(jī))
}

匯編程序:

;***********硬件I/O口定義************
LED0             EQU                   P0.0

               ORG    0000H                ;上電后程序從這里運(yùn)行
               AJMP  MAIN
              
MAIN:      
                   CLR    LED0               ;LED0發(fā)光二極管亮(P00輸出低電平)
                   SJMP   $                     ;單片機(jī)在這里等待(待機(jī))
                   END

第一個程序已經(jīng)編寫完了,編譯后下載到單片機(jī)體驗(yàn)一下吧,我以前寫過初學(xué)者的第一個單片機(jī)程序,大家可以看看:

http://blog.ednchina.com/ahai0306/19917/message.aspx

這時候大家已經(jīng)會點(diǎn)亮第一個燈了,然后大家可以隨便點(diǎn)亮其它的燈了,可以使用P0直接點(diǎn)亮8個燈了
C語言程序:
#include           //調(diào)用頭文件(單片機(jī)內(nèi)部的寄存器定義)
main()         //主函數(shù)
{
  P0=0;      //P0口的8個發(fā)光二極管全亮

  while(1);    //單片機(jī)在這里等待(待機(jī))
}

匯編程序:

               ORG    0000H                ;上電后程序從這里運(yùn)行
               AJMP  MAIN
MAIN:      
                   MOV P0    #00H              ;P0的8個發(fā)光二極管全亮
                   SJMP   $                     ;單片機(jī)在這里等待(待機(jī))
                   END

現(xiàn)在大家可以用移位指令加上適當(dāng)延時,來進(jìn)行流水燈實(shí)驗(yàn)了,大家先思考一下如何實(shí)現(xiàn)?
不明白的地方和本人交流!
QQ:464976346
http://blog.ednchina.com/ahai0306/(我的博客)
0
回復(fù)
51icjm
LV.3
5
2008-12-14 23:29
@ahai0306
第二章  單片機(jī)基礎(chǔ)實(shí)驗(yàn)一、單片機(jī)控制發(fā)光二極管實(shí)驗(yàn)[圖片]500){this.resized=true;this.width=500;this.alt='這是一張縮略圖,點(diǎn)擊可放大。\n按住CTRL,滾動鼠標(biāo)滾輪可自由縮放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/72/67561228365123.jpg');}"onmousewheel="returnimgzoom(this);">首先學(xué)習(xí)一下硬件,拿第一路為例,R1為限流電阻,發(fā)光二極管導(dǎo)通后的壓降為Ud,那么流過此二極管的電流為(U-Ud)/R,大家可以根據(jù)二極管的大小來調(diào)整電阻大小,以保證亮度.開發(fā)板用的0805/1206發(fā)光二極管使用1K電阻即可.如果是大功率的發(fā)光管需要加驅(qū)動如三極管電路之類的,不能直接連接單片機(jī)引腳的.各種品牌的IO驅(qū)動能力不一樣的,STC89C51的IO灌電流能力是20mA.上面發(fā)光二極管的原理是,P00為高電平(5V),D1截止,不亮;P00為低電平(0V),D1導(dǎo)通,發(fā)光.二極管控制就這么簡單,下面來編寫程序吧C語言程序:#include          //調(diào)用頭文件(單片機(jī)內(nèi)部的寄存器定義)sbit  LED0  =P0^0;  //必須定義,P0^0脫離開sbit指令是其它意思main()        //主函數(shù){  LED0=0;      //LED0發(fā)光二極管亮(P00輸出低電平)  while(1);    //單片機(jī)在這里等待(待機(jī))}匯編程序:;***********硬件I/O口定義************LED0            EQU                  P0.0              ORG    0000H                ;上電后程序從這里運(yùn)行              AJMP  MAIN              MAIN:                        CLR    LED0              ;LED0發(fā)光二極管亮(P00輸出低電平)                  SJMP  $                    ;單片機(jī)在這里等待(待機(jī))                  END第一個程序已經(jīng)編寫完了,編譯后下載到單片機(jī)體驗(yàn)一下吧,我以前寫過初學(xué)者的第一個單片機(jī)程序,大家可以看看:http://blog.ednchina.com/ahai0306/19917/message.aspx這時候大家已經(jīng)會點(diǎn)亮第一個燈了,然后大家可以隨便點(diǎn)亮其它的燈了,可以使用P0直接點(diǎn)亮8個燈了C語言程序:#include          //調(diào)用頭文件(單片機(jī)內(nèi)部的寄存器定義)main()        //主函數(shù){  P0=0;      //P0口的8個發(fā)光二極管全亮  while(1);    //單片機(jī)在這里等待(待機(jī))}匯編程序:              ORG    0000H                ;上電后程序從這里運(yùn)行              AJMP  MAINMAIN:                        MOVP0    #00H              ;P0的8個發(fā)光二極管全亮                  SJMP  $                    ;單片機(jī)在這里等待(待機(jī))                  END現(xiàn)在大家可以用移位指令加上適當(dāng)延時,來進(jìn)行流水燈實(shí)驗(yàn)了,大家先思考一下如何實(shí)現(xiàn)?不明白的地方和本人交流!QQ:464976346http://blog.ednchina.com/ahai0306/(我的博客)
0
回復(fù)
13147
LV.4
6
2008-12-15 09:22
@51icjm
謝謝樓主.芯片解密單片機(jī)解密
支持一下不錯!
0
回復(fù)
2008-12-17 21:20
@13147
支持一下不錯!
不錯,我真想學(xué)習(xí)這個
0
回復(fù)
2008-12-22 12:51
@luoshichen
不錯,我真想學(xué)習(xí)這個
恩,不錯
0
回復(fù)
ahai0306
LV.4
9
2008-12-27 22:07
@luoshichen
不錯,我真想學(xué)習(xí)這個
可以加我QQ:464976346  及時了解新的資料,有技術(shù)問題可以問我
0
回復(fù)
2009-01-04 12:14
很好的東西,謝了
0
回復(fù)
張偉明
LV.3
11
2009-01-09 12:08
@越來越寂寞
很好的東西,謝了
有沒有人用匯編的啊,我用匯編的,C的不會,不知道容易學(xué)嗎
0
回復(fù)
abing
LV.8
12
2009-01-10 10:39
@ahai0306
第二章  單片機(jī)基礎(chǔ)實(shí)驗(yàn)一、單片機(jī)控制發(fā)光二極管實(shí)驗(yàn)[圖片]500){this.resized=true;this.width=500;this.alt='這是一張縮略圖,點(diǎn)擊可放大。\n按住CTRL,滾動鼠標(biāo)滾輪可自由縮放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/72/67561228365123.jpg');}"onmousewheel="returnimgzoom(this);">首先學(xué)習(xí)一下硬件,拿第一路為例,R1為限流電阻,發(fā)光二極管導(dǎo)通后的壓降為Ud,那么流過此二極管的電流為(U-Ud)/R,大家可以根據(jù)二極管的大小來調(diào)整電阻大小,以保證亮度.開發(fā)板用的0805/1206發(fā)光二極管使用1K電阻即可.如果是大功率的發(fā)光管需要加驅(qū)動如三極管電路之類的,不能直接連接單片機(jī)引腳的.各種品牌的IO驅(qū)動能力不一樣的,STC89C51的IO灌電流能力是20mA.上面發(fā)光二極管的原理是,P00為高電平(5V),D1截止,不亮;P00為低電平(0V),D1導(dǎo)通,發(fā)光.二極管控制就這么簡單,下面來編寫程序吧C語言程序:#include          //調(diào)用頭文件(單片機(jī)內(nèi)部的寄存器定義)sbit  LED0  =P0^0;  //必須定義,P0^0脫離開sbit指令是其它意思main()        //主函數(shù){  LED0=0;      //LED0發(fā)光二極管亮(P00輸出低電平)  while(1);    //單片機(jī)在這里等待(待機(jī))}匯編程序:;***********硬件I/O口定義************LED0            EQU                  P0.0              ORG    0000H                ;上電后程序從這里運(yùn)行              AJMP  MAIN              MAIN:                        CLR    LED0              ;LED0發(fā)光二極管亮(P00輸出低電平)                  SJMP  $                    ;單片機(jī)在這里等待(待機(jī))                  END第一個程序已經(jīng)編寫完了,編譯后下載到單片機(jī)體驗(yàn)一下吧,我以前寫過初學(xué)者的第一個單片機(jī)程序,大家可以看看:http://blog.ednchina.com/ahai0306/19917/message.aspx這時候大家已經(jīng)會點(diǎn)亮第一個燈了,然后大家可以隨便點(diǎn)亮其它的燈了,可以使用P0直接點(diǎn)亮8個燈了C語言程序:#include          //調(diào)用頭文件(單片機(jī)內(nèi)部的寄存器定義)main()        //主函數(shù){  P0=0;      //P0口的8個發(fā)光二極管全亮  while(1);    //單片機(jī)在這里等待(待機(jī))}匯編程序:              ORG    0000H                ;上電后程序從這里運(yùn)行              AJMP  MAINMAIN:                        MOVP0    #00H              ;P0的8個發(fā)光二極管全亮                  SJMP  $                    ;單片機(jī)在這里等待(待機(jī))                  END現(xiàn)在大家可以用移位指令加上適當(dāng)延時,來進(jìn)行流水燈實(shí)驗(yàn)了,大家先思考一下如何實(shí)現(xiàn)?不明白的地方和本人交流!QQ:464976346http://blog.ednchina.com/ahai0306/(我的博客)
很不錯!!!
很合適初學(xué)者
0
回復(fù)
發(fā)