📄 jtd.c
字号:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wei1=P2^4;
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
uchar code table[]={
0xf0,0xf1,0xf2,0xf3,
0xf4,0xf5,0xf6,0xf7,
0xf9};
uchar t0,shu,shi,ge,flag,temp,gg,dd;
void delay(uint z)
{
uint t1,y;
for(t1=z;t1>0;t1--)
for(y=110;y>0;y--);
}
void init()
{
shu=94;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P1=0xf3;//初始状态为状态1
flag=0;
}
void display()
{
if(shu<5)
{
temp=shu;
}
else if(shu<35)
{
temp=shu-5;
}
else
{
temp=shu-35;
}
gg=shu/10;
dd=shu%10;
shi=temp/10;
ge=temp%10;
if(flag==0)
{
P0=table[shi];wei1=1;delay(1);wei1=0;
P0=table[ge];wei2=1;delay(1);wei2=0;
P0=table[gg];wei3=1;delay(1);wei3=0;
P0=table[dd];wei4=1;delay(1);wei4=0;
}
else
{
P0=table[gg];wei1=1;delay(1);wei1=0;
P0=table[dd];wei2=1;delay(1);wei2=0;
P0=table[shi];wei3=1;delay(1);wei3=0;
P0=table[ge];wei4=1;delay(1);wei4=0;
}
}
void state()
{
if(flag==0)
{
if(shu==35)
{
P1=0xb3;//状态2,主干道左转弯灯显示状态
}
if(shu==5)
{
P1=0xf5;//状态3,东西道黄灯,南北道红灯 11110101
}
if(shu==0)
{
shu=94;
P1=0xde;//状态4,东西道红灯,南北道绿灯 11011110
flag=1;
}
}
else
{
if(shu==35)
{
P1=0x5e;//状态5,次干道左转弯显示状态
}
if(shu==5)
{
P1=0xee;//状态6,东西道红灯,南北道黄灯 11101110
}
if(shu==0)
{
shu=94;
P1=0xf3;//状态1,东西道绿灯,南北道红灯 11110011
flag=0;
}
}
}
void main()
{
wei1=0;
wei2=0;
wei3=0;
wei4=0;
init();
while(1)
{
display();
state();
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(t0==20)
{
t0=0;
shu--;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -