单片机智能电子温度计设计(电路图+原理图+源代码) 第6页

单片机智能电子温度计设计(电路图+原理图+源代码) 第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] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有