毕业设计论文-基于stm32计算器(含代码)x.docx

上传人:聆听****声音 文档编号:1985976 上传时间:2023-05-02 格式:DOCX 页数:49 大小:556.89KB
下载 相关 举报
毕业设计论文-基于stm32计算器(含代码)x.docx_第1页
第1页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第2页
第2页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第3页
第3页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第4页
第4页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第5页
第5页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第6页
第6页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第7页
第7页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第8页
第8页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第9页
第9页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第10页
第10页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第11页
第11页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第12页
第12页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第13页
第13页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第14页
第14页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第15页
第15页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第16页
第16页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第17页
第17页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第18页
第18页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第19页
第19页 / 共49页
毕业设计论文-基于stm32计算器(含代码)x.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

毕业设计论文-基于stm32计算器(含代码)x.docx

《毕业设计论文-基于stm32计算器(含代码)x.docx》由会员分享,可在线阅读,更多相关《毕业设计论文-基于stm32计算器(含代码)x.docx(49页珍藏版)》请在冰点文库上搜索。

毕业设计论文-基于stm32计算器(含代码)x.docx

电子与电气工程系

摘 要

单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活中的各个领域,电子、科技、通信、汽车、工业等。

我们这次设计的科学计算器就是利用STM32单片机制作而成。

计算器(calculator)一般是指“电子计算器”,该名词由日文传入中国。

计算器是能进行数学运算的手持机器,拥有集成电路芯片,结构简单,功能较弱,但由于它使用方便、操作简单、价格低廉,因而广泛运用于商业交易中,也是必备的办公用品之一。

为了进行大量浮点数的运算,并且能很好的支持彩屏的显示,我们选用了计算能力较强的基于Cortex-M3系列的STM32单片机作为微控制器。

STM32系列是32位单片机,运算能力远比其他单片机强,基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。

时钟频率高达72MHz,远远高于51、AVR等单片机。

从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。

关键词:

STM32、单片机、触摸屏、计算器

Abstract

Monolithicintegratedcircuitoccursisaproductofthe rapid development of computer technology, it is thecoreoftheembeddedcontrolsystem,today,ithasbeenwidelyappliedtoallareasofourdailylife,electronics,technology,telecommunications,automotive,industrial,etc.Our scientific calculator of this design is to use theSTM32microcontrollerproducedby.

Calculator (Calculator) generally refers to the"Calculator", the noun by the Japanese came to China.Calculatorsarehandheldmachinethatcandothemath,withintegratedcircuitchips,simplestructure,lessfunctional,butbecauseofitseaseofuse,simpleoperationandlowcost,whicharewidelyusedincommercialtransactions,isoneoftheessentialofficesupplies.

Keywords:

STM32,microcontroller,touch,calculator

目 录

摘 要 2

Abstract 3

目 录 4

第一章 引言 6

第二章 总体方案设计 7

2.1任务与要求 7

2.1.1任务 7

2.1.2要求 7

2.2方案论证 7

2.2.1单片机系统的选型 7

2.2.2显示屏的选型 8

2.2.3外部存储器的选型 8

2.3系统总体设计 8

第三章 系统硬件设计 9

3.1微控制器简介 9

3.2触摸屏模块简介 10

3.2.1显示部分简介 10

3.2.2触摸部分简介 12

3.3AT24C02简介 13

3.4整体系统硬件设计 15

3.4.1单片机系统设计 16

3.4.2电源部分设计 16

3.4.3单片机和PC机通信设计 17

3.4.4单片机和触摸屏接口设计 17

第四章 系统软件设计 20

4.1系统各个模块初始化 20

4.2显示模块程序设计 21

4.3触摸模块程序设计 25

4.4实现运算表达式的程序设计 27

第五章 总 结 32

致 谢 34

参考文献 35

附 录 36

第一章引言

最早的计算工具诞生在中国。

中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。

