找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6594|回復(fù): 0
收起左側(cè)

定時器控制流水燈和數(shù)碼管

[復(fù)制鏈接]
ID:152682 發(fā)表于 2016-12-23 16:50 | 顯示全部樓層 |閱讀模式
今天學(xué)習(xí)51的第二天,剛剛學(xué)了定時器,仿照例程寫了一個定時器計時控制LED燈的程序,一次性通過然后直接上數(shù)碼管
效果還不錯
聲明:板子不是金沙灘工作室的,在數(shù)碼管顯示可能和別的板子有很大的區(qū)別
先上圖
可惜的是不能上傳自己的視頻。。
下面貼代碼
定時器控制LED亮滅
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit LED = P1^0;

  6. void main ()
  7. {
  8.         uint count = 0;
  9.         LED = 0;
  10.         TMOD = 0X01;//設(shè)置T0為工作模式1
  11.         TH0 = 0XB8;        //裝初值
  12.         TL0 = 0X00;
  13.         TR0 = 1;//啟動T0
  14.         while (1)
  15.         {
  16.                 if (TF0 == 1)  //判斷T0是否溢出
  17.                 {
  18.                         TF0 = 0;//T0溢出后,清零
  19.                         TH0 = 0XB8;//重新裝初值
  20.                         TL0 = 0X00;
  21.                         count ++;
  22.                         if (count == 10) //判斷T0是否溢出達(dá)到10次,即計時200ms
  23.                         {
  24.                                 count = 0;
  25.                                 LED = ~LED;       
  26.                         }
  27.                 }
  28.         }
  29. }
復(fù)制代碼

定時器控制數(shù)碼管
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define SHUMAGUAN P0

  6. sbit dula = P2^6;
  7. sbit wela = P2^7;

  8. uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,                                //數(shù)碼管顯示編碼(1-F)
  9.                      0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  10. void show_shumaguan ( i )
  11. {
  12.         dula = 0;        //開段選
  13.         SHUMAGUAN = table[i];//送數(shù)據(jù)
  14.         dula = 1;
  15.         dula = 0;

  16.         wela = 0; //開位選
  17.         SHUMAGUAN = 0x00;
  18.         wela = 1;
  19.         wela = 0;
  20. }

  21. void main()
  22. {       
  23.         uint count = 0;
  24.         uint i = 0;
  25.         TMOD = 0X01;//選擇工作方式為1
  26.         TH0 = 0XB8;//裝初值,定時20ms
  27.         TL0 = 0X00;
  28.         TR0 = 1;//啟動T0
  29.         while (1)
  30.         {
  31.                 if (TF0 == 1)//判斷T0是否溢出
  32.                 {
  33.                         TF0 = 0;//重裝初值
  34.                         TH0 = 0XB8;
  35.                         TL0 = 0X00;
  36.                         count ++;
  37.                         if (count == 10)//判斷計時到達(dá)500ms
  38.                         {
  39.                                 show_shumaguan(i);
  40.                                 i ++;
  41.                                 if ( i == 16 )
  42.                                         i = 0;
  43.                                 count = 0;

  44.                         }
  45.                 }
  46.         }
  47. }
復(fù)制代碼

大神路過別笑!畢竟新手!還望鼓勵!謝謝!
IMG_20161223_164220.jpg

相關(guān)帖子

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表