|
#include <reg52.h> //調用單片機頭文件
#define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255
#define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
#include "eeprom52.h"
//數(shù)碼管段選定義 0 1 2 3 4 5 6 7 8 9
uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //斷碼
//數(shù)碼管位選定義
uchar code smg_we[]={0xef,0xdf,0xbf,0x7f};
uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
uchar smg_i = 3; //顯示數(shù)碼管的個位數(shù)
sbit dq = P3^7; //18b20 IO口的定義
sbit beep = P1^1; //蜂鳴器IO口定義
bit flag_lj_en; //按鍵連加使能
bit flag_lj_3_en; //按鍵連3次連加后使能 加的數(shù)就越大了
uchar key_time,flag_value; //用做連加的中間變量
bit key_500ms ;
uint temperature ; //
bit flag_300ms ;
uchar menu_1; //菜單設計的變量
uint t_high = 300,t_low = 100; //溫度上下限報警值
/***********************1ms延時函數(shù)*****************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
/***********************小延時函數(shù)*****************************/
void delay_uint(uint q)
{
while(q--);
}
/***********************數(shù)碼顯示函數(shù)*****************************/
void display()
{
static uchar i;
i++;
if(i >= smg_i)
i = 0;
P0 = 0xff; //消隱
P2 = smg_we[i]; //位選
P0 = dis_smg[i]; //段選
}
/******************把數(shù)據(jù)保存到單片機內(nèi)部eepom中******************/
void write_eeprom()
{
SectorErase(0x2000);
byte_write(0x2000, t_high % 256);
byte_write(0x2001, t_high / 256);
byte_write(0x2002, t_low % 256);
byte_write(0x2003, t_low / 256);
byte_write(0x2055, a_a);
}
|
|