这种算筹多用竹子制成,也有用木头、兽骨充当材料的,约二百七十枚一束,放在布袋里可随身携带。

直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。

17世纪初,西方国家的计算工具有了较大的发展。

英国数学家纳皮尔发明了“纳皮尔算筹”,英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数、指数函数和对数函数。

这些计算工具为现代计算器的发展奠定了良好的基础。

1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一部机械式计算器。

在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是只能做加减计算。

1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。

此后,到了20世纪50年代末,电子计算器问世。

本文设计的是一种基于STM32科学计算器的设计,通过触摸屏进行人机交互,按键直接显示在触摸屏上,不需要传统的机械按键,并且可以在需要键盘的时候才调出来。

传统的机械按键需要占用单片机大量的I/O口,而触摸屏只需要通过SPI接口和单片机通信。

第二章总体方案设计

2.1任务与要求

2.1.1任务

完成数学表达式的计算,包括括号、三角函数、log、ln等一些常用的数学函数,并将表达式和结果实时显示出来。

2.1.2要求

1.基本功能

实现基本的四则运算,并在触摸屏上显示表达式和结果。

当输入错误的表达式时,能显示出相对应的错误,提示用户纠正。

2.扩展功能

实现小数、负数的运算。

实现平方、n次方、平方根、n次方根的运算。

实现三角函数、log、ln等一些常用的数学函数的运算。

3.技术指标

精确到小数点后6位。

计算的范围为-3.4×10-38~3.4×1038。

实时显示计算表达式和结果。

2.2方案论证

2.2.1单片机系统的选型

单片机系统选用意法半导体基于Cortex-M3的STM32F103ZET6,意法半导体的单片机具有良好的性价比、低功耗、

易开发等特点,而且其体系和架构资料丰富,用它能够快速的开发出整个系统。

2.2.2显示屏的选型

现有的液晶显示屏的种类很多,我们选用的是2.8寸带触摸的彩屏,320×240的分辨率,支持16位色,16位数据接口,这个就足够我们使用了。

有了触摸的控制,就可以省掉传统的机械按键,直接在屏幕上显示按键。

2.2.3外部存储器的选型

外部存储器我们选用Atmel公司的AT24C02,是基于I2C-BUS 的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到大量的应用。

2.3系统总体设计

根据设计要求和模块选型系统总体方案设计如图1。

本系统主要是在触摸屏上显示各种信息文本,所以硬件电路比较简洁,不需要很多硬件。

PC机通过RS232串行接口和STM32进行数据通信,

STM32和显示屏通过16位并行接口通信,和触摸板通过SPI接口进行通信。

24C02

触摸屏

STM32最小

系统

PC机

图1

第三章系统硬件设计

3.1微控制器简介

为了进行大量浮点数的运算,并且能很好的支持彩屏的显示,我们选用了计算能力较强的基于Cortex-M3系列的STM32F103ZET6作为微控制器。

Cortex-M3是ARM公司研发的一个系列,针对于微控制开发领域,采用ARMv7-M架构,它包括所有的16位Thumb指令集和基本的

32位Thumb-2指令集架构。

Thumb-2在Thumb指令集架构(ISA)上进行了大量的改进,它与Thumb相比,具有更高的代码密度并提供

16/32位指令的更高性能。

ARM的Cortex-M3处理器是最新一代的嵌入式ARM处理器,它为实现MCU的需要提供了低成本的平台、缩减的引脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。

ARM的Cortex-M3是32位的RISC处理器,提供额外的代码效率,在通常8和16位系统的存储空间上发挥了ARM内核的高性能。

我们采用的意法半导体公司生产的STM32F103ZET6就是基于ARM Cortex-M3内核的,具有高性能、低成本、低功耗等特点,最高主频可达72MHz,高达512K字节的闪存和64K字节的SRAM,112个GPIO端口,4个通用定时器,2个高级控制定时器,2个基本定时器,还包含标准和先进的通信接口:

