原代码:
- #include<reg51.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
- #include<stdio.h>
- #include "LCD12864.h"
- #include "18b20.h"
- #include "delay.h"
- uint count1=70,count2=35;
- unsigned char moshicount=1;
- unsigned char GNcount=0;
- sbit moshi=P1^4;
- sbit INC=P1^5;
- sbit DEC=P1^6;
- sbit gongneng=P1^7;
- sbit K1=P1^1;
- //阀值设置函数
- void shezhi()
- {
-
- moshi=1;
- gongneng=1;
- if(moshi==0)
- {
- DelayMs(10);
- while(moshi==0);
- moshicount++;
- }
- if(gongneng==0)
- {
- DelayMs(10);
- while(gongneng==0);
- GNcount++;
- if(GNcount==3)
- GNcount=0;
- }
- switch(moshicount)
- {
- case 1:
- {
- INC=1;DEC=1;
- if(INC==0)
- {
- DelayMs(10);
- while(INC==0);
- count1++;
- }
- else if(DEC==0)
- {
- DelayMs(10);
- while(DEC==0);
- count1--;
- }
-
- }break;
- case 2:
- {
-
- INC=1;DEC=1;
- if(INC==0)
- {
- DelayMs(10);
- while(INC==0);
- count2++;
- }
- else if(DEC==0)
- {
- DelayMs(10);
- while(DEC==0);
- count2--;
- }
-
- }break;
- case 3:
- {
- moshicount=0;
-
- }break;
- default :break;
- }
-
- }
- void InitTimer0(void)//定时计数器0初始化
- {
- TMOD = 0x01;
- TH0 = 0x0D8;
- TL0 = 0x0F0;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- void Timer0Interrupt(void) interrupt 1//定时计数器0中断服务
- {
- TH0 = 0x0D8;
- TL0 = 0x0F0;
- shezhi();
-
- }
- /*------------------------------------------------
- 串口通讯初始化
- ------------------------------------------------*/
- void UART_Init(void)
- {
- SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
- TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
- TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
- TR1 = 1; // TR1: timer 1 打开
- //EA = 1; //打开总中断
- //ES = 1; //打开串口中断
- TI =1;
- }
- void main(void)
- {
- unsigned int TempH,TempL,temp;
- double temperature;
- uchar displaytemp[16];//定义显示区域临时存储数组
- InitTimer0();
- lcd_init();
- UART_Init();
- DelayMs(10); //延时有助于稳定
- while(1)
- {
- temp=ReadTemperature();
- temperature=(double)temp*0.0625;
- if(temp&0x8000)
- {
- temp=~temp; // 取反加1
- temp +=1;
- }
- else
- TempH=temp>>4;
- TempL=temp&0x0F;
- TempL=TempL*6/10;//小数近似处理
- printf("%d.%d\n",TempH,TempL);
-
- sprintf(displaytemp,"温度: %7.3f *C",temperature);//打印温度值(%7.3fbiaoshi)
- lcd_char(1,0,16,displaytemp);
- if(moshicount!=0)
- {
- sprintf(displaytemp,"最高温度:%3d *C",count1);
- lcd_char(2,0,16,displaytemp);
- sprintf(displaytemp,"最低温度:%3d *C",count2);
- lcd_char(3,0,16,displaytemp);
- }
-
- if(GNcount==0)
- {
- uchar c[16]="功能选择: 关闭 ";
- lcd_char(4,0,16,c);
- }
- if(GNcount==1)
- {
- uchar c[16]="功能选择: 保温 ";
- lcd_char(4,0,16,c);
- K1=1;
-
- }
- if(GNcount==2)
- {
- uchar c[16]="功能选择: 加热 ";
- lcd_char(4,0,16,c);
- K1=1;
- }
- }
- }
复制代码
全部资料(压缩包)下载
温控系统.rar
(175.67 KB, 下载次数: 46)
|