资源简介
中石油加油机的控制程序(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;i for(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)
相关资源
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 浙江工业大学2005-2006学年单片机习题
- 单片机与PC机串口通讯仿真
- 毕业设计 单片机 对讲机 protues仿真
- 数据采集系统——ADC0808的应用,单片
评论
共有 条评论