基于STM32的温湿度监测.doc

上传人:good****022 文档编号:116479129 上传时间:2022-07-05 格式:DOC 页数:34 大小:1.29MB
返回 下载 相关 举报
基于STM32的温湿度监测.doc_第1页
第1页 / 共34页
基于STM32的温湿度监测.doc_第2页
第2页 / 共34页
基于STM32的温湿度监测.doc_第3页
第3页 / 共34页
点击查看更多>>
资源描述
物联网工程设计与实施项目设计项目课题: 基于STM32的温湿度检测 院 系: 计算机科学与技术学院专 业: 物联网工程项目经理:于渊学号: 123921043副 经 理:谢金光学号: 123921024项目成员:李周恒学号: 123921002项目成员: 袁桃 学号: 123921048 项目成员: 颉涛 学号: 123921054 项目成员 肖青 学号: 123921025 项目成员 冯锦荣 学号: 123921011 项目成员 唐敏 学号: 123921023 指导教师: 2014 年 12月目录摘要2Absract3一设计目标4二设计方案4三实验所需器材5四设计内容54.1 STM32模块54.2 AM2302介绍64.2.1 产品概述64.2.2 应用范围74.2.3 产品亮点74.2.4 单总线接口定义74.2.5 传感器性能84.2.6 单总线通信94.3 Nokia 5110 介绍104.3.1 SPI接口时序写数据/命令114.3.2 显示汉字114.3.4 显示图形114.4 原理图设计114.5 PCB板设计13五实验软件设计135.1 温湿度传感器DHT22的程序135.2 湿度显示函数175.3主函数程序185.3.1显屏程序19六作品实物展示27七设计总结28基于STM 32 的温湿度检测摘要随着现代社会的高速发展,越来越多的科学技术被应用于农业生产领域。在温室大棚中对温湿度、二氧化碳浓度等外部参数的实时准确的测量和调节更是保证农业高效生产的重要前提。 本次课程设计中实现了一个基于STM32F103VET6的智能温湿度检测系统,目的是实现温湿度的采集和显示,温湿度的采集是作为自动化科学中一个必须掌握的检测技术,也是一项比较实用的技术。本次实验主要作了如下几个方面工作:首先通过对实时性、准确性、经济性和可扩展性等四个方向的分析比较之后,选择了STM32F103VE微控制器作为主控芯片和AM2303温湿度传感器来实现对温湿度数据进行采集;在Nokia5110显示屏上显示出温度和湿度,然后详细介绍了各个模块的工作原理和硬件电路设计思路,实现了温湿度数据实时准确的测量;之后阐述了系统各个部分的软件设计思路;最后对系统在实际应用中采集到的数据进行了处理,分析了误差产生的原因,并通过分段线性插值算法对系统非线性误差进行了校准,同未校准时采集的数据相比,校准后的数据准确度更高,稳定性更好。 在保证测量效果的基础上,本系统设计中充分考虑到性价比和再次开发周期性等,具有成本低、设计开发方便、通用性强等特点,不仅适用于现代农业生产中,还能用于其它工业控制、机械制造等其它领域,具有一定的市场推广价值。【关键词】: 嵌入式技术,电路设计,STM32,AM2302温湿度采集,Nokia5110 显示屏,程序设计AbsractIn the design of the curriculum implements a smart temperature and humidity detection system based on STM32F103VET6, the purpose is to realize the acquisition and display of the temperature and humidity, temperature and humidity of the acquisition as a must master in automation science detection technology, is also a practical technology. This experiment mainly made the following several aspects work: first of all, based on the real-time, accuracy, economy and expansibility etc. After analysis and comparison of four directions, STM32F103VE micro-controller as the master control chip and AM2303 temperature and humidity sensors to achieve temperature and humidity data acquisition; On the Nokia5110 screen display the temperature and humidity, and then introduces in detail the working principle of each module and the hardware circuit design, realized the real-time accurate measurement of temperature and humidity data; Elaborated the system after each part of the software design idea; Finally, the system in the practical application of dealing with the data collected, analyzed the reasons of the error, and through the piecewise linear interpolation algorithm for system of nonlinear error calibration, compared with not calibration data, after calibration data with higher accuracy and better stability.Keywords: embedded technology, circuit design, STM32, collecting AM2302 temperature and humidity, Nokia5110 display, the program design一设计目标本次设计要求实现对周围环境温湿度的感知以及显示。要求学生对STM32有一定程度的理解,熟悉STM32串口以及中断的使用,会基本的C语言和java,熟练掌握keil for ARM软件的使用与程序下载以及手机软件开发环境。二设计方案(1) 了解温湿度传感器工作原理,根据原理画好PCB原理图。(2) 根据PCB原理图自制PCB板电路,将液晶屏,温湿度传感器,变压器,stm32开发板等相关元件设备进行集成。(3) 测试PCB电路,检查相关电路能否正常工作,以及STM32核心板的能否正常调试。(4) 在完成电路调试后,用jlink下载器下载调试程序成功完成程序对相关元件的驱动。(5) 实验完成后做好相应的实验总结。三实验所需器材1.STM32F核心板 2.温湿度传感器(DHT22) 3.电容 4.3MM 红光LED发光二极管 5.稳压集成块(L7805)6.整流桥 7.电解电容 8.保险座 9.散热器10.电阻 11.变压器 12.电位器 13.排座 14.5110液晶屏模块四设计内容4.1 STM32模块芯片的选择:STM32VET6芯片的介绍:内核:ARM32位的Cortex-M3CPU最高72MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHz(Dhrystone2.1)单周期乘法和硬件除法存储器从64K或128K字节的闪存程序存储器高达20K字节的SRAM时钟、复位和电源管理2.03.6伏供电和I/O引脚上电/断电复位(POR/PDR)、可编程电压监测器(PVD)416MHz晶体振荡器内嵌经出厂调校的8MHz的RC振荡器内嵌带校准的40kHz的RC振荡器产生CPU时钟的PLL带校准功能的32kHzRTC振荡器低功耗睡眠、停机和待机模式VBAT为RTC和后备寄存器供电2个12位模数转换器,1s转换时间(多达16个输入通道)转换范围:0至3.6V双采样和保持功能温度传感器DMA:7通道DMA控制器支持的外设:定时器、ADC、SPI、I2C和USART图4.1 STM32VET6芯片引脚图 图 4.2 STM32芯片实物图4.2 AM2302介绍4.2.1 产品概述AM2302湿敏电容数字温湿度模块是一款含有己校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个高精度测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在单片机中,传感器内部在检测信号的处理过程中要调用这些校准系数。标准单总线接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选择。产品为3引线(单总线接口)连接方便。特殊封装形式可根据用户需求而提供。 图4.3 实物图外形尺寸(单位:mm)4.2.2 应用范围暖通空调、除湿器、测试及检测设备、消费品、汽车、自动控制、数据记录器、家电、湿度调节器、医疗、气象站、及其他相关湿度检测控制等。4.2.3 产品亮点超低能耗、传输距离远、全部自动化校准、采用电容式湿敏元件、完全互换、标准数字单总线输出、卓越的长期稳定性、采用高精度测温元件。4.2.4 单总线接口定义引脚名称描述VDD电源(3.5V-5.5V)SDA串行数据,双向口NC空脚GND地 表4.1 AM2302引脚分配表 图4.4 AM2302引脚分配图AM2302的供电电压范围为3.5V-5.5V,建议供电电压为5V。数据线SDA引脚为三态结构,用于读写传感器数据。4.2.5 传感器性能参数条件mintypmax单位分辨率0.1%RH分辨率16bit1精度252%RH重复性0.3%RH互换性完全互换2响应时间1/e(63%)5S迟滞0.3%RH3漂移典型值0.5%RH/yr表 4.2 AM2302相对湿度性能表参数条件mintypmax单位分辨率0.1分辨率16bit精度0.51量程范围-4080重复性0.2互换性完全互换响应时间1/e(63%)10S漂移0.3/yr表4.3 AM2302相对温度性能表图4.5 25时 AM2302 的相对湿度最大误差 温度传感器的温最大误差4.2.6 单总线通信 AM2302器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由数据线完成。设备(微处理器)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线;单总线通常要求外接一个约5.1k的上拉电阻,这样,当总线闲置时,其状态为高电平。由于它们是主从结构,只有主机呼叫传感器时,传感器才会应答,因此主机访问传感器都必须严格遵循单总线序列,如果出现序列混乱,传感器将不响应主机。SDA用于微处理器与AM2302之间的通讯和同步,采用单总线数据格式,一次传送40位数据,高位先出。具体通信时序如图4.5所示,通信格式说明见表4.3。图4.5 AM2302单总线通信协议 名称单总线格式定义起始信号 微处理器把数据总线(SDA)拉低一段时间(至少 800s)1,通知传感器准备数据。响应信号传感器把数据总线(SDA)拉低 80s,再接高 80s 以响应主机的起始信号。数据格式 收到主机起始信号后,传感器一次性从数据总线(SDA)串出 40 位数据,高位先出湿度湿度分辨率是 16Bit,高位在前;传感器串出的湿度值是实际湿度值的 10 倍。温度温度分辨率是 16Bit,高位在前;传感器串出的温度值是实际温度值的 10 倍;温度最高位(Bit15)等于 1 表示负温度,温度最高位(Bit15)等于 0 表示正温度;温度除了最高位(Bit14Bit0)表示温度值。校验位校验位湿度高位+湿度低位+温度高位+温度低位表4.3:AM2302 通信格式说明用户主机(MCU)发送一次起始信号(把数据总线SDA拉低至少800s)后,AM2302从休眠模式转换到高速模式。待主机开始信号结束后,AM2302发送响应信号,从数据总线SDA串行送出40Bit的数据,先发送字节的高位;发送的数据依次为湿度高位、湿度低位、温度高位、温度低位、校验位,发送数据结束触发一次信息采集,采集结束传感器自动转入休眠模式,直到下一次通信来临。4.3 Nokia 5110 介绍1)84x48 的点阵LCD,可以显示4 行汉字,2)采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。支持多种串行通信协议(如AVR 单片机的I、MCS51 的串口模式等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。3)可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。4)LCD 控制器驱动器芯片已绑定到LCD 晶片上,模块的体积很小。5)采用低电压供电,工作电压为3,3V,正常显示时的工作电流在200A 以下,且具有掉电模式。LPH7366 的这些特点非常适合于电池供电的便携式通信设备和测试设备中。 图4.64.3.1 SPI接口时序写数据/命令Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序模拟即可。4.3.2 显示汉字显示汉字可以采用两种点阵方式,一种是12*12点阵,一种是16*16点阵,网上也有一个自动提取字模的小软件“3310液晶显示屏汉字提取程序”,这个小程序只适用于水平寻址(V=0)。采用12*12点阵汉字时,由于不是8的整数倍数,因此行与行之间只能隔开,这样才能完整显示一个汉字。4.3.4 显示图形显示的图形像素大小不能超过84*48。也有一个字模提取小软件Zimo21可以帮助我们得到图像的像素数组。但要注意Zimo21软件的设置,不然的话就显示不了想要的图片。4.4 原理图设计图4.7 电路板设计软件:Altium图 4.8 传感器电路图4.9 5110显示屏电路图4.10 电源电路图 4.11 实验原理图4.5 PCB板设计要制作封装库首先必须对所需封装资料进行了解其长、宽、焊盘大小模块资料上都会有提供,另外还包括管脚信息,管脚标号都要明确了解。 图 4.12五实验软件设计5.1 温湿度传感器DHT22的程序#include #include dht22.h /复位DHT22void DHT22_Rst(void) DHT22_IO_OUT(); /SET OUTPUT DHT22_DQ_OUT=0; /拉低DQ delay_ms(20); /拉低至少18ms DHT22_DQ_OUT=1; /DQ=1 delay_us(30); /主机拉高2040usu8 DHT22_Check(void) u8 retry=0;DHT22_IO_IN();/SET INPUT while (DHT22_DQ_IN&retry=100)return 1;else retry=0; while (!DHT22_DQ_IN&retry=100)return 1; return 0;/从DHT22读取一个位/返回值:1/0u8 DHT22_Read_Bit(void) u8 retry=0;while(DHT22_DQ_IN&retry100)/等待变为低电平retry+;delay_us(1);retry=0;while(!DHT22_DQ_IN&retry100)/等待变高电平retry+;delay_us(1);delay_us(40);/等待40usif(DHT22_DQ_IN)return 1;else return 0; /从DHT22读取一个字节/返回值:读到的数据u8 DHT22_Read_Byte(void) u8 i,dat; dat=0;for (i=0;i8;i+) dat=1; dat|=DHT22_Read_Bit(); return dat;/u8 DHT22_Read_Data(u8 *temp,u8 *humi) u8 buf5;u8 i;DHT22_Rst();if(DHT22_Check()=0)for(i=0;iAPB2ENR|=1CRH&=0XFFFF0FFF; /PA11 推挽输出GPIOA-CRH|=0X00003000;GPIOA-ODR|=111; /输出1 DHT22_Rst();return DHT22_Check();5.2 湿度显示函数void Humidity_display(void)uchar table0=Temp:00.00C ;uchar table1=Humi:00.00% ;u8 t=0; u8 temperature,tem; u8 humidity,hum; int num;if(t%10=0)/每100ms读取一次 DHT22_Read_Data(&temperature,&humidity);/读取温湿度值/显示温度值table05=temperature/10+0 x30; table06=temperature%10+0 x30;tem=temperature*100; table08=tem/10%10+0 x30; table09=tem%10+0 x30; /显示湿度值table15=humidity/10+0 x30; table16=humidity%10+0 x30;hum=humidity*100; table18=hum/10%10+0 x30; table19=hum%10+0 x30; write_1602_com(0 x80);for(num=0;num16;num+)write_1602_dat(table0num);delay_ms(8);write_1602_com(0 x80+0 x40);for(num=0;num0;i-)for(j=110;j0;j-); void GPIO_Configuration_LCD(void) GPIO_InitTypeDef GPIO_InitStructure; GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8| GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin= GPIO_Pin_14| GPIO_Pin_15| GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); #define WIDTH 6#define HEIGHT 8#define WIDTH_CN13#define HEIGHT_CN16unsigned char lcd_display=0123456789; const unsigned char font6 = 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00 , / sp 0 x00, 0 x00, 0 x00, 0 x2f, 0 x00, 0 x00 , / ! 0 x00, 0 x00, 0 x07, 0 x00, 0 x07, 0 x00 , / 0 x00, 0 x14, 0 x7f, 0 x14, 0 x7f, 0 x14 , / # 0 x00, 0 x24, 0 x2a, 0 x7f, 0 x2a, 0 x12 , / $ 0 x00, 0 x62, 0 x64, 0 x08, 0 x13, 0 x23 , / % 0 x00, 0 x36, 0 x49, 0 x55, 0 x22, 0 x50 , / & 0 x00, 0 x00, 0 x05, 0 x03, 0 x00, 0 x00 , / 0 x00, 0 x00, 0 x1c, 0 x22, 0 x41, 0 x00 , / ( 0 x00, 0 x00, 0 x41, 0 x22, 0 x1c, 0 x00 , / ) 0 x00, 0 x14, 0 x08, 0 x3E, 0 x08, 0 x14 , / * 0 x00, 0 x08, 0 x08, 0 x3E, 0 x08, 0 x08 , / + 0 x00, 0 x00, 0 x00, 0 xA0, 0 x60, 0 x00 , / , 0 x00, 0 x08, 0 x08, 0 x08, 0 x08, 0 x08 , / - 0 x00, 0 x00, 0 x60, 0 x60, 0 x00, 0 x00 , / . 0 x00, 0 x20, 0 x10, 0 x08, 0 x04, 0 x02 , / / 0 x00, 0 x3E, 0 x51, 0 x49, 0 x45, 0 x3E , / 0 0 x00, 0 x00, 0 x42, 0 x7F, 0 x40, 0 x00 , / 1 0 x00, 0 x42, 0 x61, 0 x51, 0 x49, 0 x46 , / 2 0 x00, 0 x21, 0 x41, 0 x45, 0 x4B, 0 x31 , / 3 0 x00, 0 x18, 0 x14, 0 x12, 0 x7F, 0 x10 , / 4 0 x00, 0 x27, 0 x45, 0 x45, 0 x45, 0 x39 , / 5 0 x00, 0 x3C, 0 x4A, 0 x49, 0 x49, 0 x30 , / 6 0 x00, 0 x01, 0 x71, 0 x09, 0 x05, 0 x03 , / 7 0 x00, 0 x36, 0 x49, 0 x49, 0 x49, 0 x36 , / 8 0 x00, 0 x06, 0 x49, 0 x49, 0 x29, 0 x1E , / 9 0 x00, 0 x00, 0 x36, 0 x36, 0 x00, 0 x00 , / : 0 x00, 0 x00, 0 x56, 0 x36, 0 x00, 0 x00 , / ; 0 x00, 0 x08, 0 x14, 0 x22, 0 x41, 0 x00 , / 0 x00, 0 x02, 0 x01, 0 x51, 0 x09, 0 x06 , / ? 0 x00, 0 x32, 0 x49, 0 x59, 0 x51, 0 x3E , / 0 x00, 0 x7C, 0 x12, 0 x11, 0 x12, 0 x7C , / A 0 x00, 0 x7F, 0 x49, 0 x49, 0 x49, 0 x36 , / B 0 x00, 0 x3E, 0 x41, 0 x41, 0 x41, 0 x22 , / C 0 x00, 0 x7F, 0 x41, 0 x41, 0 x22, 0 x1C , / D 0 x00, 0 x7F, 0 x49, 0 x49, 0 x49, 0 x41 , / E 0 x00, 0 x7F, 0 x09, 0 x09, 0 x09, 0 x01 , / F 0 x00, 0 x3E, 0 x41, 0 x49, 0 x49, 0 x7A , / G 0 x00, 0 x7F, 0 x08, 0 x08, 0 x08, 0 x7F , / H 0 x00, 0 x00, 0 x41, 0 x7F, 0 x41, 0 x00 , / I 0 x00, 0 x20, 0 x40, 0 x41, 0 x3F, 0 x01 , / J 0 x00, 0 x7F, 0 x08, 0 x14, 0 x22, 0 x41 , / K 0 x00, 0 x7F, 0 x40, 0 x40, 0 x40, 0 x40 , / L 0 x00, 0 x7F, 0 x02, 0 x0C, 0 x02, 0 x7F , / M 0 x00, 0 x7F, 0 x04, 0 x08, 0 x10, 0 x7F , / N 0 x00, 0 x3E, 0 x41, 0 x41, 0 x41, 0 x3E , / O 0 x00, 0 x7F, 0 x09, 0 x09, 0 x09, 0 x06 , / P 0 x00, 0 x3E, 0 x41, 0 x51, 0 x21, 0 x5E , / Q 0 x00, 0 x7F, 0 x09, 0 x19, 0 x29, 0 x46 , / R 0 x00, 0 x46, 0 x49, 0 x49, 0 x49, 0 x31 , / S 0 x00, 0 x01, 0 x01, 0 x7F, 0 x01, 0 x01 , / T 0 x00, 0 x3F, 0 x40, 0 x40, 0 x40, 0 x3F , / U 0 x00, 0 x1F, 0 x20, 0 x40, 0 x20, 0 x1F , / V 0 x00, 0 x3F, 0 x40, 0 x38, 0 x40, 0 x3F , / W 0 x00, 0 x63, 0 x14, 0 x08, 0 x14, 0 x63 , / X 0 x00, 0 x07, 0 x08, 0 x70, 0 x08, 0 x07 , / Y 0 x00, 0 x61, 0 x51, 0 x49, 0 x45, 0 x43 , / Z 0 x00, 0 x00, 0 x7F, 0 x41, 0 x41, 0 x00 , / 0 x00, 0 x55, 0 x2A, 0 x55, 0 x2A, 0 x55 , / 55 0 x00, 0 x00, 0 x41, 0 x41, 0 x7F, 0 x00 , / 0 x00, 0 x04, 0 x02, 0 x01, 0 x02, 0 x04 , / 0 x00, 0 x40, 0 x40, 0 x40, 0 x40, 0 x40 , / _ 0 x00, 0 x00, 0 x01, 0 x02, 0 x04, 0 x00 , / 0 x00, 0 x20, 0 x54, 0 x54, 0 x54, 0 x78 , / a 0 x00, 0 x7F, 0 x48, 0 x44, 0 x44, 0 x38 , / b 0 x00, 0 x38, 0 x44, 0 x44, 0 x44, 0 x20 , / c 0 x00, 0 x38, 0 x44, 0 x44, 0 x48, 0 x7F , / d 0 x00, 0 x38, 0 x54, 0 x54, 0 x54, 0 x18 , / e 0 x00, 0 x08, 0 x7E, 0 x09, 0 x01, 0 x02 , / f 0 x00, 0 x18, 0 xA4, 0 xA4, 0 xA4, 0 x7C , / g 0 x00, 0 x7F, 0 x08, 0 x04, 0 x04, 0 x78 , / h 0 x00, 0 x00, 0 x44, 0 x7D, 0 x40, 0 x00 , / i 0 x00, 0 x40, 0 x80, 0 x84, 0 x7D, 0 x00 , / j 0 x00, 0 x7F, 0 x10, 0 x28, 0 x44, 0 x00 , / k 0 x00, 0 x00, 0 x41, 0 x7F, 0 x40, 0 x00 , / l 0 x00, 0 x7C, 0 x04, 0 x18, 0 x04, 0 x78 , / m 0 x00, 0 x7C, 0 x08, 0 x04, 0 x04, 0 x78 , / n 0 x00, 0 x38, 0 x44, 0 x44, 0 x44, 0 x38 , / o 0 x00, 0 xFC, 0 x24, 0 x24, 0 x24, 0 x18 , / p 0 x00, 0 x18, 0 x24, 0 x24, 0 x18, 0 xFC , / q 0 x00, 0 x7C, 0 x08, 0 x04, 0 x04, 0 x08 , / r 0 x00, 0 x48, 0 x54, 0 x54, 0 x54, 0 x20 , / s 0 x00, 0 x04, 0 x3F, 0 x44, 0 x40, 0 x20 , / t 0 x00, 0 x3C, 0 x40, 0 x40, 0 x20, 0 x7C , / u 0 x00, 0 x1C, 0 x20, 0 x40, 0 x20, 0 x1C , / v 0 x00, 0 x3C, 0 x40, 0 x30, 0 x40, 0 x3C , / w 0 x00, 0 x44, 0 x28, 0 x10, 0 x28, 0 x44 , / x 0 x00, 0 x1C, 0 xA0, 0 xA0, 0 xA0, 0 x7C , / y 0 x00, 0 x44, 0 x64, 0 x54, 0 x4C, 0 x44 , / z 0 x14, 0 x14, 0 x14, 0 x14, 0 x14, 0 x14 / horiz lines;void LCD_WriteByte(unsigned char dt, unsigned char command)unsigned char i; sce0; /使能LCDif(command=0) /传送命令 dc0;else dc1; /传送数据for(i=0;i8;i+) if(dt&0 x80)sdin1;elsesdin0;dt=dt1;sclk0;sclk1;dc1; sce1;/关闭LCDsdin1;void LCD_Init(void)sce1;res0;/产生一个让LCD复位的低电平脉冲 delay_ms(10); res1;delay_ms(100);LCD_WriteByte(0 x21,0);/使用水平寻址,进入拓展指令 LCD_WriteByte(0 x13, 0);/定液晶偏置系统 1:48LCD_WriteByte(0 xbb,0);/设定设置Vop,相当于亮度 LCD_WriteByte(0 x20,0);/芯片活动 使用基本指令并且水平寻址LCD_WriteByte(0 x0c,0);/设定显示模式,正常显示 LCD_Clear();void LCD_Set_XY(unsigned char X, unsigned char Y) Y|=0 x40; X|=0 x80;LCD_WriteByte(Y, 0);/ 列LCD_WriteByte(X, 0);/ 行sce1; void LCD_Clear(void)unsigned char t,k;LCD_Set_XY(0,0);for(t=0;t6;t+) for(k=0;k84;k+) LCD_WriteByte(0 x00,1); void LCD_WriteChar(unsigned char X,unsigned char Y,unsigned char c) unsigned char i,j ; const unsigned char *map = &font00; c -= 32; /变换 map += c *( HEIGHT/8*WIDTH); for(i=0;iHEIGHT/8;i+) LCD_Set_XY(X, Y+i); for(j=0;j=(84/WIDTH)X=0;Y+=HEIGHT;i=0;j+;if(j=(48/HEIGHT) return ; void LCD_WriteNumber(unsigned char x,unsigned char y, unsigned long number) unsigned char num10=,i,j,k; if(number=0) /number 0 时候 LCD_WriteChar(x, y,0); else for(i=0;number0;i+) numi=lcd_displaynumber%10;/每位以字符表示 number/=10; for(j=0;ji/2;j+)k=numj;numj=numi-1-j;numi-1-j=k; LCD_WriteString_en(x,y,num); void LCD_Write_cn(unsigned char row, unsigned char page,unsigned char c) /row:列 page:页 dd:字符unsigned char i; LCD_Set_XY(row, page);/ 列,页 for(i=0; i12;i+) LCD_WriteByte(chinese1c*24+i,1); LCD_Set_XY(row, page+1);/ 列,页 for(i=12; i24;i+) LCD_WriteByte(chinese1c*24+i,1);六作品实物展示 图6.1 实物图1 图6.2 实物图2七设计总结首先非常感谢老师开设了这项课程,给我们创造了一个接触实际硬件设计与调试的环境,让我们有机会把课堂学到的知识应用到实际过程中,而且在这过程中我发现我们对原先学到的理论知识有了新的认识。 在本次课程实践活动中,我们对一个电子系统从构思到设计到实现到调试有了一定的了解,也学到了许多知识和技能,包括如何针对芯片选型,如何绘制原理图,如何焊接贴片元件,如何调试硬件电路,如何编写嵌入式系统的程序,如何移植一些现有的成果,也加深了对一些概念的认识。在硬件的设计过程中,我主要学到了如何绘制原理图和pcb板。在这次课程实验中,我们有了明确的目标,也有了实际的器件来操作,因此学习也有了动力。 在软件设计过程中,我们接触到了嵌入式系统的软件设计,这不同与以往在 PC 机上的 程序设计,其程序规模也远远大于类似科创系列课程中所设计到的软件,同时在很多地方需要移植现成的代码,这就要求我们不仅要会写程序,还要会读懂他人写的程序,并且学会写能让别人看的懂的程序。在次过程中,我们接触到了平时不大涉及的位操作,宏定义,多进程多线程等等。 由于大多只是是在课本之外,而且是比较新的技术,设计过程中就要求我们有足够的搜索资源寻找答案的能力,借助互联网的强大力量和同学的帮助,使我们接触到了许多新的知识,大大开拓了这方面的见识。在和同学们的共同努力中,我们也学会了如何更好的和他人一同做一件较为复杂的事情,如何将任务分成可以并行的模块,如何更好的团队分工与协作,如何将自己的想法和他人交流,如何去聆听他人的想法。虽然设计和实现的过程中,每一步都会遇到许多挫折,时常被一些奇怪的问题弄的晕头转向,但在同学的共同努力下,以及成功后带来的巨大的成就感的驱动下,我们还是挺过了一个又一个难关,最终实现了温湿度的显示 的功能,成功的喜悦还是弥补了探索过程中的郁闷。虽然花了很多时间,但学到了很多东西,感觉还是很值得的。课程实验虽然告一段落,但是这个系统的设计还可以有很多事情可以去做,当前所实现的功能只是目前硬件的简单应用,我们还可以继续努力,做出一个实用性更强的系统来。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!