找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5308|回复: 3
打印 上一主题 下一主题
收起左侧

数码管显示倒计时时间的交通灯控制设计,带ad画的原理图和pcb

[复制链接]
跳转到指定楼层
楼主
数码管显示倒计时时间的交通灯控制设计,带ad画的原理图和pcb




  1. #include "reg51.h"
  2. #include"absacc.h"

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. typedef unsigned char BYTE;
  6. typedef unsigned int  WORD;


  7. sbit ge1=P2^3;          //南北数码管
  8. sbit shi1=P2^2;
  9. sbit ge2=P2^1;           //东西数码管
  10. sbit shi2=P2^0;

  11. sbit SNR=P1^5;           //南北绿黄红灯
  12. sbit SNY=P1^4;
  13. sbit SNG=P1^3;
  14. sbit EWR=P1^2;           //东西绿黄红灯
  15. sbit EWY=P1^1;
  16. sbit EWG=P1^0;

  17. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  18. uint m,a,b,c,d;
  19. uchar ewg,snr;
  20. uchar tt=0;
  21. unsigned char flag;

  22. /******延时程序******/

  23. void delay(WORD n)
  24. {
  25.     WORD x;
  26.         while(n--)
  27.         {
  28.             x=500;
  29.                 while(x--);
  30.         }
  31. }

  32. void delay2(WORD n)
  33. {
  34.     WORD x;
  35.         while(n--)
  36.         {
  37.             x=5000;
  38.                 while(x--);
  39.         }
  40. }


  41. /******倒计时显示******/
  42. void display()
  43. {
  44.         a=snr/10;          //南北时间
  45.                 b=snr%10;
  46.                 shi1=1;
  47.                 ge1=0;
  48.                 shi2=1;
  49.                 ge2=1;
  50.                 P0=table[a];
  51.                 WR=0;
  52.                 WR=1;
  53.                 delay2(1);
  54.                 ge1=1;
  55.         shi1=0;
  56.                 shi2=1;
  57.                 ge2=1;
  58.                 P0=table[b];
  59.                 WR=0;
  60.                 WR=1;
  61.                 delay2(1);

  62.                 c=ewg/10;                           //东西时间
  63.                 d=ewg%10;
  64.                 shi2=1;
  65.                 ge2=0;
  66.                 ge1=1;
  67.         shi1=1;
  68.                 P0=table[c];
  69.                 WR=0;
  70.                 WR=1;
  71.                 delay2(1);
  72.                 ge2=1;
  73.         shi2=0;
  74.                 ge1=1;
  75.         shi1=1;
  76.                 P0=table[d];
  77.                 WR=0;
  78.                 WR=1;
  79.                 delay2(1);
  80. }

  81. /******程序初始化******/

  82. void initial()
  83. {
  84.          ewg=0;snr=0;P1=0xff;
  85.          TMOD=0x01;
  86.      TH0=(65536-46080)/256;
  87.          TL0=(65536-56080)%256;
  88.          EA=1;
  89.          ET0=1;
  90.          TR0=1;
  91. }

  92. /*****************主函数********************/

  93. void main()
  94. {
  95.   initial();
  96.      ewg=30;snr=35;
  97.    flag=0;
  98.   while(1)
  99.    {
  100.                 display();
  101.      }
  102. }
  103. void T0_int() interrupt 1
  104. {
  105.      TH0=(65536-46078)/256;
  106.          TL0=(65536-56078)%256;
  107.          tt++;
  108.          if(tt==20)
  109.          {
  110.                  tt=0;
  111.                  if(flag==0)
  112.                    {        
  113.                              EWG=0;EWY=1;EWR=1;SNG=1;SNY=1;SNR=0;
  114.                                 if(ewg>0&&snr>0){ewg--;snr--;}
  115.                                 if(ewg==0){flag=1;ewg=6,snr=6;}
  116.                     }
  117.                 if(flag==1)
  118.                         {
  119.                             EWG=1;EWY=0;EWR=1;SNG=1;SNY=1;SNR=0;
  120.                                 if(ewg>0&&snr>0){ewg--;snr--;}
  121.                                 if(ewg==0){flag=2;ewg=36,snr=31;}
  122.                         }
  123.                 if(flag==2)
  124.                         {        EWG=1;EWY=1;EWR=0;SNG=0;SNY=1;SNR=1;
  125.                             if(ewg>0&&snr>0){ewg--;snr--;}
  126.                                 if(snr==0){flag=3;ewg=6,snr=6;}
  127.                         }
  128.                 if(flag==3)
  129.                     {        
  130.                             EWG=1;EWY=1;EWR=0;SNG=1;SNY=0;SNR=1;
  131.                                 if(ewg>0&&snr>0){ewg--;snr--;}
  132.                                 if(ewg==0){flag=0;ewg=30,snr=35;}
  133.                         }
  134.          }
  135. }
复制代码


课设.zip (317.39 KB, 下载次数: 33)


评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:143796 发表于 2016-11-10 19:47 | 只看该作者
这个是用什么芯片的  好像不是51
回复

使用道具 举报

板凳
ID:147356 发表于 2016-11-10 22:23 | 只看该作者
一个好学生 发表于 2016-11-10 19:47
这个是用什么芯片的  好像不是51

是51呀
回复

使用道具 举报

地板
ID:147400 发表于 2016-11-17 13:43 | 只看该作者
有它的Protues仿真吗?求分享。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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