




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南京工程学院自动化学院本科毕业设计(论文)1南京工程学院自动化学院本科毕业设计(论文)Graduation Design The Design Of Messaging System Based On MCUBy Wang HuiSupervised byLecture. SHI XinxinSchool of Automation Nanjing Institute of TechnologyJune, 20151摘 要随着手机的广泛使用,GSM网络提供的短消息服务使得只需要增加少量投入便可以通过手机实现生活和生产中的远程控制和告警通知成为可能。本设计是基于ARM Cortex-M3内核的3
2、2位单片机STM32的一种短信收发系统。本系统主要实现中英文短信收发及TFT彩屏显示相关状态如短信未读、已读状态、短信发送状态和内容如要读取短信数、读取到的短信内容、时间、发件人手机号码等,并且可以实现通过TFT液晶屏触摸输入号码和功能按键如读取、返回、拨号、挂断、删除等。此方案以ST公司32位单片机STM32F103ZET6为主控制器辅以GSM/GPRS模块SIM900A,64Mb串行Flash存储器W25Q64,2K串行EEPROM AT24C02,TFT液晶屏ILI9320等硬件,通过C语言编写程序,用软硬件结合的方法实现其基本功能。经过多次实践测试,本系统可以达到预期的稳定性、可靠性,
3、可以应用在远程控制、智能家居、工业控制等领域。关键词:SIM900A ;STM32;短信;GSM;TFT液晶屏1南京工程学院自动化学院本科毕业设计(论文)ABSTRACTWith the widespread use of mobile phones, short message services provided by the GSM network make it possible that only a slight increase in investment and production will be able to live in the remote control and a
4、larm notification via cell phone.In this thesis , a messaging system base on the 32-bit MCU STM32 which is based on the core of Cortex-M3 by ARM is discussed.The system is mainly a Chinese and English text messaging and that TFT color screen displays the status of messages such as unread, read statu
5、s, SMS status and content, such as the number of messages to be read, read the message content, time, sender's phone number, etc. and can be achieved by TFT LCD touch screen to input the number and function keys such as reading, return, dial, hang up, delete, and so on.This program selects ST co
6、mpany's 32-bit MCU STM32F103ZET6 as controller supplemented GSM / GPRS module SIM900A, 64Mb Serial Flash memory W25Q64,2K serial EEPROM AT24C02, TFT LCD ILI9320 hardware, through C language programming,and achieve its basic functions with the combination of software and hardware.After several pr
7、actice tests, the system can achieve the desired stability, reliability, and can be used in remote control, smart home, industrial control and other fields.Key words: SIM900A; STM32; messaging; GSM; TFT screenII南京工程学院自动化学院本科毕业设计(论文)目 录第一章 绪 论11.1 引言11.2 选题背景与意义11.3 应用现状及发展趋势1第二章 GSM系统及方案设计32.1 GSM系统
8、32.1.1 GSM系统特点32.1.2 GSM系统的体系结构32.2 GSM系统方案设计42.3 本章小结5第三章 系统硬件设计63.1 单片机最小系统63.1.1主控制器63.1.2 主控制器外围简单电路73.1.3 JTAG接口83.1.4 电源电路93.2 SIM900A模块103.2.1 SIM900A模块的对外接口电路103.2.2 SIM900A模块初始化113.3 外围电路设计123.3.1 一键下载电路123.3.2 TFT液晶屏接口123.3.3外部存储器133.3.4 按键和指示灯电路153.3.5 蜂鸣器电路163.4 本章小结17第四章 系统软件设计184.1 总体框
9、图184.2 系统初始化194.3 文件系统FATFS移植19III4.4 汉字字库19 4.4.1 更新字库204.4.2 查找汉字204.5 触摸屏模块244.6 RTC显示254.6.1 RTC简介254.6.2 设置时间264.6.3备份区域保护264.7 开关机264.7.1 待机模式简介264.7.2 开关机实现过程274.8 本章小结28第五章 系统调试295.1系统调试过程与方法295.1.1 串口通信295.1.2 系统UI315.1.3 读取短信325.1.4 发送短信325.1.5 电话测试335.2系统调试结果与分析345.3本章小结42第六章 结 论436.1 主要工
10、作与结论436.2 存在的问题436.3 感想与收获43致 谢44参 考 文 献45附录A:硬件设计原理图与PCB图47IV第1章 绪 论1.1 引言移动通信发展到现在,经历了由模拟到数字的变化,早期的移动通信系统是以AMPS和ETACS为代表的模拟移动通信系统。90年代,随着移动通信用户数量的增加,用户对跨地区,跨国漫游以及各种增值服务要求也随之增加,同时数字通信技术发展也日趋成熟,欧洲的移动通信运营商开始考虑发展一种新型的数字移动通信系统,GSM系统也就应运而生1。GSM是英文“Global System for Mobile Communications”的缩写,其全文含义是“全球移动通
11、信系统”2。我国移动通信发展已经进入了一个高速发展的阶段,短消息作为其中作为最简单和方便的数据通信方式,其应用发展速度可想而知,自然也非常迅速。随着信息化时代的高速发展,短信息也越来越廉价了,并且短信息的及时性、稳定性也得到了更好的保证3。1.2 选题背景与意义在高速发展的信息化时代的今天,物联网是新一代信息技术的重要组成部分,其覆盖范围极广,包括从传感器、控制器到云计算的各种应用以及产品服务智能家居、交通物流、环境保护、公共安全、智能消防、工业检测、工业控制、个人健康等各种领域。它是下一个推动世界高速发展的“重要生产力”,是继通信网之后的一个万亿级市场。而以GSM/GPRS为代表的通信技术是
12、极其重要的一环,掌握了GSM/GPRS通信技术,就相当于掌握了一个万亿级市场。近些年来,随着物联网时代的到来,各种无线技术都得到了迅猛的发展,如比较热门的Zigbee、WIFI、Bluetooth等,虽然这几种技术在局域无线网中应用较广泛、成本也较低,但是都有一个共同的缺点,那就是传输距离有限,比较适合民用。而GSM短信息业务费用低廉、覆盖范围广、实现简单,可以解决上述的不足,具有低成本、可升级和可扩展性,在物联网时代的今天应具有较广阔的前景4。1.3 应用现状及发展趋势作为一种数据传输方式,GSM短消息具有覆盖面积广、低成本、信号好的多个优点,对于解决监控采集点分散、覆盖面广、监控点移动、实
13、时性要求较低的监控采集系统具有无可比拟的优势。下面就讲述几个具体的应用:第1、 在智能家居中的应用,随着近几年嵌入式产品的高速发展,人们越来越享受科技发展给我们的生活带来的方便。越来越多的高科技智能化产品,已经被广泛应用到我们的实际生活中。现在,家用电器如电视、冰箱、空调、微波炉等普遍向智能化方向发展,我们都能直接通过手机操控开关和改变功率。利用GSM模块,我们可以用手机发送特定的短信,打开或关闭家中的灯、空调、电视等电器,同时还可以发送家中的情况发送到手机上。在GSM系统中再加入一些传感器,如温湿度传感器、污染气体传感器、燃气传感器等,就可以增加家居的安全性,即使我们在上班或者旅行时,也可以
14、及时获取家中的安全状况。一旦发生危急情况,也可以及时采取措施,避免或者减小财产损失以及人身安全5,6。第2、 在汽车中的应用,随着交通工具的不断发展,汽车也变得普及了起来,汽车的防盗的解决自然也是迫在眉睫。我们可以将GSM模块安装在汽车的隐蔽处,一旦发生盗窃,立即发送短信提醒车主,然后就可以用手机发送一条短信给该模块,模块经一定的算法处理判断短信的合法性后,将附近的GSM基站信息及时发送给车主,这样就可以有利于警方的快速破案。同时还可以像智能家居一样,用GSM模块控制车中的空调,在车主上车之前,就可以打开空调,这样车主在一上车后就可以感受到合适的温度7,8。第3、 在工控系统中的应用,由于有的
15、工控系统环境比较恶劣,不适合进行有线网络的传输,需要借助无线技术来实现控制目的。例如,油田检测、矿产开发时瓦斯浓度监测等,不可能借助人力去检测,而有线技术也不适合,WIFI、Zigbee等短距离无线技术又不能发挥很好的作用,而借助于GSM网络的SMS可以很好解决这一问题9。第二章 GSM系统及方案设计2.1 GSM系统2.1.1 GSM系统特点 GSM是在蜂窝系统的基础上发展而成并根据欧洲电信标准化协会制定的GSM技术规范设计的一种开放式结构的系统,属于第二代数字移动通信系统。它是目前基于时分多址技术的移动通信中比较成熟、完善、且应用最广泛的一种系统10。主要具有以下几个特点:1) GSM系统
16、是由几个分系统组成的,可与各种公众通信网互通互联。2) GSM系统能提供国际的自动漫游功能,全部GSM移动用户都可进入GSM系统。3) GSM系统具有加密和鉴权功能,能确保用户保密和网络安全。4) GSM系统抗干扰能力强,信号强。5) 随着集成电路技术的快速发展,用户设备也逐渐向小巧和多功能方向发展。2.1.2 GSM系统的体系结构蜂窝移动通信系统主要是由交换网路子系统(NSS)、无线基站子系统(BSS)和移动台(MS)三大部分组成,如图2.1所示。其中NSS与BSS之间的接口为“A”接口,BSS与MS之间的接口为“Um”接口11。图2.1 蜂窝移动系统组成框图GSM系统框图如图2.2,A接口
17、往右是NSS系统,A接口往左Um接口是BSS系统,Um接口往左是移动台部分(MS)。NSS由移动业务交换中心(MSC)、拜访位置寄存器(VLR)、归属位置寄存器(HLR)、鉴权中心(AUC)和移动设备识别寄存器(EIR)几部分组成,主要完成交换功能和客户数据与移动性管理、安全性管理所需的数据库功能。图2.2 GSM系统框图BSS是在一定的无线覆盖区中由MSC控制,与MS进行通信的系统设备,由基站控制器(BSC)和基站收发信台(BTS)两部分组成,主要功能是完成无线发送接收和无线资源管理等。 MS由移动终端(MS)和客户识别卡(SIM)组成。2.2 GSM系统方案设计查阅相关资料可知,基于GSM
18、系统的短消息收发系统的实现方案主要有三种。第一种是通过移动网关发送短信息,此方案最大的优点就是不需要额外的硬件,但是需要到电信部门去申请网关,适用于大型的网络通讯公司开发,如华为、中兴等。第二种使用网站提供的短信发送功能,如新浪、网易等网站。这种方法易于实现,所需资源最少,但是对网站依赖性较大,而且只能发送短信,不支持实时接收短信。第三种在电脑或单片机通过GSM 模块向手机发送短信,对硬件需求较大,比较适合小项目的开发,但能实现自动收发短信12,13,14。第二种方法短信收发通常又分为两种模式:Text、PDU模式,PDU模式比较复杂,需要用户编写专门的函数将文本格式转换为PDU格式,而应用T
19、ext模式开发,则显得简单了很多,本文采用的是第二种方法的Text模式。第二种方法中,我们可以通过PC与GSM模块进行通信从而获取相关数据,也可以通过单片机与GSM模块进行通信。虽然PC功能强大,平台易于实现,但是不够便携,且成本较高,所以不是一个明智之选。我们选择了单片机与GSM模进行通信,从而与GSM网络交互通信,从而实现与手机或其他的GSM模块进行通信,这种方法简单易于实现,只需要我们熟练掌握串口编程和AT指令即可15,系统框图如图2.3所示。图2.3 GSM系统框图2.3 本章小结 本部分主要论述了GSM系统,首先介绍了GSM的特点、体系结构,接着提出了GSM系统的设计方案及简要框图。
20、第三章 系统硬件设计3.1 单片机最小系统3.1.1主控制器本系统选择了ST公司的基于ARM Cortex-M3内核的32位处理器STM32F103ZET6作为主控制器,封装LQFP144。关于STM32F103ZEZT6,我们可以从官方数据手册上可以看出:其最高72MHz工作频率,512K字节Flash,64K字节SRAM ,支持2.03.6V宽电压输入,12通道DMA 控制器,有112个快速I/O端口,有13个通信接口包括2个I2C接口,5个USART接口其中3个可以配置为UART,3个SPI接口其中2个可复用为I2S接口等。由以上数据可以看出,本系统所选控制器性能是如此的优越,在嵌入式产
21、品开发中必有其一席之地。无论是传统51单片机或增强型51单片机还是RISC的8位AVR单片机还是16位的MSP430单片机,本处理器在Flash、RAM、工作频率以及外设上具有绝对的优势,性价比较高16,17。下面将会介绍系统选择该处理器作为主控制器的原因:(1)本系统将会移植嵌入式文件系统FATFS,以便读取外扩Flash中的汉字字库,所以对控制器RAM、Flash提出了较高要求,而市场上比较热门的8/16位单片机基本很难胜任。(2)72MHz的工作频率,而且采用精简指令集,数据处理能力快。(3)FSMC(可配置的静态存储器控制器)可以配置成与多数图形LCD控制器的无缝连接,可以支持Inte
22、l 8080和Motorola 6800的模式,可以更快速驱动LCD。(4)3.3V供电,且外设时钟需要程序配置,功耗较低。(5)DMA传输数据更快,且不影响CPU运行。(6)112个IO口,可以支持扩展很多功能。 (7)外设接口较多,且性能较好。本系统需要用到两个串口,一个和电脑串口通信方便调试,可以接受上位机发来的更改信息或命令,另外一个和SIM900A模块通信。该处理器的串口可配置成全双工模式,数据位、波特率都可以程序配置18。3.1.2 主控制器外围简单电路如图3.1所示,Y2为外部高速时钟(HSE)8MHz晶振,C9、C10为负载电容,外部高速时钟源经STM32内部PLL倍频可配置为
23、系统时钟,最高可配置达72MHz,这里采用72MHz位系统时钟。Y1为外部低速时钟(LSE)32.768kHz晶振,C4、C5为负载电容,它为实时时钟或者其他定时功能提供一个低功耗且精确的低速时钟源。后备区域VBAT脚采用了CR1220和3.3V混合供电的方式,而CR1220供电3V,所以当VCC3.3供电时,二极管D2截止D1导通,然后就直接给VBAT供电。而在外部电源断开或者外部电源电压低于CR1220电压时,D2导通D1截止,CR1220给VBAT供电。在图3.1中,我们可以看出参考电压端口VREF+和模拟电源输入端口VDDA连在了一起,同时也间接和3.3V连接在一起了,这样AD基准电压
24、和模拟电源都是3.3V。为了后期维护,我们在图3.2最小系统(2)中增加了R21和R22两个0欧姆电阻,如果3.3V电源短路,我们可以用电烙铁拆下它们来用万用表测试以确定是STM32部分短路,还是外部3.3V电源部分短路,为我们快速解决电路短路问题提供了很大的便利。图3.1 最小系统图一 图 3.2 最小系统图二 图 3.3 复位电路 图3.4 启动方式设置接口STM32低电平复位,所以电路与传统51单片机高电平复位也有点差异,具体如图3.3,电阻、电容值与时间常数有关,会影响到复位效果,本处选取10K、0.1uF常用值。图3.4为启动方式设置接口图,如表3.1所示,BOOT0、BOOT1设置
25、不同值,在系统时钟第四个上升沿检测BOOT引脚信号,STM32确定从哪个地址处开始加载。比如我们要下载程序到该处理器里,然后运行,我们先手动配置BOOT0、BOOT1为1、0,然后再配置为0、0,即我们需要手动配置BOOT0,BOOT1可以接地。为了避免手动配置,我们可以通过软件结合一键下载电路可以自动配置,这点将在一键电路中会作进一步分析。表3.1 BOOT0、BOOT1启动模式表 3.1.3 JTAG接口 由于STM32支持在线调试,支持JTAG、SWD两种模式,本系统中我们采用的是标准的JTAG接法。STM32的SWD接口与JTAG是共用的,只要接上JTAG,可以使用SWD模式了。具体电
26、路如图3.5所示。需要注意的是,接口控制线都要加10K上拉电阻。同时JTAG、SWD下载速度都可以在ARM公司的MDK4.70A软件中可以手动设置。图3.5 JTAG接口电路3.1.4 电源电路图3.6 电源电路如图3.6所示,K1为总电源开关,F1为500ma自恢复保险丝,用于保护电路,同时也可以防止烧坏电脑USB接口,AMS117-3.3为稳压芯片,输入电压为4.75V-12V,输出3.3V电压,纹波最大1.0mV,为STM32提供电源。贴片电容C29、C28滤去高频杂波,贴片铝电解电容C30隔直流通交流,滤去频杂低波,从而为电路提供更稳定、较小纹波的电源,防止损坏半导体器件。本电路电源来
27、源于USB供电,最大输出电流500mA,负载能力有限,但是本系统中并无大的负载,同时GSM模块是由单独的电源适配器(12V 1A)供电的,所以是可行的的。在电路中,在5V、3.3V电源处我们都加了TVS保护电路,保护IC器件免受各种瞬态脉冲的冲击,这里我们选用的是单向瞬态抑制二极管SMBJ5.0A和SMBJ3.3A。3.2 SIM900A模块 3.2.1 SIM900A模块的对外接口电路图3.7 SIM900A对外接口框图SIM900A对外接口框图如图3.7,对外接口包括:RS232接口,语音接口,控制线接口、SIM卡接口等。图3.8 SIM900A实物3.2.2 SIM900A模块初始化SI
28、M900A模块初始化之前,先给模块上电,由于SIM900A模块在启动注册时,电流峰值会达到2A4V,所以模块是由12V 1A电源适配器供电的,避免由于模块功耗的突升,造成的死机或启动不起来。上电后,长按启动按键,实现模块的开机。在模块开机后,模块上的指示灯,先是快闪,如果手机注册成功后,指示灯会慢闪。如果长时间快闪没有变成慢,应长按启动键会关机模块,检查天线, SIM卡片的固定情况,还有检查SIM卡片是否能正常使用。当模块指示灯变为慢闪时证明网络注册成功可以使用了。SIM900A实物如图3.8,在与单片机通信之前,我们可以通过电脑串口与SIM900A模块通信调试,来检测模块是否能正常工作19,
29、20,21,22。图3.9 一键下载电路3.3 外围电路设计3.3.1 一键下载电路上文已提及一键下载,自动配置BOOT0,现在将着重介绍具体工作过程。如图3.9所示USB转串口电路图中,我们选择的是SOP16封装的CH340G芯片,USB接口使用的是mini USB接口,三极管Q2和Q3的组合构成了一键下载电路。下载时我们只需要在STM32下载软件mcuisp中选择:DTR的低电平复位,RTS高电平进BootLoader模式,就可以一键下载代码了,而不需要手动配置B00T0和手动按复位键了。DTR#低电平,RTS#高电平输出时,Q2 S8050导通,RESET被拉低,与此同时,Q3 S855
30、0也被导通,BOOT0也被上拉成高电平,然后软件配置,延时拉高RESET退出复位,就开始进入ISP串口下载。下载完成后,BOOT0因与100K下拉电阻相连,被拉低,进而STM32下载完成后复位4个系统时钟后会检测到BOOT0低电平信号,进而加载用户Flash,即跑代码。3.3.2 TFT液晶屏接口本系统中所用TFT液晶屏,型号为ILI9320,该模块有以下控制线: CS:TFTLCD片选信号 WR:向TFTLCD写入数据 RD:从TFTLCD读取数据 D15:0:16位双向数据线 RST:硬复位TFTLCD RS:命令/数据标志(0,读写命令;1,读写数据)该液晶模块支持8/16位数据线模式,
31、在本系统中,液晶模块采用16位的并行方式与外部连接,如图3.10所示。下面我们将对FSMC控制TFTLCD过程作简要分析。查阅相关技术手册可知外部SRAM由地址线,数据线,写信号(WE)、片选信号(CS)、读信号(OE)三根控制信号线组成,其时序和TFTLCD的控制时序基本上相同。它们之间的唯一不同之处就是TFTLCD有RS命令/数据切换信号,而没有地址信号,而地址信号是0/1二进制信号,RS信号也是0/1信号,所以我们完全可以把RS信号等效成一个地址信号。比如我们把RS接在A2上面,那么当FSMC控制器写地址0的时候,A2就为0,其实也就是写命令。而FSMC写地址1的时候,A2将会变为1,也
32、就是写数据。通过上述的分析,我们就可以通过FSMC区分了到底传送的是数据还是命令。图3.10 TFT液晶屏接口TFT模块选择的是四线电阻式触摸屏,其控制芯片有很多,包括ADS7843、ADS7846和XPT2046等。本LCD模块自带触摸屏控制芯片XPT2046,内含12位分辨率逐步逼近型A/D转换器,转换速率可达125KHz,支持从1.5V到5.25V的宽电压I/O接口。该控制芯片与单片机通信方式为SPI(串行外设接口)总线,这里我们采用的是软件模拟SPI,没有使用STM32自带的SPI接口。XPT2046返回的是二进制数字量,经单片机进行数据转换可得出当前具体的物理坐标,从而实现触摸定位。
33、3.3.3外部存储器本系统设计中有三种外部存储器电路:EEPROM、Flash、SD卡,分别用于保存触摸屏校准参数、汉字字库、要更新的汉字字库。(1)EEPROM如图3.11所示,EEPROM芯片我们使用的是串行AT24C02,其容量为2Kb,也就是256个字节,对于本系统应用已经足够。A0-A2三位是其地址线,设计时我们一般把A0-A2均接地,对AT24C02来说也就是把这三位地址位设置成了0,所以参考其技术手册可知,该器件地址为0xA0。同时根据IIC总线电气特性要求,时钟线SCL、数据线SDA都需要接上拉电阻,一般取4.7K较好,如图中R28、R29所示。24C02与单片机之间的通信方式
34、是I2C总线,这里我们也采用的是软件模拟,因为经过查阅很多资料,发现STM32在硬件I2C接口做的不是很好,不够稳定。I2C总线的时序这里就不介绍了,不过这种总线的通信速率不是很快,且软件模拟在通信速度上会降低,但对我们来说已经足够了。图3.11 AT24C02电路图(2)FlashFLASH芯片型号我们选择了W25Q64,其容量为64Mb,也就是8M字节,与上述AT24C02一样都是串行传输,占用较少的IO口。该芯片与单片机之间的通信方式为SPI总线,如图3.12所示我们并没有用软件模拟SPI总线时序,而是采用了STM32自带的硬件SPI接口SPI2,这样传输速度会更快。SPI总线一般有四根
35、信号控制线:片选线CS,两根数据线分别为主入从出MISO和主出从入MOSI,还有一根时钟线SCLK。图3.12 W25Q64电路图扩展Flash为了是存储汉字字库,因为STM32F103ZET6本身只具有512K Flash,如果用来存放字库,肯定不够,外扩的Flash可以存放GBK和Unicode码转换字库、16*12字体GBK码字库,16*16字体GBK码等字库,这样我们就可以在TFT LCD上显示16*12、16*16字体等字体的汉字和字符了。同时我们也可以存储我们喜欢的字体,如华文行楷等。(3)SD卡本系统设计这个SD卡电路是为了从SD卡中更新字库到Flash W25Q64中,Flas
36、h中本身是不带字库的,不经过SD卡或U盘直接烧入字库到Flash中是不太现实的。如图3.13所示,SD_CARD1为SD卡槽,通过P3、P4、P5组合,我们可以选择SD卡驱动方式,因为SD卡有两种驱动方式,SDIO接口或者SPI接口,SDIO驱动较快一点。SD卡接口电路除了时钟线不用接上拉电路,其他控制线都要接上上拉电阻,如图中R1、R2、R3、R4、R5所示。图3.13 SD卡接口 本系统中拟用软件SPI模式驱动,所以我们会将P3、P5所有排针用跳线帽短接,因为本系统对读取和写入速率没有多大要求,传输的数据顶多1.5MB/s。3.3.4 按键和指示灯电路如图3.14所示,四个按键除了KEY_
37、UP采用STM32 GPIO下拉模式,其他三个按键都采用了GPIO上拉模式。KEY_UP接PA0,PA0引脚可以用来唤醒处于待机模式的单片机,而WK_UP是高电平有效,所以我们配置撑了下拉模式,我们可以借此按键做成类似于手机的那种开关机按钮。PWR为电源指示灯,LED0、LED1可以做成呼吸灯,用来指示系统是否正常运行或者也可以设置成信号指示灯,如短信提醒等23。本系统中LED1用来做呼吸灯,指示系统是否正常运行,LED0用来指示新信息。至于限流电阻的取值,应不同颜色的发光二极管而不同,考虑到白光、蓝光的二极管导通压降为2.7-3V左右,部分颜色的二极管导通压降最低只有1.7V左右,而且二极管
38、的导通电流为3mA时,二极管就能正常发光,电流最好不超过20mA。综合以上考虑,我们暂定限流电阻为510欧姆,在实际焊接中,我们根据不同颜色的二极管选择更合适的限流电阻。图3.14 按键和指示灯电路3.3.5 蜂鸣器电路蜂鸣器按有无震荡源可分为有源蜂鸣器和无源蜂鸣器,有源蜂鸣器内部自带振荡电路,加适当的直流电源就可以发声,频率通常固定,易于操作;而无源蜂鸣器一般需要通过外部的方波信号驱动,频率可以改变,一般为1到4KHz最佳,所以可以演奏出优美的音乐如生日快乐歌等。图3.15 蜂鸣器电路在本系统中,蜂鸣器可以提示有新信息,同时也可以用来触摸屏按键发声24,25。此处,为了程序控制简单,我们选择
39、了3.3V的有源蜂鸣器。如图3.15所示,由于单片机IO口输出电流有限,所以我们的蜂鸣器驱动电路通过NPN三极管S8050放大电流,从而驱动蜂鸣器发声,同时在三极管的基极要加限流电阻。当PB8由程序配置输出高电平时,则基极与发射极有了大约3V的压降,三极管Q1导通,三极管Q1集电极被发射极拉低,此时蜂鸣器两端等于接了3.3V电压,所以发声。当PB8配置为低电平时,三极管Q1基极与发射极没有0.7V的导通压降,Q1此时为截止状态,此时集电极不能被发射极拉低,从而蜂鸣器两端没有施加电压,则不会发声。3.4 本章小结本章主要论述了系统硬件设计以及方案论证,首先我们对控制器做了对比,并详细列出选择此控
40、制器的原因,然后对单片机最小系统设计进行了分析,其中也包括了仿真接口、电源电路,接着我们还简单介绍了GSM模块SIM900A通讯模块,最后我们重点对外围硬件电路包括一键下载电路、液晶屏接口、外部存储器、按键和指示灯电路以及蜂鸣器电路作了一一分析,并论述了器件选型、相关IO口配置以及总线配置。第4章 系统软件设计4.1 总体框图图4.1 总体框图系统软件设计总体框图如图4.1所示,具体可分为初始化和测试两阶段。4.2 系统初始化本模块初始化主要包括系统时钟配置、串口2初始化、液晶初始化、按键初始化、串口1初始化等。系统时钟配置为外部时钟经PLL倍频后的72MHz,也是STM32F103ZZET6
41、最大的工作频率。串口1波特率设置为9600bps,8位数据位,一位停止位,无奇偶校验位,无硬件流控制,用于与上位机通信。串口2波特率为115200bps,8位数据位,一位停止位,无奇偶校验位,无硬件流控制,用于与GSM模块通信25,26。按键初始化,设置KEY_UP所接IO口为下拉输入模式,其他三个按键KEY0、KEY1、KEY2所接IO口设置为上拉输入模式。液晶初始化这里就不叙述了,比较复杂。4.3 文件系统FATFS移植FATFS是一个完全免费开源的FAT 文件系统模块,用一系列宏定义来定义相关参数,可移植性性、封装性极强,可应用于各种小型嵌入式处理器中。移植该文件系统时,一般我们只需要修
42、改2个文件:配置文件ffconf.h和底层驱动文件diskio.c。配置文件主要是修改模块参数来符合我们的需求,底层驱动文件主要实现系统硬件底层与API函数兼容。接下来我们将介绍如何配置ffconf.h中几个重要的参数,这些参数都是通过宏定义来实现的,可移植性强。首先我们需要使用的是文件系统FATFS,所以_FS_TINY后面的宏定义选项改为0;接着我们需要快速定位文件或文件夹,所以将_USE_FASTSEEK设置为1;语言选项_CODE_PAGE我们设置为936,也就是GBK,不过需要有FATFS源码中option文件夹下的936.c文件;然后我们需要设置FATFS支持的逻辑设备数目,本系统
43、中主要是对SD卡操作,所以_VOLUMES设置为1;由于可能会使用到长文件名,所以我们可以将_USE_LFN设置为3;最后我们还需要设置下扇区缓冲的最大值_MAX_SS为512,即512字节。这里就不叙述了其他配置项,integer.h中的数据类型这里也不用改了,因为与STM32数据类型兼容。接下里我们只要改写底层diskio.c的代码就行了,关于文件系统移植,我们就大概介绍到这。4.4 汉字字库因为本系统需要显示中英文短信,所以需要汉字字库。汉字字库需要借助文件系统将SD中存放的字库文件烧入到Flash中,然后每次显示中文时,直接到Flash中找出相对应的汉字点阵数据。4.4.1 更新字库本
44、部分需要实现从SD卡中烧入字库到外扩SPI Flash中,并且实时显示进度。首先,我们初始化SPI Flash,SD卡是否存在,然后我们依次更新字库,在更新的同时,同时显示进度。相关参数定义如下:#define UGBK 0#define GBK12 0x01#define GBK16 0x02#define GBK24 0x04#define CHAR24 0x08#define CHAR32 0x10u32 FONTINFOADDR=0;_font_info_ ftinfo;/在SD卡中的路径const u8 *GBK24_SDPATH="0:/SYSTEM/FONT/GBK24
45、.FON"const u8 *CHAR24_SDPATH="0:/SYSTEM/FONT/CHAR24.FON"const u8 *CHAR32_SDPATH="0:/SYSTEM/FONT/CHAR32.FON" 具体函数原型如下: u8 font_init(void);/字库初始化 u8 update_fontx(u16 x,u16 y,u8 size,u8 *fxpath,u8 fx);/更新指定字库 u8 update_font(u16 x,u16 y,u8 size,u8 src);/更新全部字库 u32 fupd_prog(u16
46、x,u16 y,u8 size,u32 fsize,u32 pos);/显示更新进度 4.4.2 查找汉字每个GBK码由2个字节组成,第一个字节为0x81-0xfe,第二个字节分为两部分,一是0x40-0x7e,二是0x80-0xfe。这样,假设Ch为某汉字的第一个字节,Cl为第二个字节,汉字字体的大小用size表示,我们从地址0处开始存放字库,那么我们就可以得出该汉字点阵数据在字库里的起始地址X的公式: 当Cl<0x7f时:X=(Ch-0x81)*190+Cl-0x40)*(size*size/8); 当Cl>0x80时:X=(Ch-0x81)*190+Cl-0x41)*(siz
47、e*size/8); 以上论述程序实现具体如下:void Get_HzMat(u8 *code,u8 *mat,u8 size) u8 qh,ql;u8 i; u32 foffset; u8 size0;if(bHz)/中文 qh=*code;ql=*(+code);if(size=12) size0=16;else size0=size;if(qh<0x81|ql<0x40|ql=0xff|qh=0xff) for(i=0;i<(size*2);i+)*mat+=0x00;return; if(ql<0x7f)ql-=0x40;else ql-=0x41;qh-=0x
48、81; foffset=(unsigned long)190*qh+ql)*(size*size0/8);/得到字库中的字节偏移量 switch(size)case16:SPI_Flash_Read(mat,foffset+ftinfo.f16addr,32);break;case12:SPI_Flash_Read(mat,foffset+ftinfo.f12addr,24);break;case24:SPI_Flash_Read(mat,foffset+ftinfo.f24addr,72);break;case32:SPI_Flash_Read(mat,foffset+ftinfo.f32a
49、ddr,128);break;default:break; else/字符ql=*code;size0=size*(size/8);if(ql<0x20|ql>0x98) for(i=0;i<size0/2;i+)*mat+=0x00; return;ql-=0x20;foffset=(unsigned long)ql*size0/2;if(size=24) SPI_Flash_Read(mat,foffset+ftinfo.chr24addr,size0/2);/目前只支持CHAR24、32字体else if(size=32) SPI_Flash_Read(mat,foff
50、set+ftinfo.chr32addr,size0/2); 经过上面调用上面的函数,我们可以得到汉字在字库中的首地址,这样我们只要依次取出size*size/8(12号字体除外)个数据,在LCD上画点,就可以显示该汉字了。具体实现如下: void Show_Font(u16 x,u16 y,u8 *font,u8 size,u8 mode)u8 temp,t,t1;u16 y0=y;u8 dzk128;u16 tempcolor; u8 size0;Get_HzMat(font,dzk,size);if(bHz)if(size=12) size0=16;else size0=size; el
51、se size0=size;/字符串字库if(mode=0) for(t=0;t<size/(2-bHz)*(size0/8);t+) temp=dzkt; for(t1=0;t1<8;t1+)if(temp&0x80)LCD_DrawPoint(x,y);else tempcolor=POINT_COLOR;POINT_COLOR=BACK_COLOR;LCD_DrawPoint(x,y);POINT_COLOR=tempcolor;temp<<=1;y+;if(y-y0)=size)y=y0;x+;break; elsefor(t=0;t<size/(
52、2-bHz)*(size0/8);t+) temp=dzkt; for(t1=0;t1<8;t1+)if(temp&0x80)LCD_DrawPoint(x,y); temp<<=1;y+;if(y-y0)=size)y=y0;x+;break; 4.5 触摸屏模块相对于鼠标这种相对坐标系统,触摸屏则是一种绝对坐标系统,其特点就是每次坐标定位与上次定位无关,每次触摸后的数据都会经过高精度AD采样转化为物理坐标,所以控制芯片对于同一点触摸后的输出数据理论上来讲应该是相同的。但是实际上由于技术上的原因,在同一点的多次采样数据并不一定能保证完全一致,从而可能导致点不准,这也
53、就是所谓的漂移现象,所以有时需要自己手动校准。触摸屏实际坐标与控制芯片采集到的物理坐标是线性关系,即一次函数关系。所以我们只要测出两个固定坐标点的物理坐标,我们就可以确定该一次函数的两个系数,这样,我们就可以测出任何一个物理坐标即控制芯片采集的数字量所对应的绝对坐标即LCD像素坐标。但是通过两个点测出的数据存在误差。所以我们需要检测更多的点然后结合一定的算法去减小误差。 通过上述描述,采用的校准程序思路大致如下:只要事先在屏幕上面显示4个点比如点1、点2、点3、点4(这四个点的坐标是已知的),组成一个矩形,如图4.1所示。分别按下这四个点就可以从触摸屏读到4个物理坐标,然后我们通过一定的算法判
54、定是否合法。具体算法如下:2 31124图4.1 校准四点图1) 检测矩形对边相等:对平行的点1和点2作差,点3和点4也是,对比两者只差是否在一定的误差范围内。然后再对点1和点3作差,点2和点4作差,对比两者只差是否在一定的误差范围内。2) 检测矩形对角线是否相等:对点1和点3的距离,点2和点4的距离对比,是否在一定的范围误差内。经过上述的算法,如果都符合,说明在误差范围内触摸屏已经校准好,然后这样算出两个坐标线性关系的四个参数即两个斜率和截距。接着我们把这四个参数保存在AT24C02中,这样以后就可以推算出准确的坐标,从而达到了校准的目的。同时为了避免每次上电都需要重新校准,我们可以设置一个标志位,来保存是否已经校准,这时我们就可以借助EEPROM,即使掉电也可以保存数据。同时我们还要将两个触摸屏的重要参数保存下来。在系统程序中,我们还可以设置一个按键用来强制校准,即用户任何时候都可以校准程序,不过本系统设计时,只能在STM32复位后很短的一段
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国低脂高钙营养奶粉数据监测报告
- 新疆木垒县中学2025年高三下教学调研(一)英语试题含解析
- 星海音乐学院《职业生涯发展和就业指导Ⅲ》2023-2024学年第二学期期末试卷
- 一年级数学上册《排队问题专项训练》
- 甘肃省临夏市第一中学2023-2024学年中考试题猜想数学试卷含解析
- 广东省佛山市南海区2024年中考试题猜想数学试卷含解析
- 2024-2025新入职工安全培训考试试题A卷附答案
- 2024-2025公司安全管理人员安全培训考试试题含答案【培优A卷】
- 2025企业安全培训考试试题有完整答案
- 肿瘤患者临床营养问题与评估
- GB/T 17872-1999江海直达货船船型系列
- GB/T 12027-2004塑料薄膜和薄片加热尺寸变化率试验方法
- 中医手诊培训资料课件
- 消防主机运行记录表(标准范本)
- DB2110T 0004-2020 辽阳地区主要树种一元、二元立木材积表
- 应急处置措施交底
- 基于深度学习的问题链讲座课件(44张PPT)
- Q∕GDW 12154-2021 电力安全工器具试验检测中心建设规范
- 第四章 金融监管(商业银行管理-复旦大学)
- 中波发射台搬迁建设及地网铺设、机房设备的安装与调整实践
- 影像诊断学-—-总论PPT课件
评论
0/150
提交评论