在LCD屏上显示温度和湿度值 u8 DHT11_ShowLcd(void) { }
u8 t,h;
if(DHT11_RdTAndH(&t,&h)) { } else
return 0;
//LCD屏提示信息
Draw_Text_8_16_Str(0,256,BLUE,GREEN,\//显示温度和湿度
Draw_Text_8_16_Str(0,272,BLUE,GREEN,\温度 \
LCD_DrawxXx(50,272,BLUE,GREEN,showno[t/10],8,16);//显示温度的十位 LCD_DrawxXx(58,272,BLUE,GREEN,showno[t],8,16);//显示温度的个位 //Draw_Text_8_16_Str(50,16,BLACK,WHITE,\温度 \Draw_Text_8_16_Str(0,288,BLUE,GREEN,\湿度 \
LCD_DrawxXx(50,288,BLUE,GREEN,showno[h/10],8,16);//显示湿度的十位 LCD_DrawxXx(58,288,BLUE,GREEN,showno[h],8,16);//显示湿度的个位
2.6 使用GSM模块进行通信
2.6.1 开发环境
Arm kile5开发环境以及STM 32开发板
2.6.2 需求分析
使用GSM模块进行通信,编写程序代码,利用下载软件以及指令进行打电话操作,主要用于通讯操作,电话等
2.6.3 原理
19
根据STM32原理图确定GPIO端口,然后配置GPIO端口,编写程序进行打电话操作
2.6.4 设计思路
利用GSM模块进行通信,以手机卡作为基础,编写程序下载到开发板,然后结合程序代码以及下载软件通讯软件进行通信操作,发送AT ,显示ok即为连接成功,然后可以继续进行,发送ATD+手机号,点击发送即可进行打电话操作。
2.6.5 结果
2.6.6主要功能函数及注释
void GPRS_Init(void); //进行一些基础配置
void GPRS_LinkAndSend(u8 *ipaddr,u8 *ipport,u8 id,u8 temperature,u8 humidity);
//用来接收ip地址,IP的端口号,组号,温度值,湿度值
void GPRS_Connect (u8 *ipaddr,u8 *ipport,u8 id,u8 temperature,u8 humidity);
//统计执行数据
20
3 主要参考资料
3.1 STM32F1系列技术参考手册
3.2 信盈达M3开发板原理图
3.3 DHT11中文说明手册
3.4 GSMAT指令命令集、
4 心得体会
在本次实训中,我学会了很多以前不知道的知识,从开始的不知道,自己也没有太大的信心,但是通过老师的鼓励和试着去跟着老师的脚步,发现自己可以做到,然后每天老师会给我们讲解一个个模块,我们通过参考老师的操作以及程序,再自己去编写其他程序,发现自己学会了这个项目,感觉一个项目的完成是由许多模块组成的,所以要有一个整体的模块规划,有了一个整体规划再通过小块编写就会简洁许多,还有通过小组的共同合作完成了这个项目我感觉团队合作也是非常重要的,最后,我想感谢一下公司的实训老师和负责老师,对我们很负责,才使得我们有很大的收获。
5 代码附录
1 跑马灯、按键灯、呼吸灯 1.1跑马灯 #include \//PB5--LED1
21
//PE5--LED2 //PA5--LED3 //PA6--LED4
void LED_Config(void) {
//打开B端口时钟 RCC->APB2ENR |=(1<<3); RCC->APB2ENR |=(1<<2); RCC->APB2ENR |=(1<<6); //配置为通用推挽输出
GPIOB->CRL &=~(0xf<<20);//清零 GPIOB->CRL |=(0x3<<20); GPIOB->ODR |=(1<<5);//灭1灯 GPIOE->CRL &=~(0xf<<20); GPIOE->CRL |=(0x3<<20); GPIOE->ODR |=(1<<5); GPIOA->CRL &=~(0xf<<20); GPIOA->CRL |=(0x3<<20); GPIOA->ODR |=(1<<5); GPIOA->CRL &=~(0xf<<24); GPIOA->CRL |=(0x3<<24); GPIOA->ODR |=(1<<6); }
void SH (void) {
GPIOB->ODR &=~(1<<5); Delay_ms(200);
//置0灯1亮
22
GPIOE->ODR &=~(1<<5); Delay_ms(200);
GPIOA->ODR &=~(1<<5); Delay_ms(200);
GPIOA->ODR &=~(1<<6); Delay_ms(200);
GPIOB->ODR |=(1<<5);
// Delay_ms(200);
GPIOE->ODR |=(1<<5); // Delay_ms(200);
GPIOA->ODR |=(1<<5);
Delay_ms(200);
GPIOA->ODR |=(1<<6);
Delay_ms(200);
GPIOA->ODR &=~(1<<6);
Delay_ms(200); GPIOA->ODR &=~(1<<5);
Delay_ms(200);
GPIOE->ODR &=~(1<<5);
Delay_ms(200);
GPIOB->ODR &=~(1<<5); Delay_ms(200);
GPIOA->ODR |=(1<<6);
Delay_ms(200);
GPIOA->ODR |=(1<<5); Delay_ms(200);
GPIOE->ODR |=(1<<5);
//置0灯2亮
//置0灯3亮
//置0灯4亮
置1灯1灭
置1灯2灭 //置1灯3灭
//置1灯4灭
//置0灯4亮
//置0灯3亮
//置0灯2亮
//置0灯1亮
//置1灯4灭
//置1灯3灭
//置1灯2灭
23