基于AT89C51单片机的温度控制系统报警器

news2024/9/22 15:32:41

点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87771724?spm=1001.2014.3001.5503
在这里插入图片描述
源码获取
单片机读取温度传感器当前的温度值并在LCD液晶显示屏上的第一行显示当前的温度值,单片机读取按键状态并通过人为手动按键部分来设置最低温度到最高温度的温度范围后,由单片机内部进行转换并在LCD上显示出人为设定的正常时的温度范围。
基本要求:
1、认真完成系统需求分析,明确数据要求和处理要求;
2、设计出系统的概念模型,画出系统流程图;
3、设计的硬件电路图与程序流程图;
4、源程序代码;
5、系统运行结果符合课程设计要求;
主要参考资料:
[1]李广弟等编著,《单片机基础》,北京航空航天大学出版社,2001.
[2]周爱武,汪海威,肖云.数据库课程设计[M].北京:机械工业出版社,2016
[3]李光才,楼然笛《单片机课程设计实例指导》北京航空航天大学出版社,2017.

完 成 期 限
指 导 教师签名
课程负责人签名

摘要

随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中温度传感器就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计所介绍的温度传感器与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机STC89S52,测温传感器使用DS18B20,用LCD实现温度显示,能准确达到以上要求。
随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的温度传感器。

关 键 词: 单片机,数字控制,温度传感器

目录
1 概述 1
1.1 课程设计目的 1
1.2 功能说明 1
2硬件电路 2
2.1 单片机概述 2
2.2 MCS-51 系列单片机介绍 2
2.5 复位电路 5
3 系统设计 6
3.1程序流程图 6
3.2部分硬件及管脚的功能 6
3.3 完整程序代码 7
4 仿真现象记录 17
总结 19
参考文献 20

1 概述
1.1 课程设计目的
通过基于MCS-51系列单片机AT89C51和DS18B20温度传感器检测温度,熟悉芯片的使用,温度传感器的功能,数码显示管的使用,汇编语言的设计:并且把我们这两年所学的数字和模拟电子技术、检测技术、单片机应用等知识通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础。
1.2 功能说明
(1)单片机读取温度传感器当前的温度值并在LCD液晶显示屏上的第一行显示当前的温度值,如Temp:27.5℃。
(2)单片机读取按键状态并通过人为手动按键部分来设置最低温度到最高温度的温度范围后,由单片机内部进行转换并在LCD上显示出人为设定的正常时的温度范围。
(3)单片机把温度传感器当前值与人为设定的正常温度范围进行比较。若当前温度值低于人为设定的温度范围时,报警器部分的蜂鸣器会响以及报警指示灯会亮红色,同时升温电路的继电器闭合使得加热管开启工作达到加温功能,最终使得低温状态慢慢达到人为设定的正常温度范围内。若当前温度值高于人为设定的温度范围时,报警器部分的蜂鸣器会响以及报警指示灯会亮红色,同时降温电路的继电器闭合使得降温风扇开启工作达到降温功能,最终使得高温状态慢慢达到人为设定的正常温度范围内。若当前温度值等于人为设定的温度范围时,报警器部分的蜂鸣器不会响以及报警指示灯不会亮红色,同时升温电路和降温电路的继电器都不闭合,加热管和降温风扇都不工作,此时,已经达到人为设定的正常温度范围内的恒温状态。
(4)按下一次KEY1是在更改人为设置温度范围内的最低温度值,在LCD液晶显示屏的第二行的最低温度值前面显示一个“S”设置符号时,并通过多次按下KEY2或者KEY3来达到最低温度值增减的功能。按下两次KEY1是在更改人为设置温度范围内的最高温度值,在LCD液晶显示屏的第二行的最高温度值前面显示一个“S”设置符号时,并通过多次按下KEY2或者KEY3来达到最高温度值增减的功能。
(5)按下S1复位开关后,系统取消了原先人为设定的正常温度范围值,变成了代码最初设定的默认正常温度范围值并显示在LCD上。

