• 大小: 86KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: 单片机  C51  

资源简介

资源: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

评论

共有 条评论