第4章 系统软硬件设计
第4章 系统的软硬件设计
4.1、系统程序设计流程图及主要程序
采用STM32F103RB单片机为核心和使用任意手机作为短信接收端,实现有异常情况时的短信报警功能。首先单片机进行初始化,包括单片机每个端口,每个变量的初始化以及LCD模块的初始化。由传感器检测煤气含量超标信号和红外信号,然后将检测到的信号发给STM32F103RB,芯片检测得到的是什么信号,根据信号的不同启用不同的子程序选择发送不同的短信给指定手机号。手机号码可以通过触摸屏来进行修改。下面图4.1是主程序设计流程图[16]。
图4.1 系统主程序流程图
24
第4章 系统软硬件设计
系统主循环函数见附录:
根据系统主程序流程图,软件部分可以分为三部分,分别是初始化、LCD显示及手机号码修改函数、短信报警函数。各部分的程序分别是:
4.1.1、系统初始化函数
systick_init();//系统嘀嗒定时器初始化
usart1_init(72000000,115200);//串口初始化时钟72M 模特率115200 SPI_Flash_Init();//W25X40初始化 LCD_Init();//LCD初始化
LCD_LED = 0;//lcd背光 1亮 0灭 key_init();//按键初始化 led_init();//LED初始化 IIC_Init();//24C02初始化 Init_Touch();//触摸屏初始化 gpio_Init();//传感器使用引脚初始化
由初始化函数我们可以看出在本系统中我使用了系统嘀嗒定时器,串口1,flash W25X40,LCD屏,触摸屏,按键,LED灯,EEPROM 24C02,传感器。
系统嘀嗒定时器是用来做延时函数用的,delay_s();delay_ms();delay_us();都是使用系统嘀嗒定时器。
flash W25X40是用来存储字库的,在LCD上显示的字母、汉字都存在W25X40里。 LCD屏用来显示。
触摸屏用来输入手机号码和密码。 按键用来选择模式。 LED灯用来指示状态。
EEPROM 24C02用来储存触摸屏校准数据、密码、手机号码。 传感器用来检测有无异常。
4.1.2、LCD显示及手机号码修改函数
由于本函数太长在这里只显示修改手机号码的函数,具体函数见附录。按下KEY0按键LCD屏会亮起来,按下LCD屏上的“修改号码”可以进入本函数,由函数可知道,首先要输入密码,输入密码后,当按下“确认”按钮,比较输入密码和EEPROM里存的密码,如果一样就可以修改手机号码,否则要重新输入。输入手机号码后,当按下“确认”按钮,如果号码长度是11位就把他保存到EEPROM里,否则重新输入。当手机号码保存成功,LCD显示屏会自动暗下来[17]。
25
第4章 系统软硬件设计
4.1.3、短信报警函数
函数内容见附录,首先处理要发送的信息(从EEPROM里读取手机号码,替换短信内容中的手机号码),然后发送\,设置GSM发短信模式为PDU模式;然后发送\设置要发短信的长度(其中39是短信的长度,根据自己需要改变);然后发送要发送的短信内容;最后发送Ctrl+Z\\r\\n(ASCII中的26)结束发送。
4.2 、STM32F103RB开发板系统
本设计中的设计的核心芯片是STM32F103RB单片机,接线方法如图4.2所示。
图4.2 STM32F103RB芯片接线图
由图中可以看出芯片的接线方法
PA:0重启按键;1、2 LED灯;4-7 flash的SPI接口;9、10 串口;13-15 JLINK接口 PB:0-15 LCD数据接口;8、9 EEPROM的IIC接口
PC:2、3 按键;5 LCD背光;6 触摸屏笔中断;7 触摸屏片选;9 LCD读数据;10 LCD写数据;11 LCD数据/命令;
26
第4章 系统软硬件设计
PD2:LCD片选端口
4.2.1、电源
AMS1117-3.3是一个正向低压降稳压管,在输出电流为1A时压降为1.2V。它的固定电压3.3V输出电流为 1A线路调整率:0.2%(最大)负载调整率:0.4%(最大),内含静态电流限制、过热保护芯片的接线方法如图4.3所示。
图4.3 电源芯片接线图
输入端输入USB电压(5V),输出电压为3.3V。为单片机、LCD等芯片模块供电。图中电容C201、C202为输入稳定电容,作用是减小纹波、消振、抑制高频和脉冲干扰。电容C203、C204为输出稳定电容,作用是改善负载的瞬态响应。
4.2.2、触摸屏模块
图4.4 XPT2046原理图
XPT2046是四线电阻式触摸屏控制芯片,深圳市矽普特科技有限公司研发的阻触摸屏控制芯片,它被广泛应用于触摸屏驱动。在XPT204611引脚对引脚单片机的中断引脚,触摸屏不是触摸时,11引脚高举,当触摸屏被触摸时,11引脚变为低电平。因此
27
第4章 系统软硬件设计
11针单片机检测到高有低,你可以知道有没有触摸屏的触摸事件发生。如果触摸屏被按压事件发生时,通过SPI端口的微控制器,它首先发送一个读命令X坐标0×90,则读出的两字节的数据,然后发送命令读取Y坐标0XD0,然后读出2字节的数据。此时,XY坐标值就知道了,因为XPT2046是12位精度的ADC,所以读取两个字节,只有高12有效数据。[18]
XPT2046的接线原理图如图4.4所示,其中的2,3,4,5脚名称为XP,YP,XN,YN。 P是Positive的缩写,“正”的意思; n为Negative的缩写,“负”的意思。所以有时候,你会看到被写为X +,Y +,X-,Y-的引脚名称。这四个引脚被连接到触摸屏四个引脚。 XPT2046与单片机的SPI连接。分别为引脚16:SPI_CLK(SPI时钟引脚);引脚15:SPI_CS(使能引脚或称为片选);引脚14:SPI_MOSI(数据输入引脚);引脚12:SPI_MISO(数据输出引脚)。接好后就可以了。
4.2.3、EEPROM AT24C02模块
图4.5 AT24C02原理图
AT24C02 是 2k 数字串行CMOS EEPROM ,内部包含 256*8 个字节,因为使用了先进 CMOS技术大大降低了功耗。AT24C02 有一个 8 个字节的页写入缓冲区。操作通过 IIC 总线接口设备,还有一种特殊写保护状态。
IIC 总线是一种串行总线由费利浦推出,可以使用在有多个主机的系统中,而且包含有高低速同步功能和总线仲裁设备两种功能的高性能串行总线。如图4.5所示只有两个双向的 IIC 总线信号线。一根是数据线SDA,即是引脚5,另一根是时钟线SCL,即是引脚6。
IIC总线必须连接到正电源使用上拉电阻。当总线空闲时,两条线都是高电平。接到BUS上的任何设备输出低电平总线上,BUS的信号都会变低,即每个器件的SDA和SCL的关系是“与”。实验取RP =100K,比电阻根据所需信号的陡度,通常是在电阻较小的时候,上升沿的崛起越陡
IIC总线的数据传送[19]
数据位的有效性规定:IIC总线进行数据传送的时候,在时钟信号为高电平的期间,数据线上的数据必须保持稳定,只有在时钟线上的电平为低电平期间,数据线上的高电
28