• 大小: 8KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: 其他
  • 标签: 单片机  

资源简介

中石油加油机的控制程序(C51),有需要的的朋友可以借鉴。

资源截图

代码片段和文件信息

#include //11.0592MHz,看门狗工作
#define uchar unsigned char
#define uint unsigned int
#define ON 0;
#define OFF 1;
#define reset() {WDT=0x1e;WDT=0xe1;}//看门狗复位宏定义
uchar code DATA_7SEG[10]={0x3f0x060x5b0x4f0x66
                    0x6d0x7d0x070x7f0x6f};/*0~9的数码管段码*/
uint deda;    //1ms计时单元
uchar sec; //计时秒
char set_min; //设定分
uchar min_5m; //5分钟计数器
uchar val; //中间变量
uchar pwm_val; //调宽脉冲变量值
char push_val; //压力变化值
sfr WDT=0xa6;//定义看门狗定时器
sbit pushdec_key=P1^4; //压力-键
sbit pushinc_key=P1^3; //压力+键
sbit timedec_key=P1^2; //时间-键
sbit timeinc_key=P1^1; //时间+键
sbit buzz=P3^5; //驱动蜂鸣器端
sbit out=P3^6;//调宽脉冲输出端
sbit relay=P3^7; //驱动继电器端
uchar dis_sel; //显示内容散转标志
bit over_5m; //5分钟溢出标志
bit flag_5m; //5分钟标志
bit flag_5s; //5秒钟标志
bit start; //启动标志
bit dis_flag; //显示标志
bit key_flag; //按下键标志
bit buzz_sound; //蜂鸣器声响标志
bit y; //中间变量
bit out_flag;//pwm输出标志
/*****************函数声明列表*****************/
void time_conv(void);// 时间计算子函数
void pwm_out(void);// 调宽脉冲输出子函数
void push_dis(void); //显示压力子函数
void oil_dis(void); //显示缺油子函数
void normal_dis(void) ;//显示正常工作子函数
void other_dis(void); //显示(缺油、超温)子函数
void temp_dis(void); //显示超温子函数
void oil_low(void); //缺油处理子函数
void temp_over(void); //超温处理子函数
void other(void); //(缺油、超温)处理子函数
void buzz_control(void); //控制蜂鸣器子函数
void delay(uint k); //延时子函数
void init(void); //初始化子函数
void init_timer0();//定时器0初始化子函数
void init_timer1();//定时器1初始化子函数
void key(void) ; //按键/感应开关处理子函数
void close(void); //关机子函数
void time_inc(void); //时间+子函数
void time_dec(void); //时间-子函数
void push_inc(void); //压力+子函数
void push_dec(void); //压力-子函数
void normal_work(void); //正常工作子函数
/**********************************/
/*******************初始化**********************/
void init()
{
IT0=1;
IE=0x8b;
reset()
}
/*********************定时器T0初始化************************/
void init_timer0()
{
TMOD=0x11;
TH0=-(1150/256);
TL0=-(1150%256);
TR0=0;ET0=1;EA=1;
}
/*************定时器T1初始化************/
/*定时器T1初始化*/
void init_timer1()
{
TH1=-(5000/256);
TL1=-(5000%256);
TR1=1;ET1=1;EA=1;
}
/*************延时子函数***************/
/*延时子函数*/
void delay(uint k)
{
uint ij;
for(i=0;ifor(j=0;j<60;j++)
{;} reset()}
}


/********************外中断0服务子函数*********************/
void int0_serve(void) interrupt 0 using 1
{
delay(20);
if(P3_2==0)
start=!start;
while(P3_2==0)
{delay(20);
if(P3_2==1)break;}
}
/****************************************/
/*1mS定时中断服务子函数*/
void timer0(void) interrupt 1  using 2
{
TH0=-(1150/256);
TL0=-(1150%256);
deda++;
pwm_val++;
pwm_out();
time_conv();
}
/*************调宽脉冲输出子函数***************/
void pwm_out(void)
{
if(out_flag)
{
if(pwm_val<=(push_val+30)) {out=ON;}
else {out=OFF;}
if(pwm_val>=50) pwm_val=0;
}
else out=OFF;
}
/****************时间计算子函数***************/
void time_conv(void)
{
if(deda>=1000){sec++;deda=0;}
if(deda==500){buzz_sound=!buzz_sound;}
if(sec>=60)
{set_min--;sec=0;
if(flag_5m)min_5m++;
}
if(min_5m>=5)

评论

共有 条评论