历史上的今天
返回首页

历史上的今天

今天是:2025年01月03日(星期五)

正在发生

2020年01月03日 | 单片机DS18B20数字温度报警器Proteus仿真+代码详细注释

2020-01-03 来源:51hei

现呈上一份关于c51数字温度报警器的压缩包,我的设计报告,望各位大佬指点。

0.jpg?imageView2/2/w/550

单片机源程序如下:

#include                                                //包含reg52.h库文件

#include                                                //包含绝对值函数

#define uint unsigned int                                //宏定义uint

#define uchar unsigned char                                //宏定义uchar

sbit lcden=P2^0;                                                //液晶使能端

sbit lcdrw=P2^1;

sbit lcdrs=P2^2;                                                //液晶数据命令选择端选择写数据还是写命令

sbit DQ = P2^3;                         //通过DQ口读取温度值

sbit s1=P1^2;                                                        //选择按键

sbit s2=P1^7;                                                        //加按键

sbit s3=P3^3;                                                        //减按键

sbit D1=P3^4;             //高温报警灯

sbit D2=P1^3;             //低温报警灯

uchar temp_value,num,fig,s1num,figh,figl,t;  //设置全局无符号字符型变量

char h,l;                                                                //设置全局有符号字符型变量

void delay(uint z);                                                //申明延时程序

void init();                                                        //申明LCD初始化程序

void write_com(uchar com);                                //申明写命令程序

void write_data(uchar date);                        //申明写数据程序

void keyscan();                                                    //申明按键扫描程序

void write_hl(uchar add,char date);            //申明设置的最高低温度值在LCD上显示程序

void write_temp_value(uchar add,char date);        //申明温度值在LCD上显示程序

void delay_18B20(unsigned int i);                //申明延时程序

void Init_DS18B20(void);                                //申明DS18B20初始化程序

unsigned char ReadOneChar(void);                //申明ds18b20读一个字节

void WriteOneChar(uchar dat);                        //申明ds18b20读一个字节

void ReadTemp(void);                                        //申明读取ds18b20当前温度

void comp();

void main()

{

        init();                                                                //LCD初始化

        Init_DS18B20();                                                //DS18B20初始化

        while(1)                                                        //大循环

        { if(s1==0||s1num>=1)

                {        keyscan();                                        //按键扫描

                }

        else{        ReadTemp();                                        //读取温度值

                        write_temp_value(0,temp_value);        //LCD显示温度值

                }

                comp();                

        }

}


void delay(uint z)                                                //延时程序

{

        uint x,y;

        for(x=z;x>0;x--)

        for(y=110;y>0;y--);

}




void init()                                                //LCD初始化程序

{   lcden=0;

          lcdrw=0;

        write_com(0x38);                         //设置16x2 显示5x7 点阵,8 位数据接口

        write_com(0x0c);                 //设置开始显示不显示光标

        write_com(0x06);                         //写一个字符后地址指针加1

        write_com(0x01);                         //显示清零数据指针清零

        write_com(0x80);                         //将数据指针第一行第一个字处,

        

        write_com(0x80+9);                         //定义当前指针位置

        write_data('H');                                 //写入

        write_data(':');                                 //写入

        write_data('+');                                 //写入

        write_data('2');                                 //写入

        write_data('0');                                 //写入

        write_data(0xdf);                                 //写入°

        write_data('C');                                 //写入C

        write_com(0x80+9+0x40);                  //定义当前指针位置

        write_data('L');                                 //写入

        write_data(':');                                 //写入

        write_data('+');                                 //写入

        write_data('1');                                 //写入

        write_data('0');                                 //写入

        write_data(0xdf);                                 //写入°

        write_data('C');                                 //写入C

        h=0x14;                  //h=+20

        l=0+0x0a;                                                     //l=+10

推荐阅读

史海拾趣

Curtis Industries公司的发展小趣事

Curtis Industries公司一直将品质管理作为企业发展的核心。公司建立了完善的品质管理体系,从原材料采购到产品生产、检测等各个环节都严格把控品质。同时,公司还引入了先进的生产设备和技术,确保产品质量达到行业最高标准。这种对品质的严格把控赢得了客户的信任和好评,也为公司的长期发展提供了有力保障。

Anaren公司的发展小趣事

Curtis Industries公司一直将品质管理作为企业发展的核心。公司建立了完善的品质管理体系,从原材料采购到产品生产、检测等各个环节都严格把控品质。同时,公司还引入了先进的生产设备和技术,确保产品质量达到行业最高标准。这种对品质的严格把控赢得了客户的信任和好评,也为公司的长期发展提供了有力保障。

Fukushima Futaba Electric Co Ltd公司的发展小趣事

近年来,全球电子行业面临着诸多挑战,包括技术更新换代迅速、市场竞争加剧等。Futaba Electric积极应对这些挑战,不断加大研发投入,推出了一系列具有创新性和竞争力的新产品。同时,公司还注重与上下游产业链的合作与协同,通过整合资源、优化流程等方式降低成本、提高效率。此外,Futaba Electric还积极响应环保政策,推动绿色制造和可持续发展。这些努力使得公司在面对挑战时依然能够保持稳健的发展态势。

冠西电子(COSMO)公司的发展小趣事

进入21世纪,冠西电子不断加大在研发方面的投入,成功突破了一系列技术难题,特别是在光耦合器和继电器领域取得了显著成果。这些技术突破不仅提升了冠西电子产品的竞争力,也为其赢得了更多国际大厂的信赖。同时,冠西电子积极拓展市场,其产品广泛应用于电源、互联网设备、电脑系统和相关系统、家电、工业、安防系统等领域,为全球客户提供优质的产品和服务。

General Dynamics SATCOM Technologies公司的发展小趣事

近年来,冠西电子积极布局全球市场,设立了多个分公司和办事处,以便更好地服务全球客户。同时,冠西电子还不断关注新兴技术和市场需求的变化,积极寻求新的发展机遇。展望未来,冠西电子将继续秉承“专业、创新、品质、服务”的理念,不断推动公司业务的发展和进步。

以上五个故事概要涵盖了冠西电子(COSMO)公司从创立到发展的主要阶段和事实。每个阶段都体现了冠西电子在技术、市场、品质、品牌等方面的努力和成就。

CHINFA公司的发展小趣事

随着全球化进程的加速,CHINFA公司意识到必须走国际化发展道路。公司制定了详细的国际化战略,积极开拓海外市场。通过与国外知名企业的合作和交流,公司不断提升自身的技术水平和市场竞争力。同时,公司还积极参加国际电子展会和论坛,展示自身实力和产品优势,进一步提升了品牌知名度和影响力。

问答坊 | AI 解惑

逆变资料

本帖最后由 paulhyde 于 2014-9-15 09:23 编辑 自己用的,可能对大家有用  …

查看全部问答>

[转载].SSRAM、SDRAM和Flash简要介绍.[Memory]

转CalmBright兄的博文:http://www.cnblogs.com/CalmBright/archive/2009/07/19/1526569.html   Abstract 在用NIos II 调试sdram遇到了其容量计算的问题,现介绍如下 Introduction 问题1:什么是DRAM、SRAM、SDRAM? 答: ...…

查看全部问答>

各位前辈指点下,怎么学习嵌入式开发!

http://www.jslc.org.cn/list.php?act1=do&tid=48&ttid=102 这上面有嵌入式培训的网址: 兄弟我像学习嵌入式开发,不知道这个培训班的内容怎么样啊?各位前辈给点意见啊,谢谢! 下面是一些课程介绍: 课程体系 基于ARM的嵌入式研发 ...…

查看全部问答>

紧急!!!!!!!!!!

有谁了解深圳\"研祥智能科技\"公司吗?那边的待遇怎么样,我是08年的应届毕业生,我很想知道,本科生在那边的待遇和发展怎么样呢? 望各位知情的大虾帮帮忙啊 ~谢过~…

查看全部问答>

什么是Arduino? 送给和我一样不明白的人

什么是Arduino?Arduino是一个比你的台式电脑更能够用来感应和控制现实物理世界的一套工具。 它由一个基于简易单片机并且开放源码的计算机平台,和一套为Arduino板编写程序 的开发环境组成。 Arduino可以用来开发交互产品,比如它可以读取大量 ...…

查看全部问答>

发帖纪念一下现代计算机之父——阿兰·图灵

今天闲来无事,在家看一本介绍二战期间密码破译的书,在看到有关图灵贡献一段时,突然意识到昨天是这位现代计算机之父的忌日,特发此帖纪念这位伟大的天才。下面是拜读百度上有关图灵的介绍:【概述】阿兰·麦席森·图灵(Alan Mathison& ...…

查看全部问答>

2812的工作频率

2812最高工作频率是150MHz,如果我只让它工作在15MHz,会不会有什么问题? 此外,外接晶体作为时钟源时,其频率和两个引脚的电容大小有什么关系吗?我看到开发板上用的是30MHz晶体和24pF电容。如果更改晶体频率,电容值也要作相应变动吗? 多谢!…

查看全部问答>

请问LPM0和LPM1区别

请问下各位: 本人用DCO倍频至8M, LPM0: MCLK OFF, SMCLK ON, ACLKON, DCO ON LPM1: MCLK OFF, SMCLK ON, ACLK ON, DCO ON(DCO用于MCLK和SMCLK) (1)不知两者到底有何区别,LPM1下是否会影响TIMER1(时钟选择为SM ...…

查看全部问答>

跪求电源中用到的过流过压,欠压保护电路

本帖最后由 paulhyde 于 2014-9-15 08:56 编辑 高手帮忙给个电路中用到的过流,过压保护,欠压保护电路,带个图啊  …

查看全部问答>

雕刻机第三次工作作品

今天试着用雕刻机切割PCB板子,切了一个同心圆。G代码过长无法执行的问题还是没有解,求大神指点。 切下来的正面 反面 老婆的指头 工作视频需要优酷发布完了才能更新了,后续再上传。 …

查看全部问答>