我是电子信息的一名学生这是我的单片机课程设计,今天分享给大家。有需要的评论区留言,可以发源码给你们,包含实验报告,仿真图。

STC89C52为核心,设计一个温度报警器,它由部分组成:显示模块、CPU控制模块、报警模块、温度测量模块、按键控制模块。CPU控制模块采用STC89C52单片机进行控制,温度传感器由DS18B20模块进行室温的测量,显示模块由八个数码管进行显示,报警模块由LED亮灭和有源蜂鸣器来实现。温湿度显示器要求如下:

1、数码管显示:

1)、温度-阈值显示

上电数码管第一位和第二位显示室温大小第三位显示C,第六位显示-表示阈值,第七位第八位显示阈值大小;

2)、调整阈值显示

按下按键K1则数码管只显示第七位和第八位,且数值为当前阈值大小;

2、LED显示功能:

1)、数码管处于温度-阈值显示界面时,D1点亮,D2熄灭,其余灯光不受影响;

2)、数码管处于调整阈值显示时,D1熄灭,D2点亮,其余灯光不受影响;

3)、温度大于大于所设置阈值时,D3点亮,D4熄灭,其余灯光不受影响;

4)、温度小于所设置阈值时,D3熄灭,D4点亮,其余灯光不受影响;

5)、蜂鸣器打开时,D5点亮,其余灯光不受影响;

6)、蜂鸣器关闭时,D5熄灭,其余灯光不受影响;

3、按键控制功能:

1)、K1控制 温度-阈值显示 和 阈值调节显示 的来回切换;

2)、在调节阈值显示界面下,K2控制阈值的加1,在温度-阈值显示界面下,此按键没有任何功能;

3)、在调节阈值显示界面下,K3控制阈值的减1,在温度-阈值显示界面下,此按键没有任何功能;

4)、蜂鸣器调节按键,初始状态下,蜂鸣器打开,按下后蜂鸣器关闭;

4、实验现象

5、源码:

main.c

#include "main.h"
#include "onewire.h"sbit K1=P1^4;
sbit K4=P1^5;
sbit K2=P1^6;
sbit K3=P1^7;
sbit L1=P2^0;
sbit L2=P2^1;
sbit L3=P2^2;
sbit L4=P2^3;
sbit L5=P2^4;//开关蜂鸣器
sbit buzzer=P1^1;u8 table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf,0xc6};
u8 dat[4];
u8 wendu=0;
u8 yi,er,san,si,wu,liu,qi,ba;
bit jia=0,jian=0,S1=0,S4=0;
u8 yuzhi=25;u8 Ds18b20();
void display();
void key();
void main()
{while(1){wendu=Ds18b20();key();if(S1==0){L1=0;L2=1;L3=1;L4=1;yi=wendu/10;er=wendu%10;san=12;si=10;wu=10;liu=11;qi=yuzhi/10;ba=yuzhi%10;}else if(S1==1){L1=1;L2=0;L3=1;L4=1;if(jia==1){jia=0;if(yuzhi<50)yuzhi++;}if(jian==1){jian=0;if(yuzhi>0)yuzhi--;}yi=10;er=10;san=10;si=10;wu=10;liu=10;qi=yuzhi/10;ba=yuzhi%10;}if(S4==0){L5=0;if(yuzhi<=wendu){L1&=1;L2&=1;L3&=0;L4=1;buzzer=1;}else if(yuzhi>wendu){L1&=1;L2&=1;L3=1;L4=0;buzzer=0;}}else if(S4==1){L5=1;if(yuzhi<wendu){L1&=1;L2&=1;L3=0;L4=1;buzzer=0;}else if(yuzhi>=wendu){L1&=1;L2&=1;L3=1;L4=0;buzzer=0;}}display();}
}void delayms(u16 z)
{u16 i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);
}void nixie(u8 add,u8 dat)
{P3=0x01<<add;P0=dat;
}
void display()
{nixie(0,table[yi]);delayms(3);nixie(1,table[er]);delayms(3);nixie(2,table[san]);delayms(3);nixie(3,table[si]);delayms(3);nixie(4,table[wu]);delayms(3);nixie(5,table[liu]);delayms(3);nixie(6,table[qi]);delayms(3);nixie(7,table[ba]);delayms(3);
}u8 Ds18b20()
{u8 low,high,temp;init_ds18b20();Write_DS18B20(0xcc);//0xcc控制ds18b20,直接跳过一些其他命令(精度命令等)Write_DS18B20(0x44);//0x44控制ds18b20只读一次温度大小Delay_OneWire(100);init_ds18b20();Write_DS18B20(0xcc);//0xcc控制ds18b20,直接跳过一些其他命令(精度命令等)Write_DS18B20(0xbe);//0xbe,单片机准备读取自己内部的寄存器里面的数据Delay_OneWire(100);low=Read_DS18B20();//ds18b20内部数据一共16位,高四位表示符号(正负),低四位表示小数部分high=Read_DS18B20();temp=high<<4|low>>4;//丢弃高四位和低四位return temp;
}void key()
{if(K1==0){delayms(2);if(K1==0){if(S1==0)S1=1;else if(S1==1)S1=0;}while(!K1)display();}if(K2==0){delayms(2);if(K2==0)jia=1;while(!K2)display();}if(K3==0){delayms(2);if(K3==0)jian=1;while(!K3)display();}if(K4==0){delayms(2);if(K4==0){if(S4==0)S4=1;else if(S4==1)S4=0;}while(!K4)display();}
}

