历史上的今天
返回首页

历史上的今天

今天是:2025年02月12日(星期三)

正在发生

2020年02月12日 | 单片机LM75温度报警LCD1602显示实验

2020-02-12 来源:51hei

一个由lm75构成的温度报警器例程
LM75数字温度传感器报警测试程序
1、程序说明:
  该例程演示了接在单片机端口上的数字温度传感器LM75测试实验。
  并在1602液晶上显示当前温度。同时判断是否超过了温度上限和下限,
  如果超过,液晶屏将有提示闪烁。


2、实验操作
1、将跳线插座J4的跳线帽调至1602端
2、将LCD1602液晶屏插入J3插座中,注液管脚方向。
3、通过调节电位器VR1可以改变显示的对比度。    

单片机源程序如下:

/************************************************

* 文件描述     : LM75数字温度传感器报警测试程序

* 程序文件     : main.c                 

* 版    本     : 1.0

* 作    者     : 火龙电子工作室

* 日    期     : 2017.10.01

* 芯    片     : STC8A8K64S4A12

* 时    钟                        :内部时钟24MHz

* 开发环境                        :Keil uVision4 C51 V9.52

   

* 操    作                :        1、将跳线插座J4的跳线帽调至1602端

                                                                2、将LCD1602液晶屏插入J3插座中,注液管脚方向。

                                                                3、通过调节电位器VR1可以改变显示的对比度。        


* 现    象                :        1602显示温度信息。当温度超过程序设定的40度,液晶屏显示High Temp,

                                                          当温度低于程序设定的10度,液晶屏显示Low Temp。

                                                        

* 备    注                :        

                                                        用电烙铁靠近LM75可以观察到高温报警。

                                                        详细说明见左侧Doc目录下的readme文件 


************************************************/

//文件包含

#include "stc8a8k64s4a12.h"

#include "system.h"

#include "lcd1602.h"

#include "lm75.h"        


//宏定义

#define uchar unsigned char

#define uint  unsigned int                                                                 


//更新温度标记

bit UpdateFlag=0;                


//报警标记

bit   NoAlarmFlag=0;

unsigned char AlarmPara=0;        


//设定报警温度上下限

#define TH                40                 

#define TL                10

         

//函数声明

void Timer0_Init(void);

void LM75_GetTemperature(void);


//主方法

void main(void)

{        

        bit FlashFlag;                                                //闪烁标记

        System_Init();                                                //系统初始化

        LCD1602_Init();                                                //LCD1602初始化

        LCD1602_Display_Clear();

        Delay_ms(1000);

        LM75_Init();                                                   //LM75初始化

  Timer0_Init();                                                //定时器初始化

        

        LCD1602_Display_Welcome();//显示欢迎信息        

        

        while(1)

        {        

                if(UpdateFlag==1)                                //定时1s更新温度

                {

                        UpdateFlag=0;

                        LM75_GetTemperature();//读取温度


                        if(AlarmPara!=0)                        //如果超温

                        {

                                FlashFlag=!FlashFlag;        //用于闪烁显示

                                if(FlashFlag==0)

                                {

                                        switch(AlarmPara)

                                        {

                                                case 1:

                                                {

                                                        LCD1602_Display_High();//显示高温

                                                }break;

                                                case 2:

                                                {

                                                        LCD1602_Display_Low();//显示低温

                                                }break;        

                                        }

                                }

                                else

                                {

                                        LCD1602_Display_Clear();//清除显示,用于闪烁显示        

                                }

                                //如果不报警标记有效

                                if(NoAlarmFlag==1)

                                {

                                        NoAlarmFlag=0;        

                                        AlarmPara=0;

                                        LCD1602_Display_Welcome();

                                }        

                        }                        

推荐阅读

史海拾趣

CEVA, Inc公司的发展小趣事

CEVA公司在超低功耗技术方面取得了显著突破。公司开发的超低功耗IP包括由专用DSP与AI和其他类型的加速器组成的综合平台。这些加速器针对低功耗工作负载进行了优化,包括5G基带处理、智能视觉、语音识别、物理层处理和传感器融合等。这些技术的突破使得CEVA的产品在保持高性能的同时,能够大幅度降低功耗,满足了市场对节能设备的需求。

Carlisle Interconnect Technologies公司的发展小趣事

Carlisle Interconnect Technologies(当时名为Tensolite)的创业之路始于1940年,在纽约Tarrytown的一个小工厂里。公司创始人凭借对微型绝缘电线和电缆的深刻理解和前瞻视野,开创了绝缘电线电缆的新纪元。Tensolite这个名称,象征着产品的高拉伸强度和紧凑轻巧的特性,这种创新的设计理念很快在市场上赢得了口碑。公司的第一根绝缘线产品成功应用于电加热,为第二次世界大战期间的空军飞行员提供了温暖的手套和飞行服,这一成就不仅彰显了公司的技术实力,也为后续发展奠定了坚实的基础。

ARMKEIL Microcontroller Tools公司的发展小趣事

2005年,对于Keil公司来说是一个具有里程碑意义的年份。在这一年,英国的ARM公司看中了Keil在嵌入式系统开发工具领域的领先地位和技术实力,决定对其进行收购。收购完成后,Keil公司正式成为ARM公司的一部分,继续专注于嵌入式系统开发工具的研发和销售。这一事件标志着Keil公司进入了一个新的发展阶段,也为其未来的发展奠定了坚实的基础。

C&K Components公司的发展小趣事

1957年,Charles A. Coolidge, Jr.和Marshall Kincaid共同创立了C&K Components公司,起初主要专注于磁芯记忆单元的制造。那个时代的电子行业刚刚起步,市场竞争激烈,技术更新换代迅速。C&K在初创时期就面临了诸多挑战,但两位创始人凭借对技术的热爱和对市场的敏锐洞察,坚持探索新的技术方向,为公司的发展奠定了坚实的基础。

Hitachi Metals公司的发展小趣事

自1956年成立以来,Hitachi Metals便逐步在电子材料领域建立了坚实的基础。公司早期便专注于研发和生产用于电子设备的核心部件,如磁性材料。随着电子行业的蓬勃发展,日立金属迅速抓住了市场机遇,推出了高性能的Nd-Fe-B系列烧结磁石和高性能铁氧体烧结磁石,这些材料广泛应用于计算机、半导体集成电路器件及平板显示屏等高科技产品中。凭借其卓越的产品质量和稳定的市场供应,Hitachi Metals在电子材料市场上赢得了广泛的认可。

Brainboxes公司的发展小趣事

随着全球化进程的加速,Brainboxes逐渐将业务拓展至全球范围。公司在多个国家和地区设立分支机构或销售网络,以便更好地服务当地客户。同时,Brainboxes也在不断探索新的应用领域和市场机会,为公司的未来发展奠定坚实基础。展望未来,Brainboxes将继续致力于技术创新和市场拓展,为电子行业的发展贡献更多力量。

这五个故事分别展现了Brainboxes公司在电子行业中的创立与发展、技术创新与荣誉、内部制造与供应链、客户亲密度与工业连接以及全球布局与未来展望等方面的事实。通过这些故事,可以更加全面地了解Brainboxes公司在电子行业中的成长轨迹和发展成就。

问答坊 | AI 解惑

红外编码解码问题,,!!

现在是编码IC(TX)已经发射管编码输出,,并且接收管可以收到编码信号,,可是解码IC(RX)并未解码.,,如果发射和接收IC 的频率已经吻合,,可是仍然无法解码??请问怎么解决呢?…

查看全部问答>

128X64示波器

用128X64做的数字电子示波器,有需要的朋友可以参考参考…

查看全部问答>

峰值检测原理及电路

本帖最后由 paulhyde 于 2014-9-15 03:53 编辑 有用的峰值检测电路,详细的原理介绍  …

查看全部问答>

请教一下config.bib文件内容

我的BSP中config.bib中内容如下: IF IMGFLASH !         #define                NKSTART                80100000     &nbs ...…

查看全部问答>

关于汇编语言

?PR?input?KEYPAD               SEGMENT CODE//这行代码里的\"?\"什么意思啊,网上搜半天没结果         PUBLIC        input ?DT?input?KEYPAD&n ...…

查看全部问答>

求助!!!串口接收多行数据

我现在做的串口通信,是发送数据到硬件,硬件响应,然后再返回响应的信息数据,但发回的数据有的时候是一行,有的时候是两或者三行,想问问各位高手,我怎么才能显示所有三行的数据,现在可以接收显示一行。谢谢!!…

查看全部问答>

stm32的gpio的od模式上拉不到5V

stm32的gpio的od模式上拉不到5V,只到2V左右,也没有高低电平的变化。上拉电阻1K,那个管脚是兼容5V的。谁用过stm32的od模式,解释一下。谢谢…

查看全部问答>

6713可以做视觉处理么?

我想用6000系列接USB摄像头做视觉处理与视觉跟踪,不知大家可否给个建议…

查看全部问答>

设计dds信号发生器时遇到两个问题

1.怎样实现相位可调?是用硬件还是软件实现?如果是用软件的话是通过设计寄存器来实现吗,如果是用硬件的话应该用什么电路或者器件呢? 2.ad9850产生的信号的电流是多少?在网上没有查到,看ad9850的中文资料也没有说,题目要求是在1k欧姆的负载条 ...…

查看全部问答>

学模拟+退耦电容容量的选择

本帖最后由 dontium 于 2015-1-23 11:36 编辑 在EEWORLD组织的“我爱模拟之——TI模拟博文深度阅读季”看到一篇关于去耦电容的文章《去耦电容器......是否真的有必要?》网址是deyisupport./blog/b/signalchain/archive/2013/09/17/51504.aspx 然 ...…

查看全部问答>