#include <pic.h>
#include "LCD1602.h"
#include "DS18B20.h"
__CONFIG(0X1832);
#define uchar unsigned char
#define uint unsigned int
#define KEY1 RC4
#define KEY2 RC5
#define KEY3 RC6
#define KEY4 RC7
#define led RD1
#define BEE RD2
void Portinit();
void keyscan();
uchar settemp=36;
uchar setmaxtemp=38;
uchar settempflag=0;
uchar currenttemp;
void main( void )
{
uchar i;
LCD_Init();
TRISC=0XF0;
TRISD=0X00;
LCD_Set_Cursor(0,0); // 从第0行第0个字符位
开始显示
LCD_Puts_ROM(c_LCD_str); //显示 Counter:
LCD_Set_Cursor(0, 4);
LCD_Put_Char(settemp/100+'0');
LCD_Put_Char(settemp%100/10+'0');
LCD_Put_Char(settemp%10+'0');
LCD_Set_Cursor(0, 12);
LCD_Put_Char(setmaxtemp/100+'0');
LCD_Put_Char(setmaxtemp%100/10+'0');
LCD_Put_Char(setmaxtemp%10+'0');
Init_DS18B20();
while (1)
{
ReadTemperature();
LCD_Set_Cursor(1, 9);
LCD_Put_Char(disp[0]+'0');
LCD_Put_Char(disp[1]+'0');
LCD_Put_Char(disp[2]+'0');
LCD_Put_Char(disp[3]);
LCD_Put_Char(disp[4]+'0');
keyscan();
if
(temp1>setmaxtemp||temp1<settemp)
{
led=0;
for(i=0;i<100;i++)
{
BEE=1;
__delay_ms(1);
BEE=0;
}
}
else
{
BEE=0;
led=1;
}
}
}
void keyscan()
{
if(KEY1==0)
{
while(!KEY1);
settempflag++;
if(settempflag>2)
{
settempflag=0;
}
}
if(KEY2==0)
{
while(!KEY2);
if(settempflag==1)
{
settemp++;
LCD_Set_Cursor(0, 4);
LCD_Put_Char(settemp/100+'0');
LCD_Put_Char(settemp%100/10+'0');
LCD_Put_Char(settemp%10+'0');
}
else if(settempflag==2)
{
setmaxtemp++;
LCD_Set_Cursor(0, 12);
LCD_Put_Char(setmaxtemp/100+'0');
LCD_Put_Char(setmaxtemp%100/10+'0');
LCD_Put_Char(setmaxtemp%10+'0');
}
}
if(KEY3==0)
{
while(!KEY3);
if(settempflag==1)
{
settemp--;
LCD_Set_Cursor(0, 4);
LCD_Put_Char(settemp/100+'0');
LCD_Put_Char(settemp%100/10+'0');
LCD_Put_Char(settemp%10+'0');
}
else if(settempflag==2)
{
setmaxtemp--;
LCD_Set_Cursor(0, 12);
LCD_Put_Char(setmaxtemp/100+'0');
LCD_Put_Char(setmaxtemp%100/10+'0');
LCD_Put_Char(setmaxtemp%10+'0');
}
}
if(KEY4==0)
{
settempflag=0;
}
}
void Portinit()
{
GIE=1; // 打开总中断
INTEDG=1; // 设置触发中断的条件为电平从高到低触发
TRISB0=1; // B口方向位最低位为输入,否则无法响应
INT中断
TRISA=0X00;
PORTA=0X00;
ADCON1=0X06;
TRISB=0X00;
PORTB=0X00;
ADCON1=0X00;
// RBPU=0;
}