• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: C/C++
  • 标签: 交通灯  

资源简介

自己用51单片机编的一个小程序,就是可以实现交通灯的,红绿灯转换。

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint unsigned int
sbit SNred=P1^0;//南北方向红灯
sbit SNyel=P1^1;//南北方向黄灯
sbit SNgre=P1^2;//南北方向绿灯
sbit EWred=P1^3;//东西方向红灯
sbit EWyel=P1^4;//东西方向黄灯
sbit EWgre=P1^5;//东西方向绿灯
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x710};//共阴极数码管显示的从0到F的字符编码
uchar shigeflag=0timeflag1;
char numshu;
uint t0t1;
void delay(uint x)
{
uint yz;
for(y=x;y>0;y--)
for(z=110;z>0;z--);
}
void init()
{
TMOD=0x11;//选择定时器0和定时器1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
num=10;
shu=5;
}
void display(uchar auchar buchar c)
{
dula=1;
P0=table[a];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);

dula=1;
P0=table[b];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);

dula=1;
P0=table[c];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delay(1);
}
void main()
{
init();
P0=0xff;
while(1)
{
switch(time)
{
case 0: SNyel=1;
EWred=1;
SNred=0;
EWgre=0;
break;
case 1: SNred=1;
EWgre=1;
SNgre=0;
EWyel=0;
break;
case 2: SNgre=1;
EWyel=1;
SNgre=0;
EWred=0;
break;
case 3: SNgre=1;
EWred=1;
SNyel=0;
EWred=0;
break;
}
if(flag1==1)
display(shige17);
if(flag==1)
disp

评论

共有 条评论