基于stm8的温湿度测量仪 - 图文
更新时间:2024-05-27 07:20:01 阅读量: 综合文库 文档下载
电 气 学 院 创 新 设 计 说 明 书
电气学院创新设计(论文)任务书
学 号 设计题目 设 计 技 术 参 数 设 计 要 求 学生姓名 温湿度测量仪 专业(班级) 1 温度测量精度正负1度; 2 湿度测量精度为正负3相对湿度; 3 选用集成温湿度传感器实现(DHT11)。 1 主板选用STM8; 2 显示采用MAX7219; 3 2秒显示一次温湿度; 4 设置温湿度报警线,用蜂鸣器报警。 工 作 量 适中 工 作 计 划 1.收集所有相关芯片的资料 2.学习stm8编程并熟悉相关芯片的工作原理 3.根据任务书要求编程并进行调试 1 传感器原理及应用; 2 相应的微处理器原理及应用。 参 考 资 料
1 / 22
电 气 学 院 创 新 设 计 说 明 书
目 录
第1章 摘要…………………………………………………………………………………3 第2章 引言…………………………………………………………………………………4
2.1 选题意义???????????????????????????4 2.2生活环境与温湿度的关系??????????????????.?.4 2.3 检测温湿度的意义???????????????????????4 2.4 系统的主要性能指标?????????????????????..5 2.5 主要工作任务?????????????????????????5
第3章 各器件的工作原理…………………………………………………………………5
3.1 stm8s105s4的各接口??????????????????????5 3.2温湿度传感器DHT11工作原理??????????????????6 3.3 LED数据显示MAX7217工作原理?????????????????9
第4章 软件程序设计 ………………………………………………………………… 11
4.1. 软件设计实现的功能????????????????????.11 4.2. 软件程序主流程图?????????????????????.11. 4.3. 程序代码?????????????????????????.12
第5章 结论 ………………………………………………………………………………21 参考文献 ……………………………………………………………………………………21
2 / 22
电 气 学 院 创 新 设 计 说 明 书
第一章 ·摘要
随着科学技术的日新月异,人类社会取得了长足的进步!在居家生活、工农业生产、气象、环保、国防、科研、航天等部门,经常需要对环境中的湿度和温度进行测量及控制。本系统采用技术成熟的DHT11芯片作为数字测量湿度和温度的传感器。DHT11是内部集成IIC总线接口的单片全校准数字式新型相对湿度和温度传感器。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。LED显示电路由MAX 7219控制。MAX7219是一种集成化的串行输入/输
出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。 只有一个外部寄存器用来设置各个LED的段电流。一个方便的四线串行接口可以联接所有通用的微处理器。 每个数据可以寻址在更新时不需要改写所有的显示。
MAX7219允许用户对每一个数据选择编码或者不编码。 整个设备包含一个
150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。最后设计了系统各个
功能部分的软件程序。在设计中,对误差产生的原因也进行了一些理论上的分析,并证明了这种设计方案是可行的。
关键字:DHT11温湿度传感器 LED驱动芯片MAX7219
3 / 22
电 气 学 院 创 新 设 计 说 明 书
第二章·引言
2.1. 选题意义
湿度和温度是测量领域内十分重要的被测对象。不管是人类赖以生存的居住环境,还是工农业生产,亦或者是军事、气象观测等领域都需要对温度和湿度进行测量和控制。随着电子技术、计算机技术、通信技术、传感器及传感器材技术的迅速发展,测量领域内对温度和湿度的检测也取得了跨越式的发展!可以说对温湿度的测量与控制水平直接影响到人类的所有活动。 2.2.生活环境与温湿度的关系
现代人类对生活环境的要求越来越高,尤其是温湿度的影响,温度高了
或者低了都直接影响着这个社会,而湿度低了或高了也同样影响着我们的生活以及其他物种的生存条件。 2.3. 检测温湿度的意义
湿度和温度是众多领域中需要检测的重要环境参数。不仅在工业、现代农业,还是在气象卫星、仓库保管等领域,对温度和湿度的测量都是随处可见的。对温度和湿度的测量与监控也是十分有意义的。对湿度和温度进行合理有效的调控不仅可以节约能源还更有利各行业安全健康的发展。
在工业领域,各种现代化的机器设备都需要考虑其所在工作环境的温湿度。电器设备是工业领域最常使用也是使用最多的基础设备。温湿度的高低对电器设备的研发者来说是必须要考虑的重要课题。工程师在设计电器产品的时候必须要考虑设计出的产品将来工作环境中温湿度的大小,使用过程中散热通风的问题。选择合适的材料并且对电气设备外表面进行合理有效的封装可以提高电气设备的使用寿命。大型的电器设备长期处于高电压、大电流和满负荷运行,其结果是造成热量集结加剧,由电流热效应造成的危害直接影响电器设备的绝缘设施,危害机器的正常运转和操作人员的人身安全,所以就要求对电气设备的温湿度状况进行测量控制。
温湿度对植物、动物的生长都有一定的影响,当温度达到了植物和动物生长所能承受的最高值和最低值时,这些植物和动物就会慢慢的消失,或者演变成其他的一些物种,同样湿度也对动植物的生长有着不可小视的影响,所以对一定的温湿度我们必须测量。同时我们也必须要记录大气的温湿度的变化,这样我们才更能对我们的生活的环境的变化有个直观的了解!
4 / 22
电 气 学 院 创 新 设 计 说 明 书
2.4. 系统的主要性能指标
根据生活环境,设计本产品的主要技术指标为: (1)测温范围:0—50℃; 湿度测量范围为20—90%RH (2)温度测量精度:±2oC (3)湿度测量误差:±5%RH
(4)设置上限报警值,当湿度温度超限时,发出报警信号
温度上限值:30 oC 湿度上限值:60%RH
(5)电源工作范围:DC3.5~5.5V 2.5. 主要工作任务
在对各类湿度、温度传感器原理介绍的基础上,根据创新设计实际的任务要求,基于学校分配的系统芯片stm8s105s4、湿温度传感器DHT11、LED数码管MAX7219,设计采样温湿度信号模块,显示模块、报警模块、按键切换显示模块的程序。系统开始工作后,根据初始条件读取湿度值和温度值,测量数据经处理后,将其与设定的上限湿温度值比较,如果发现当前的温湿度超限,则发出报警信号,未超限时,系统显示正常的湿温度度值,通过独立按键来切换显示温湿度。
第三章·各器件的工作原理
3.1 stm8s105s4的各接口
选择stm8s105s4芯片就能够满足设计要求。stm8单片机的GPIOE_PIN_6口作为唤起温湿度传感器DHT11的输出以及温湿度测量数据的输入口,GPIOD_PIN_0口作为数据输入MAX7219的16位移存储器的DIN信号口,GPIOD_PIN_1口作为数据输入MAX7219的16位移存储器的CS信号口,DPIOD_PIN_2口数据输入MAX7219的16位移存储器的CLK信号口,GPIOE_PIN_0口作为按键切换显示温湿度的中断输入信号口,GPIOD_PIN_4口作为当温湿度测量值超出上限时的报警的蜂鸣器输入口,GPIOE_PIN_5口作为测试程序运行的进程的LED灯输入口。
由系统的原理图2-1可以看出,实现本设计智能测量系统的核心是STM8
5 / 22
电 气 学 院 创 新 设 计 说 明 书
单片机。湿度和温度信号检测通过DHT11智能温湿传感器芯片来测量。由LED实现的显示器使人们直观的观看到测量到的温度和湿度的值。在本设计系统中,正常情况下,显示电路可以实时的显示室内的温度和湿度。当温度和湿度超限时,报警电路可以立即发出警报,以便实现坏境温度和湿度的调整。
DHT11温湿度传感器 温湿度切换显示按键 Stm8 单 片 机 MAX7219显示模块 测试用独立LED灯 报警用蜂鸣器 图2-1 系统原理图
3.2 温湿度传感器DHT11工作原理 (1) 电源引脚
DHT11的供电电压为 3-5.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。
(2) 串行接口 (单线双向)
DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。
数据格式:8bit湿度整数数据+8bit湿度小数数据
+8bi温度整数数据+8bit温度小数数据
+8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号
6 / 22
电 气 学 院 创 新 设 计 说 明 书
采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。 通讯过程如图1所示
图1
如图2所示,总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。
图2
总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。
7 / 22
电 气 学 院 创 新 设 计 说 明 书
数字0信号表示方法如图3所示
图3 数字1信号表示方法.如图4所示
图5
(3) 测量分辨率
测量分辨率分别为 8bit(温度)、8bit(湿度)。 (4) 电气特性
VDD=5V,T = 25℃,除非特殊标注 参数 条件 min typ max 单位 供电 DC 3 5 5.5 V 供电电流 测量 0.5 2.5 mA 平均 0.2 1 mA 待机 100 150 uA 采样周期 秒 1 次 注:采样周期间隔不得低于1秒钟。
8 / 22
电 气 学 院 创 新 设 计 说 明 书
3.3 LED数据显示MAX7217工作原理 (1) 电路特点及引脚功能
MAX7219是串行输入,共阴极动态扫描显示驱动器,可直接与单片机接口,每片可驱动8位LED数码管,可多片串联使用控制更多的LED数码管显示器。其典型应用电路如图1所示。
DIN: 串行数据输入端;
DIG0~DIG7: 8根位驱动线; GND: 电源地; LOAD: 装入数据控制端。LOAD=0时,允许MAX7219接收数据。在DIN端移入16位数据后,必须将LOAD拉高,以锁存移入的16位数据;
CLK: 串行时钟输入端,最高为10MHz,CLK的上升沿把DIN端的数据移入内部16位移位寄存器;
SEGA~SEGG,SEGDP:LED数码管的
八段驱动端; Iset: 驱动电流控制端,通过一个电阻接电源; 图1 V+: 电源端,5V;
DOUT:串行数据输出端,供多片MAX7219串联使用。
(2) 工作原理
MAX7219采用串行接口方式,只需LOAD、DIN、CLK三个管脚便能实现数据传送。DIN管脚上的16位串行数据包不受LOAD状态的影响,在每个CLK的上升沿被移入到内部16位移位寄存器中。然后,在LOAD的上升沿数据被锁存到数字或控制寄存器中。LOAD必须在第16个时钟上升沿或之后,但在下一个时钟上升沿之前变高,否则数据将会丢失。MAX7219的操作时序图如图2所示,其数据格式如表1所示。
9 / 22
电 气 学 院 创 新 设 计 说 明 书
图2
(3) MAX7219有下列几组寄存器:(如图3)
MAX7219内部的寄存器如图3,主要有:译码控制寄存器、亮度控制寄存器、扫描界限寄存器、关断模式寄存器、测试控制寄存器。编程时只有正确操作这些寄存器,MAX7219才可工作。
1) MAX7219有两种译码方式: B译码方式和不译码方式。当选择不译码时,8个数据为分别一一对应7个段和小数点位;B译码方式是BCD译码,直接送数据就可以显示。实际应用中可以按位设置选择B译码或是不译码方式。 2)扫描界限寄存器(XBH): 此寄存器用于设置显示的LED的个数(1~8)
3) 亮度控制寄存器(XAH): 共有16级可选择,用于设置LED的显示亮度,从0xX0~0xXF 4) 关断模式寄存器(XCH): 共有两种模式选择,一是关断状态(最低位 D0=0),一是正常工作状态(D0=1)。 图 3 MAX7219内部的相关寄存器 5) 显示测试寄存器(XFH)用于设置LED是测试状态还是正常工作状态, 当测试状态时(最低位 D0=1)各位显示全亮,正常工作状态(D0=0)。
10 / 22
电 气 学 院 创 新 设 计 说 明 书
第四章·软件程序设计
4.1 软件设计实现的功能
系统单片机代码采用C语言编写,以IAR Embedded Workbench为开发环
100境。系统软件实现功能: 80(1)通过DHT11温湿度传感器采集温湿度数据 60东部(2)通过MAX7219显示温湿度数据 40(3)比较检测到的温湿度数值与报警值,发现超过上限蜂鸣器立即报警 北部20(4)通过独立按键中断切换显示温湿度 04.2 软件程序主流程图 第一季度第三季度西部开 始
启动DHT11
时钟HIS 定时器TIM2 按键 初始化
否 DHT11是否有响应? 从DHT11取数据 是
初始化7219
显示温度数据 是 蜂鸣器报警 数据是否超出上限? 否 关闭蜂鸣器 否 按键按下? 是
显示湿度数据 11 / 22
电 气 学 院 创 新 设 计 说 明 书
定时器中断服务子程序流程图
计时2秒时间到
转到中断服务
函数
响应DHT11
向DHT11取数据更新数据
4.3程序代码:
(1)函数声明、变量定义代码: Wsdcl_main.h文件: #include\
#define u8 unsigned char #define u16 unsigned char #define u32 unsigned long #define KEY_PORT GPIOE
#define KEY_PIN GPIO_PIN_0
extern unsigned int temp_1,temp_2, temp_4,temp_5; extern unsigned int humi_1, humi_2, humi_4, humi_5;
/************************************************************/ void CLK_Configuration(void); void GPIO_Configuration(void); void KEY_Init(void);
void TIM2_Configuration(); void ceshi_on(void); void Alarm_Beep(); void ceshi_off(void); DHT11.h文件: #include\
#define DHT11_IO_IN GPIO_Init(GPIOE, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT)//输入模式 #define DHT11_IO_OUT GPIO_Init(GPIOE, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST)//输出模式
#define GPIO_PIN_UP GPIO_WriteHigh(GPIOE, GPIO_PIN_6)//拉高电平
12 / 22
电 气 学 院 创 新 设 计 说 明 书
#define GPIO_PIN_DOWN GPIO_WriteLow(GPIOE, GPIO_PIN_6)//拉低电平
#define DHT11_DQ_IN GPIO_ReadInputPin(GPIOE, GPIO_PIN_6) //读取引脚信号 /************************************************************/ extern unsigned char Table_Data[4]; unsigned char DHT11_Get_Data(void); int start_DHT11(void);
unsigned char DHT11_Get_Data(void); 7219.h文件:
#include\
#include\/*定义7219各个地址*/ #define MSB 0x80 #define LSB 0x01
#define DECODE_MODE 0x09 #define INTENSITY 0x0A #define SCAN_LIMIT 0x0B #define SHUT_DOWN 0x0C #define DISPLAY_TEST 0x0F #define GPIO_PORT GPIOD
/************************************************************/ void Init_Max7219(); void clear_7219();
void Write_Max7219(unsigned char address,unsigned char dat); void Display_Error(void); void Display_Temp(void); void Display_Humi(void); Delay.h文件: #include\
#include\
/************************************************************/ void Delay_ms(u32 ms); void Delay_us(u32 us); (2)主函数代码: Wsdcl_main.c文件: #include\
#include\#include\#include\#include\
13 / 22
电 气 学 院 创 新 设 计 说 明 书
int _Turn; int main()
{ _Turn=1; //先显示温度
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //时钟配置16MHz KEY_Init(); //按键切换显示初始化 TIM2_Configuration();//TIM2时钟配置
if(start_DHT11()==1)//检测是否有响应,结果有响应往下执行 {
DHT11_Get_Data(); //从DHT11取数据 while(1) {
/*设置温湿度警戒 蜂鸣器报警*/
if((Table_Data[2]>30)|(Table_Data[0]>60)) Alarm_Beep();
else GPIO_WriteLow(GPIOD,GPIO_PIN_4); Init_Max7219(); //初始化Max7219 /*取温度数据各个位数值*/ temp_1=Table_Data[2]/10; temp_2=Table_Data[2]; temp_4=Table_Data[3]/10; temp_5=Table_Data[3]; /*取湿度数据各个位数值*/ humi_1=Table_Data[0]/10; humi_2=Table_Data[0]; humi_4=Table_Data[1]/10; humi_5=Table_Data[1];
/*按键切换显示温湿度*/ if(_Turn>0)
Display_Temp(); else
Display_Humi(); } } }
/*蜂鸣器报警函数*/ void Alarm_Beep() {
GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);
14 / 22
电 气 学 院 创 新 设 计 说 明 书
BEEP_DeInit();
BEEP_Init(BEEP_FREQUENCY_1KHZ); BEEP_LSICalibrationConfig(12800); BEEP_Cmd(ENABLE);
GPIO_WriteHigh(GPIOD,GPIO_PIN_4);//蜂鸣器响 }
void ceshi_on(void)//用LED灯来测试程序运行情况 {
GPIO_Init(GPIOE, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_WriteLow(GPIOE, GPIO_PIN_5); }
void ceshi_off(void) {
GPIO_WriteHigh(GPIOE, GPIO_PIN_5); }
/*********************TIM2配置*****************************/ void TIM2_Configuration() {
TIM2_DeInit();
TIM2_ClearITPendingBit(TIM2_IT_UPDATE);
TIM2_TimeBaseInit(TIM2_PRESCALER_8192,0xF42);//2秒产生一次中断 TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); TIM2_Cmd(ENABLE);//启动定时器2 enableInterrupts();//开总中断 }
/*********************按键配置*****************************/ void KEY_Init(void) {
GPIO_Init(KEY_PORT,KEY_PIN,GPIO_MODE_IN_PU_IT);
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOE, EXTI_SENSITIVITY_FALL_ONLY);//只有下降沿触发
enableInterrupts(); }
/*********************中断服务函数*****************************/ #pragma vector=9
__interrupt void EXTI_PORTE_IRQHandler(void)//按键中断切换显示服务函数 {
_Turn=-_Turn;
15 / 22
电 气 学 院 创 新 设 计 说 明 书
}
#pragma vector=15
__interrupt void TIM2_UPD_OVF_BRK_IRQHandler(void)//定时中断更新数据服务函数 {
TIM2_ClearITPendingBit(TIM2_IT_UPDATE); start_DHT11();
DHT11_Get_Data();//更新温湿度数据 }
(3)DHT11温湿度传感器模块代码: DHT11.c文件: #include\
#include\#include\#include\int count_1,count_2; unsigned char sbuf;
unsigned char Table_Data[4];
/**********************唤起DHT11**************************************/ int start_DHT11(void) {
GPIO_Init(GPIOE, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_WriteLow(GPIOE, GPIO_PIN_6);//拉低18ms以上 Delay_ms(10000);//Delay_ms(18); GPIO_WriteHigh(GPIOE, GPIO_PIN_6); Delay_us(30); //拉高20~40us
GPIO_Init(GPIOE, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT); ceshi_on(); while(!DHT11_DQ_IN);//等待80us低电平结束
while(DHT11_DQ_IN); ceshi_off();//等待80us高电平结束 return(1); //应答成功返回1 }
/************************读取8位字节***********************************/ void com(void) {
u8 i;
sbuf=0;
for(i=8;i>0;i--) {
16 / 22
电 气 学 院 创 新 设 计 说 明 书
count_1=2;
while((!DHT11_DQ_IN)&&count_1++); //等待传送数据开始50us低电平结束并记录所用时间count_1 count_2=2;
while((DHT11_DQ_IN)&&count_2++) ;//等待\或\高电平结束并记录所用
时间count_2
if(count_2>(count_1)) //比较count_2与count_1来判断输入是\还是\ { sbuf<<=1; sbuf|=0x01; } else
{ sbuf<<=1; sbuf|=0x00; } } }
/**********************读取数据**************************************/ unsigned char DHT11_Get_Data() { u32 check,sum; com();
Table_Data[0]=sbuf;//湿度8位整数 com();
Table_Data[1]=sbuf;//湿度小数部分 com();
Table_Data[2]=sbuf;//温度整数部分 com();
Table_Data[3]=sbuf;//温度小数部分 com();
check = sbuf;//校验部分
sum =(Table_Data[0]+Table_Data[1]+Table_Data[2]+Table_Data[3]); if(check == sum)//校验正确则返回1 return(1);
else return (0); }
(4)MAX7219显示模块程序代码: 7219.c文件:
#include\
#include\#include\
17 / 22
电 气 学 院 创 新 设 计 说 明 书
#include\
/************************************************************/ unsigned int temp_1,temp_2,temp_4,temp_5; unsigned int humi_1, humi_2, humi_4, humi_5;
u8 LEDcode[10]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b}; /**********************IO口配置************************************/ void Dispaly_GPIO_LoadOn() {
GPIO_Init(GPIO_PORT, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_WriteHigh(GPIO_PORT,GPIO_PIN_1); }
void Dispaly_GPIO_LoadOff() {
GPIO_Init(GPIO_PORT,GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_WriteLow(GPIO_PORT,GPIO_PIN_1); }
void Dispaly_GPIO_ClkOn() {
GPIO_Init(GPIO_PORT,GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_WriteHigh(GPIO_PORT,GPIO_PIN_2); }
void Dispaly_GPIO_ClkOff() {
GPIO_Init(GPIO_PORT,GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_WriteLow(GPIO_PORT,GPIO_PIN_2); }
void Dispaly_GPIO_INPUT()//载入数据 {
GPIO_Init(GPIO_PORT,GPIO_PIN_0,GPIO_MODE_OUT_PP_LOW_FAST); }
/*******************向Max7219写入8位数据************************/ void Write_Max7219_byte(unsigned char temp) {
unsigned char i,x; for (i=0;i<8;i++) {
Dispaly_GPIO_ClkOff();//GPIOD_PIN_2推挽输出,写低电平 x=temp&MSB; if(x==0)
18 / 22
电 气 学 院 创 新 设 计 说 明 书
{
Dispaly_GPIO_INPUT();//GPIOD_PIN_0推挽输出
GPIO_WriteLow(GPIO_PORT,GPIO_PIN_0);//输入数据为\ } else {
Dispaly_GPIO_INPUT();//GPIOD_PIN_0推挽输出
GPIO_WriteHigh(GPIO_PORT,GPIO_PIN_0);//输入数据为\ }
temp<<=1;
Dispaly_GPIO_ClkOn();//GPIOD_PIN_2推挽输出,写高电平,数据载入16位移
位寄存器 } }
/***********************向7219写入16位数据*************************/ void Write_Max7219(unsigned char address,unsigned char dat) {
Dispaly_GPIO_LoadOff();//GPIOD_PIN_1推挽输出,写低电平 Write_Max7219_byte(address); Write_Max7219_byte(dat);
Dispaly_GPIO_LoadOn(); //GPIOD_PIN_1推挽输出,写高电平,锁存16位数据 }
/***********************初始化Max7219***************************/ void Init_Max7219(void) {
Write_Max7219(SHUT_DOWN, 0x01); //正常操作模式 Write_Max7219(DISPLAY_TEST, 0x00); //正常显示
Write_Max7219(DECODE_MODE, 0x00); //不采用B译码模式 Write_Max7219(SCAN_LIMIT, 0x07); //设置显示的数据位数 Write_Max7219(INTENSITY, 0x0A); //设置显示的亮度 }
/**************************清除显示******************************/ void clear_7219(void) {
unsigned char i; //变量i,用来选择数码管位选 for(i=8;i>0;i--) //i自减,选择完所有的8位
{ Write_Max7219(i,0x00); //对应位选的段全部清除显示 } }
19 / 22
电 气 学 院 创 新 设 计 说 明 书
/*********************温度显示***************************************/ void Display_Temp(void) {
Init_Max7219();//MAX7219初始化
clear_7219(); //MAX7219清除显示,免去干扰
Write_Max7219(0x01,0x4e);//显示摄氏度符号℃ Write_Max7219(0x02,0x63);
Write_Max7219(0x03,LEDcode[temp_5]); Write_Max7219(0x04,LEDcode[temp_4]);
Write_Max7219(0x05,LEDcode[temp_2]|0x80); Write_Max7219(0x06,LEDcode[temp_1]); }
/************************湿度显示************************************/ void Display_Humi(void) {
Write_Max7219(0x01,0x37);//显示湿度符号RH Write_Max7219(0x02,0x77);
Write_Max7219(0x03,LEDcode[humi_5]); Write_Max7219(0x04,LEDcode[humi_4]);
Write_Max7219(0x05,LEDcode[humi_2]|0x80); Write_Max7219(0x06,LEDcode[humi_1]); }
(5)延时函数程序代码: #include\#include\
void Delay_ms(u32 nCount) {
for(char i=0;i<10;i++) { while (nCount != 0) { nCount--; } } }
/*微秒延时函数*/
void Delay_us(u32 nCount)
20 / 22
电 气 学 院 创 新 设 计 说 明 书
{ for(char i=0;i<5;i++) { while (nCount != 0) { nCount--; } } }
第五章·结论
通过这次学院举行的创新设计课程使我们对温湿度测量系统有了一个全面的的了解。之前没有接触过的STM8芯片、DHT11温湿度传感器和MAX7219显示模块,在这次创新设计的过程中有了深刻的了解,也从中学到了很多知识。更重要的是学到了一种针对芯片开发的发现问题以及解决问题的能力。 在温湿度测量系统的设计过程中,我们遇到了很多问题,好些是之前从未遇到过的,但是在我们小组的合作下,一步步地解决了难题。这次的创新设计,我们得到了很多经验,明白了只有自己真正接触尝试了,才知道自己的知识水平与各种综合能力,也使我们找出了自己的不足和差距并一步步成长。
很感谢老师给我们这次实践的机会,还有各位学长学姐的耐心指导!
参考文献
1.stm8s105数据手册 2.stm8s105编程手册 3.DHT11温湿度传感器说明书 4.MAX7219参考手册
21 / 22
电 气 学 院 创 新 设 计 说 明 书
电气学院创新设计评审意见表
指导教师评语: ①该生学习态度 (认真 较认真 不认真) ②该生依赖他人进行设计情况 (有 无) ③该生设计有无创新点 (有 无) 指导教师签字: 年 月 日 图面及其它成绩: 答辩小组评语: ①设计巧妙,实现设计要求,并有所创新。 ②设计合理,实现设计要求。 ③实现了大部分设计要求。 ④没有完成设计要求,或者只实现了一小部分的设计要求。 答辩成绩: 组长签字: 2010 年 1 月 10 日 创新设计综合成绩: 答辩小组成员签字: 2010年 1 月 10 日 22 / 22
正在阅读:
基于stm8的温湿度测量仪 - 图文05-27
苏教版六年级数学上册期末复习计算题(口算题)专项练习四04-16
秋天的那个早晨作文700字06-28
细胞生物学11-09
粤语 白话大全11-04
题目:昆明市初级中学排球教师队伍现状调查与分析 下稿时间:20102-29
2017年1月嘉兴信息技术期末卷05-25
构建大学生思想政治教育三位一体育人体系的探索与实践06-01
泰州公需科目EXCEL2010答案98分04-17
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 测量仪
- 温湿度
- 基于
- 图文
- stm8
- 资格证建筑工程项目管理试题5216
- 9届黎华杯家具设计大赛
- 法国巴黎12大著名建筑及名胜 - 图文
- 《机电系统设计》2017年春学期在线作业(一)1
- 2011版《建设工程施工合同示范文本》泛化朱小敏
- MF-47型万用表的设计与组装实训指导书
- IC design flow& relevant desing tools(集成电路设计流程与EDA
- 2012年最新成都公招教师培训班内部复习资料
- 历年住院医师规范化培训考试试题
- 江苏省苏州市2019届高三调研测试数学试题 Word版含答案
- 铁路货车轮规(word版2)
- 起重吊装安全专项方案(修改最新)
- LM7标施工组织设计 - 图文
- 山东省实验中学2013届高三数学第二次阶段测试题
- 蓝牙小车
- 浙江交通职业技术学院教务处文件
- 加强网络舆论引导工作总结
- 20XX年福建公务员考试申论范文:节流开源 促进水资源的可持续利
- 2015年毛概复习重点(2) - 图文
- 十二个经典实用的商务谈判案例及解析