51单片机数字温度计+灯光报警的proteus仿真+注释详细的源码

2019-11-09来源: 51hei关键字:51单片机  数字温度计  灯光报警

制作出来的实物图如下:
 

仿真原理图如下


单片机源程序如下:

#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'); /

[1] [2] [3] [4] [5]
关键字:51单片机  数字温度计  灯光报警 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479500.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STC15F2K60S2单片机调试超声波HC-SR04测距经验
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

单片机常用芯片MAX7219驱动
一次接收16位数据,在接收的16位数据中:D15~D12可以与操作无关,可以任意写入,D11~D8决定所选通的内部寄存器地址,D7~D0为待显示数据或是初始化控制字。在CLK脉冲作用下,DIN的数据以串行方式依次移入内部16位寄存器,然后在一个LOAD上升沿作用下,锁存到内部的寄存器中。注意在接收时,先接收最高位D16,最后是D0,因此,在程序发送时必须先送高位数据,在循环移位。工作时序图见图7。由于51是8位单片机故需要分两次来送数据。具体操作见驱动程序详解。图7  数据读写时序3 电路原理图电路原理图电路原理图如图7,MAX7219与单片机的连接只需要3条线:LOAD(CS)片选引脚、CLK串行时钟引脚、DIN
发表于 2019-11-08
单片机常用芯片MAX7219驱动
avr单片机八位流水灯程序
八位流水灯程序单片机源程序如下:#include<iom16v.h>#define uint unsigned int#define uchar unsigned charvoid Delay_ms(uint k){         uint i,j;         for(;k>0;k--)                 for(i=142;i>0;i--)       
发表于 2019-11-08
用PIC10F202单片机制作两路开关源程序
可通过程序顶端的参数进行方便的设置,以满足现场需求。             4.GP1、GP2在单片机默认状态和复位后输出电平为低。        5.待机功耗为400uA(@5V),长按键功耗为500uA(@5V)。        6.已启用内部弱上拉,按键可以不加上拉电阻,如果要保证信号可靠,可以加上拉电阻,          建议选择>=100K的电阻,以降低长时间按下按键在电阻上的功耗。   
发表于 2019-11-08
TM1640与PIC12F629单片机的结合
TM1640是驱动数码管的专用集成电路,可以直接驱动16位共阴数码管,手册请下载附件。/********************************本程序直接驱动16位共阴数码管,各数码管分别驱动0、1、2、……E、F。*/#include <pic.h>  //PIC12F629__CONFIG(0x3F84); #define clk GPIO0  //时钟信号#define dio GPIO1   //数据/地址数据#define uchar unsigned char#define uint unsigned int       
发表于 2019-11-08
AT89S52单片机16LED摇摇棒设计
比较与论证所谓的“摇摇棒”,其实就是一个循环的LED显示,利用人的视觉滞留产生静态显示的现象。要实现这个目标,就要求延时部分做的比较小,所以采用石英晶体振荡器。而目前能够实现这种功能的器件有很多种,不同的类型的器件也能够很好的完成。本作品本着方便、价格低廉的原则,采用单片机控制,由水银开关的闭合对单片机产生外部中断,从而对中断进行采集。到达一定数量便进行图象的转换。整个系统由单片机控制模块,开关及电源模块和输出显示模块三个部分构成。2、主要部件原理   (1)单片机控制模块    用单片机想要控制LED显示只需要定时输出就可以,但每个人摇动的速度不一样,如何准确的并稳定的变换图案呢?这就
发表于 2019-11-08
AT89S52单片机16LED摇摇棒设计
TTP229触摸模块的51单片机驱动程序
[]; /* 液晶控制接口 -----------------------------------------------*/sbit RS  = P0^7;sbit WRD = P0^6;sbit E   = P0^5;sbit PSB = P0^4;sbit RES = P0^3;sbit sign = P1^0;sbit sign1 = P1^1;// TTP229接口sbit SDA=P1^2;sbit SCL=P1^3; // 温度传感器接口sbit DQ=P3^7; //数据传输线接单片机的相应的引脚 /* 温度测量用变量定义
发表于 2019-11-08
TTP229触摸模块的51单片机驱动程序
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved