关于交通灯led问题,电路图,代码
代码#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上可以仿真,实物上应该不行,要三极管驱动数码管
要不你给我填一填