main.h

#ifndef __main_H__
#define __main_H__#include <REGX52.H>
#include <intrins.H>typedef unsigned int u16;
typedef unsigned char u8;#endif

onewire.c

#include "onewire.h"sbit DQ = P1^0;  //单总线接口//单总线延时函数
void Delay_OneWire(unsigned int t)  //STC89C52RC
{while(t--);
}//通过单总线向DS18B20写一个字节
void Write_DS18B20(unsigned char dat)
{unsigned char i;for(i=0;i<8;i++){DQ = 0;DQ = dat&0x01;Delay_OneWire(5);DQ = 1;dat >>= 1;}Delay_OneWire(5);
}//从DS18B20读取一个字节
unsigned char Read_DS18B20(void)
{unsigned char i;unsigned char dat;for(i=0;i<8;i++){DQ = 0;dat >>= 1;DQ = 1;if(DQ){dat |= 0x80;}        Delay_OneWire(5);}return dat;
}//DS18B20设备初始化
bit init_ds18b20(void)
{bit initflag = 0;DQ = 1;Delay_OneWire(12);DQ = 0;Delay_OneWire(80);DQ = 1;Delay_OneWire(10); initflag = DQ;     Delay_OneWire(5);return initflag;
}

onewire.h

#ifndef __ONEWIRE_H
#define __ONEWIRE_H#include "main.h"unsigned char Read_DS18B20(void);
bit init_ds18b20(void);
void Write_DS18B20(unsigned char dat);
void Delay_OneWire(unsigned int t) ; #endif

