找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2811|回复: 0
收起左侧

交通灯proteus仿真与单片机代码

[复制链接]
ID:313194 发表于 2018-5-13 13:33 | 显示全部楼层 |阅读模式
交通灯的仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png

单片机源程序如下:
  1. #include"reg51.h"
  2. #define uint  unsigned int
  3. #define uchar unsigned char
  4. sbit dula=P2^1;
  5. sbit wela=P2^2;
  6. sbit p1_0=P1^0;
  7. uchar code dat[]={
  8. 0xc0,0xf9,0xa4,0xb0,
  9. 0x99,0x92,0x82,0xf8,
  10. 0x80,0x90,0x88,0x83,
  11. 0xc6,0xa1,0x86,0x8e};
  12. uchar code tem[]={0x01,0x02,0x04,0x08,0x10,0x20};

  13. uint  i;
  14. uchar num,st;
  15. void delay(uint);
  16. void init();
  17. void main()
  18. {
  19.      init();
  20.          dula=1;
  21.          P0=0xc0;
  22.          dula=0;
  23.          while(1)
  24.          {
  25.             if(i==1000)
  26.                 {
  27.                   i=0;
  28.                   num++;
  29.                   if(st==0)
  30.                   {
  31.                      if(num==10)
  32.                          {
  33.                             num=0;
  34.                                 st=1;
  35.                                 P2=0x40;
  36.                         }
  37.                 }
  38.                 if(st==1)
  39.                 {
  40.                    if(num==2)
  41.                    {
  42.                       num=0;
  43.                           st=2;
  44.                           P2=0x30;
  45.                         }
  46.                 }
  47.                 if(st==2)
  48.                 {
  49.                    if(num==10)
  50.                    {
  51.                        num=0;
  52.                            st=3;
  53.                            P2=0x40;
  54.                         }
  55.                 }

  56.                 if(st==3)
  57.                 {
  58.                    if(num==2)
  59.                    {
  60.                        num=0;
  61.                            st=0;
  62.                            P2=0x88;
  63.                         }
  64.                 }
  65.         dula=1;
  66.         P0=dat[num];
  67.         dula=0;
  68.         delay(5);
  69.         }
  70. }
  71. }
  72. //程序初始化
  73. void init()
  74. {
  75.     EA=1;//开总中断允许
  76.         EX0=0;//外部中断0允许
  77.         IT0=0;//外部中断0为低电平触发方式
  78.         TMOD=0X01;//设定T0为16位定时器
  79.         ET0=1;//定时器T0中断允许
  80.         TR0=1;//启动定时器T0
  81.         TH0=0XFC;
  82.         TL0=0X66;
  83.         i=0;
  84.         num=0;
  85.         st=0;
  86.         p1_0=1;
  87.         wela=1;
  88.         P0=0x01;
  89.         wela=0;
  90.         P0=0xff;
  91.         P2=0x88;
  92. }

  93. //延时约为Z毫秒
  94. void delay(uint z)
  95. {
  96.    uint x,y;
  97.    for(x=z;x>0;x--)
  98.       for(y=113;y>0;y--);
  99. }

  100. //外部中断0
  101. void int0()interrupt 0
  102. {
  103.    P2=0x28;
  104.    st=0;
  105.    i=0;
  106. ……………………

  107. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
单片机.zip (87.5 KB, 下载次数: 15)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表