久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

51單片機(jī)學(xué)習(xí)之2-流水燈

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年10月20日   【字體:

第五集

講解了74HC573 使用方法,我在《51單片機(jī)復(fù)習(xí)筆記1(更新)》有記錄。這里略。

講解了Keil 的仿真方法。比較有用的內(nèi)容是可以用它來測(cè)試一段代碼所使用的時(shí)間,例如延時(shí)函數(shù),在需要精確延時(shí)又不想使用定時(shí)器的時(shí)候可以使用該方法。至于其他的,個(gè)人認(rèn)為還是直接下載到單片機(jī)中觀察實(shí)際情況會(huì)比較直觀。

 

第六集

51最小系統(tǒng)


 

 

復(fù)位原理:

51單片機(jī)是高電平脈沖復(fù)位,在RST引腳。復(fù)位脈沖的高電平寬度必須大于2個(gè)機(jī)器周期。為了方便計(jì)算,我們假設(shè)晶振頻率為12M,那么它的時(shí)鐘周期為1/12us(微秒)。它的一個(gè)機(jī)器周期是12*1/12=1us(微秒)。復(fù)位脈沖高電平寬度必須大于2個(gè)機(jī)器周期即2us,那么就要保證RST引腳高電平的時(shí)間大于2us單片機(jī)即可自動(dòng)復(fù)位。

 

上電復(fù)位:

當(dāng)通電時(shí),開關(guān)是斷開的,那么電流從VCC→電容→RSTR32GND。剛上電的時(shí)候,電容開始充電,充滿電后相當(dāng)于斷路,在電容充電到充滿的過程中電壓逐漸從高到低(從5V0V)。也就是說一上電,RST端得到就是高電平,當(dāng)這個(gè)時(shí)間超過2us時(shí)單片機(jī)復(fù)位,電容快充滿到充滿后RST得到是低電平,電源不斷那么RST就一直是低電平而不會(huì)一直復(fù)位。RST高電平持續(xù)的時(shí)間取決于電容充電時(shí)間.(這個(gè)電容要取多大?怎么計(jì)算的?)

 

手動(dòng)復(fù)位:

通電之后,RST會(huì)自動(dòng)復(fù)位一次,當(dāng)單片機(jī)在運(yùn)行的過程中我們需要它復(fù)位時(shí)可以斷電使之上電復(fù)位。或者按下SW0開關(guān)也能實(shí)現(xiàn)復(fù)位。當(dāng)SW0開關(guān)按下時(shí)電流從VCCR33RSTR32GND形成回路。為方便計(jì)算R33假設(shè)為300歐即0.3K,我們可以先計(jì)算R33得到的電壓是 5V* 0.3k/4.7k+0.3k))= 0.3V  R32得到的電壓為 5V*4.7k/4.7k+0.3k))=4.7V  RST端的電壓也為4.7V,那么4.7對(duì)于單片機(jī)來說也算高電平,當(dāng)按下手動(dòng)按下SW按鈕到松開肯定超過2us,所以單片機(jī)自動(dòng)復(fù)位。

 

晶振電路:

兩個(gè)電容一定要相等,取值范圍為20-50pf 越大啟動(dòng)越慢。

 

自己搭建最小系統(tǒng)要注意的地方:

EA引腳一定要接高電平即VCC,這是最容易忽略的。這個(gè)引腳是用來選擇是用片內(nèi)存儲(chǔ)器還是用片外存儲(chǔ)器。51內(nèi)部存儲(chǔ)器一般都?jí)蛭覀兪褂谩T谝郧暗膯纹瑱C(jī)需要外擴(kuò)存儲(chǔ)器。我們燒錄的程序就是存在片內(nèi)存儲(chǔ)器。

要將P0組引腳當(dāng)普通IO用時(shí),需要接10K的上拉電阻。P1-P3里面都有上啦電阻。

1  做地址/數(shù)據(jù)總線時(shí)和做輸入I/O口時(shí),p0口不用接上拉電阻。
但當(dāng)做輸出I/O口時(shí),p0口必須要接上拉電阻才可以。

