• 大小: 371KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-07-07
  • 语言: 其他
  • 标签: 客车超载  

资源简介

通过proteus仿真来仿真客车超载,里面单片机为51

资源截图

代码片段和文件信息

#include 

#define uchar unsigned char 
#define uint unsigned int 
unsigned char code table[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f}; //共阴数码管0~9编码
uchar smg_w[]={0xfe0xfd0xfb0xf7};//数码管为选,数码管从左到右为0~3
uchar num=25;                       //车上人数
uchar max=30;//上限人数
uchar max_g=0;  //上限人数高位
uchar max_d=0;  //上限人数低位
sbit key1 = P1^0;    //有人上车
sbit key2 = P1^1;    //有人下车
sbit key3 = P1^4;    // 上限高位+
sbit key4 = P1^5;    //上限低位 +
sbit key5 = P1^6;    //确定
sbit Stop = P1^2;    //打火熄灭,高电平为正常状态,低电平为关闭打火系统
sbit BUZ = P1^3;     //蜂鸣器

bit flag=0;        //确定标志位
//延时函数
void delay(uint t)
{
while(t--);
}
//键盘扫描,key1为上车,人数增加;key2为下车,人数减少
//key3为上限人数高位+1key4为上限人数低位+1key5为确定按键
void keyscan(void)
{
if(!flag)     //确定未按下时,设置上限人数+,设置好后,按确定按钮flag置1
{
max_g=max/10;
max_d=max%10;
if(key3==0)
{
delay(20);
if(key3==0)
{
max_g++;
if(max_g>9) max_g=0;
while(key3==0);
}
}
if(key4==0)
{
delay(20);
if(key4==0)
{
max_d++;
if(max_d>9) max_d=0;
while(key4==0);
}
}
max=max_g*10+max_d;
if(key5==0)
{
delay(20);
if(key5==0)
{
flag=1;
while(key5==0);
}
}
 }
}
//判断车上人数是否超过30人
void pro(void)
{
if(num>max)      //超过max人,关闭打火系统,报警
{
BUZ=0;
Stop=0;
}      
else           //少于max人,打火系统正常,报警关闭
{
BUZ=1;
Stop=1;
}
}
void main(void)
{
uchar gao=0;
uchar di =0;
EX0=1;         //外部中断0开
    IT0=1;         //边沿触发
EX1=1;         //外部中断0开
    IT1=1;         //边沿触发
EA=1;

for(;;)    //死循环
{
keyscan();         //键盘扫描
pro();             //人数判断及报警处理
//在0号数码管显示上限人数十位
          
P2=smg_w[0];         
P0=table[max_g];
delay(300);
P0=0x00;
//在0号数码管显示上限人数个位
         
P2=smg_w[1];         
P0=table[max_d];
delay(300);
P0=0x00;

gao=num/10;        //分离出人数的十位
di =num%10;        //人数个位
  
//在2号数码管显示十位
          
P2=smg_w[2];         
P0=table[gao];
delay(300);
P0=0x00;

//在3号数码管显示个位

P2=smg_w[3];
P0=table[di];
delay(300);
P0=0x00;
}
}

/*------------------------------------------------
                 外部中断0程序
------------------------------------------------*/
void ISR_INT0(void) interrupt 0 using 1
{
 if(num<99)   num++;
 else         num=99;
}
/*------------------------------------------------
                 外部中断1程序
------------------------------------------------*/
void ISR_INT1(void) interrupt 2 using 1
{
 if(num>0)  num--;
 else       num=0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       83445  2013-01-09 15:14  仿真\Backup Of 客车超载.DBK
     文件        6043  2013-01-09 15:14  仿真\kccz
     文件        1388  2013-01-09 15:14  仿真\kccz.hex
     文件          56  2013-01-09 15:14  仿真\kccz.lnp
     文件        9926  2013-01-09 15:14  仿真\kccz.M51
     文件         370  2013-01-09 15:14  仿真\kccz.plg
     文件       67840  2013-01-09 15:14  仿真\kccz.uvgui.User
     文件       67837  2013-01-09 15:14  仿真\kccz.uvgui_User.bak
     文件       45322  2013-01-09 15:14  仿真\kccz.uvopt
     文件       13394  2013-01-09 15:14  仿真\kccz.uvproj
     文件       45320  2013-01-09 15:14  仿真\kccz_uvopt.bak
     文件       13494  2013-01-09 15:14  仿真\kccz_uvproj.bak
     文件      114700  2013-01-09 15:14  仿真\Last Loaded 客车超载.DBK
     文件        2872  2013-01-09 15:14  仿真\main.c
     文件        7048  2013-01-09 15:14  仿真\main.LST
     文件        6284  2013-01-09 15:14  仿真\main.OBJ
     文件        6376  2013-01-09 15:14  仿真\STARTUP.A51
     文件       14062  2013-01-09 15:14  仿真\STARTUP.LST
     文件         749  2013-01-09 15:14  仿真\STARTUP.OBJ
     文件      114564  2013-01-09 15:14  仿真\客车超载.DSN
     文件      282862  2013-01-09 15:00  仿真\客车超载.pdf
     文件         742  2013-01-09 15:59  仿真\客车超载.PWI

评论

共有 条评论

相关资源