原创 【单片机基础-13】交通信号灯

2023-3-26 20:50 444 4 4 分类: MCU/ 嵌入式 文集: 单片机基础

风风雨雨二十载,多少bug在心间。

代码编译不通过,急得抓耳直挠腮。

回想当年恩师讲,基础知道全忘干。

忙里偷闲回首看,权当引玉的抛转。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

电路图

2、程序设计

(1)不用中断设计

#include

#define uchar unsigned char

#define uint unsigned int

uchar code a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,

0x82,0xf8,0x80,0x90};

void delay(uint t)

{

uchar i;

while(t--)

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

}

void main()

{

int j,l;

P1=0xde;

for(j=20;j>-1;j--)

{

for(l=0;l<300;l++) //延时功能

{

P3=a[j/10];

P2=0x01;

delay(1);P2=0x00;P3=0xff;

P3=a[j%10];

P2=0x02;

delay(1);P2=0x00;P3=0xff;

}

}

P1=0xed;

for(j=3;j>-1;j--)

{

for(l=0;l<300;l++)

{

P3=a[j/10];

P2=0x01;

delay(1);P2=0x00;P3=0xff;

P3=a[j%10];

P2=0x02;

delay(1);P2=0x00;P3=0xff;

}

}

P1=0xf3;

for(j=20;j>-1;j--)

{

for(l=0;l<300;l++)

{

P3=a[j/10];

P2=0x01;

delay(1);P2=0x00;P3=0xff;

P3=a[j%10];

P2=0x02;

delay(1);P2=0x00;P3=0xff;

}

}

P1=0xed;

for(j=3;j>-1;j--)

{

for(l=0;l<300;l++)

{

P3=a[j/10];

P2=0x01;

delay(1);P2=0x00;P3=0xff;

P3=a[j%10];

P2=0x02;

delay(1);P2=0x00;P3=0xff;

}

}

}

(2)用中断设计

#include

#define uchar unsigned char

#define uint unsigned int

uchar code a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,

0x82,0xf8,0x80,0x90};

uchar j=20,v,m;

void delay(uint t)

{

uchar i;

while(t--)

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

}

void main()

{

TMOD=0x01;

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

EA=1;

ET0=1;

TR0=1;

while(1)

{

if(m==0) P1=0xde; //m值不同,亮的灯不同

if(m==1) P1=0xed;

if(m==2) P1=0xf3;

if(m==3) P1=0xed;

P3=a[j/10];

P2=0x01;

delay(1);P2=0x00;P3=0xff;

P3=a[j%10];

P2=0x02;

delay(1);P2=0x00;P3=0xff;

}

}

void t0() interrupt 1

{

v++;

if(v==10) //50*10=500ms

{

v=0;

j--;

if(j==-1)

{

m++; //改变m,从而改变亮的灯

if(m==1) j=3;

if(m==2) j=20;

if(m==3) j=3;

if(m==4)

{

m=0; j=20; //回到初始状态

}

}

}

}

3、下载程序并调试

以下补充PROTEUS中标签法画图的方法。

在左侧的快捷栏里有LBL,

在引脚上加点线然后点那个选项,

把光标放在线上的时候会出现一个叉号,

点一下就出现一个对话框,

输入要标的名字“1”就好了

在想与之相连接的线路上标注同样的标签,则表示此两处线路是相连接的。

此种方法极大的将线路简洁化,尤其当所要求的设计电路较为复杂的情况下,使用起来非常方便。

图中的汉字是怎么出来的呢?

左下角A选中,鼠标移动至面板单击出现如图对话框,在string中输入你想要显示的汉字或者字符即可。

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条