找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2142|回复: 2
收起左侧

求基于51单片机的交通灯控制系统设计

[复制链接]
ID:196401 发表于 2017-5-4 10:49 | 显示全部楼层
#include<reg52.h> #include<bstv51.h> #define uchar unsigned char #define uint  unsigned int  sbit nbp1=P0^4;//南北方向数码管第一位; sbit nbp2=P0^5;//南北方向数码管第二位; sbit dxp1=P0^6;//东西方向数码管第一位; sbit dxp2=P0^7;//东西方向数码管第二位;  sbit hdnb=P0^2;//南北方向红灯; sbit hddx=P0^0;//东西方向红灯; sbit ldnb=P0^3;//南北方向绿灯; sbit lddx=P0^1;//东西方向绿灯; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,                       0x6d,0x7d,0x07,0x7f,0x6f};        //0-9 uchar num=30;num2,shi,ge;    void delayms(xms)           //延时函数x毫秒函数 {    uint i,j;    for(i=xms;i>0;i--)      for(j=110;j>0;j--); }  void display(uchar shi,uchar ge) //南北数码管显示函数 {     P1=table[shi]; nbp1=0;                                                        //选中南北方向数码管第一位 delayms(3); nbp1=1;                                                //关闭南北方向数码管第一位 P1=table[ge]; nbp2=0;                                                //选中南北第二位 delayms(3); nbp2=1;                                                //关闭南北方向数码管第二位   P2=table[shi]; dxp1=0;                                                //选中南北方向数码管第一位 delayms(3); dxp1=1;                                                //关闭南北方向数码管第一位 P2=table[ge]; dxp2=0;                                                //选中南北第二位 delayms(3); dxp2=1;                 }  void T1_time()interrupt 3                        //定时器1中断函数 {    TH1=(65536-45872)/256;   TL1=(65536-45872)%256;   num2++;         if(num2==20)   {    num2=0;                                                   //说明计时够一秒    num--;    if(num==0)     {          lddx=~lddx;                                                        hdnb=~hdnb;                                                    ldnb=~ldnb;        hddx=~hddx;            num=30;      }    }         shi=num/10;         ge=num%10; }   void main()                                           //主函数 {    TMOD=0x10;    TH1=(65536-45872)/256;    TL1=(65536-45872)%256;    EA=1;    ET1=1;    TR1=1;    lddx=0;                                                //东西方向绿灯亮    hdnb=0;                                            //南北方向红灯亮    ldnb=1;    hddx=1;  P1=0x00; P2=0x00; nbp1=1; dxp1=1; dxp2=1; nbp2=1;     while(1)    {    display(shi,ge);     } }

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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