资源简介
模拟十字路口交通灯,设有紧急按钮,当有紧急情况能改变红绿灯状态。(如救护车需优先通过时)

代码片段和文件信息
#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外壳加密工具
相关资源
- 【单片机】51单片机数码管显示万年历
- 25.数码管显示0-99
- STC12C5A60S2 CH4521 驱动数码管 显示
- 基于proteus的单片机仿真--交通灯控制
- CH454键盘与数码管显示程序
- 基于单片机交通灯设计
- 基于EWB软件的数码管显示控制器
- 基于VHDL的交通灯控制器设计
- 数字电路课程设计—交通灯
- 8086交通灯 Proteus原理图及程序
- 单片机电子琴 数码管显示
- Quartus EDA交通灯控制电路的设计实训报
- 74hc244驱动数码管显示电路及程序
- 使用PIC单片机开发的简易数字电压表
- 数码管字体
- STM32F407实时时钟_DS1302实时时钟模块和
- 基于STM32F103的实时时钟程序,采用D
- 51单片机_DS1302时钟芯片_共阴数码管
- 倒计时与选手数码管编号显示的四人
- 光汇科技V3.27单片机开发板电路图
- Quartusii十字交叉路口三色交通灯设计
- 微机原理 十字路口交通灯控制 prot
- 基于Verilog的交通灯设计EDA课程设计
- 数电交通灯 Multisim 13.0 仿真程序已验
- 基于51单片机的交通灯设计
- 交通灯原理图、PCB3d图、Solidworks外壳
- 基于AT89C51的十字路口交通灯设计pro
- 交通灯模拟程序十字路口
- 十字路口交通灯设计
- 基于Multisim10的十字路口交通灯控制器
评论
共有 条评论