资源简介
通过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
- 上一篇:FFT进行FMCW雷达频谱分析的改进算法
- 下一篇:Arcgis中DEM的建立与运用
评论
共有 条评论