单片机智能电子温度计设计(电路图+原理图+源代码) 第6页
单片机1
/**********************************************
Project Name : 智能体温计程序_主机
Designed By : sc.Dai
Date : 2007.5.30
**********************************************/
#include <reg51.h>
#include <absacc.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dis_code[10]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
0x99,0x92,0x82,0xf8,0x80,0x90}; // 4, 5, 6, 7, 8, 9, off
uchar data set_data[3]={0x00,0x07,0x03}; //预设37.0度
uchar data ad_data; //AD转换结果
uchar data dis_buf[3]={0x00,0x00,0x00}; // 显示缓冲区
uchar data bcd_buf[3]={0x00,0x00,0x00}; //十进制BCD码转换存放区
uchar data TIMER0_NUM;
bit TIMER0_flag;
bit data set_flag=0;
sbit ALE=P2^4;
sbit OE=P2^5;
sbit START=P2^6;
sbit EOC=P2^7;
sbit P30=P3^0;
sbit select0=P3^7;
sbit select1=P3^6;
sbit select2=P3^5;
sbit K1=P2^0;
sbit K2=P2^1;
sbit K3=P2^2;
sbit K4=P2^3;
sbit bep=P3^3;
sbit SET_IND=P3^4;
sbit P17=P1^7; //小数点
uint data temp;
/**********************************************/
/*函数声明
/**********************************************/
void delay1ms(uchar t);
void adc(void);
void BCD(void);
void keyscan(void);
void send_str(void);
void beep(void);
void display(void);
/**********************************************/
/*按键蜂鸣函数
/**********************************************/
void beep2(void)
{
uchar data j,k;
for(j=26;j>0;j--)
{
for(k=254;k>0;k--);
bep=!bep;
}
bep=1;
}
/**********************************************/
/*蜂鸣报警
/**********************************************/
void beep(void)
{
uchar data j,k;
for(j=100;j>0;j--)
{
for(k=254;k>0;k--)
bep=0;
}
bep=1; //关蜂鸣器
}
/**********************************************/
/*延时1ms函数
/**********************************************/
void delay1ms(uchar t)
{
uchar j,k;
for(j=0;j<t;j++)
for(k=0;k<120;k++);
}
/**********************************************/
/*AD转换函数
/**********************************************/
void adc(void)
{
ALE=1;
_nop_();
_nop_();
ALE=0;
www.751com.cn
_nop_();
while(EOC==0); //等待转换结束
OE=1;
ad_data=P0; //读入转换数据
OE=0;
}
/**********************************************/
/*十进制BCD码转换函数
/**********************************************/
void BCD(void)
{
bcd_buf[2]=(ad_data/51); //十位
temp=(ad_data%51);
te=(temp%51);
temp=temp*10;
bcd_buf[0]=(temp/51); //小数位
if(bcd_buf[2]>set_data[2]) //报警值检测
beep();
else if(bcd_buf[2]==set_data[2])
{
if(bcd_buf[1]>set_data[1])
beep();
else if(bcd_buf[1]==set_data[1])
{
if(bcd_buf[0]>set_data[0])
beep();
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页