多达2个I2C接口、3个SPI接口、2个I2S接口、1个SDIO接口、5个USART接口、一个USB接口和一个CAN接口。

这些丰富的外设配置,使得STM32F103大容量增强型系列微控

制器适合于多种应用场合:

●电机驱动和应用控制

●医疗和手持设备

●PC游戏外设和GPS平台

●工业应用:

可编程控制器(PLC)、变频器、打印机和扫描仪

●警报系统、视频对讲、和暖气通风空调系统等

3.2触摸屏模块简介

3.2.1显示部分简介

TFT-LCD即薄膜晶体管液晶显示器。

其英文全称为:

Thin FilmTransistor-Liquid Crystal Display。

TFT-LCD与无源TN-

LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。

TFT-LCD也被叫做真彩液晶显示器。

TFT液晶显示屏的特点是亮度好、对比度高、层次感强、颜色鲜艳,但也存在着比较耗电和成本过高的不足。

TFT型的液晶显示器主要的构成包括:

萤光管、导光板、偏光板、滤光板、玻璃基板、配向膜、液晶材料、薄模式晶体管等等。

我们这里使用的一种TFTLCD模块有如下特点:

1.显示屏2.8寸的大小。

2.320×240的分辨率。

3.16位真彩显示。

4.自带触摸屏,可以用来作为控制输入。

5.通用的接口,显示部分为16位并行接口,触摸控制部分为

SPI接口。

该模块采用的是显尚光电的DST2001PH TFTLCD,DST2001PH的控制器为ILI9320。

TFTLCD模块采用80并口方式与外部连接,采用16位数据线该模块的80并口有如下一些信号线:

CS:

TFTLCD片选信号。

WR:

向TFTLCD写入数据。

RD:

从TFTLCD读取数据。

D[15:

0]:

16位双向数据线。

RST:

硬复位TFTLCD。

RS:

命令/数据标志(0,读写命令;1,读写数据)。

TFTLCD模块的RST信号线直接接到STM32的复位脚上,并不由软件控制,这样可以省下来一个IO口。

另外我们还需要一个背光控制线来控制TFTLCD的背光。

所以,我们总共需要的IO口数目为21个。

模块的控制器为ILI9320,该控制器自带显存,其显存总大小为172820(240*320*18/8),即18位模式(26万色)下的显存量。

模块的16位数据线与显寸的对应关系为565方式,如下图所示:

在计算机中,常见的颜色有 8位、16位、24位、32位色,其中24位及以上称为真彩,我们这里使用的是16位,最低5位代表蓝色,中间6位为绿色,最高5位为红色。

数值越大,表示该颜色越深。

我们这里使用的是RGB模式,RGB色彩就是常说的三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色)。

之所以称为三原色,是因为在自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成,因此也称为加色模式。

RGB模式又称

RGB色空间。

它是一种色光表色模式,它广泛用于我们的生活中,如电视机、计算机显示屏、幻灯片等都是利用光来呈色。

比如我们要显示红色,就用F800H来表示,绿色就是07E0H,蓝色001FH,三种混合起来就是白色,也就是FFFFH。

3.2.2触摸部分简介

我们一般液晶所用的触摸屏,最多的就是电阻式触摸屏了(多点触摸属于电容式触摸屏,比如M8,IPhone等支持多点触摸的手机所用的屏就是电容式的触摸屏),TFTLCD自带的触摸屏属于电阻式触摸屏,下面简单介绍下电阻式触摸屏的原理。

电阻式触摸屏利用压力感应进行控制。

电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层涂层、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。

当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。

控制器侦测到这一接触并计算出(X,Y)的位置,再根据获得的位置模拟鼠标的方式运作。

这就是电阻技术触摸屏的最基本的原理。

电阻屏的特点有:

1)是一种对外界完全隔离的工作环境,不怕灰尘、水汽和油污。

