四川信息职业技术学院毕业设计说明书
加10
}
if(t_low >= t_high)
t_low = t_high - 1;
if(key_can == 3) {
if(flag_lj_3_en == 0)
t_low -- ;
//按键按下未松开自动减三次
else
t_low -= 10;
//按键按下未松开自动加三次之后每次自动
}
if(t_low <= 10)
t_low = 10;
dis_smg[0] = smg_du[t_low % 10]; //取小数显示
dis_smg[1] = smg_du[t_low / 10 % 10] & 0xdf; //取个位显示 dis_smg[2] = smg_du[t_low / 100 % 10] ; dis_smg[3] = 0x3D;
//L
//取十位显示
} }
/****************风扇控制函数***************/ void fengshan_kz() {
// static uchar value; if(temperature >= t_high) {
第 29 页
//风扇全开
四川信息职业技术学院毕业设计说明书
}
TR1 = 1; pwm = 0;
else if((temperature < t_high) && (temperature >= t_low)) //风扇缓慢
{ }
else if(temperature < t_low) {
TR1 = 0; pwm = 1;
//关闭风扇
f_pwm_l = 60; TR1 = 1;
} }
/****************主函数***************/
void main() {
time_init(); //初始化定时器 temperature = read_temp();
//先读出温度的值
init_eeprom(); //开始初始化保存的数据 delay_1ms(650);
//先读出温度的值
temperature = read_temp();
dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示 dis_smg[1] = smg_du[temperature / 10 % 10] & 0xdf; //取温度的个位显示
第 30 页
四川信息职业技术学院毕业设计说明书
dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示
f_pwm_l = 50; while(1) {
//按键程序
key();
if(key_can < 10) { }
if(flag_300ms == 1) //300ms 处理一次温度程序 {
flag_300ms = 0;
temperature = read_temp(); //先读出温度的值 if(menu_1 == 0) {
smg_i = 3; key_with();
//设置报警温度
dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示
dis_smg[1] = smg_du[temperature / 10 % 10] & 0xdf; //取温度
的个位显示
dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示
}
第 31 页
}
}
fengshan_kz(); //风扇控制函数
四川信息职业技术学院毕业设计说明书
}
/*************定时器0中断服务程序***************/
void time0_int() interrupt 1 {
static uchar value; TH0 = 0xf8;
TL0 = 0x30; //2ms display(); value++; if(value >= 150) { }
if(flag_lj_en == 1) //按下按键使能 {
key_time ++;
if(key_time >= 250) //500ms {
key_time = 0;
key_500ms = 1; //500ms key_value ++; if(key_value > 3) {
key_value = 10;
flag_lj_3_en = 1; //3次后1.5秒连加大些
第 32 页
//定时2ms中断一次
//数码管显示函数
value = 0; flag_300ms = 1;
四川信息职业技术学院毕业设计说明书
} }
}
}
/************定时器1用做单片机模拟PWM 调节***********************/
void Timer1() interrupt 3 //调用定时器1 {
static uchar value_l;
TH1=0xfe; // 定时10ms中断一次 TL1=0x0c; //500us if(pwm==1) { } else {
value_l+=3;
if(value_l > 100 - f_pwm_l) {
第 33 页
value_l+=3;
if(value_l > f_pwm_l) //高电平 {
value_l=0;
if(f_pwm_l != 0) }
pwm=0;
//低电平