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

標(biāo)題: 單片機(jī)模擬交通燈 數(shù)碼管計(jì)時(shí) 定時(shí)中斷源程序 [打印本頁(yè)]

作者: 心律襯酒紅    時(shí)間: 2021-5-1 22:35
標(biāo)題: 單片機(jī)模擬交通燈 數(shù)碼管計(jì)時(shí) 定時(shí)中斷源程序
模擬交通燈 數(shù)碼動(dòng)態(tài)顯示 定時(shí)器定時(shí)中斷 親測(cè)好用
可以給學(xué)習(xí)定時(shí)中斷和數(shù)碼管朋友提供參考

單片機(jī)源程序如下:
  1. #include "reg52.h"
  2. #include "intrins.h"
  3.    typedef unsigned char u8;
  4.    typedef unsigned int u16;
  5.    
  6. #define led P3
  7. #define xianshismg P1
  8.           sbit smgdt=P0^0;          //數(shù)碼管動(dòng)態(tài)
  9.         sbit smgdt1=P0^1;
  10.         sbit smgdt2=P0^2;

  11.         sbit green30=P3^0 ;
  12.         sbit red31=P3^1;                                                 
  13.                                                                                          
  14.         sbit green32=P3^2;                                               
  15.         sbit yello33=P3^3;                                                 
  16.         sbit red34=P3^4;


  17.         sbit green35=P3^5;                                         
  18.         sbit yello36=P3^6;                                         
  19.         sbit red37=P3^7;

  20.         sbit green20=P2^0 ;
  21.         sbit red21=P2^1;
  22.   u16 daojishi=0;
  23.   u8 disdelay [8];

  24.   u8 code smg[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
  25.   0x7d,0x07,0x7f,0x6f,0x77,0x7c,
  26.   0x39,0x5e,0x79,0x71,0x00};


  27.              void delay(u16 i)
  28.    {
  29.    while(i--);
  30.    }


  31.    void time0init ()                //t0中斷初始化
  32.    {
  33.   EA=1;                                //總開(kāi)關(guān)                   IE
  34.   ET0=1;                        //t0中斷允許位           IE

  35.   TR0=1;                        //t0計(jì)數(shù)允許位           TCON

  36.   TMOD|=0X01;                //設(shè)置定時(shí)器1和0的工作條件 方式和13/16/8位        TMOD          
  37.                                //為了不改變其他位用或運(yùn)算 TMOD|=0X01;
  38.   TH0= 0xfc;                //TH和TL都是對(duì)t0進(jìn)行賦初值 因?yàn)閠0只有溢出時(shí)才會(huì)發(fā)生中斷
  39.   TL0 =0x18;
  40.    }

  41.    


  42.            void ngfg( )                  //哪個(gè)
  43. {                   u8 i;
  44.       
  45.          for(i=0;i<8;i++)
  46.          {
  47.                 switch(i)
  48.              {       
  49.                 case 0:
  50.                 smgdt=0;smgdt1=0;smgdt2=0;break ;
  51.         case 1:
  52.                 smgdt=1;smgdt1=0;smgdt2=0;break ;
  53.                 case 2:
  54.                 smgdt=0;smgdt1=1;smgdt2=0;break ;
  55.                 case 3:
  56.                 smgdt=1;smgdt1=1;smgdt2=0;break ;
  57.                  case 4:
  58.                  smgdt=0;smgdt1=0;smgdt2=1;break ;
  59.              case 5:
  60.                  smgdt=1;smgdt1=0;smgdt2=1;break ;
  61.                  case 6:
  62.                  smgdt=0;smgdt1=1;smgdt2=1;break ;
  63.                 case 7:
  64.                 smgdt=1;smgdt1=1;smgdt2=1;break ;
  65.              }
  66.          
  67.           xianshismg=disdelay[i];
  68.           delay(100);
  69.           xianshismg=0x00 ;
  70.           }
  71. }


  72.    void main()
  73. {   
  74.    time0init ();
  75.    daojishi=1;
  76.              

  77.   while(1)
  78.    {  
  79.      

  80.       if(daojishi==71)
  81.       {
  82.             daojishi=1;
  83.           }
  84.          if(daojishi<31)
  85.      {
  86.           disdelay[0]=smg[(30-daojishi)/10];
  87.           disdelay[1]=smg[(30-daojishi)%10];
  88.           disdelay[2]=0x00;
  89.           disdelay[3]=0x00;

  90.           disdelay[4]=0x00;
  91.           disdelay[5]=0x00;
  92.           disdelay[6]=0x00;
  93.           disdelay[7]=0x00;

  94.            ngfg( );

  95.            led=0xff;                //所有燈初始化
  96.            green20=1 ;
  97.        red21=1;



  98.            green35=0;
  99.        green20=0;
  100.            red31=0;
  101.            red34=0 ;
  102.             
  103.          }
  104.          else if(daojishi<36)
  105.          {
  106.           disdelay[0]=smg[(35-daojishi)/10];
  107.           disdelay[1]=smg[(35-daojishi)%10];
  108.           disdelay[2]=0x00;
  109.           disdelay[3]=0x00;

  110.           disdelay[4]=0x00;
  111.           disdelay[5]=0x00;
  112.           disdelay[6]=0x00;
  113.           disdelay[7]=0x00;

  114.            ngfg( );

  115.           led=0xff;                //所有燈初始化
  116.            green20=1 ;
  117.        red21=1;

  118.            red31=0;
  119.            red21=0;
  120.            yello33=0;
  121.            yello36=0;
  122.          
  123.          }
  124.             else if(daojishi<66)
  125.          {
  126.           disdelay[0]=smg[(65-daojishi)/10];
  127.           disdelay[1]=smg[(65-daojishi)%10];
  128.           disdelay[2]=0x00;
  129.           disdelay[3]=0x00;

  130.           disdelay[4]=0x00;
  131.           disdelay[5]=0x00;
  132.           disdelay[6]=0x00;
  133.           disdelay[7]=0x00;

  134.            ngfg( );

  135.           led=0xff;                //所有燈初始化
  136.            green20=1 ;
  137.        red21=1;

  138.            green30=0 ;
  139.            green32=0;
  140.             red37=0;
  141.                 red21=0;
  142.          
  143.          }
  144.                   else if(daojishi<71)
  145.          {
  146.           disdelay[0]=smg[(70-daojishi)/10];
  147.           disdelay[1]=smg[(70-daojishi)%10];
  148.           disdelay[2]=0x00;
  149.           disdelay[3]=0x00;

  150.           disdelay[4]=0x00;
  151.           disdelay[5]=0x00;
  152.           disdelay[6]=0x00;
  153.           disdelay[7]=0x00;

  154.            ngfg( );

  155.           led=0xff;                //所有燈初始化
  156.            green20=1 ;
  157.        red21=1;

  158.       red31=0;
  159.            red21=0;
  160.            yello33=0;
  161.            yello36=0;
  162.          
  163.          }

  164.    }
  165. }


  166. void time0() interrupt 1
  167. {
  168.    static u16 i;

  169.    TH0= 0xfc;                                         //每次定時(shí)中斷完成后都要重新賦值
  170.    TL0 =0x18;                                         //每次定時(shí)中斷完成后都要重新賦值
  171.    i++;
  172.     if (i==1000)
  173.   {        i=0;
  174.     daojishi++;
  175.   
  176.   }

  177. }
復(fù)制代碼

Keil工程下載:
交通燈.rar (29.71 KB, 下載次數(shù): 16)







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩aⅴ视频| 亚洲精品久久久久国产 | 亚洲一二视频 | 一区二区三区网站 | 国产一区二区 | 狠狠爱免费视频 | 成人免费观看网站 | 久久毛片 | 日韩一区精品 | 午夜视频在线观看一区二区 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 五月综合激情婷婷 | 婷婷五月色综合香五月 | 久久专区 | 精品在线一区 | 国精日本亚洲欧州国产中文久久 | 另类视频在线 | 免费色网址 | 久久久久久久久久久久久久av | 亚洲网站在线观看 | 国产精品成人一区二区三区 | 中文字幕高清av | 日韩爱爱网| 欧美午夜精品久久久久久浪潮 | 美女黄视频网站 | 麻豆视频在线免费看 | 欧美美乳 | 欧美色视频免费 | 天天草狠狠干 | 天天澡天天操 | 国产精品毛片无码 | 中文字幕一区二区三区四区 | 欧美第一区 | 91亚洲国产成人精品一区二三 | 久久国产成人午夜av影院武则天 | 2019天天操| 日韩精品一区二区三区 | 欧美日韩高清一区二区三区 | 99久久影院 | 91在线视频精品 | av香港经典三级级 在线 |