微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于交通灯led问题,电路图,代码

关于交通灯led问题,电路图,代码

时间:10-02 整理:3721RD 点击:


代码#include<reg52.h>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #include<reg52.h>

#define uchar unsigned char

//一下均为位定义,C51特点

sbit  d0=P2^0;//位定义 第一组数码管  

sbit  d1=P2^1;

sbit  d2=P2^2; //第二组数码管  

sbit  d3=P2^3;

sbit  e_red=P1^0;  //定义一个灯 等于时0灯亮;                       //东西向红绿灯

sbit  e_yellow=P1^1;

sbit  key=P3^2;//定义一个按键

//共阴极数码管显示字符定义,段选按电路连接才能使用

uchar code table[16] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};   

          longint a=0;

          intaa=0;

          chartime;

          charmiao;

/////////////////////////////////////////////////////

// 定时器0初始化话 50ms

//////////////////////////////////////////////////

/********************************************************************

* 名称 : Time0_Init()

* 功能 : 定时器的初始化,11.0592MZ晶振,50ms

* 输入 : 无

* 输出 : 无

***********************************************************************/

void Delay(uint del)

{

          uinti,j;

          for(i=0;i<del; i++)

          for(j=0;j<1827; j++)   

          ;

}

void TIME0_INT()

{

           TMOD=0x01;

          TH0=(65536-50000)/256;

          TL0=(65536-50000)%256;

          EA=1;

          ET0=1;

          TR0=1;

}

/*********************************************

*按键扫描函数

**************************************/

void KEYSCANF()

{

           if(key==0)

           {

              Delay(10);

               if(key==0)

               {

                e_yellow=0;

               }

           

           

           }

}

/******************************

*

*主函数部分

*

****************************************/

void main()

{        TIME0_INT();

          time=0;

           e_red=P1^0; //接P11的灯亮

         

          while(1)

          {        

            d0=0; //选中第一个数码管

            P0=table[time/10];  //显示time 的数值

            Delay(1);

            P0=0xff;        //消影

            d1=0; //选中第一个数码管

            P0=table[time%10];  //显示time 的数值

            Delay(1);

             P0=0xff;

          }

}         

void timer0() interrupt 1           //  定时器中断0服务函数,time 50ms自加1        

{

          TH0=(65536-50000)/256;

          TL0=(65536-50000)%256;

          time++;

          if(time==20)

          {

           miao++;

           time=0;

         

          }        

}


如何完善

把残缺的部分添加上去就完善了

你在protues上可以仿真,实物上应该不行,要三极管驱动数码管

要不你给我填一填

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top