资源简介
简单的单片机交通灯
包含程序+proteus仿真
系统实现的功能:系统电路上电后
(一)东西方向显示绿灯时,南北方向显示红灯,持续20秒钟后,绿灯变为黄灯并持续3秒钟;
(二)然后东西方向显示红灯,南北方向显示绿灯,持续20秒钟后,绿灯变黄灯并持续3秒钟,然后循环反复。
包含程序+proteus仿真
系统实现的功能:系统电路上电后
(一)东西方向显示绿灯时,南北方向显示红灯,持续20秒钟后,绿灯变为黄灯并持续3秒钟;
(二)然后东西方向显示红灯,南北方向显示绿灯,持续20秒钟后,绿灯变黄灯并持续3秒钟,然后循环反复。

代码片段和文件信息
#include
#include
#define uint unsigned int
#define uchar unsigned char //定义数据类型
uchar aa;
uint a;
sbit GREEN_dx=P1^1; //定义红绿灯
sbit YELLOW_dx=P1^2;
sbit RED_dx=P1^3;
sbit GREEN_nb=P1^5;
sbit YELLOW_nb=P1^6;
sbit RED_nb=P1^7;
sbit shi=P3^6; //十位个位
sbit ge=P3^7;
bit flag=0;
uchar code table[]={
0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x71}; //共阴极数码管显示1-16
void delay(uint z);
void disp(uint n);
void nb_flash(void);
void dx_flash(void);
void nanbei();
void dongxi();
void main()
{
uint num;
num=0;
aa=0;
TMOD=0x01; //定时器T0为方式一
TH0=(65536-50000)/256; //设置定时器初值,高八位
TL0=(65536-50000)%256; //低八位
EA=1; //总中断允许
ET0=1; //定时器T0允许溢出中断
TR0=1; //启动定时器计数
while(1) //循环等待
{
dongxi(); //东西绿灯,南北红灯
dx_flash();//东西黄灯,南北红灯
nanbei(); //东西红灯,南北绿灯
nb_flash();//东西红灯,南北黄灯
}
}
void delay(uint z) //延时函数
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer0() interrupt 1 //定时器T0
{
TH0=(65536-50000)/256; //方式一重新赋初值
TL0=(65536-50000)%256;
aa++;//中断次数加一
if(aa==20)
{
aa=0;
flag=1;
}
TR0=1; //启动定时器计数
}
void disp(uint n) // 数码管显示函数 共阴极
{
while(!flag)
{
ge=0; //打开位选
P0=table[n%10]; //个位
delay(50); //延时
shi=1;ge=1; //关闭位选
shi=0;
P0=table[n/10];
delay(50);
shi=1;
}
if(flag==1)
flag=0;
}
void nanbei() //南北显示函数
{ uint num;
num=20; //赋初值
while(num<=20&&num>0)
{
disp(num); //显示num
num--;
RED_dx=1;YELLOW_dx=0; GREEN_dx=0;RED_nb=0;YELLOW_nb=0; GREEN_nb=1;//东西红南北绿
}
}
void dongxi()
{ uint num;
num=20;
while(num<=20&&num>0)
{
disp(num);
num--;
RED_dx=0;YELLOW_dx=0; GREEN_dx=1;RED_nb=1;YELLOW_nb=0; GREEN_nb=0;//东西绿南北红
}
}
void nb_flash(void)
{
uint a;
for(a=3;a>0;a--)//南北黄灯倒计时3s
{ RED_dx=1;YELLOW_dx=0; GREEN_dx=0;RED_nb=0;YELLOW_nb=1; GREEN_nb=0;//南北黄
disp(a);
}
}
void dx_flash(void)
{
uint a;
for(a=3;a>0;a--)//东西黄灯倒计时3s
{
RED_dx=0;YELLOW_dx=1; GREEN_dx=0;RED_nb=1;YELLOW_nb=0; GREEN_nb=0;//东西黄
disp(a);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 20581 2020-03-04 21:12 Backup Of jtd.pdsbak
文件 2769 2020-03-04 21:12 cx507.c
文件 5932 2020-03-04 21:12 cx507.LST
文件 7664 2020-03-04 21:12 cx507.OBJ
文件 933 2020-03-04 21:12 jtd.build_log.htm
文件 1945 2020-03-04 21:12 jtd.hex
文件 25 2020-03-04 21:12 jtd.lnp
文件 9899 2020-03-04 21:12 jtd.M51
文件 20737 2020-03-04 21:12 jtd.pdsprj
文件 2243 2020-03-05 16:05 jtd.pdsprj.DESKTOP-3DCG46F.dell.workspace
文件 1183 2020-03-04 21:12 jtd.plg
文件 0 2020-03-04 21:12 jtd.uv2.bak
文件 137737 2020-03-05 16:13 jtd.uvgui.dell
文件 9845 2020-03-05 16:13 jtd.uvopt
文件 13839 2020-03-05 16:13 jtd.uvproj
相关资源
- 51 单片机 红外避障小车 大集合136
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- proteus仿真 AT89C51输出各种波形
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 浙江工业大学2005-2006学年单片机习题
- 单片机与PC机串口通讯仿真
评论
共有 条评论