#include <reg52.h>
#include <intrins.h>
#include <absacc.h>
#include <stdio.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS = P0^2; //LCD数据/指令通道选择
sbit LCD_RW = P0^1; //LCD读写选择信号
sbit LCD_EN = P0^0; //LCD势使能
sbit P0_5=P0^5; //蜂鸣器引脚
sbit P0_6=P0^6; //冷却电路输入端
sbit P0_7=P0^7; //加热电路输入端
sbit P3_5=P3^5; //传感器数据接入脚
uchar code seg7code[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //16位键码码
uchar TEMP; // 温度值的变量;
uchar flag1; // 结果为负和正的标志位。
uchar k; //K为按键键值段码顺序
uchar M; //键盘扫描值
uchar E; //E为温度范围下限侄
uchar F; //F为温度范围上限值
void delay (uint count) //延时程序
{
uint i;
while (count)
{
i =200;
while (i>0) i--;
count--;
}
}
Getch ( ) //键盘扫描程序
{ uchar X,Y,Z;
P2=0xff;
P2=0x0f; //先对P2置数 行扫描
if(P2!=0x0f) //判断是否有键按下
{delay(25); //延时,软件去干扰 延时10MS
if(P2!=0x0f) //确认按键按下X = P2;
{
X=P2; //保存行扫描时有键按下时状态
P2=0xf0; //列扫描
Y=P2; //保存列扫描时有键按下时状态
Z=X|Y; //取出键值
switch ( Z ) //判断键值(那一个键按下)
{
case 0xee: k=0; break; //对键值赋值
case 0xde: k=1; break;
case 0xbe: k=2; break;
case 0x7e: k=3; break;
case 0xed: k=4; break;
case 0xdd: k=5; break;
case 0xbd: k=6; break;
case 0x7d: k=7; break;
case 0xeb: k=8; break;
case 0xdb: k=9; break;
case 0xbb: k=10;break;
case 0x7b: k=11;break;
case 0xe7: k=12;break;
case 0xd7: k=13;break;
case 0xb7: k=14;break;
case 0x77: k=15;break;
}
M=seg7code[k];
return(M);
}
}
}
void tmreset (void) // 发送复位和初始化
{
uint i;
P3_5 = 0;
i = 103;
youerw.com
}
bit tmpread (void) // 读取数据的一位
{
uint i;
bit dat;
P3_5 = 0; i++;
P3_5 = 1; i++; i++; //延时
dat = P3_5;
i = 8; while (i>0) i--; // 延时
return (dat);
}
uchar tmpread2 (void) //读一个字节
{
uchar i,j,dat;
dat = 0;
for (i=1;i<=8;i++)
{
<< 上一页 [11] [12] [13] [14] [15] [16] 下一页