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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2934|回復: 1
收起左側

單片機紅綠燈設計源代碼

[復制鏈接]
ID:653096 發表于 2020-9-15 15:27 | 顯示全部樓層 |閱讀模式
51hei.png

單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char

  3. uchar led[ ]={0x3f,0x06,0x5b,0x4f,0x66,
  4. 0x6d,0x7d,0x07,0x7f,0x6f};
  5. void delay_ms(uchar j)   //延時若干ms
  6. {
  7.         uchar i;       
  8.         while(j--)       
  9.         {
  10.         for(i=0;i<125;i++)
  11.         for(i=0;i<125;i++);
  12.         }
  13. }
  14. void delay_s(uchar i)  //延時i秒鐘
  15. {
  16.         unsigned char a,b,c;   
  17.         while(i--)   
  18.         {
  19.         for(c=167;c>0;c--)
  20.         for(b=171;b>0;b--)
  21.         for(a=16;a>0;a--);
  22.         }
  23. }
  24. void dongxi(uchar a)   //東西綠燈  南北紅燈
  25. {
  26.     uchar j=100;  //循環100次
  27.     for(a;a>0;a--)
  28.     {
  29.         P1=0X09;delay_ms(5);
  30.         while(j--)       
  31.         {
  32.             P0=0Xfb;       
  33.             P2=led[a/10];  //顯示十位倒計時
  34.             delay_ms(5);   
  35.   P0=0Xf7;       
  36. P2=led[a%10];   //顯示個位倒計時
  37. delay_ms(5);        
  38. if(a<=3)   //如果a小于3,則開始黃燈閃爍
  39. {
  40.     P1=0X12;  
  41.     delay_ms(5);
  42.     P1=0X00;
  43.     delay_ms(5);
  44. }
  45. }}}
  46.   void nanbei(uchar a)   //南北綠燈  東西紅燈
  47. {
  48.     uchar j=100;
  49.     for(a;a>0;a--)
  50.     {   
  51.         P1=0X24;
  52.         delay_ms(5);
  53.         while(j--)       
  54.         {
  55.             P0=0Xfe;
  56.             P2=led[a/10];   //顯示十位倒計時
  57.             delay_ms(5);   
  58.                  P0=0Xfd;       
  59. P2=led[a%10];   //顯示個位倒計時               
  60. delay_ms(5);
  61. if(a<=3)   //如果a小于3,則開始黃燈閃爍               
  62. {
  63. P1=0X12;
  64. delay_ms(5);                        
  65. P1=0X00;       
  66. delay_ms(5);
  67. }
  68. }}}
  69. void main()
  70. {
  71.     EA=1;   //允許中斷
  72.     EX0=1;   //允許外部中斷0
  73.     IT0=1;   //跳沿觸發
  74.     while(1)
  75.     {       
  76.         dongxi(10);   //東西通行時間10秒
  77.         nanbei(10);   //南北通行時間10秒
  78.     }
  79. }
  80. void int0() interrupt 0   //外部中斷0函數
  81. {                  
  82.     uchar i;
  83.     EA=0;
  84.     P0=0xff;
  85.     for(i=5;i>0;i++)
  86.     {       
  87.         P1=0X12;
  88.         delay_ms(10);
  89.         P1=0X00;
  90.         delay_ms(10);
  91.     }
  92.     P1=0x0c;
  93.     delay_s(5);
  94.     EA=1;        
  95. }




  96. #include<reg51.h>
  97. #define u8 unsigned char
  98. #define u16 unsigned int
  99. sbit s1=P3^2;//應急通行
  100. u8 code display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰數碼管0---9
  101. u8 buf[2]={1,0};//初始顯示10
  102. u8 num;//1s計時
  103. u8 time=10;//10s倒計時
  104. bit flag=0;
  105. void time0_init()
  106. {
  107.         TMOD=0x01;//定時器0,工作于方式1
  108.         TH0=(65535-50000)/256;//定時50ms
  109.         TL0=(65535-50000)%256;
  110.         ET0=EA=TR0=1;
  111. }
  112. void delayms(u16 x)//毫秒延時函數
  113. {
  114. u16 i,j;
  115. for(i=0;i<x;i++)      //連數x次,約 x ms
  116. for(j=0;j<120;j++);   //數120 次,約1 ms
  117. }
  118. void scan()//數碼管掃描函數
  119. {
  120.         P0=0xfa;P2=display[buf[1]];
  121.         delayms(5);
  122.         P0=0xf5;P2=display[buf[0]];
  123.         delayms(5);
  124. }
  125. void convert(u8 dat)//將數據轉成適合數碼管顯示的數
  126. {
  127.         buf[1]=dat/10;
  128.         buf[0]=dat%10;
  129. }
  130. void main()//主函數
  131. {
  132.         EA=1;
  133.         EX0=1;
  134.         IT0=1;
  135.         time0_init();//初始化
  136.         flag=1;
  137.         while(1)
  138.         {
  139.                 convert(time);//正常數據轉換
  140.                 scan();//倒計時顯示
  141.                 if(flag==0)
  142.                 {       
  143.                         P1=0x24;
  144.                         if(time<=3){P1=0x12;}
  145.                 }
  146.                 else if(flag==1)
  147.                 {
  148.                         P1=0x09;
  149.                         if(time<=3){P1=0x12;}
  150.                 }
  151.         }               
  152. }                  
  153. void time0()interrupt 1
  154. {
  155.         TH0=(65535-50000)/256;//定時50ms
  156.         TL0=(65535-50000)%256;
  157.         num++;
  158.         if(num==20)//1s時間
  159. ……………………

  160. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
紅綠燈.zip (96.49 KB, 下載次數: 16)
回復

使用道具 舉報

ID:838086 發表于 2020-11-19 11:23 | 顯示全部樓層
程序有錯誤
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 视频在线h | 国产成人精品免费视频大全最热 | 男女免费观看在线爽爽爽视频 | 视频一二三区 | 亚洲成人自拍 | 高清久久久 | tube国产 | 精品久久久久久亚洲国产800 | 成人国产在线视频 | 久久国产三级 | 人妖videosex高潮另类 | 狠狠入ady亚洲精品经典电影 | 亚州精品天堂中文字幕 | 国产一区二区三区视频 | 国产精品人人做人人爽 | 日本久久精品视频 | 中文字幕成人 | 国产精品亚洲综合 | 黄视频在线网站 | 午夜在线观看视频 | 日本久久精 | 免费久久精品 | 国产乱码精品1区2区3区 | 男人天堂色 | a亚洲精品 | 国产精品大片 | 成人av播放 | 99在线精品视频 | 一级毛片视频在线观看 | av色站| 99热最新网址 | 久久精品国产一区二区三区 | 国产精品污www一区二区三区 | 我想看国产一级毛片 | 天天干b | 亚洲色图插插插 | 亚洲精品久久久久久久久久久久久 | 成人二区| 亚洲免费在线观看视频 | 999国产精品视频免费 | 中文字幕在线电影观看 |