标题:
交通灯proteus仿真与单片机代码
[打印本页]
作者:
HBEAB
时间:
2018-5-13 13:33
标题:
交通灯proteus仿真与单片机代码
交通灯的仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(21.73 KB, 下载次数: 23)
下载附件
2018-5-14 03:32 上传
0.png
(11.1 KB, 下载次数: 16)
下载附件
2018-5-14 03:33 上传
单片机源程序如下:
#include"reg51.h"
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^1;
sbit wela=P2^2;
sbit p1_0=P1^0;
uchar code dat[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar code tem[]={0x01,0x02,0x04,0x08,0x10,0x20};
uint i;
uchar num,st;
void delay(uint);
void init();
void main()
{
init();
dula=1;
P0=0xc0;
dula=0;
while(1)
{
if(i==1000)
{
i=0;
num++;
if(st==0)
{
if(num==10)
{
num=0;
st=1;
P2=0x40;
}
}
if(st==1)
{
if(num==2)
{
num=0;
st=2;
P2=0x30;
}
}
if(st==2)
{
if(num==10)
{
num=0;
st=3;
P2=0x40;
}
}
if(st==3)
{
if(num==2)
{
num=0;
st=0;
P2=0x88;
}
}
dula=1;
P0=dat[num];
dula=0;
delay(5);
}
}
}
//程序初始化
void init()
{
EA=1;//开总中断允许
EX0=0;//外部中断0允许
IT0=0;//外部中断0为低电平触发方式
TMOD=0X01;//设定T0为16位定时器
ET0=1;//定时器T0中断允许
TR0=1;//启动定时器T0
TH0=0XFC;
TL0=0X66;
i=0;
num=0;
st=0;
p1_0=1;
wela=1;
P0=0x01;
wela=0;
P0=0xff;
P2=0x88;
}
//延时约为Z毫秒
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=113;y>0;y--);
}
//外部中断0
void int0()interrupt 0
{
P2=0x28;
st=0;
i=0;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
单片机.zip
(87.5 KB, 下载次数: 15)
2018-5-13 13:32 上传
点击文件名下载附件
交通灯的仿真
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1