2硬件电路
2.1 单片机概述
单片机因将其主要组成部分集成在一个芯片上而得名,具体说就是把中央处理器CPU(Central processing unit)。随机存储器RAM(Random access memory)。只读存储器ROM(Read only memory)。 中断系统、定时器/计数器以及I\O(Input/output)接口电路等主要微型机部件集成在一个芯片上。虽然单片机只是一个芯片,但从组成和功能上看,它已具有了计算机系统的属性。为此,称它为单片微型计算机SCMC(Single chip micro computer),简称单片机。 单片机主要应用与控制领域,用以实现各种测试和控制功能,为了强调起控制属性,也可以把单片机称为微控制器MCU(Micro controller unit)。在国际上,“微控制器”的叫法似乎更通用一些,而在我国则比较习惯与“单片机”这一名称。 单片机在应用时,通常是处于控制系统的核心地位并融入其中,即以嵌入的方式进行使用,为了强调其"嵌入"的特点,也常常将单片机称为嵌入式微控制器EMCU(Embedded micro controller unit)。在单片机的电路和结构中,有许多嵌入式应用的特点。
2.2 MCS-51 系列单片机介绍
80C51 芯片介绍
MCS-51的原生产厂商是Intel公司,最早推出80C51芯片的也是Intel公司,并且作为MCS-51的一部分,按原MCS-51芯片的规则命名,例如80C31、80C51、87C51和89C51,这样我们就能很容易地认识80C51的系列芯片。 但是后来愈来愈多的厂商生产80C51的系列芯片,例如PHILIPS,ATMEL,LG,华邦等公司。这些芯片都是以80C51为核心并且与MCS-51芯片兼容,但它们又各具特点。然而由于生产厂家多,芯片的类型也很多,使芯片的命名无法再遵循统一的规律,造成我们辨认上的困难。例如PHILIPS公司生产的80C51系列芯片名称分别为:80CXXX(ROM Less型),83CXXX(Mask ROM型);Siemens公司命名为C500系列,芯片型号以”C5“打头;而华邦公司则命名为W77C51系列和W78C51系列等等。
新一代80C51的兼容芯片,还在芯片中增加了一些外部接口功能单元,例如数/模转换器,可编程计数器阵列,监视定时器,高速I/O口,计数器的俘获/比较逻辑等,有些还在总线结构上也做了重大改进,出现了廉价的非总线型单片机芯片…。所有这些使新一代的兼容芯片已远非原来意义上的80C51了。 目前这些80C51的兼容芯片已开始在我国使用,其中尤以 PHILIPS公司的同名芯片80C51及其派生产品最受欢迎,而ATMEL公司的闪速存储器型单片机芯片AT89C51等更是后来居上,大有取代传统EPROM型芯片之势。
最小系统:
最小系统就是单片机在发挥具体测控功能时所必须的组成部分。如下图所示为最小系统方框图:





复位电路
输入、输出设备

振荡电路

电源

