一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于C51單片機(jī)實(shí)現(xiàn)LED燈1s閃爍

CHANBAEK ? 來(lái)源:Zi Jin Code ? 作者: 錕醬不是醬 ? 2023-11-02 10:55 ? 次閱讀

C51使用的晶振頻率是11.0592MHz一顆LED燈接在C51的P0.0,現(xiàn)在要求設(shè)計(jì)程序,讓這顆LED燈以1s為間隔閃爍。

我們不只是設(shè)計(jì)程序,更要對(duì)這個(gè)單片機(jī)項(xiàng)目分析一下

順便看看這道題的難度~~~~~~~~~~~

順帶一提,本節(jié)課要用到單片機(jī)定時(shí)器》》看我上一篇文章,詳細(xì)介紹定時(shí)器

設(shè)計(jì)一個(gè)電路圖,單片機(jī)用80C52RC,晶振11.0592MHz,一顆LED接在P0.0

圖片

這里說(shuō)明一下,C51的IO只支持弱上拉,這就意味著單片機(jī)的IO上拉的時(shí)候只能提供很弱小的電流,這個(gè)電流可能不足以點(diǎn)亮一顆LED燈(或者這顆LED燈的亮度很低),為了讓LED正常發(fā)光,我們使用上拉的方法。這里簡(jiǎn)單介紹一下使用方法哈

圖片

當(dāng)P0.0低電平的時(shí)候LED燈導(dǎo)通,正常點(diǎn)亮,P0.0給高電平的時(shí)候LED不導(dǎo)通,熄滅

考慮到手頭的資源問(wèn)題,我使用現(xiàn)成的開(kāi)發(fā)板來(lái)完成這個(gè)程序設(shè)計(jì),這個(gè)開(kāi)發(fā)板使用的是上拉LED,LED1接在P1.0,實(shí)際電路圖修改后如下:

圖片

現(xiàn)在對(duì)程序分析一下

程序框圖

圖片

首先我們要明白,我們使用的LED是上拉模式的,P1.0 = 1的時(shí)候關(guān)閉LED,P1.0 = 0的時(shí)候點(diǎn)亮LED

既然要控制LED,這里就講一下方法

三條特殊的指令

sfr P0 = 0x80;

這條指令存放在reg52.h里面,已經(jīng)對(duì)IO組的寄存器的地址進(jìn)行定義,像P0,P1,P2這些關(guān)鍵字我們可以直接用。方便我們對(duì)IO的寄存器進(jìn)行操作,值得一提的是,IO寄存器是可以位尋址

sbit LED = P1^0

sbit指令給IO上的一個(gè)端口定義名字,比如說(shuō)給P1.0(寫(xiě)作P1^0)定義一個(gè)叫LED的名字,下次對(duì)這個(gè)IO進(jìn)行操作的時(shí)候用以下方法

sbit LED = P1^0;//這是前面的定義


LED= 1;//給P1.0IO寫(xiě)高電平
LED= 0;//給P1.0IO寫(xiě)低電平電平

此外,還可以直接對(duì)整個(gè)IO組進(jìn)行操作,方法

那么,接下來(lái)就是程序了

【1】軟件延遲實(shí)現(xiàn)

所謂的軟件延遲,就是通過(guò)執(zhí)行空代碼,實(shí)現(xiàn)延遲的效果,這種延遲實(shí)現(xiàn)的延遲有一個(gè)特點(diǎn),時(shí)間不準(zhǔn),因?yàn)閱纹瑱C(jī)里面每次執(zhí)行C語(yǔ)言下的一條操作的時(shí)間是不固定的

程序如下

#include< reg52.h >


sbit LED = P1^0;


void delay(unsigned int xms)  //調(diào)用時(shí)需提供參數(shù)xms的實(shí)際值。
{
  unsigned int i,j;   //定義無(wú)符號(hào)整型變量i、j
  for(i=0; i< xms; i++)  //后面沒(méi)帶";",下一條語(yǔ)句是循環(huán)體。參數(shù)xms延時(shí)x毫秒。
      for(j=0; j< 110; j++);  //后面帶";",表示這個(gè)for語(yǔ)句的循環(huán)體是空語(yǔ)句。
}//這個(gè)值得學(xué)習(xí),這里的代碼是延遲代碼


void main ()
{
  LED = 1;//先關(guān)閉LED燈

  while(1)
  {
    LED = !LED;//LED狀態(tài)取反
    /*
    這里說(shuō)明一下取反
    取反用“!”
    取反前,LED = 1,取反后,LED = 0
    */
    delay(1000);//軟件延遲1000ms = 1s
  }
}

圖片

這就是效果了,怎么樣,還可以吧,但是……

題目要求我們延遲1s,如此精確的提到1s,肯定是希望我們用定時(shí)器來(lái)完成這個(gè)項(xiàng)目

