资源简介
模拟十字路口交通灯,设有紧急按钮,当有紧急情况能改变红绿灯状态。(如救护车需优先通过时)
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
sbit NUM_F = P3^2;
bit URGENT_F = 0;
/********************************
定义交通灯各个状态
********************************/
#define GREEN_RED 0xDD //横的绿灯亮,竖的红灯亮
#define YELLOW_RED 0xF5 //横的黄灯亮,竖的红灯亮
#define _RED 0xFD //横的绿灯灭,竖的红灯亮 用来做黄灯闪烁。
#define RED_GREEN 0xEB //横的红灯亮,竖的绿灯亮
#define RED_YELLOW 0xEE //横的红灯亮,竖的黄灯亮
#define RED_ 0xEF //横的红灯亮,竖的黄灯灭 用来做黄灯闪烁
#define YELLOW_YELLOW 0xF6
#define _ 0xFF
#define RED_RED 0xED
/********************************
变量定义
********************************/
uchar iticktime=10numtime1=14;
/**************************************************************
i用来扫描数码管,tick用来1S定时,time、time1用来显示
时间,一个是红灯时间,另一个是绿灯和黄灯时间,num是用来
标记当前交通灯属于哪种状态。num=1 横的绿灯亮,竖的红灯亮
num=2 横的黄灯亮,竖的红灯亮 。。。。。 参考上方的交通
灯各个状态定义
**************************************************************/
/********************************
数码管段码、位选定义
********************************/
uchar table[]={
0xc00xf90xa40xb00x99
0x920x820xf80x800x90};
uchar tabledu[]={0000};
uchar tablewe[]={0x010x020x100x20};
/********************************
可直接通过改变tabledu中的值可改
变数码管显示值
********************************/
/*------------------------------------------------
延时函数
------------------------------------------------*/
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*------------------------------------------------
定时器、外部中断初始化
------------------------------------------------*/
void init()
{
TMOD=0x01; //定时器工作方式
TH0=0x3c; //高位送值
TL0=0xb0; //低位送值
ET0=1; //开定时器0
TR0=1; //启动定时器0
IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)
EX0 = 1; //使能外部中断
IT1 = 1; //指定外部中断1下降沿触发,INT0 (P3.3)
EX1 = 1; //使能外部中断
EA=1; //开总中断
}
/*------------------------------------------------
数码管显示
------------------------------------------------*/
void display(void)
{
P2=tablewe[i];
P0=table[tabledu[i]];
i++;
delay(1);
if(i==4)
i=0;
}
/*------------------------------------------------
交通灯控制
------------------------------------------------*/
void light(void)
{
if(num==0)
P1 = GREEN_RED;
if(num==1)
{
if(tick<8)
P1 = YELLOW_RED;
else
P1 = _RED;
}
if(num==2)
P1 = RED_GREEN;
if(num==3)
{
if(tick<8)
P1 = RED_YELLOW;
else
P1 = RED_;
}
if(num==4)
{
if(tick<8)
P1 = YELLOW_YELLOW;
else
P1 = _;
}
if(num==5)
P1 = RED_RED;
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main(void)
{
init();
while(1)
{
if(num==0|num==1)
{
tabledu[0] = time/10;
tabledu[1] = time%10;
tabledu[2] = time1/10;
tabledu[3] = tim
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 126537 2012-12-20 18:42 交通灯\Last Loaded 交通灯.DBK
..A..H. 162 2012-12-20 21:02 交通灯\~$通灯实训报告.doc
文件 6936 2012-12-20 21:30 交通灯\交通灯
文件 1078 2012-12-16 22:15 交通灯\交通灯.asm
文件 4656 2012-12-20 21:30 交通灯\交通灯.c
文件 126537 2012-12-20 21:31 交通灯\交通灯.dsn
文件 1967 2012-12-20 21:30 交通灯\交通灯.hex
文件 29 2012-12-20 21:30 交通灯\交通灯.lnp
文件 11244 2012-12-20 21:30 交通灯\交通灯.LST
文件 10279 2012-12-20 21:30 交通灯\交通灯.M51
文件 8194 2012-12-20 21:30 交通灯\交通灯.OBJ
文件 2918 2012-12-20 21:32 交通灯\交通灯.plg
文件 1388 2012-12-20 21:32 交通灯\交通灯.PWI
....... 80839 2012-12-20 21:32 交通灯\交通灯.uvgui.Lerny
....... 80838 2012-12-20 21:29 交通灯\交通灯.uvgui_Lerny.bak
....... 5600 2012-12-20 21:32 交通灯\交通灯.uvopt
....... 13269 2012-12-19 22:47 交通灯\交通灯.uvproj
....... 5598 2012-12-20 21:29 交通灯\交通灯_uvopt.bak
....... 13239 2012-12-16 23:45 交通灯\交通灯_uvproj.bak
目录 0 2012-12-20 21:32 交通灯
文件 28160 2012-12-20 21:32 交通灯\交通灯实训报告.doc
----------- --------- ---------- ----- ----
529468 21
- 上一篇:操作系统内存管理仿真
- 下一篇:YT88外壳加密工具
相关资源
- 普中单片机开发工具.rar
- 数字钟数码管显示时分秒
- Proteus合集电路图、仿真程序仅供参考
- 基于FPGA的DS18B20单总线控制+数码管显
- stm32控制74h595驱动四位数码管
- 包含全加器、抢答器、交通灯控制器
- 基于VHDL语言设计交通灯的设计
- 基于FPGA的交通灯的电路图
- stm32 控制 数码管显示以及LCD显示
- EDA课程设计--交通灯VHDL
- TIA博图PLC交通灯程序
- stm32驱动MAX7219控制数码管显示.zip
- 基于Cyclone II-EP2C35F672C6的交通灯程序
- 数字电路交通灯课程设计
- 微机原理和接口技术课程设计:交通
- 51单片机开发快速上手电子资料包
- 基于FPGA的交通灯控制系统的仿真
- FPGA 使用verilog 编写的AD tlc549 测试程序
- 微机课设——交通信号灯自动控制模
- Verilog编写6位数码管显示计数,每条语
- 基于verilog的交通灯设计
- 基于fpga的交通灯verilog
- 数字电路课程设计交通灯报告+能马上
- 595显示数码管驱动
- 利用proteus完成8255相关要求
- 交通灯控制器
- 交通灯单片机课设
- opencv数码管识别程序
- 各种型号的 数码管封装库3D封装文件
- 硕飞ME830/ME850 单片机开发实验仪最新
评论
共有 条评论