標題: 帶中斷的單片機紅綠燈proteus仿真源程序和原理圖 [打印本頁]

作者: 51黑ff    時間: 2016-10-10 15:25
標題: 帶中斷的單片機紅綠燈proteus仿真源程序和原理圖
帶中斷的單片機紅綠燈仿真原理圖:

帶中斷的單片機紅綠燈源程序:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. sbit c=P1^1;
  5. sbit d=P1^4;
  6. uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0到9數(shù)碼管顯示
  7. void delay1(uchar j)//延時若干ms
  8. {uchar i;
  9. while(j--)
  10. {for(i=0;i<125;i++)
  11. for(i=0;i<125;i++);}
  12. }
  13. void delay(uchar i)  //延時1秒鐘
  14. {
  15.     unsigned char a,b,c;
  16.                 while(i--)
  17.     {for(c=167;c>0;c--)
  18.         for(b=171;b>0;b--)
  19.             for(a=16;a>0;a--);
  20.     _nop_; }
  21. }
  22. void nanbei(uchar a)//南北顯示紅綠燈
  23. {uchar j=100;
  24. P1=0X24;
  25. for(a;a>0;a--)
  26. {
  27. while(j--)
  28. {
  29. P0=0XFE;
  30. P2=led[a/10];//顯示十位倒計時
  31. delay1(5);//延時5毫秒,給機器一點反應(yīng)時間
  32. P0=0XFd;
  33. P2=led[a%10];//顯示個位倒計時
  34. delay1(5);//延時5毫秒,給機器一點反應(yīng)時間
  35. if(a<=3)//如果a小于3,則開始黃燈閃爍
  36. {
  37. P1=0X12;               
  38. delay1(10);
  39. P1=0X00;
  40. delay1(10);
  41. }
  42. }
  43. }
  44. }
  45. void dongxi(uchar a)//東西顯示紅綠燈
  46. {uchar j=100;
  47. P1=0X09;
  48. for(a;a>0;a--)
  49. {
  50. while(j--)
  51. {
  52. P0=0XFB;
  53. P2=led[a/10];//顯示十位倒計時
  54. delay1(5);//延時5毫秒,給機器一點反應(yīng)時間
  55. P0=0XF7;
  56. P2=led[a%10];//顯示個位倒計時
  57. delay1(5);//延時5毫秒,給機器一點反應(yīng)時間
  58. if(a<=3)//如果a小于3,則開始黃燈閃爍
  59. {
  60. P1=0X12;               
  61. delay1(10);
  62. P1=0X00;
  63. delay1(10);
  64. }
  65. }
  66. }
  67. }
  68. main()
  69. {EA=1;//允許中斷
  70. EX0=1;//允許外部中斷0
  71. IT0=1;//跳沿觸發(fā)
  72. while(1)
  73. {dongxi(15);//東西通行時間15秒
  74. nanbei(30);//南北通行時間30秒
  75. }
  76. }
  77. void into(void) interrupt 0  //外部中斷0函數(shù),用于強行更改紅綠燈方向
  78. {uchar i,j=1000,b;
  79. P0=0XFF;
  80. P1=P1&0X01;//判斷如果P1最后一位為1,則東西方向為綠燈,南北方向為紅燈
  81. if(P1==0X01)
  82. {P1=0X08;
  83. for(b=0;b<3;b++)
  84. {{for(i=0;i<10;i++)//黃燈閃爍次數(shù)
  85. {delay1(100);
  86. c=~c;
  87. delay1(100);
  88. }}}
  89. P1=0Xe4;
  90. delay(10);//改變之后的時間延時10秒
  91. }
  92. else
  93. {P1=0X04;
  94. for(b=0;b<3;b++)
  95. {{for(i=0;i<10;i++)
  96. {delay1(100);
  97. d=~d;
  98. delay1(100);
  99. }}}
  100. P1=0X09;
  101. delay(10);//改變之后的時間延時10秒
  102. }}   
復(fù)制代碼


帶中斷的單片機紅綠燈仿真工程文件及所有完整程序等資料下載地址(壓縮包一共有45個單片機仿真,全部下載后找到第018個項目即可):
http://www.torrancerestoration.com/bbs/dpj-56298-1.html


作者: 1393641750    時間: 2018-6-21 20:13
很好                           
作者: 滄海只是雲(yún)煙    時間: 2018-9-19 23:11
攢攢攢攢10086個贊
作者: 基督山伯爵    時間: 2018-11-19 13:01
666樓主很厲害
作者: 一宜以益    時間: 2018-11-24 15:50
為什么我下載沒有看到電路圖.DSN
作者: 冉冉孤生竹    時間: 2019-3-30 17:06
想問一下仿真里的紅綠燈在哪里找到,并且怎么樣紅綠燈不連線就可以亮,一直找不到,希望大佬幫一下
作者: Alvin~    時間: 2019-11-10 11:37
太給力了吧
作者: lkj998    時間: 2019-12-25 11:58
擴展多加一個人行的紅綠等要怎么辦
作者: SSGH    時間: 2020-12-5 15:28
為什么紅綠燈全部亮了
作者: adc1254088    時間: 2021-5-25 11:36
冉冉孤生竹 發(fā)表于 2019-3-30 17:06
想問一下仿真里的紅綠燈在哪里找到,并且怎么樣紅綠燈不連線就可以亮,一直找不到,希望大佬幫一下

不是說不連線,而是標了標簽,就是那個LBL,相同的標簽就相當(dāng)于連線了,交通燈你在元件里搜索traffic light就行了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1