图2-1 最小系统方框图
定时与中断的概念 :
中断是一项重要的计算机技术,采用中断技术可以使多项任务共享一个资源,所以中断技术实质上就是一种资源共享技术。 向CPU发出中断请求的来源称之为中断源。MCS-51是一个多中断源的单片机,以80C51为例,有三类共五个中断源,分别是外部中断两个,定时中断两个和串行中断一个。
1.外中断。
外中断是由外部信号引起的,共有两个中断源,即外部中断“0”和外部中断“1”。它们的中断请求信号分别由引脚INT0(P3.2)和INT1(P3.3)引入。 外部中断请求有两种信号方式,即电平方式和脉冲方式,可通过有关控制位进行定义。
2. 定时中断
定时中断是为满足定时或计数的需要而设置的。
3. 串行中断
串行中断是为串行数据传送的需要而设置的。
4. 中断控制
这里所说的中断控制是指提供给用户使用的中断控制手段,实际上就是一些专用寄存器。在MCS-51单片机中,用于此目的的控制寄存器共有四个,即定时器控制寄存器、中断允许控制寄存器、中断优先控制寄存器以及串行口控制寄存器。
5. 定时器控制寄存器(TCON)
该寄存器用于保存外部中断请求和以及定时器的计数溢出。寄存器地址88H,位地址8FH~88H。
位地址8F 8E 8D 8C 8B 8A 89 88
位符号TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
这个寄存器既有定时器/计数器的控制功能又有中断控制功能,其中与中断有关的控制位共六位:IE0和IE1 、IT0和IT1 以及TF0和TF1 。
6. 中断允许控制寄存器(IE)
寄存器地址A8H,位地址AFH~A8H。
位地址AF AE AD AC AB AA A9 A8
位符号EA / / ES ET1 EX1 ET0 EX0
其中与中断有关的控制位共六位:EA、EX0和EX1 、ET0和ET1 、ES
7. 中断优先级控制寄存器(IP) MCS-51的中断优先级控制只定义了高、低两个优先级。各中断源的优先级由优先寄存器(IP)进行设定。IP寄存器地址B8H,位地址为BFH~B8H。寄存器的内容及位地址表示如下:
位地址 BF BE BD BC BB BA B9 B8
位符号 / / / PS PT1 PX1 PT0 PX0
PX0 外部中断0优先级设定位
PT0 定时中断0优先级设定位
PX1 外部中断1优先级设定位
PT1 定时中断1优先级设定位
PS 串行中断优先级设定位
为0的位优先级为低;为1的位优先级为高。
8. 定时器/计数器的控制寄存器
与定时器/计数器应用有关的控制寄存器有:
(1) 定时器控制寄存器(TCON)
TCON寄存器既参与中断控制又参与定时控制。其中有关定时的控
制位共有四位:TF0和TF1 、TR0和TR1 。
(2) 工作方式控制寄存器(TMOD)
TMOD寄存器是一个专用寄存器,用于设定两个定时器/计数器的工作方式。但TMOD寄存器不能位寻址,只能用字节传送指令设置其内容。
2.3 DS18B20原理与分析
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源子数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。以下是DS18B20的特点:(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 (2)在使用中不需要任何外围元件。(3)可用数据线供电,电压范围:+3.0~+5.5V。(4)测温范围:-55-+125℃。固有测温分辨率为0.5℃℃。(5)通过编程可实现9-12位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1:高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
2.5 复位电路
复位电路产生复位信号,复位信号送入RST后还要送至片内的施密特触发器,由片内复位电路在每个机器周器的S5P2时刻对触发器输出采样信号,然后由内部复位电路产生复位操作所要的信号。一般的复位电路可分为上电自动复位和按键复位,我们在此选用的是上电复位。:
上电自动复位原理:RST引脚是复位信号的输入端,只要高电平的复位信号持续两个机器周期以上的有效时间,就可以使单片机上电复位。上电自动复位是通过电容充电实现的,上电瞬间,RST端电位与Vcc相同,随充电电流的减少,RST的电位逐渐下降,直到复位信号无效。按键复位在此不在作过多的介绍,其原理和上电复位是相同的。但其采用的是脉冲复位电路和电平复位电路两种。 复位电路如下图所示:
在这里插入图片描述

图2-3 复位电路图

3 系统设计
3.1程序流程图
在这里插入图片描述

图3-1 程序流程图
3.2部分硬件及管脚的功能
(1)PNP三极管作用:基级,低电平导通,高电平截止,相当于开关功能。
(2)继电器作用:当有电流时开关吸合使电路闭合工作,当没有电流时开关弹开,使电路断路不工作。
(3)上拉电阻(排阻)作用:P0口作为I/O口输出的时候时,当输出的低电平为0,输出高电平为高组态(并非5V,相当于悬空状态,也就是说P0口不能真正的输出高电平)。P0口没有办法给所接的负载提供电流,因此必须连接上拉电阻(上拉电阻一端连接到VCC),由电源通过这个上拉电阻给负载提供电流。由于P0口内部没有上拉电阻,当为开漏的,不管它的驱动能力多大,相当于它是没有电源的,因此需要外部的电路提供电源,绝大多数情况下P0口是必需加上拉电阻的。
(4)LCD1602部分管脚作用:
VEE管脚作用:是液晶显示的偏压信号,VEE通过滑动变阻器接地,用来调整对比度,接正电源时对比度最弱,接地电源时对比度最高。RS是寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作;E(EN)端是使能(enable)端,高电平1时读取信息,负跳变时执行指令。
(5)与温度传感器串联的10KΩ的电阻作用:由于单片机直接读出的是AD值,用10KΩ的电阻与温度传感器串联分压,单片机读取中间的分压AD。DS18B20是数字式单总线式温度传感器。
(6)与LED灯串联的电阻作用:分压(限流)作用,其阻值不宜过大过小,一般200到300多欧姆,阻值过大使得电路的电流太小达不到LED灯的开启电压值然后不亮或者亮不明显,阻值过小使得电路的电流太LED灯分到的电压太大导致烧坏。
(7)电源部分:提供给整个电路图的所有5V电源。
3.3 完整程序代码

18B20单线温度检测的应用样例程序:
#include"delay.h"
#include"18b20.h"
bit Init_DS18B20(void)  //18b20初始化
{
 bit dat=0;
 DQ = 1;    //DQ复位
 DelayUs2x(5);   //稍做延时
 DQ = 0;         //单片机将DQ拉低
 DelayUs2x(200); //精确延时 大于 480us 小于960us
 DelayUs2x(200);
 DQ = 1;        //拉高总线
 DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲
 dat=DQ;        //如果x=0则初始化成功, x=1则初始化失败
 DelayUs2x(25); //稍作延时返回
 return dat;
}
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
 {
  DQ = 0; // 给脉冲信号
  dat>>=1;
  DQ = 1; // 给脉冲信号
  if(DQ)
   dat|=0x80;
  DelayUs2x(25);
 }
 return(dat);
}
void WriteOneChar(unsigned char dat)
{
 unsigned char i=0;
 for (i=8; i>0; i--)
 {
  DQ = 0;
  DQ = dat&0x01;
  DelayUs2x(25);
  DQ = 1;
  dat>>=1;
 }
DelayUs2x(25);
}
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned int b=0;
unsigned int t=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
DelayMs(10);
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作 
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar();   //低位
b=ReadOneChar();   //高位
b<<=8;
t=a+b;
return(t);
}
#include "delay.h"
/*------------------------------------------------
 uS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
 长度如下 T=tx2+5 uS 
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
 while(--t);
}
void DelayMs(unsigned char t)
{
     
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
	 DelayUs2x(245);
 }
}
#include "1602.h"
#include "delay.h"
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

#define _NOP() _nop_()
sbit RS = P2^4;   //定义端口 
sbit RW = P2^5;
sbit EN = P2^6;
#define DataPort    P0				
#define DataPIN     P0
#define CLR_RS (RS=0) 
#define SET_RS (RS=1)	
#define CLR_RW (RW=0)	
#define SET_RW (RW=1)
#define CLR_EN (EN=0)
#define SET_EN (EN=1)	
/*
	LcdReset();               //LCD1602初始化
	DelayMs(10);	
	sprintf(temp,"1111111111111111");//更新显示
	DispStr(0,0,(unsigned char *)temp);//打印显示
	sprintf(temp,"1111111111111111");//更新显示
	DispStr(0,1,(unsigned char *)temp);//打印显示
*/
void DispStr(uchar x,uchar y,uchar *ptr) 
{
    uchar *temp;
    uchar i,n = 0;
    temp = ptr;
    while(*ptr++ != '\0')   n++;    //计算字符串有效字符的个数 
    for (i=0;i<n;i++)
    {
        Disp1Char(x++,y,temp[i]);
        if (x == 0x10)
        {
            break;
        }
    }
}
void LocateXY(uchar x,uchar y) {
    uchar temp;
    temp = x&0x0f;
    y &= 0x01;
    if(y)   temp |= 0x40;  //如果在第2行
    temp |= 0x80;
    LcdWriteCommand(temp,1);
}
void Disp1Char(uchar x,uchar y,uchar data1) {
    LocateXY( x, y );			
    LcdWriteData( data1 );		
}
void LcdReset(void) {
//    DataDir  = 0xFF;                 //数据端口设为输出状态 
    LcdWriteCommand(0x38, 0);	    //规定的复位操作
    DelayMs(5);
    LcdWriteCommand(0x38, 0);		
    DelayMs(5);
    LcdWriteCommand(0x38, 0);
    DelayMs(5);
    LcdWriteCommand(0x38, 1);		//显示模式设置
    LcdWriteCommand(0x08, 1);		//显示关闭
    LcdWriteCommand(0x01, 1);	    //显示清屏
    LcdWriteCommand(0x06, 1);		//写字符时整体不移动
    LcdWriteCommand(0x0c, 1);		//显示开,不开游标,不闪烁
}
void LcdClear(void) { 
	LcdWriteCommand(0x01,1); 
	DelayMs(5);
}
void LcdWriteCommand(uchar cmd,uchar chk) {
    if (chk) WaitForEnable();   // 检测忙信号
    CLR_RS;	
    CLR_RW; 
    _NOP();
    DataPort = cmd;             //将命令字写入数据端口 
    _NOP();				 
    SET_EN;                     //产生使能脉冲信号
    _NOP();
    _NOP();
    CLR_EN;			
}
void LcdWriteData( uchar data1 ) {
    WaitForEnable();        //等待液晶不忙
    SET_RS;
    CLR_RW;
    SET_EN;
	_NOP();
    DataPort = data1;        //将显示数据写入数据端口
    _NOP();  //产生使能脉冲信号
    _NOP(); 
    _NOP(); 
    CLR_EN;		
}
void WaitForEnable(void) {
  	unsigned int later=0;
	DataPort=0xff;
    CLR_RS;
    SET_RW;
    _NOP();
    SET_EN; 
    _NOP();
    _NOP();
//    while((DataPIN&Busy)!=0);    
    while(((DataPIN&0x80)!=0)&&(later<1000))  //检测忙标志
    {
      DelayUs2x(2);
      later++;        
    }
    CLR_EN;
//    DataDir|=0xFF;  //将P4口切换为输出状态
}		
#include<reg52.h> 
#include<stdio.h>
#include "18b20.h"
#include "1602.h"
#include "delay.h"
#define SETDOWN 0x01
#define SETUP 0x02
sbit key1=P2^0;	//引脚定义
sbit key2=P2^1;
sbit key3=P2^2;
sbit relay_jiare=P1^0;
sbit relay_zhileng=P1^1;
sbit buzzer=P1^4;
unsigned int setL= 25;         //下限
unsigned int setH= 30;        //上限
unsigned char DisFlag=0;		//更新显示标志
unsigned char SetFlag=0;		//设置参数标志
unsigned long time2ms=0;	//定时计数
unsigned int buzLater=0;  //蜂鸣器计时报
int temp1;						//读取温度初始值
float temperature;				//实际温度值
unsigned char ReadTempFlag=0;//定义读时间标志
char dis0[16];//定义显示区域临时存储数组
char dis1[16];//定义显示区域临时存储数组
unsigned char Num=0;	 //计数
void CheckKey(void);
void Init_Timer0(void);//定时器初始化
void main (void)
{                  
	relay_jiare=0;
	relay_zhileng=0;
 	buzzer=0;
	Init_Timer0();
	LCD_Init();           //初始化液晶
	DelayMs(100);          //延时有助于稳定
	LCD_Clear();          //清屏
	relay_jiare=1;		//	原先是1
	relay_zhileng=1;   //	 原先是1
 	buzzer=1;	   //原先是1
	while (1)         //主循环
	{
	    CheckKey();			  //检测按键
		if(ReadTempFlag==1)		//读取温度标志
		{
			ReadTempFlag=0;
			temp1=ReadTemperature();	//读取温度
			temperature=(float)temp1*0.0625;	  //温度值转换	0.0625是转换精度
		}
		if(DisFlag==1)	

4 仿真现象记录
(1)24.5℃温度低于25-30℃正常温度范围时:加热管工作且指示灯亮黄色,报警器灯亮红色,蜂鸣器发声。
在这里插入图片描述

图 4-1 低于正常温度图
(2)32℃温度高于25-30℃正常温度范围时:降温风扇工作且指示灯亮黄色,报警器灯亮红色,蜂鸣器发声。

图 4-2 高于正常温度图
(3)人为通过按键设置正常恒温范围内的最高温度值:最高温度值前面显示一个“S”设置符号。
在这里插入图片描述

图 4-2 显示设置的最高温值图
在这里插入图片描述

总结
课程设计给我们带来的不只是一个项目的一系列学习,更重要的是我在这个设计过程中所锻炼的能力和培养的一种精神。在本次课程设计中,比起上学期,更多是靠自己,去查阅资料,去寻找解决办法,还有就是和同学们互相帮助学习。我们这次课题虽然不难,但要去做好它,让它实现正确的功能,也少不了不断的研究和探索,可能废痘忘食,可能绞尽脑汁。不仅是现在的学习,在以后的生活中工作也,以这样一种态度和精神去完成自己的梦想,实现自己的价值。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,能够说得是苦多于甜,但是能够学到很多很多的东西,同时不但能够巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己的实际动手水平和独立思考的水平。在设计的过程中遇到问题,能够说得是困难重重,但可喜的是最终都得到了解决。

参考文献
[1]肖骁,戈文祺. 电气传动系统中单片机技术的应用解析[J]. 中国标准化,2017.
[2]茅阳. 单片机技术在电气传动控制系统中的应用与研究[J]. 中国高新区,2018.
[3]贾飞. 单片机技术课程中项目教学法的应用案例[J]. 张家口职业技术学院学报,2017.
[4]罗东华. 互联网+背景下单片机技术课程改革与建设研究[J]. 教育现代化,2017.  [5]李建. 矿区智能勘测设备中单片机技术的应用[J]. 电子制作,2017.
[6]闫璞,王贵锋. 基于单片机技术的室内照明光伏优化供电控制系统设计[J]. 中国新技术新产品,2018.
[7]宋述林. 物联网电子产品中单片机技术的应用方式研究[J]. 现代工业经济和信息化,2017.
[8]邵杰. 单片机技术在阀门电动执行机构中的逐步应用和发展[J]. 科技创新与应用,2018.
[9]苏健. 电气传动控制系统中单片机技术的应用探讨[J]. 电子世界,2018.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/511155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flask框架之异常处理、请求钩子、上下文的使用

Flask框架之异常处理、请求钩子、上下文的使用 异常处理捕获指定异常状态码捕获指定异常类型抛出HTTP Exception 请求钩子概述基本使用 请求上下文概述应用上下文current_app对象g对象 请求上下文request对象session对象 异常处理 捕获指定异常状态码 可以使用app.errorhandle…

Github的使用

1.基本概念&#xff1a; 仓库&#xff08;Repository&#xff09;:仓库用来存放项目代码&#xff0c;每个项目对应一个仓库&#xff0c;多个开源项目则有多个仓库 收藏&#xff08;Star&#xff09;:收藏项目&#xff0c;方便下次查看 复制克隆项目:&#xff08;Fork&#x…

JVM类加载、类变量初始化顺序

题目 先来看一个题目&#xff0c;以下程序的输出结果是什么 运行结果 关于类加载机制 关于JVM的类加载 《深入理解Java虚拟机》中关于类加载是这样说的&#xff1a; Java虚拟机把描述类的数据从Class文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#x…

【SLAM学习】基于Pangolin绘制运动轨迹

Pangolin是一个轻量级的跨平台视图控制库&#xff0c;主要用于可视化、交互和调试三维数据。该库提供了一系列图形界面工具&#xff0c;包括窗口、OpenGL渲染器、3D相机、图像显示等&#xff0c;可以方便地进行三维数据可视化和交互。 Pangolin库的主要特点如下&#xff1a; 轻…

SpringBoot的多配置文件

文章目录 1.配置文件的命名规则2.配置文件选择3.配置文件的优先级 1.配置文件的命名规则 配置文件一般要求以application开头&#xff0c;可以是.yml结尾的文件&#xff0c;也可以是.properties结尾的文件。 2.配置文件选择 当有多个配置文件&#xff0c;需要指定其中一个生…

关于C语言取余运算的那些大坑

0.前言 您好&#xff0c;这里是limou3434的一篇个人博文&#xff0c;感兴趣的话您也可以看看我的其他文章&#xff0c;本次我想给您带来的是关于C语言操作符‘%’的一些奇怪现象以及背后的原理解释&#xff0c;本章用了一点点python语法&#xff08;比如在python中“//”是整除…

C++开发环境的搭建-Windows:VSCode+mingw64+CMake

文章目录 一、软件安装1. 网址及下载的软件2. VSCode中配置关于C的最简插件&#xff1a; 二、C调试环境的编译要求1. 在编译时要带-g参数2. 多文件编译需要分步编译 三、VSCode的调试配置如下&#xff1a;1. 单文件调试设置4. 多文件调试设置 一、软件安装 1. 网址及下载的软件…

【JavaEE进阶】——第六节.第一个MyBatis程序

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;JavaEE进阶 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目录 前…

计算机视觉(5)—— 图像分类

目录 五、图像分类 5.1 AlexNet 5.2 VGG 5.3 GoogLeNet、Inception 5.3.1 Inception V1 5.3.2 Inception V2 5.3.3 Inception V3 5.3.4 Inception V4 5.4 ResNet 残差网络 5.4.1 ResNet 5.4.2 ResNeXt 5.5 CNN设计准则 五、图像分类 5.1 AlexNet 5.2 VGG 5.3 Go…

【剑指 Offer】05,替换字符创中的空格;难度等级:简单。易错点:C++中 char 和 string 类型的转换

【剑指 Offer】05&#xff0c;替换字符创中的空格&#xff1b;难度等级&#xff1a;简单。 文章目录 一、题目二、题目背景三、我的解答四、易错点五、知识点&#xff1a;char 和 string 类型的转换 一、题目 二、题目背景 在网络编程中&#xff0c;如果 URL 参数中含有特殊字…

消息推送平台的实时数仓?!flink消费kafka消息入到hive

大家好&#xff0c;3y啊。好些天没更新了&#xff0c;并没有偷懒&#xff0c;只不过一直在安装环境&#xff0c;差点都想放弃了。 上一次比较大的更新是做了austin的预览地址&#xff0c;把企业微信的应用和机器人消息各种的消息类型和功能给完善了。上一篇文章也提到了&#…

windows安装Anaconda

Anacond是什么&#xff1f; 和Python有啥关系&#xff1f; 1、Anacond 是一个python的发行版&#xff0c;包括了python和很多常见的软件库, 和一个包管理器conda。常见的科学计算类的库都包含在里面了&#xff0c;使得安装比常规python安装要容易。 2、Anaconda是专注于数据分…

分布式系统概念和设计——时间和全局状态(分布式系统中的时间问题)

分布式系统概念和设计 时间和全局状态 全局物理时间的缺乏使我们很难查明分布式程序的执行时状态。 我们经常需要知道当进程B处在某种状态依赖进程是什么状态&#xff0c;但不能通过依靠物理时钟理解一个同一个时刻到底是什么情况。 维护分布数据一致性算法检查发送给服务器的…

数学(三) -- LC[1010][1015] 可被 K 整除的最小整数

1 可被 K 整除的最小整数 1.1 题目描述 题目链接&#xff1a;https://leetcode.cn/problems/smallest-integer-divisible-by-k/description/ 1.2 思路分析 模运算 如果让你计算 1234 ⋅ 6789 1234 \cdot 6789 1234⋅6789 的个位数&#xff0c;你会如何计算&#xff1f; 由于…

c高级day2

#include <stdio.h> #include <stdlib.h> #include <string.h>int arrMAX_1(void *p,int n,int m,int x,int y); int arrMAX_2(void *p,int n,int m,int x,int y); int main(int argc, const char *argv[]) {int n0,m0;printf("请输入行数i 列数j\n&quo…

Baumer工业相机堡盟工业相机如何进行多个工业相机IP地址配置

Baumer工业相机堡盟工业相机如何进行多个工业相机IP地址配置 Baumer工业相机Baumer工业相机进行多相机IP配置的技术背景Baumer工业相机如何进行多相机IP配置1.配置Baumer工业相机连接的PC端IP地址2.配置Baumer工业相机的IP地址 Baumer工业相机 Baumer工业相机堡盟相机是一种高…

R 中的探索性相关分析

动动发财的小手&#xff0c;点个赞吧&#xff01; 本文[1] 相关分析是探索两个或多个变量之间关系的最基本和最基础的方法之一。您可能已经在某个时候使用 R 执行过相关分析&#xff0c;它可能看起来像这样&#xff1a; cor_results <- cor.test(my_data$x, my_data$y, …

手机上调试pc端电脑上的项目

文章目录 前言1、window r 打开电脑命令窗口并输入cmd点击确定或者敲击回车键2、在cmd命令行面板上输入ipconfig获取本电脑的ip地址3、在手机浏览器中输入http://192.168.XX.XX:8080 即可 前言 手机上调试电脑运行的项目的前提条件是手机和电脑公用一个局域网&#xff08;也就…

APP 性能优化你掌握的怎么样?简单聊聊?

产品性能是每个技术团队比较关心的一件事&#xff0c;不管是产品上线前到上线后&#xff0c;都需要对产品进行性能监控和优化&#xff0c;如果产品在运行过程中出现了问题&#xff0c;是很影响用户的体验感受。 所以在一些大厂技术团队中&#xff0c;是非常看重个人性能优化的…

面向开发人员的 ChatGPT 提示词教程中文版

面向开发人员的 ChatGPT 提示词教程中文版 1. 指南1-1. 提示的指南1-2. 配置1-3. 提示语原则原则 1: 写出清晰而具体的指示技巧 1: 使用分隔符来清楚地表明输入的不同部分技巧 2: 要求提供结构化的输出技巧 3: 要求模型检查条件是否得到满足技巧 4: "少许样本"提示 原…