资源简介
简单的单片机交通灯
包含程序+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单片机蜂鸣器音乐实验(致爱丽丝)
- 介绍一种LED小灯控制系统的设计方法
- Avrdudess单片机工具官方
- 蓝桥杯单片机设计与开发客观题
- 基于单片机控制的软起动器的设计
- 基于89C51的单相用电器检测装置
- 基于单片机的家用电器电话远程控制
- C8051F020ADC转化程序(C)
- 多模式带音乐跑马灯
- 如何在TMCL软件中通过SPI快速配置TMC
- 基于51单片机和Proteus仿真的波形发生
- 单片机C51-电子钟1 LCD1602显示 上电正常
- 单片机C51-键盘 定时扫描
- 用51单片机解析GPS数据的源代码程序
- 单片机控制GSM模块TC35的方法
- 基于单片机的时间设计
- 分享一个51单片机做的简易示波器
- 51单片机空闲和掉电模式应用带程序
- 80C52单片机最小系统
- 利用51单片机计数器测频率最简程序
- 基于单片机的门禁系统毕业设计
- 单片机课程设计 出租车计费
- 51单片机驱动继电器例程+pretues仿真
- 51单片机A4988驱动源码
- DHT11温湿度 1602显示 89C52单片机
- 51单片机ADC0832_1602 proteus仿真源程序加
- 51单片机ADC0832电压测量液晶1602显示的
- STC89C52单片机最小系统原理图、PCB文件
- 基于通讯的多路开关量控制板的设计
- 单片机 公交车报站系统源程序
评论
共有 条评论