📄 main.h
字号:
/********************************************************
* 命令字定义 *
********************************************************/
#define uchar unsigned char
#define uint unsigned int
/***精确定时方法*****/
#define CPU_F ((double)2031616) //8000000为 MCLK=8MHZ的意思*
#define Delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define Delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
/***调用此程序时实参必是数字,而不能使用变量作为实参。
Delay_us(1); //这是产生1微秒的延时
Delay_ms(1); //这是产生1毫秒的延时
Delay_us(3.5); //延时3.5毫秒,还是可以这样呢
Delay_ms(3.5); //延时3.5毫秒…是不是很实用?
***精确定时方法*****/
//#define wei1_1 P1DIR|=BIT7;P1OUT|=BIT7 //数码管低位置高
//#define wei1_0 P1DIR|=BIT7;P1OUT&=~BIT7 //数码管低位置低
//#define wei2_1 P1DIR|=BIT6;P1OUT|=BIT6 //数码管高位置高
//#define wei2_0 P1DIR|=BIT6;P1OUT&=~BIT6 //数码管高位置低
#define duan_out P2DIR=0xff //数码管段选P2口设为输出
#define IR_DIR_IN P1DIR&=~BIT0 //红外接收头P1.0设置为输入,
#define IRIN (P1IN&BIT0) //红外接收头输入值
#define duan P2OUT //数码管段选为P2口
//设置重复检测次次数,超出次数则超时
#define ReDetectTime 20
//ds18b20命令
#define SkipROM 0xCC
#define MatchROM 0x55
#define ReadROM 0x33
#define SearchROM 0xF0
#define AlarmSearch 0xEC
#define Convert 0x44
#define WriteScr 0x4E
#define ReadScr 0xBE
#define CopyScr 0x48
#define RecallEE 0xB8
#define ReadPower 0xB4
//P2.0接DS18B20的DQ,P2.1为DQ的上拉电源
#define ReleaseDQ() P2OUT |= BIT0 //上拉/释放总线
#define PullDownDQ() P2OUT &= ~BIT0 //下拉总线
#define vcc() P2OUT |= BIT1
#define ReadDQ() P2IN&BIT0
#define IoIn_DQ() P2DIR&=~BIT0
#define IoOut_DQ() P2DIR|=BIT0
#define RXD 0x02 // RXD on P1.1
#define TXD 0x01 // TXD on P1.0
// Conditions for 9600 Baud SW UART, SMCLK = 1048576
#define Bitime_5 0x47 // ~ 0.5 bit length + small adjustment
#define Bitime 0x6C // ~ 9620 baud
unsigned int RXTXData;
unsigned char BitCnt;
void TX_Byte (void);
void RX_Ready (void);
/********************************************************
* 函数 *
********************************************************/
void Display(void); //显示
void Sys_Init(void); //系统初始化
void Ds18b20_WriteBit(uchar bitdata); //写bit2DS18B20
void Ds18b20_WriteByte(uchar chrdata); //写Byte DS18B20
void Ds18b20_Write(uchar *p_readdata, uchar bytes); //写 DS18B20
uchar Ds18b20_Init(void); //DS18B20初始化,存在返0,否则返1
uchar Ds18b20_ReadBit(void); //读bit From DS18B20
uchar Ds18b20_ReadByte(void); //读Byte DS18B20
//uchar Ds18b20_ReadRom(uchar *p_readdata); //读 DS18B20 ROM:成功返0,失败返1
uchar Ds18b20_ReadEE(uchar *p_readdata); //读 DS18B20 EE :成功返0,失败返1
uchar TempCal(uchar *p_fuhao,uchar*p_wendu_zhensu,uchar *p_wendu_yusu);
//成功返0,失败返1 (温度范围-55 --- +128)
void InitSys();
void display();
void temG();
void mu1(void);//mu
void mu2(void);//上
void mu3(void);//下
void mu4(void);//enter
void flash_eraseFLASH(uchar *seg);
void flash_writeByte(int dst, uchar value);
void ReadFlash(uint wAddr,uchar *bBuf,uchar bLen);
/********************************************************
* 变量 *
********************************************************/
uchar time_yanshi, key_yanshi;
uchar wendu_zhensu = 0;
uchar wendu_yusu = 0;
uchar wendu_fuhao = 0;
uchar dat[8]={0,0,0,0,0,0,0,0};
uchar dw,dd,day,wdj,ds,i1,i2,i3,i4;
uchar y1=1,x=1,y2=1;
uint daf;
int pp;
uint tt1[6]={0,0,0,0,0,0};
uchar wt1[6]={21,21,21,21,21,21};
const uchar xx[4]={1,1,1,1},a[6]={5,1,1,12,12,10},b[6]={0,0,0,31,31,0};
const uchar c[6]={0,0,0,60,74,0};
const uchar digit[13]=
{
0xAF, // "0" LCD segments a+b+c+d+e+f
0xA0, // "1" b+c
0xCB, // "2" a+b+g+e+d
0xE9, // "3" a+b+c+d+g
0xE4, // "4" b+c+f+g
0x6D, // "5" a+c+d+f+g
0x6F, // "6" a+c+d+e+f+g
0xA8, // "7" a+b+c
0xEF, // "8" a+b+c+d+e+f+g
0xED, // "9" a+b+c+d+f+g
0x40, // "-"
0x4f, // "E"
0x00 /* 不显示 */
};
const uchar CrcTable [256]={
0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -