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

*                              DS18B20温度传感器实验                                                                                                  *

实现现象:下载程序后,在温度传感器接口处,按照丝印方向插好温度传感器,数码管就会显示

检测的温度值,

注意事项:

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

#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器

#include"temp.h"

#include

typedef unsigned int u16;          //对数据类型进行声明定义

typedef unsigned char u8;

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

sbit beep=P1^5;

int temp;

char num=0;

u8 DisplayData[8];

u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

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

* 函 数 名         : delay

* 函数功能                   : 延时函数,i=1时,大约延时10us

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

void delay(u16 i)

{

while(i--);

}

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

* 函 数 名         : datapros()

* 函数功能                   : 温度读取处理转换函数

* 输    入         : temp

* 输    出         : 无

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

void datapros(int temp)

{

float tp;

if(temp< 0)                                //当温度值为负数

{

DisplayData[0] = 0x40;           //   -

//因为读取的温度是实际温度的补码,所以减1,再取反求出原码

temp=temp-1;

temp=~temp;

tp=temp;

temp=tp*0.0625*100+0.5;

//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点

//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就

//算加上0.5,还是在小数点后面。

}

else

{

DisplayData[0] = 0x00;

tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量

//如果温度是正的那么,那么正数的原码就是补码它本身

temp=tp*0.0625*100+0.5;

//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点

//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就

//算加上0.5,还是在小数点后面。

}

DisplayData[1] = smgduan[temp / 10000];

DisplayData[2] = smgduan[temp % 10000 / 1000];

DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80;

DisplayData[4] = smgduan[temp % 100 / 10];

DisplayData[5] = smgduan[temp % 10];

}

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

* 函数名         :DigDisplay()

* 函数功能                 :数码管显示函数

* 输入           : 无

* 输出                  : 无

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

void DigDisplay()

{

u8 i;

for(i=0;i<6;i++)

{

switch(i)         //位选,选择点亮的数码管,

{

case(0):

LSA=0;LSB=0;LSC=0; break;//显示第0位

case(1):

LSA=1;LSB=0;LSC=0; break;//显示第1位

case(2):

LSA=0;LSB=1;LSC=0; break;//显示第2位

case(3):

LSA=1;LSB=1;LSC=0; break;//显示第3位

case(4):

LSA=0;LSB=0;LSC=1; break;//显示第4位

case(5):

LSA=1;LSB=0;LSC=1; break;//显示第5位

}

P0=DisplayData[5-i];//发送数据

delay(100); //间隔一段时间扫描

P0=0x00;//消隐

}

}

void clock_h_l()

{

if((temp<= 30) && (temp >= 20))

{

beep = ~beep;           //蜂鸣器报警

}

else

{

beep = 1;

}

}

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

* 函 数 名       : main

* 函数功能                 : 主函数

* 输    入       : 无

* 输    出             : 无

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

void main()

{

while(1)

{

datapros(Ds18b20ReadTemp());         //数据处理函数

DigDisplay();//数码管显示函数

}

}

c语言蜂鸣警报加循环,如何在此单片机程序基础上加入蜂鸣器报警啊相关推荐

  1. c语言中语句开始的标志是,第一个单片机程序(C语言编写)

    第一个单片机程序: #include //包含特殊功能寄存器定义的头文件 sbitLED = P0^0; //位地址声明,注意:sbit 必须小写.P 大写! void main(){ //任何一个 ...

  2. 电子器件系列27:无源蜂鸣片

    一.简介原理 网上原创的太少,没什么干货,基本上都在用这个链接: 蜂鸣片,蜂鸣器的原理以及驱动电路的个人理解_消雨匆匆-CSDN博客_蜂鸣片工作原理 二.参数说明 谐振频率: 谐振频率指的是在含有电容 ...

  3. pythonfor循环100次_【零基础学Python】For循环和RANGE()函数

    while循环不断循环,而其条件是True.那如果要限制循环代码块的次数,就可以使用for循环语句和range()函数来执行. 在代码中,一条for语句始终包含以下内容:for关键字 变量名 in关键 ...

  4. 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。...

    未能加载文件或程序集"Oracle.DataAccess"或它的某一个依赖项.试图加载格式不正确的程序. 上一篇文章说到了DLL引用问题,主要是说的程序中如果使用过了反射,则反射创 ...

  5. 基于51单片机的蜂鸣计算器设计

    一.课程设计内容及要求 蜂鸣计算器设计: 利用普中科技HC6800-ES V2.0单片机开发板设计一款带蜂鸣器的电子计算器.主要使用开发板上的数码管.LED点阵.矩阵键盘.蜂鸣器等模块功能.开发板配有 ...

  6. C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  7. oracle数据库buffer,Oracle数据库导入Buffer不足出现主机蜂鸣

    测试新的系统要求把用户的数据库导入在本地测试.由于原数据库比较大有40G.所以计划在本地测试时只要建好数据库,再导出部分数据保证测试能正常就可以了. 第一步:在本地建数据库 1,在cmd窗口中,以管理 ...

  8. C语言第五讲,语句 顺序循环选择.

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  9. 台式计算机打不了蜂鸣,电脑主机启动不了,开机蜂鸣器也不响,主板指示灯

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:电脑主机启动不了,开机蜂鸣器也不响,主板指示灯亮电源回答:清理一下里面各个接口,和内存条就OK了 参考回答:这个不好说那里的问题,有 ...

最新文章

  1. Hibernate的基本操作数据库,增加,修改,删除,查询
  2. 和cnn结合_写给小白的R-CNN介绍
  3. java字符串的哈希码_获取Java中字符串的哈希码
  4. 苹果cms v10 仿电影淘淘PC+WAP模板
  5. Nginx基本数据结构之ngx_array_t
  6. CentOS 6.4用源代码安装LNMP环境
  7. JavaScript概念梳理
  8. 十大最受欢迎的 React Native 应用开发编辑器
  9. 计算机基础1.4习题答案,中职计算机应用基础习题集及答案~.doc
  10. FFmpeg推流以后自动结束的方法
  11. java基础代码详解
  12. 2021 IDEA最新版安装教程(可激活)
  13. html怎么修改像素,PS怎么修改像素又不改变尺寸?
  14. matlab 打不开excel文件
  15. 计算机领域论文 网站,各类论文网站大全
  16. excel打开html非常慢,excel打开速度很慢的解决方法
  17. 自学iOS开发系列----UI(视图编程入门:UIView)
  18. html的meta总结,html标签中meta属性使用介绍
  19. Win10 发布UWD图形驱动程序 有助于小幅提高性能
  20. 使用wifi网卡笔记5---AP模式

热门文章

  1. PacBio软件总览 - 初级分析
  2. tensorflow tensor 张量 部分采样 切片和索引
  3. 【统计学习方法】K近邻对鸢尾花(iris)数据集进行多分类
  4. 【pytorch】torch.mean的使用
  5. java 随机生成常用汉字_Java随机生成中文汉字
  6. mysql数据库语句q_mysql数据库命令大全,mysql基本命令大全
  7. linux编译模块时怎么包含其他c文件夹,如何在导入符号出现在已编译的Linux内核模块中时,可选地使用它们?...
  8. 升级mysql服务器二进制备份_MySQL二进制日志备份和恢复详解
  9. react 合并数组_React 数组合并去重,实现请求三遍返回三组数据的合并去重。
  10. java rtmp_搭建rtmp直播流服务之2:使用java实现ffmpeg命令接口化调用(用java执行ffmpeg命令)...