2)可以用任何物体来触摸,可以用来写字画画,这是它们比较大的优势。

3)电阻触摸屏的精度只取决于A/D转换的精度,因此都能轻松

达到4096*4096。

从以上介绍可知,触摸屏都需要一个AD转换器, 一般来说是需要一个控制器的。

TFTLCD模块选择的是四线电阻式触摸屏,这种触摸屏的控制芯片有很多,包括:

ADS7843、ADS7846、TSC2046、XPT2046和AK4182等。

这几款芯片

的驱动基本上是一样的,也就是你只要写出了ADS7843的驱动,这个驱动对其他几个芯片也是有效的。

而且封装也有一样的,完全pintopin。

所以在替换起来,很方便。

TFTLCD模块自带的触摸屏控制芯片为XPT2046。

XPT2046是一款4导线制触摸屏控制器,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器。

XPT2046支持从1.5V到5.25V的低电压I/O接口。

XPT2046能通过执行两次A/D转换查出被按的屏幕位置, 除此之外,还可以测量加在触摸屏上的压力。

内部自带2.5V参考电压可以作为辅助输入、温度测量和电池监测模式之用,电池监测的电压范围可以从0V到6V。

XPT2046片内集成有一个温度传感器。

2.7V的典型工作状态下,关闭参考电压,功耗可小于

0.75mW。

XPT2046采用微小的封装形式:

TSSOP-16,QFN-16(0.75mm

厚度)和VFBGA-48。

工作温度范围为-40℃~+85℃。

3.3AT24C02简介

AT24C02是一个2K位串行CMOSE2PROM,内部含有256个8位字节。

AT24C02有一个16字节页写缓冲器。

该器件通过IIC总线接口进行操作,有一个专门的写保护功能。

AT24C02支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送器。

任何从总线接收数据的器件为接收器。

数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。

主器件和从器件都可以作为发送器或接收器,但由主器

件控制传送数据(发送或接收)的模式,通过器件地址输入端

A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。

AT24C02具有以下特性:

1.数据线上的看门狗定时器

2.可编程复位门栏电平

3.高数据传送速率为400KHz和1C总线兼容

4.2.7V至7V的工作电压

5.低功耗CMOS工艺

6.16字节页写缓冲区

7.片内防误擦除写保护

8.高低电平复位信号输出

9.100万次擦写周期

10.数据保存可达100年

11.商业级、工业级和汽车温度范围

引脚名称

功能

A0、A1、A2

器件地址选择

SDA

串行数据/地址

SCL

串行时钟

WP

写保护

VCC

+1.8V~6.0V工作电压

VSS

引脚描述

SCL串行时钟

AT24C02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。

SDA串行数据/地址

AT24C02双向串行数据/地址管脚用于器件所有数据的发送或接

收,SDA 是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线或(wire-OR)。

A0、A1、A2器件地址输入端

这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。

当使用AT24C02 时最大可级联8个器件。

如果只有一个AT24C02被总线寻址,这三个地址输入脚(A0、A1、A2)可悬空或连接到Vss,如果只有一个AT24C02被总线寻址这三个地址输入脚(A0、A1、A2)必须连接到Vss。

WP写保护

如果WP管脚连接到Vcc,所有的内容都被写保护只能读。

当WP

管脚连接到Vss或悬空允许器件进行正常的读/写操作。

AT24C02的存储容量为2Kb,内容分成32页,每页8B,共256B,操作时有两种寻址方式:

芯片寻址和片内子地址寻址。

(1)芯片寻址:

AT24C02的芯片地址为1010,其地址控制字格式为1010A2A1A0R/W。

其中A2,A1,A0可编程地址选择位。

A2,A1,A0引脚接高、低电平后得到确定的三位编码,与1010形成7位编码,即为该器件的地址码。

R/W为芯片读写控制位,该位为0,表示芯片进行写操作。

(2)片内子地址寻址:

芯片寻址可对内部256B中的任一个进行读/写操作,其寻址范围为00~FF,共256个寻址单位。

3.4整体系统硬件设计

3.4.1单片机系统设计

这是STM32F103ZET6的最小系统原理图,复位引脚NRST接一个

10K电阻到VCC,接一个104的电容到地,即可构成上电复位的电路。

OSC_IN和OSC_OUT之间并联一个8MHz晶振,再在晶振两端分别接

20pF的电容到地,即可构成单片机的外部振荡电路。

3.4.2电源部分设计

整个系统由电脑的USB接口供电,再由系统中的AMS1117-3.3

稳压芯片降压到3.3V,供给单片机和触摸屏使用。

电路如图所示。

3.4.3单片机和PC机通信设计

由于现在很多电脑都没有串口了,所以我们选用了PL-2303将

USB接口转为串口再和单片机通信。

电路如图所示。

其中PL2303_D+和PL2303_D-分别接到USB的D+和D-端,RXD和TXD分别接到单片机的PA9和PA10脚。

这样电脑就可以通过USB接口和单片机通信了。

3.4.4单片机和触摸屏接口设计

如图所示为系统的触摸屏接口,

各引脚定义如下:

LCD_CS:

TFTLCD片选信号。

LCD_WR:

向TFTLCD写入数据。

LCD_RD:

从TFTLCD读取数据。

LCD_D[15:

0]:

16位双向数据线。

RESET:

硬复位TFTLCD。

LCED_RS:

命令/数据标志(0,读写命令;1,读写数据)。

LCD_BL:

触摸屏背光源的控制引脚。

T_MISO:

触摸屏串行数据输出端。

T_MOSI:

触摸屏串行数据输入端。

T_SCK:

触摸屏时钟信号端。

T_CS:

触摸屏片选端。

T_PEN:

触摸屏中断输出端。

第四章系统软件设计

4.1系统各个模块初始化

系统上电或复位后,首先进行各个模块的初始化,其流程图如图所示。

开始

显示计算器的输入界面

禁用JTAG、SWD

触摸屏初始化

按键初始化

LCD初始化

延时初始化

系统时钟初始化

4.2显示模块程序设计

显示模块程序由LCD初始化程序和定时器中断程序,首先由

LCD初始化程序将屏幕上需要显示的按键显示,再由定时器中断程序定时刷新屏幕显示表达式的区域,将输入的表达式实时显示出来。

LCD初始化流程图如下:

开始

开启背光源

向LCD写初始化指令

设置GPIOB、GPIOC为推挽输出

开启辅助时钟

使能GPIOB、GPIOC时钟

LCD初始化程序设计:

/*********************************************

*函数名称:

voidLCD_Init(void)

*函数功能:

初始化LCD

*输入参数:

*输出参数:

*********************************************/voidLCD_Init(void)

{

RCC->APB2ENR|=1<<3; //先使能外设PORTB时

RCC->APB2ENR|=1<<4; //先使能外设PORTC时

RCC->APB2ENR|=1<<0; //开启辅助时钟JTAG_Set(JTAG_SWD_DISABLE); //禁用SWD

//PORTC6~10复用推挽输出

GPIOC->CRH&=0XFFFFF000;GPIOC->CRH|=0X00000333;GPIOC->CRL&=0X00FFFFFF;GPIOC->CRL|=0X33000000;GPIOC->ODR|=0X07C0;

//PORTB推挽输出

GPIOB->CRH=0X33333333;GPIOB->CRL=0X33333333;GPIOB->ODR=0XFFFF;

delay_ms(50); //delay50msLCD_WriteReg(0x0000,0x0001);delay_ms(50); //delay50msLCD_WriteReg(0X00,0X0001);

delay_ms(10);LCD_WriteReg(0X10,0X1628);

LCD_WriteReg(0X12,0X000e);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2