我想,用軟件延遲,老師應(yīng)該會(huì)給特別低的分?jǐn)?shù),而且也體現(xiàn)不出我們的能力

下面我們用定時(shí)器完成這一道題

關(guān)于定時(shí)器的用法

#include< reg52.h >
void main()
{//注意設(shè)置定時(shí)器初始值要在main函數(shù)里面設(shè)置


  TMOD = 0x01;

  /*設(shè)置定時(shí)器模式寄存器TMOD為 0000 0001
  GATE = 0
  C/T = 0
  M1 =0
  M0 = 1
  標(biāo)準(zhǔn)16位定時(shí)器
  */

  //先設(shè)置定時(shí)器初始值
  TL0 = 0x3A;//設(shè)置定時(shí)器初始值低位
  TH0 = 0x8E;//設(shè)置定時(shí)器初始值高位

  TR0 = 0;//記得一定要設(shè)置定時(shí)器開(kāi)啟

  while(1)
  {
    if (TF0 == 1)
      {//這里可以先放下你的定時(shí)器計(jì)時(shí)滿了以后要執(zhí)行的代碼

       //溢出后你需要先給你的定時(shí)器再次設(shè)置初始值
        TL0 = 0x3A;//設(shè)置定時(shí)器初始值低位
        TH0 = 0x8E;//設(shè)置定時(shí)器初始值高位

        TF0 = 0;//設(shè)置好初始值后再?gòu)?fù)位定時(shí)器
      }
  }
}

我們要設(shè)置一個(gè)標(biāo)準(zhǔn)的16位定時(shí)器,設(shè)置方法和流程參考我寫(xiě)過(guò)的文章,上面是16位定時(shí)器的設(shè)置流程

以下是程序框圖

圖片

下面是代碼

#include< reg52.h >


sbit LED  = P1^0;
unsigned char counter = 0;


