找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9945|回复: 4
收起左侧

基于51单片机交通灯程序设计

[复制链接]
ID:156681 发表于 2017-3-30 09:41 | 显示全部楼层 |阅读模式
交通灯单片机程序:
  1. #include<reg52.h>
  2. #include<bstv51.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int

  5. sbit nbp1=P0^4;//南北方向数码管第一位;
  6. sbit nbp2=P0^5;//南北方向数码管第二位;
  7. sbit dxp1=P0^6;//东西方向数码管第一位;
  8. sbit dxp2=P0^7;//东西方向数码管第二位;

  9. sbit hdnb=P0^2;//南北方向红灯;
  10. sbit hddx=P0^0;//东西方向红灯;
  11. sbit ldnb=P0^3;//南北方向绿灯;
  12. sbit lddx=P0^1;//东西方向绿灯;
  13. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
  14.                       0x6d,0x7d,0x07,0x7f,0x6f};        //0-9
  15. uchar num=30;num2,shi,ge;



  16. void delayms(xms)           //延时函数x毫秒函数
  17. {
  18.    uint i,j;
  19.    for(i=xms;i>0;i--)
  20.      for(j=110;j>0;j--);
  21. }

  22. void display(uchar shi,uchar ge) //南北数码管显示函数
  23. {



  24. P1=table[shi];
  25. nbp1=0;                                                        //选中南北方向数码管第一位
  26. delayms(3);
  27. nbp1=1;                                                //关闭南北方向数码管第一位
  28. P1=table[ge];
  29. nbp2=0;                                                //选中南北第二位
  30. delayms(3);
  31. nbp2=1;                                                //关闭南北方向数码管第二位


  32. P2=table[shi];
  33. dxp1=0;                                                //选中南北方向数码管第一位
  34. delayms(3);
  35. dxp1=1;                                                //关闭南北方向数码管第一位
  36. P2=table[ge];
  37. dxp2=0;                                                //选中南北第二位
  38. delayms(3);
  39. dxp2=1;               
  40. }

  41. void T1_time()interrupt 3                        //定时器1中断函数
  42. {
  43.   TH1=(65536-45872)/256;
  44.   TL1=(65536-45872)%256;
  45.   num2++;      
  46.   if(num2==20)
  47.   {
  48.    num2=0;                                                   //说明计时够一秒
  49.    num--;
  50.    if(num==0)
  51.     {  
  52.        lddx=~lddx;                                                
  53.        hdnb=~hdnb;                                            
  54.        ldnb=~ldnb;
  55.        hddx=~hddx;
  56.            num=30;
  57.      }

  58.   }
  59.         shi=num/10;
  60.         ge=num%10;
  61. }


  62. void main()                                           //主函数
  63. {
  64.    TMOD=0x10;
  65.    TH1=(65536-45872)/256;
  66.    TL1=(65536-45872)%256;
  67.    EA=1;
  68.    ET1=1;
  69.    TR1=1;
  70.    lddx=0;                                                //东西方向绿灯亮
  71.    hdnb=0;                                            //南北方向红灯亮
  72.    ldnb=1;
  73.    hddx=1;

  74. P1=0x00;
  75. P2=0x00;
  76. nbp1=1;
  77. dxp1=1;
  78. dxp2=1;
  79. nbp2=1;

  80.    while(1)
  81.    {
  82.    display(shi,ge);
  83.     }
  84. }


复制代码
0.png
基于51单片机交通灯设计下载:
交通灯.rar (32.45 KB, 下载次数: 59)

评分

参与人数 2黑币 +10 收起 理由
demo5713 + 5 很给力!
chrccc + 5

查看全部评分

回复

使用道具 举报

ID:322872 发表于 2018-5-30 22:20 | 显示全部楼层
这个没有数码管啊
回复

使用道具 举报

ID:342789 发表于 2018-6-1 14:01 | 显示全部楼层
程序很好,nice
回复

使用道具 举报

ID:290226 发表于 2018-6-1 15:08 | 显示全部楼层
可以,简单明了
回复

使用道具 举报

ID:358223 发表于 2018-6-25 09:50 | 显示全部楼层
请问这个如何接线啊?我是单片机小白,还没学明白。。。。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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