P0口是集電極開路輸出,也就是OC這種結(jié)構(gòu)沒有輸出高電平的能力就相當(dāng)于一個(gè)一端接地的開關(guān)按下去就輸出低電平0V,斷開就沒有電壓是懸空狀態(tài)
至于用不用上拉電阻取決于外部電路如果要輸出高電平控制一個(gè)器件而這個(gè)器件本身又沒有內(nèi)置上拉就必須自己接一個(gè)上拉電阻如果要用低電平控制一個(gè)器件則可以不用加上拉

 

第七集

一、流水燈的設(shè)計(jì)

流水燈就是讓八個(gè)小Led的依次亮滅。先看看流水燈的電路圖。

 

 

 

 

 



這是我的實(shí)驗(yàn)板的流水燈電路圖。其中
74HC573D輸入引腳DB1DB8接在單片機(jī)的P1組引腳。74HC573LE接在P2.5引腳。

 

程序設(shè)計(jì)思路:

我實(shí)驗(yàn)板上有8個(gè)Led燈,正極接在VCC,負(fù)極接在單片機(jī)的P1引腳(這里不使用74HC573鎖存功能所以LE一直保存高電平,相當(dāng)于Led直接接在單片機(jī)的IO口)。要讓Led燈亮只需要把對(duì)應(yīng)的端口設(shè)為低電平,那么Led燈亮。依次讓P1的八個(gè)引腳給高低電平那么Led燈也會(huì)跟著暗亮。由于51單片機(jī)執(zhí)行的速度很快,所以Led燈的閃爍速度也會(huì)很快,我們?nèi)庋蹮o法看到,所以要在電平切換時(shí)適當(dāng)?shù)难訒r(shí)一下。

流水燈的程序設(shè)計(jì)有很多種方法,如按位置位、數(shù)組、函數(shù)_cror_()_crol()等,我本來我是比較喜歡用函數(shù)的方法,但后來看了一下AVR的,貌似用的最多的是 與、或、非、異或這些運(yùn)算符來操控IO口,所以我就用這種方式吧,練熟一些方便以后學(xué)習(xí)。

 

#include "reg52.h"
 

#define uchar unsigned char

#define uint unsigned int
 

 

// 用來延時(shí)

void delay ( uchar x)  

{

    uint y;

    for (; x > 0 ; x--  )

    for( y=500 ;y>0;y--);

}
 

 

void main()

{

   uchar Tmp;

   uchar i;

   while(1)

   {

      Tmp=0xFE;          //在流之前先讓第一個(gè)燈亮 1111 1110 

      for(i=0; i<8; i++)

      {

         P1= Tmp;

         Tmp = Tmp<<1;     //左移動(dòng)一位 0xFE=1111 1110 << 1 = 1111 1100

         Tmp = Tmp|0x01;   //將最后一位置1  1111 1100 | 0000 0001 = 1111 1101

         delay(100);       // 讓燈亮一段時(shí)間

      }

   }
 
}

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: www.三级 | 久久伊人av | 性色av网站 | 在线观看免费av网站 | 亚洲小说欧美激情另类 | 精品一区二区三区在线观看 | 性色av一区二区 | 日韩精品久久久久久久酒店 | 在线观看一区 | 欧美国产日韩视频 | 日日夜夜操操 | 五月天色综合 | 一区二区精品 | 91成人在线 | 特级丰满少妇一级aaaa爱毛片 | 蜜臀av中文字幕 | 欧美综合久久 | 欧美超碰在线 | 欧美日韩亚洲视频 | 婷色 | 亚洲一级黄色片 | 欧美日在线 | 天天视频黄 | 亚洲一级免费视频 | 亚洲天堂一区二区三区 | 红桃视频成人 | 亚洲 欧美 另类 综合 偷拍 | 97人人干 | 国产精品久久久国产盗摄 | 久久在线免费观看 | 黄视频在线播放 | 亚洲男人天堂网 | 亚洲国产天堂 | 中文字幕在线一区二区三区 | 午夜av在线播放 | 久草手机在线视频 | 国产午夜一区二区三区 | 免费视频一区 | 免费黄色一级 | 日本在线www| 欧美一区在线视频 |