国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
51單片機車輛超載檢測仿真程序
[打印本頁]
作者:
coolice
時間:
2020-2-1 23:40
標題:
51單片機車輛超載檢測仿真程序
1.jpg
(157.52 KB)
下載附件
2020-2-1 23:37 上傳
仿真文件和c語言源碼
單片機源程序如下:
車輛超載檢測仿真.rar
(197.03 KB, 售價: 1 E幣)
2020-2-1 23:39 上傳
點擊文件名下載附件
售價: 1 E幣
[記錄]
[
購買
]
#include <reg52.h>
#include <intrins.h>
#include <math.h>
#include <ad.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong long
uchar code zifux[]="0123456789abcdef";
uchar code zifu0[]=" Overload test ";
uchar code zifu1[]=" parameter set" ;
sbit key4=P2^3; //-
sbit key5=P2^4; //+
sbit key6=P2^5; //moshi
//-----------------------------
sbit led2=P0^1; //燈
sbit led3=P0^2; //燈
sbit buz=P2^0;
//模式
uchar moshi=0;
uchar run=3;
uchar runled=0;
uchar timel,timeh;
uchar a_a;
//次數
uint num=0;
uint time=1;
uint t=0;
uint t1=0;
uint ctime=1000;
uint R_flag=0;
uint C_flag=0;
uint f=1;
uint s1=0;
uint ff=0;
uint tt=1;
ulong ad;
#include "1602.h"
//#include "eepom52.h"
void xianshi0()
{
//Weight---------
LCD1602_string(1,1,zifu0);
ad= adc0832(0);
ad=ad*4000/255;
lcd1602_adr(0x46);
lcd1602_writenumber('w');
lcd1602_writenumber(':');
lcd1602_writenumber(0x30+ad/1000);
lcd1602_writenumber(0x30+ad%1000/100);
lcd1602_writenumber(0x30+ad%100/10);
lcd1602_writenumber(0x30+ad%10);
lcd1602_writenumber('k');
lcd1602_writenumber('g');
//Count--------
lcd1602_adr(0x40);
lcd1602_writenumber('c');
lcd1602_writenumber(':');
lcd1602_writenumber(0x30+num%100/10);
lcd1602_writenumber(0x30+num%10);
}
void xianshi1()
{
LCD1602_string(1,1,zifu1);
//Weight---------
lcd1602_adr(0x46);
lcd1602_writenumber('w');
lcd1602_writenumber(':');
lcd1602_writenumber(0x30+ctime/1000);
lcd1602_writenumber(0x30+ctime%1000/100);
lcd1602_writenumber(0x30+ctime%100/10);
lcd1602_writenumber(0x30+ctime%10);
lcd1602_writenumber('k');
lcd1602_writenumber('g');
lcd1602_adr(0x4e); lcd1602_writenumber(' ');
//Count---------
lcd1602_adr(0x40);
lcd1602_writenumber('c');
lcd1602_writenumber(':');
lcd1602_writenumber(0x30+time%100/10);
lcd1602_writenumber(0x30+time%10);
lcd1602_adr(0x44); lcd1602_writenumber(' ');
}
//控制---------------------------------
void ctrl()
{
//**********************************************************
if(moshi==0)
{
//開始
{
runled=1;
IT0=1; //INT0 中斷允許
EX0=1; //INT0
//------INT1 中斷允許-------
IT1=1; //INT1 中斷允許
EX1=1; //INT1
}
}
if(key6==0)
{
moshi=moshi+1;
if(moshi==2){lcd1602_adr(0x44); lcd1602_writenumber('<');}
if(moshi==3){lcd1602_adr(0x4e); lcd1602_writenumber('<');}
if(moshi==4) moshi=0; while(key6==0);
}
//人數設置
if((key4==0)&&(moshi==2))
{
lcd1602_adr(0x44); lcd1602_writenumber('<');
if(time<99)time=time+1; while(key4==0);
}
if((key5==0)&&(moshi==2))
{
lcd1602_adr(0x44); lcd1602_writenumber('<');
if(time>0) time=time-1; while(key5==0);
}
//重量設置
if((key4==0)&&(moshi==3))
{
lcd1602_adr(0x4e); lcd1602_writenumber('<');
if(ctime<4000)ctime=ctime+100;while(key4==0);
}
if((key5==0)&&(moshi==3))
{
lcd1602_adr(0x4e); lcd1602_writenumber('<');
if(ctime>0)ctime=ctime-100; while(key5==0);
}
}
//主函數
void main()
{
_delay_ms(10);
// led2=0;led1=1;
//初始化
lcd1602_init();
LCD1602_string(1,1,zifux);
LCD1602_string(1,1,zifu0);
//------INT0 中斷允許-------
IT0=1; //INT0 中斷允許
EX0=1; //INT0
//------INT1 中斷允許-------
IT1=1; //INT1 中斷允許
EX1=1; //INT1
//使能中斷
EA=1;
num=0;
while(1)
{
if(moshi==0)xianshi0();
if(moshi>0) xianshi1();
ctrl();
if(C_flag==1)
{
led3=0;
_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
led3=1;
C_flag=0;
}
if(R_flag==1)
{
led2=0;
_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
led2=1;
R_flag=0;
}
if((num>time)||(ad>ctime)){buz=0;}
else {buz=1; }
}
}
//----INT0 中斷函數
void EX_INT0() interrupt 0
{
//功能1
if(runled==1)
{
t=1;
if((t1==1))
{
num=num+1;
t1=0;
t=0;
R_flag=1;
ff=1;
}
if(num==ctime){f++;ff=0;}
}
}
//----INT1 中斷函數
void EX_INT1() interrupt 2
{
if(runled==1)
{
t1=1;
if(num==ctime)
{
s1++;
if(f>s1)
{
ff=1;
s1=0;
f=0;
}
}
if((t==1)&&(num>0)&&(ff==1))
{
num=num-1;
t1=0;t=0;
C_flag=1;
}
}
}
復制代碼
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0