• 大小: 292KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-07-15
  • 语言: C/C++
  • 标签: 单片机  温度  

资源简介

单片机,C语言代码,数码管显示模块,温度感应模块,软硬件结合

资源截图

代码片段和文件信息

#include 	         //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义 变量范围0~255
#define uint  unsigned int  //无符号整型 宏定义 变量范围0~65535
#include “eeprom52.h“

//数码管段选定义      0     1    2    3    4    5 6  7   8    9
uchar code smg_du[]={0xc00xf90xa40xb00x990x920x820xf80x800x90
    0x880x830xc60xa10x860x8e0xff};  //断码
//数码管位选定义
uchar code smg_we[]={0xef0xdf0xbf0x7f};
uchar dis_smg[8] = {0xc00xf90xa40xb00x990x920x820xf8};
uchar smg_i = 3;    //显示数码管的个位数
sbit dq   = P2^4; //18b20 IO口的定义
sbit beep = P2^3;   //蜂鸣器IO口定义

bit flag_lj_en;  //按键连加使能
bit flag_lj_3_en;  //按键连3次连加后使能  加的数就越大了 
uchar key_timeflag_value;      //用做连加的中间变量
bit key_500ms  ;


uint temperature ;  //
bit flag_300ms ;
uchar menu_1;       //菜单设计的变量
uint t_high = 300t_low = 100;    //温度上下限报警值 

/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
uint ij;
for(i=0;i for(j=0;j<120;j++);
}

/***********************小延时函数*****************************/
void delay_uint(uint q)
{
while(q--);
}


/***********************数码显示函数*****************************/
void display()
{
static uchar i;   
i++;
if(i >= smg_i)
i = 0;
P1 = 0xff;  //消隐 
P3 = smg_we[i];    //位选
P1 = dis_smg[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);
}

/******************把数据从单片机内部eepom中读出来*****************/
void read_eeprom()
{
t_high  = byte_read(0x2001);
t_high <<= 8;
t_high  |= byte_read(0x2000);
t_low   = byte_read(0x2003);
t_low <<= 8;
t_low   |= byte_read(0x2002);
a_a      = byte_read(0x2055);
}

/**************开机初始化保存的数据*****************/
void init_eeprom()
{
read_eeprom(); //先读
if(a_a != 1) //新的单片机初始单片机内问eeprom
{
t_high = 300;
t_low  = 100;
a_a = 1;
write_eeprom();    //保存数据
}
}


/***********************18b20初始化函数*****************************/
void init_18b20()
{
bit q;
dq = 1; //把总线拿高
delay_uint(1);     //15us
dq = 0; //给复位脉冲
delay_uint(80); //750us
dq = 1; //把总线拿高 等待
delay_uint(10); //110us
q = dq; //读取18b20初始化信号
delay_uint(20); //200us
dq = 1; //把总线拿高 释放总线
}

/*************写18b20内的数据***************/
void write_18b20(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{  //写数据是低位开始
dq = 0;  //把总线拿低写时间隙开始 
dq = dat & 0x01; //向18b20总线写数据了
delay_uint(5);  // 60us
dq = 1;  //释放总线
dat >>= 1;
}
}

/*************读取18b20内的数据***************/
uchar read_18b20()
{
uchar ivalue;
for(i=0;i<8;i++)
{
dq = 0;  //把总线拿低读时间隙开始 
value >>= 1;  //读数据是低位开始
dq = 1;  //释放总线
if(dq == 1)  //开始读写数据 
value |= 0x80;
delay_uint(5);  //60us 读一个时间隙最少要保持60us的时间
}
return value;  //返回数据
}

/*****

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-05 20:43  程序、仿真和原理图\程序\
     文件        3081  2013-11-26 14:44  程序、仿真和原理图\程序\eeprom52.h
     文件       18580  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示
     文件        1060  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示.build_log.htm
     文件        8813  2014-02-27 12:48  程序、仿真和原理图\程序\温度控制数码管显示.c
     文件        7941  2012-12-13 21:53  程序、仿真和原理图\程序\温度控制数码管显示.c.bak
     文件        6339  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示.hex
     文件          68  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示.lnp
     文件         813  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示.LST
     文件       27252  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示.M51
     文件       22299  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示.OBJ
     文件         257  2014-03-03 16:33  程序、仿真和原理图\程序\温度控制数码管显示.plg
     文件       85242  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示.uvgui.Lenovo
     文件        5771  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示.uvopt
     文件       13910  2018-12-30 17:06  程序、仿真和原理图\程序\温度控制数码管显示.uvproj
     文件       55281  2014-02-27 20:18  程序、仿真和原理图\程序\温度控制数码管显示_uvopt.bak
     文件           0  2013-07-03 16:28  程序、仿真和原理图\程序\温度控制数码管显示_uvproj.bak
     目录           0  2019-05-06 16:09  程序、仿真和原理图\仿真图\
     文件      131740  2013-12-21 11:14  程序、仿真和原理图\仿真图\Last Loaded 温度上下限数码管.DBK
     文件        6339  2013-12-24 16:09  程序、仿真和原理图\仿真图\温度控制数码管显示.hex
     文件      131812  2014-03-03 16:36  程序、仿真和原理图\仿真图\温度上下限数码管.DSN
     文件        3000  2019-05-14 10:45  程序、仿真和原理图\仿真图\温度上下限数码管.pdsprj.DESKTOP-9TJPPFC.Batman.workspace
     文件        1626  2014-07-02 20:28  程序、仿真和原理图\仿真图\温度上下限数码管.PWI
     目录           0  2019-05-06 16:09  程序、仿真和原理图\原理图\
     文件      222208  2014-03-06 15:00  程序、仿真和原理图\原理图\DXP格式 温度上下限 蜂鸣器报警.SchDoc
     文件       75782  2014-05-02 12:14  程序、仿真和原理图\原理图\DXP格式 温度上下限 蜂鸣器报警.SchDocPreview
     文件      220887  2014-03-06 15:01  程序、仿真和原理图\原理图\PDF格式 温度上下限 蜂鸣器报警.pdf
     文件       51468  2014-03-06 15:00  程序、仿真和原理图\原理图\protel99格式 温度上下限 蜂鸣器报警.sch
     文件       26624  2014-03-06 15:01  程序、仿真和原理图\原理图\Word格式.doc
     文件         179  2013-12-07 15:35  程序、仿真和原理图\原理图\打开方式.txt

评论

共有 条评论