本人c学的很差,下面是哥们写的程序,看不懂思路,没法写文档啊,求大佬指点迷津。(stc89c52的恒温控制系统)下面是主函数。
- #include "reg52.h"
- #include<stdio.h>
- #include "1602.h"
- #include "delay.h"
- #include "bsp_ds18b20.h"
- #include "bsp_key.h"
- #define SWITCH_ON 0
- #define SWITCH_OFF 1
- sbit SWITCH_IO1 = P2^6; //定义降温开关IO
- sbit SWITCH_IO2 = P2^5; //定义升温开关IO
- sbit BEEP = P2^7;//定义蜂鸣器IO
- unsigned char Set_temperature = 25; //定义控制温度变量 初始值25度
- bit Set_flag = 0;//定义设置标志位 0是未设置状态 1是设置状态
- void main()
- {
- unsigned char i;
- char buff[20];
- unsigned char key_num = 0;//定义键值临时变量
- float temp = 0;//定义温度临时变量
- LCD_Init(); //初始化液晶
- DelayMs(20); //延时有助于稳定
- LCD_Clear(); //清屏
- Lcd_User_Chr(); //写入自定义字符
- for(i=0; i<40; i++)//上电启动读取40次温度值
- {
- temp = ds18b20ReadTemperature();//读取温度
- DelayMs(10); //延时10ms
- }
- while (1)//进入循环
- {
- temp = ds18b20ReadTemperature();//读取温度
- if(temp > 0 && temp < 100)//如果读取温度大于0小于100
- {
- Ds18b20_temperature = temp; //温度赋值
- }
- /*************显示温度**************/
- if(Ds18b20_temperature < 10)
- sprintf(buff,"Temp: %0.1f", Ds18b20_temperature); //温度组包
- else
- sprintf(buff,"Temp: %0.1f", Ds18b20_temperature);
- LCD_Write_String(3,0,buff);
- sprintf(buff,"Set : %02d", (int)Set_temperature);
- LCD_Write_String(3,1,buff);//更新显存
- key_num = keyScan();//读取键值
- if(key_num != 0)//如果键值不为0
- {
- switch(key_num)
- {
- case 1://按键1按下
- Set_flag = !Set_flag;//设置标志位取反 0是未设置状态 1是设置状态
- if(Set_flag == 0)//根据设置标志位显示箭头指示
- LCD_Write_Char(0, 1, ' ');
- else
- LCD_Write_Char(0, 1, '>');
- break;
- case 2:
- if(Set_flag == 1)//如果当前状态为设置状态
- {
- Set_temperature++ ; //温度+1
- if(Set_temperature > 99)//最大值限位
- Set_temperature = 99;
- }
- break;
- case 3:
- if(Set_flag == 1)//如果当前状态为设置状态
- {
- Set_temperature--; //温度-1
- if(Set_temperature > 99)//最小值限位
- Set_temperature = 0;
- }
- break;
- }
- }
- if((int)Ds18b20_temperature == Set_temperature)//如果当前温度等于设定温度
- {
- SWITCH_IO1 = SWITCH_OFF;//散热开关关闭
- SWITCH_IO2 = SWITCH_OFF;//加热开关关闭
- BEEP = SWITCH_OFF;//蜂鸣器报警关闭
- }
- else if((int)Ds18b20_temperature > Set_temperature)//如果当前温度大于设定温度
- {
- SWITCH_IO1 = SWITCH_ON;//散热开关关闭
- SWITCH_IO2 = SWITCH_OFF;//加热开关开启
- BEEP = SWITCH_ON;//蜂鸣器报警开启
- }
- else if((int)Ds18b20_temperature < Set_temperature)//如果当前温度小于设定温度
- {
- SWITCH_IO1 = SWITCH_OFF;//散热开关关闭
- SWITCH_IO2 = SWITCH_ON;//加热开关开启
- BEEP = SWITCH_ON;//蜂鸣器报警开启
- }
- }
- }
复制代码
|