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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1874|回復: 3
打印 上一主題 下一主題
收起左側

STC89C52單片機交通燈(計數器實現)+Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
ID:1097346 發表于 2024-5-8 11:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <REGX52.H>
  2. void YellowShan2();
  3. void YellowShan1();
  4. void delay_s(num);
  5. void delay_ms(num);
  6. void delay_us(num);
  7. void NBX();
  8. void DXX();
  9. void Timer0_Init();
  10. sbit r1=P1^2;
  11. sbit y1=P1^3;
  12. sbit g1=P1^4;
  13. sbit r2=P1^5;
  14. sbit y2=P1^6;
  15. sbit g2=P1^7;
  16. unsigned int num1=0;
  17. unsigned int num2;

  18. void main()
  19. {
  20.         Timer0_Init();
  21.         r1=0;
  22.         y1=0;
  23.         g1=0;
  24.         r2=0;
  25.         y2=0;
  26.         g2=0;
  27.         while(1)
  28.         {
  29.                 if (num2==0)
  30.                 {
  31.                         NBX();
  32.                 }
  33.                 else if (num2==1)
  34.                 {
  35.                         YellowShan1();
  36.                 }
  37.                 else if (num2==2)
  38.                 {
  39.                         DXX();
  40.                 }
  41.                 else if (num2==3)
  42.                 {
  43.                         YellowShan2();
  44.                 }
  45.         }
  46. }
  47. void YellowShan1()
  48. {
  49.                 r1=1;
  50.                 y1=0;
  51.                 g1=0;
  52.                 r2=0;
  53.                 y2=1;
  54.                 g2=0;
  55.                 delay_ms(25);
  56.                 r1=1;
  57.                 y1=0;
  58.                 g1=0;
  59.                 r2=0;
  60.                 y2=0;
  61.                 g2=0;
  62.                 delay_ms(25);
  63. }
  64. void YellowShan2()
  65. {
  66.                 r1=0;
  67.                 y1=1;
  68.                 g1=0;
  69.                 r2=1;
  70.                 y2=0;
  71.                 g2=0;
  72.                 delay_ms(25);
  73.                 r1=0;
  74.                 y1=0;
  75.                 g1=0;
  76.                 r2=1;
  77.                 y2=0;
  78.                 g2=0;
  79.                 delay_ms(25);
  80. }
  81. void delay_us(unsigned int num)
  82. {
  83.         unsigned int i=0,j=0;        
  84.         for(i=0;i<num;i++)
  85.         {
  86.                 for(j=0;j<20;j++);
  87.         }
  88. }
  89. void delay_ms(unsigned int num)
  90. {
  91.         while(num--!=0)         
  92.         {
  93.                 delay_us(100);
  94.         }
  95. }
  96. void delay_s(unsigned int num)
  97. {
  98.         while(num--!=0)         
  99.         {
  100.                 delay_ms(60);
  101.         }
  102. }
  103. void NBX()
  104. {
  105.         r1=1;
  106.         y1=0;
  107.         g1=0;
  108.         r2=0;
  109.         y2=0;
  110.         g2=1;
  111. }
  112. void DXX()
  113. {
  114.         r1=0;
  115.         y1=0;
  116.         g1=1;
  117.         r2=1;
  118.         y2=0;
  119.         g2=0;
  120. }
  121. void Timer0_Init()  // 定時器0初始化函數  
  122. {  
  123.     TMOD &= 0xF0;  // 清除Timer0模式位  
  124.     TMOD |= 0x01;  // 設置Timer0為模式1(16位定時/計數器模式)  
  125.     TH0 = (65536 - 50000) / 256;  // 設置定時器初值,這里設置為50ms溢出一次  
  126.     TL0 = (65536 - 50000) % 256;  
  127.     ET0 = 1;  // 使能Timer0中斷  
  128.     EA = 1;  // 使能全局中斷  
  129.     TR0 = 1;  // 啟動Timer0  
  130. }
  131. void Timer0_ISR (void) interrupt 1  // Timer0中斷服務程序  
  132. {  
  133.                 static unsigned int count = 0;  // 靜態變量,用于計數  
  134.     TH0 = (65536 - 50000) / 256;  // 重新加載定時器初值  
  135.     TL0 = (65536 - 50000) % 256;  
  136.     count++;  // 計數器加1  
  137.     if (count >= 5)  // 如果計數到20,即1秒到達  
  138.     {  
  139.         count = 0;  // 清零計數器  
  140.         // 在這里添加需要每秒執行的操作,例如更新LED狀態、打印日志等  
  141.                         
  142.                  num1++;
  143.                 if(num1==50)
  144.                         {
  145.                                 num2=1;
  146.                         }
  147.                 else if(num1==60)
  148.                         {
  149.                                 num2=2;
  150.                         }
  151.                 else if(num1==110)
  152.                         {
  153.                                 num2=3;
  154.                         }        
  155.                 else if(num1==120)
  156.                         {
  157.                                 num2=0;
  158.                                 num1=0;
  159.                         }               
  160.         }
  161. }
復制代碼

Proteus仿真是8.17版本的,其他版本打開會報錯: 交通燈.7z (193.18 KB, 下載次數: 12)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:961114 發表于 2024-5-8 17:27 | 只看該作者
還得是STC8H8K64U 帶硬件USB,可以USB仿真 USB下載   
軟件仿真可以淘汰了
回復

使用道具 舉報

板凳
ID:406814 發表于 2024-6-7 00:51 | 只看該作者
STC89C52 的庫文件可以分享一下嗎? 我不缺例子,我缺的是STC89C52 的proteus使用的lib文件
回復

使用道具 舉報

地板
ID:253767 發表于 2024-6-7 06:11 | 只看該作者
durongze 發表于 2024-6-7 00:51
STC89C52 的庫文件可以分享一下嗎? 我不缺例子,我缺的是STC89C52 的proteus使用的lib文件

我也是這樣。請樓主給予分享。謝謝。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美一区二区三区久久久 | 中国黄色在线视频 | 色频| 久久免费精品视频 | 亚洲综合无码一区二区 | 天天干夜夜 | 激情久久久久 | 日韩视频免费在线 | 中文字幕乱码一区二区三区 | 亚洲国产精品一区二区第一页 | 天天综合久久网 | 色视频成人在线观看免 | 国产精品亚洲视频 | 精品久久久久香蕉网 | 日韩爱爱网站 | 视频一区在线观看 | 一区二区三区网站 | 欧美三级视频在线观看 | 9久9久9久女女女九九九一九 | 久久婷婷国产麻豆91 | 免费成人毛片 | av免费在线观看网站 | 国产高清在线 | 亚洲精品一区二区三区在线观看 | 精品久久久久久久人人人人传媒 | 亚洲高清视频在线观看 | 91视频在线观看 | 91精品一区二区 | 性网址| 欧美极品视频 | 国产在线播放av | 国产亚洲精品美女久久久久久久久久 | 伊人精品在线视频 | 日韩av一区在线观看 | 午夜精品久久久久久久99黑人 | 在线免费观看亚洲 | 岛国在线免费观看 | av永久免费| 最近免费日本视频在线 | 91久久爽久久爽爽久久片 | 日韩美女一区二区三区在线观看 |