51单片机课程设计—温度报警系统(包含实验报告,仿真图)相关推荐

  1. 单片机课程设计温控风扇(源代码+Proteus仿真图)

    总体设计 本设计是使用AT89C51单片机为核心制作的一个模拟温控电扇的系统.通过DS18B20温度传感器来实现温度的调节,使用四位一体数码管来显示电扇的挡位以及当前温度,通过proteus中的直流电 ...

  2. 温度报警程序c语言设计,51单片机课程设计:基于DS18B20的温度报警器

    51单片机课程设计:基于DS18B20的温度报警器 本程序用于读取DS18B20温度,同时具备报警功能,工程分为3个文件,main.c.temp.c.temp.h,经本人修改部分代码,适用于吉林农业大 ...

  3. 51单片机课程设计:基于DHT11的温湿度报警器

    51单片机课程设计:基于DHT11的温湿度报警器 本程序适用于51系列单片机,主要用于读取DHT11温湿度模块数值,显示在数码管上,同时还具备温湿度报警功能,当超出预设值,蜂鸣器报警,可在吉林农业大学 ...

  4. 8155与单片机c语言设计,51单片机课程设计报告-基于8155的8LED显示电子码表设计.doc...

    51单片机课程设计报告 --基于8155的8LED显示电子码表设计 实验目的 本次课程设计是基于51单片机在理论课程的基础上,通过电路设计.理论计算.实际编程.调试.测试.分析查找故障,解决在实际设计 ...

  5. 单片机课程设计-温度检测(STM32)

    单片机课程设计-温度检测(STM32) 原理 KEY配置 ADC配置 中断配置 UI及主函数 原理 STM32ADC采样,我选用PA5作为ADC接口,并做了UI设计. KEY配置 key.c #inc ...

  6. 数据结构最短路径例题_《数据结构课程设计》最短路径问题实验报告

    <<数据结构课程设计>最短路径问题实验报告>由会员分享,可在线阅读,更多相关<<数据结构课程设计>最短路径问题实验报告(17页珍藏版)>请在人人文库网上 ...

  7. c语言程序设计报告表达式求值,数据结构 课程设计表达式求值 实验报告

    <数据结构 课程设计表达式求值 实验报告>由会员分享,可在线阅读,更多相关<数据结构 课程设计表达式求值 实验报告(21页珍藏版)>请在人人文库网上搜索. 1.实验课程名称 级 ...

  8. c语言学生档案管理课设作业,2019-2020年c语言课程设计学生档案管理系统实验报告.doc...

    2019-2020年c语言课程设计学生档案管理系统实验报告.doc 还剩 10页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: *********C 语 ...

  9. 51单片机课程设计《三路步进电机控制》

    说明:最近抽出了几天时间完成了单片机的课程设计,用了51单片机做了三路步进电机控制器,美名其曰3d打印机控制器(其实是瞎搞的,与3D打印机毫无关系),因为单片机课程设计是在大四上学期,与考研复习时间冲 ...

  10. 错误总结关于单片机课程设计——温度语音(基础模块)

    前言:本文是针对我在<单片机课程设计>这门课上,进行单片机设计时遇到问题.如何解决写的一篇博客,过程很艰辛,错误很多,所以想着总结一下留着回忆,其中有些问题都很典型,写出来和大家探讨,也希 ...

最新文章

  1. 加速产业生态算力升级,华为鲲鹏展翅福州
  2. bogofilter 使用
  3. C++vector容器-构造函数
  4. Hashmap存储大小
  5. 数据中心机房搬迁施工技术方案
  6. 读取文件云服务器bcc,云服务器bcc 使用
  7. Centos7---查看内存型号
  8. 《python程序语言设计》第2章第15题几何正六边形面积。用def和class来完成
  9. java图片处理---Javax.imageIO包的用法
  10. 谷歌浏览器下图片缩放模糊失真
  11. cisco 华三 对接_h3c开启trunk口与思科设备相互连接
  12. Leetcode PHP题解--D70 784. Letter Case Permutation
  13. 大数据 SQL Boy 脱坑指南
  14. GPS定位_Autojs
  15. 为什么QQ在线状态成灰色“未启用”状态?
  16. 常用HTML标签检索表
  17. 嵌入式软件工程师培训:提升技能、实现卓越
  18. 面对大数据,你能挖掘怎样的未来?
  19. tornado + peewee 下打印执行 SQL 日志
  20. 谨以此文共勉仍在大学生活的你我

热门文章

  1. JavaScript高级知识总结(高级篇)
  2. 计算机硬盘扇区修复,如何修复硬盘启动扇区
  3. 中图分类法---- U 交通运输
  4. Screen Saver Exporter for Mac(屏幕保护程序导出程序)
  5. 一些有用的书签网站整理
  6. access数据库驱动的安装方法
  7. 高一数学计算机教材,高一数学的教学计划
  8. 编译Android系统源码
  9. Unix系统结构由三个层次组成,一部分是内核
  10. Windows 关于Robocopy的使用详解