void main()
{//注意設(shè)置定時(shí)器初始值要在main函數(shù)里面設(shè)置
  TMOD = 0x01;
  /*設(shè)置定時(shí)器模式寄存器TMOD為 0000 0001
  GATE = 0
  C/T = 0
  M1 =0
  M0 = 1
  標(biāo)準(zhǔn)16位定時(shí)器
  */

  //先設(shè)置定時(shí)器初始值
  TL0 = 0x4B;//設(shè)置定時(shí)器初始值低位
  TH0 = 0xF5;//設(shè)置定時(shí)器初始值高位
  TR0 = 1;//記得一定要設(shè)置定時(shí)器開(kāi)啟


  while(1)
  {
    if (TF0 == 1)
      {
        counter++;
          if(counter >200)
          {
            counter = 0;
            LED = !LED;
          }
        TL0 = 0x4B;//設(shè)置定時(shí)器初始值低位
        TH0 = 0xF5;//設(shè)置定時(shí)器初始值高位
        TF0 = 0;//設(shè)置好初始值后再?gòu)?fù)位定時(shí)器
      }
  }
}

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6058

    文章

    44822

    瀏覽量

    644853
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1593

    瀏覽量

    109190
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3272

    瀏覽量

    116747
  • C51單片機(jī)
    +關(guān)注

    關(guān)注

    12

    文章

    164

    瀏覽量

    35204
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C51單片機(jī)實(shí)現(xiàn)獨(dú)立按鍵點(diǎn)亮LED

    :stc-isp-15xx-v6.85H.exe驅(qū)動(dòng):ch341ser(適用于win10操作系統(tǒng))實(shí)驗(yàn)部分1、C51單片機(jī)實(shí)現(xiàn)流水燈實(shí)驗(yàn)2、美化你的流水燈(自加)3、
    發(fā)表于 12-13 06:37

    使用51單片機(jī)定時(shí)器中斷控制LED1S的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)定時(shí)器中斷控制LED1S的程序免費(fèi)下載。
    發(fā)表于 07-04 17:41 ?9次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>定時(shí)器中斷控制<b class='flag-5'>LED</b><b class='flag-5'>燈</b>亮<b class='flag-5'>1S</b>的程序免費(fèi)下載

    使用51單片機(jī)閃爍LED的代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)閃爍LED的代碼免費(fèi)下載。
    發(fā)表于 07-03 17:41 ?2次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>閃爍</b><b class='flag-5'>LED</b><b class='flag-5'>燈</b>的代碼免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)不同頻率閃爍1個(gè)LEDC語(yǔ)言程序?qū)嵗赓M(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)不同頻率閃爍1個(gè)LED
    發(fā)表于 11-06 17:11 ?9次下載
    使用<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b>不同頻率<b class='flag-5'>閃爍</b><b class='flag-5'>1</b>個(gè)<b class='flag-5'>LED</b><b class='flag-5'>燈</b>的<b class='flag-5'>C</b>語(yǔ)言程序?qū)嵗赓M(fèi)下載

    C語(yǔ)言||利用C51單片機(jī)編程實(shí)現(xiàn)轉(zhuǎn)向實(shí)驗(yàn)

    實(shí)驗(yàn)內(nèi)容:單片機(jī)P1口控制轉(zhuǎn)向實(shí)驗(yàn):有51單片機(jī),三個(gè)開(kāi)關(guān)(K0,K1,K2),兩組
    發(fā)表于 11-12 12:21 ?9次下載
    <b class='flag-5'>C</b>語(yǔ)言||利用<b class='flag-5'>C51</b><b class='flag-5'>單片機(jī)</b>編程<b class='flag-5'>實(shí)現(xiàn)</b>轉(zhuǎn)向<b class='flag-5'>燈</b>實(shí)驗(yàn)

    【Practical】51單片機(jī)軟件延時(shí)1S

    51單片機(jī)軟件延時(shí)1S
    發(fā)表于 11-12 14:51 ?13次下載
    【Practical】<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>軟件延時(shí)<b class='flag-5'>1S</b>

    51單片機(jī)如何延時(shí)1s,讓LED閃爍

    精確地延時(shí)1s需要準(zhǔn)確地計(jì)算,粗略地延遲1s可以自定義一個(gè)delay函數(shù),下面我們讓第一個(gè)LED延遲1s
    發(fā)表于 11-18 15:06 ?11次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>如何延時(shí)<b class='flag-5'>1s</b>,讓<b class='flag-5'>LED</b><b class='flag-5'>燈</b><b class='flag-5'>閃爍</b>

    STM32和C51單片機(jī)實(shí)現(xiàn)程序設(shè)計(jì)與仿真測(cè)試(LED閃爍

    STM32和C51單片機(jī)實(shí)現(xiàn)程序設(shè)計(jì)與仿真測(cè)試(LED閃爍
    發(fā)表于 11-20 11:36 ?26次下載
    STM32和<b class='flag-5'>C51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b>程序設(shè)計(jì)與仿真測(cè)試(<b class='flag-5'>LED</b><b class='flag-5'>閃爍</b>)

    c51單片機(jī)——led的初步學(xué)習(xí)

    #讓亮起來(lái)下面的代碼可以讓51單片機(jī)上的亮起#include <reg52.h>sbit led P2^0;void mai
    發(fā)表于 11-21 10:06 ?10次下載
    <b class='flag-5'>c51</b><b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>led</b><b class='flag-5'>燈</b>的初步學(xué)習(xí)

    51單片機(jī)如何跳出wile循環(huán)_51單片機(jī)閃爍LED

    閃爍LED 51單片機(jī)是較為簡(jiǎn)單的8位單片機(jī),意思是一次能處理8位2進(jìn)制數(shù)據(jù)。這一
    發(fā)表于 11-23 10:06 ?21次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>如何跳出wile循環(huán)_<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>閃爍</b><b class='flag-5'>LED</b><b class='flag-5'>燈</b>

    單片機(jī)led閃爍實(shí)驗(yàn)總結(jié)_Linux下單片機(jī)開(kāi)發(fā)2(C51):LED閃爍

    :/**************************************************************************************然后make 代碼沒(méi)有什么問(wèn)題就寫(xiě)入單片機(jī)中效果如下LED
    發(fā)表于 01-17 10:51 ?2次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>led</b><b class='flag-5'>燈</b><b class='flag-5'>閃爍</b>實(shí)驗(yàn)總結(jié)_Linux下<b class='flag-5'>單片機(jī)</b>開(kāi)發(fā)2(<b class='flag-5'>C51</b>):<b class='flag-5'>LED</b><b class='flag-5'>閃爍</b>

    51單片機(jī)使用C語(yǔ)言點(diǎn)亮閃爍LED

    下面是點(diǎn)亮51單片機(jī)使用C語(yǔ)言閃爍LED的的一段代碼,也是我們邁入
    的頭像 發(fā)表于 08-16 08:59 ?1.4w次閱讀

    基于89C51單片機(jī)的不同頻率閃爍1個(gè)LED源程序

    基于89C51單片機(jī)的不同頻率閃爍1個(gè)LED源程序
    發(fā)表于 05-16 09:44 ?9次下載

    基于89C51單片機(jī)的不同頻率閃爍多個(gè)LED源程序

    基于89C51單片機(jī)的不同頻率閃爍多個(gè)LED源程序
    發(fā)表于 05-16 09:43 ?4次下載

    使用51單片機(jī)實(shí)現(xiàn)延時(shí)控制LED閃爍

    這篇文章我們講解使用51單片機(jī)控制LED閃爍。那么為了方便理解,我們要從最基礎(chǔ)的講起。閃爍,
    發(fā)表于 07-11 11:39 ?6804次閱讀
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b>延時(shí)控制<b class='flag-5'>LED</b><b class='flag-5'>燈</b><b class='flag-5'>閃爍</b>