资源简介
资源:Keil下.c工程
附:proteus硬件仿真工程
题目:采用单片机设计一个带有数码管显示的交通灯控制系统,能够实现以下功能要求:
东西、南北方向红、绿、黄灯亮/灭的合理控制;
东西、南北方向红、绿灯状态下,倒计时显示;
紧急情况处理,一键控制四个方向全部点亮红灯,数码管熄灭;
扩展功能要求:
可选择小键盘或者串口方式,根据实际交通状态,进行各方向通行时间调整,使交通控制更加合理。
代码片段和文件信息
#include
#define uchar unsigned char
uchar n=0; //计数变量
uchar s=0; //秒
uchar a=30; //设置参数;
sbit shi=P3^0;//数码管显示十位的输入端口
sbit ge=P3^1; //数码管显示个位的输入端口
sbit KEY=P3^3;
sbit KEY_CHANGE1=P3^2;//加5秒
sbit KEY_CHANGE2=P3^4; //减5秒 //定义按键输入端口
uchar code tab[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};//数码管段码表
void delay(uchar k) //1ms延时函数
{
uchar i;
while(k--)
{
for(i=0;i<115;i++);
}
}
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void display(uchar num) //数码管显示函数
{
//显示倒数计时的十位
shi=0;
P2=tab[num/10];
delay(3);
shi=1;
//显示倒数计时个位
ge=0;
P2=tab[num%10];
delay(3);
ge=1;
}
void main()
{
EA=1; //开总中断
ET0=1; //开T0中断
TMOD=0x01; //设置T0工作在方式一
TH0=(65536-10000)/256; //给定时器T0高8位赋初值
TL0=(65536-10000)%256; //给定时器T0低8位赋初值
TR0=1; //启动T0
KEY=1;
KEY_CHANGE1=1;
KEY_CHANGE2=1;//按键输入端口电平置高
while(1){
while(KEY==1)
{
if(s {
if(s {
display(a-5-s); //25秒倒数计时
P1=0xee;
P0=0xbb;
}
else //过渡状态:东西黄灯,南北红灯,保持5秒
{
display(a-s); //5秒倒数计时
P1=0xee;
P0=0xdd;
}
}
else if(s<55) //南北绿灯,东西红灯,保持25秒
{
display(55-s); //25秒倒数计时
P1=0xbb;
P0=0xee;
}
else //过渡状态:南北黄灯,东西红灯,保持5秒
{
display(60-s); //5秒倒数计时
P1=0xdd;
P0=0xee;
}
if(!KEY){
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY){
P1=0xee;
P0=0xee;
}
}
if(!KEY_CHANGE1)
break;
if(!KEY_CHANGE2)
break;
}
if(!KEY_CHANGE1)
a=a+5;
DelayMs(600);
if(!KEY_CHANGE2)
a=a-5;
DelayMs(600);
}
}
void time() interrupt 1 //T0中断,用于1s定时
{
TH0=(65536-10000)/256; //给定时器T0高8位赋初值
TL0=(65536-10000)%256; //给定时器T0低8位赋初值
++n; //每次中断计数变量加一
if(n==100) //1s定时时间到
{
n=0; //计数变量清零,准备下次重新计数
++s; //秒+1
if(s==60) //60秒到,一个交通灯状态循环完毕
s=0; //秒清零,准备下次计数
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-06-07 21:08 Keil_C51\
文件 5911 2019-06-07 21:04 Keil_C51\LED
文件 9971 2019-06-07 21:04 Keil_C51\LED.M51
文件 1386 2019-06-07 21:04 Keil_C51\LED.hex
文件 63 2019-06-07 21:04 Keil_C51\LED.lnp
文件 18945 2019-06-07 21:04 Keil_C51\LED.plg
文件 56916 2019-06-07 21:08 Keil_C51\LED.uvopt
文件 13439 2019-06-07 10:49 Keil_C51\LED.uvproj
文件 55317 2019-06-07 10:49 Keil_C51\LED_uvopt.bak
文件 0 2019-06-07 10:35 Keil_C51\LED_uvproj.bak
文件 6376 2009-05-07 14:37 Keil_C51\STARTUP.A51
文件 14048 2019-06-07 21:04 Keil_C51\STARTUP.LST
文件 749 2019-06-07 21:04 Keil_C51\STARTUP.OBJ
文件 6683 2019-06-07 21:04 Keil_C51\jiaotong_led.LST
文件 6071 2019-06-07 21:04 Keil_C51\jiaotong_led.OBJ
文件 2398 2019-06-07 21:08 Keil_C51\jiaotong_led.c
目录 0 2019-06-07 21:08 proteus仿真工程\
文件 19371 2019-06-07 19:08 proteus仿真工程\Backup Of 交通灯.pdsbak
文件 19664 2019-06-07 21:04 proteus仿真工程\Last Loaded 交通灯.pdsbak
文件 19569 2019-06-07 21:08 proteus仿真工程\交通灯.pdsprj
文件 2574 2019-06-07 21:08 proteus仿真工程\交通灯.pdsprj.zhaojingyuan.赵静圆.workspace
- 上一篇:滴滴出行行程单
- 下一篇:discuz插件自动回帖 商业版4.1.5
相关资源
- 基于stc89c52单片机的智能计算器代码
- 基于51的简易电子琴Proteus仿真与程序
- 基于51单片机的正弦信号发生器设计
- 51单片机计算器
- 基于51单片机的水塔控制系统.doc
- STM32F103RBT6 STM32最小系统 PCB文件+电路
- c8051f020与max487通信
- C51单片机点阵贪吃蛇代码16*16点阵和
- 单片机最小系统元器件库
- 单片机51数字稳压电源 今年的毕设
- 51单片机内部AD采样并显示
- 15单片机矩阵键盘,状态机法消抖
- 51单片机原理图
- 基于51单片机的计步手环
- 声控LED智能灯
- 基于单片机的电子秤毕设PPT
- 用51单片机实现计算器功能
- 51单片机的智能抢答器
- c51单片机数码管显示温度
- 51单片机三路循迹程序
- 单片机lcd矩阵键盘计算器
- 基于单片机的语音控制小车系统设计
- 智能光照控制系统的设计全部代码
- 蓝牙小车程序 绝对完整 整个工程
- 51单片机实现水温控制系统
- 模拟风扇控制系统
- 51单片机 Proteus 心形的滚动显示含代码
- 基于51单片机和LCD1602的计算器
- 基于51单片机/高精度AD(24位)芯片
- 基于51单片机的蓝牙控制继电器程序
评论
共有 条评论