基于STM32的简易计算器
基于单片机的简易计算器的设计

基于单片机的简易计算器的设计引言:计算器作为一种常见的便携式计算设备,在我们的生活中扮演着重要的角色。
基于单片机的简易计算器凭借其小巧的体积、低功耗和简单易用的特点,成为了很多人的选择。
本文将介绍一种基于单片机的简易计算器的设计。
一、设计思路设计思路如下:1.显示部分设计使用4位共阴数码管来作为计算结果的显示和反馈。
单片机通过控制不同的引脚,将待显示的数字依次输出到数码管的不同位上,实现显示。
2.控制部分设计使用独立按键作为用户输入,并通过行列扫描的方式进行检测。
通过分析用户输入的按键,识别出相应的操作,并进行相应的计算。
根据不同的按键组合,可以实现加、减、乘、除等运算。
二、硬件设计1.单片机选择为了实现计算器的功能,选择一种性能良好、资源丰富的单片机是很重要的。
根据需求,选择一款采用8051内核的单片机,如AT89S51或AT89C51、这两款单片机具有5V供电、8位数据总线、4KB内存和32个I/O口等特点,并且广泛应用于各种嵌入式开发领域。
2.数码管显示设计为了显示计算结果,采用4位共阴数码管。
通过将各段控制端接通高电平或低电平,实现不同数字的显示。
3.按键设计使用独立按键作为用户输入,通过行列扫描的方式进行检测。
使用矩阵键盘可以减少I/O口的使用,避免使用太多的引脚。
4.电源设计计算器可以通过外接电源供电,同时还可以使用电池作为备用电源。
为了延长电池寿命,可以使用低功耗的工作模式,并在无操作时自动进入休眠状态。
5.外设接口设计为了增加计算器的功能,可以添加一些扩展模块,如蓝牙模块、USB 接口等。
这样可以实现与其他设备的通信和数据传输。
三、软件设计1.按键检测和解码将行列扫描的结果通过软件进行解码,识别用户输入的按键。
通过判断不同的按键组合,可以实现加、减、乘、除等运算。
2.计算实现根据用户输入的数字和操作符,进行相应的计算。
将结果显示到数码管上,并可以通过串口输出到其他设备。
3.界面设计设计简洁、友好的用户界面,提供用户输入和计算结果的显示。
触摸屏计算器设计方案

微控制器课程设计方案基于STM32的多功能计算器一、总体方案设计:1、基本功能:利用触摸屏实现加减乘除四则运算的单次或连续地整型、浮点型数据运算,并将表达式和结果实时显示在液晶屏上;支持带优先级的表达式求值;实现三角函数的运算;当输入错误的表达式时,将对应的错误信息显示出来,提醒用户纠正。
2、扩展功能:进行十六进制的数值运算,并显示以十六进制表示的答案。
二、系统硬件设计:微控制器:stm32开发板;触摸屏模块:stm32开发板配套液晶屏(4.5寸)。
三、系统软件设计:1、系统初始化:系统时钟初始化—>延时初始化—>LCD初始化—>触摸屏初始化—>显示计算器输入界面。
2、显示模块设计:由LCD初始化程序设置界面。
通过屏幕绘制将按键显示出来,其次由定时器中断程序定时刷新显示的表达式,将表达式于显示窗口实时显示出来。
3、计算功能程序设计:(1)运算功能的实现:i基本运算通过扫屏得到输入信息,将指令分为数字类、符号类、命令类三类指令。
对于数字类指令(如1、2、3、.、-、4……),创建数组,用以保存输入的数值,并在满足输入终止的判断条件(出现符号或命令类指令)后,重新排序,用相应函数将数组转为数字,以便进行下一步计算;对于符号类指令(如+、-、*、%……),将其作为数字类指令输入结束的判断,同时在下一个符号结束后进行第一个符号两边数字的运算;对于命令类指令(主要针对=),进行最终的计算,并将相应结果显示在对应位置。
ii科学运算(包含优先级)在基本运算的基础上,在得到命令类指令之前,不进行任何运算,将得到的数字和符号都储存到数组中,在得到命令类指令后,将符号类的指令进行优先级排序,然后依次找出符号两边的数字进行计算,并将得到的结果存入处理后的数组中,重复以上步骤直到得到最终结果。
总体运算过程流程图如下:iii三角函数运算利用#include <math.h>直接调用三角函数相关程序。
基于单片机的简单计算器

基于单片机的简单计算器计算器是我们日常生活中常用的工具之一,用于进行各种数学运算。
在计算机科学领域,我们可以利用单片机来制作一个简单的计算器,以满足计算需求。
本文将介绍基于单片机的简单计算器的实现过程和相关原理。
一、项目概述我们将利用单片机的计算能力和显示功能来制作这个简单计算器。
用户可以通过按键来输入数字和运算符,计算器将会实时显示计算结果。
在本项目中,我们将使用8051系列单片机和LCD显示屏来实现这个计算器。
二、系统设计1.硬件设计本项目所需的硬件主要包括单片机、键盘和显示屏。
我们可以使用8051系列的单片机,例如AT89C52、键盘可以通过矩阵键盘来实现,显示屏采用16x2字符型LCD显示屏。
2.软件设计在单片机上实现计算器功能,我们需要编写相应的软件程序。
该程序主要包括以下几个部分:(1)初始化设置:设置单片机的IO口模式和状态,初始化LCD显示屏。
(2)键盘扫描:通过轮询方式检测键盘输入,获取用户按键信息。
(3)数字显示:将用户输入的数字显示在LCD屏幕上。
(4)运算处理:根据用户输入的数字和运算符进行相应的运算操作。
(5)结果显示:将运算结果显示在LCD屏幕上。
三、主要功能模块介绍1.初始化设置在初始化设置模块中,我们需要设置单片机的IO口模式和状态,将其中的一组IO口作为输入端口用于键盘扫描,另一组IO口作为输出端口用于LCD显示屏控制。
同时需要初始化LCD显示屏,使其处于工作状态。
2.键盘扫描键盘扫描模块需要使用IO口作为输入端口来检测键盘输入。
通过按下不同的按键,会在IO口上产生不同的信号。
我们可以使用轮询方式来检测IO口的状态,获取用户按键信息。
3.数字显示在数字显示模块中,我们需要将用户输入的数字显示在LCD屏幕上。
可以使用LCD显示屏的库函数来实现这个功能。
我们可以将用户输入的数字存储在内存中,并通过LCD库函数将其显示在屏幕上。
4.运算处理运算处理模块需要根据用户输入的数字和运算符进行相应的运算操作。
基于单片机的简易计算器

基于单片机的简易计算器基于单片机的简易计算器是一种将计算功能集成到微型芯片中的设备。
单片机是一种具有集成电路功能的集成电路,它包含了中央处理器、内存以及输入输出接口等。
单片机的体积小,成本低,功能强大,适用于各种消费电子产品以及嵌入式设备。
简易计算器是一种通过按键输入数字和运算符,然后在显示屏上显示计算结果的设备。
它通常具有加法、减法、乘法和除法等基本运算功能。
在这篇文章中,我们将介绍基于单片机的简易计算器的设计和实现。
首先,我们需要选择合适的单片机。
在设计计算器时,我们需要考虑到单片机的存储容量、算术运算能力以及输入输出接口等。
一个常见的选择是使用8051系列单片机,它具有足够的存储容量和算术运算能力,同时也有丰富的外设接口,便于与按键和显示屏等设备进行连接。
其次,我们需要设计按键输入和显示屏输出的电路。
在按键输入方面,我们可以使用矩阵按键的方式进行设计,这样可以节省输入引脚的数量。
在显示屏输出方面,我们可以选择使用LCD显示屏,它可以提供清晰的显示效果,并且可以显示多行文字和数字。
接下来,我们需要考虑计算器的逻辑和算法。
计算器的逻辑通常是按照先输入数字,再输入运算符,最后输出结果的顺序进行设计。
在输入运算符之后,计算器将根据当前的数字和运算符进行相应的运算,并将结果输出到显示屏上。
这一过程可以使用状态机进行控制,以实现按键输入和结果计算的顺序控制。
最后,我们需要进行软件编程和硬件调试。
软件编程方面,我们需要编写适当的程序代码,实现按键输入、结果计算和结果显示等功能。
硬件调试方面,我们需要将设计好的电路连接到单片机上,并进行相应的测试和调试,以确保计算器的各项功能正常工作。
在设计和实现基于单片机的简易计算器时,需要注意以下几点。
首先,要考虑到计算器的功能需求和性能要求,以选择合适的单片机和外设接口。
其次,要进行合理的硬件设计和软件编程,以保证计算器的稳定性和可靠性。
最后,要进行充分的测试和调试,以确保计算器的各项功能正常工作。
篮球计数器stm32单片机课程设计

篮球计数器STM32单片机课程设计一、设计背景篮球计数器是一种用于记录篮球比赛得分的设备,可以方便地统计比赛中每个队伍的得分情况。
在篮球比赛中,得分是决定胜负的重要指标之一,因此需要一个精确可靠的计数器来记录得分。
本次课程设计旨在使用STM32单片机设计和实现一个篮球计数器,通过硬件和软件的结合,实现对篮球比赛中两个队伍的得分进行准确计数,并能够显示当前得分情况。
二、设计要求1.实现两个队伍的得分计数功能。
2.通过按键控制增加和减少得分。
3.使用LED显示当前的得分情况。
4.提供复位功能,将得分清零。
5.设计简洁、美观、易于使用。
三、硬件设计1. STM32单片机选择本次设计选择使用STM32F103C8T6单片机作为主控芯片。
该单片机具有丰富的GPIO口和定时器资源,适合用于实现篮球计数器功能。
2. 按键和LED选择为了实现按键控制增加和减少得分,并通过LED显示当前得分情况,需要选择合适的按键和LED。
按键选择:使用两个带有外部中断功能的按键,分别用于增加和减少得分。
可以选择常见的带有弹性触点的按钮。
LED选择:使用七段数码管来显示得分情况,每个队伍一个七段数码管。
七段数码管可以选择常见的共阴或共阳型号。
3. 连接电路设计将STM32单片机的GPIO口与按键和LED连接起来,实现输入输出功能。
具体连接方式如下:•将两个按键分别连接到STM32单片机的两个外部中断引脚(例如:PA0、PA1)。
•将两个七段数码管连接到STM32单片机的GPIO口(例如:PB0~PB7),用于显示得分情况。
四、软件设计1. 系统初始化在主函数中进行系统初始化,包括时钟初始化、GPIO初始化和外部中断初始化等。
保证系统能够正常运行,并能够响应按键事件。
2. 按键事件处理通过外部中断触发函数来处理按键事件。
当增加得分按键被按下时,增加相应队伍的得分;当减少得分按键被按下时,减少相应队伍的得分。
需要进行边界判断,避免得分超出有效范围。
基于单片机简易计算器的设计

基于单片机简易计算器的设计一、引言计算器是一种广泛应用于日常生活和工作中的电子设备,它能够进行简单的加减乘除等基本运算。
基于单片机的计算器设计,不仅可以通过编程实现各种基本运算的功能,还可以使计算器更加智能化,并通过外接显示器和按键进行交互,提供更好的用户体验。
本文将介绍基于单片机的简易计算器的设计思路和实现方法。
二、设计思路1.硬件设计:包括单片机的选择、外接显示器和按键的连接、电源管理等。
2.软件设计:包括计算功能的设计和实现、显示器和按键的驱动等。
三、硬件设计1.单片机的选择:选择一种能够满足计算要求的单片机,如8051、AVR、STM32等,考虑其性能和功能需求。
2.外接显示器和按键的连接:通过接口将单片机和外接显示器、按键连接起来,使其能够传输数据和控制信号。
3.电源管理:根据需要选择合适的电源管理模块,确保计算器能够正常供电和工作。
四、软件设计1.计算功能的设计和实现:通过程序设计实现加减乘除等基本运算功能,可以使用逐位相加、移位运算等方法来实现具体的运算逻辑。
2.显示器和按键的驱动:编写程序实现外接显示器和按键的驱动,使其能够正常显示和接收输入。
五、功能丰富化的设计基于基本的加减乘除等运算功能设计,还可以进一步丰富计算器的功能,如增加求平方、开平方、取余、倒数等复杂运算功能,通过增加相关按键和逻辑实现。
此外,还可以增加存储和回溯功能,使得计算器能够记录之前的计算结果和操作记录。
六、测试和调试设计完成后,进行测试和调试,确保计算器的各项功能正常工作。
首先,进行功能测试,逐步测试计算器的各个基本运算功能以及其他附加功能;然后,进行性能测试,测试计算器的计算速度和稳定性;最后,进行交互测试,测试计算器与用户之间的交互是否正常。
七、总结基于单片机的简易计算器设计是一项技术和实践的结合,在设计过程中需要考虑到硬件和软件的匹配性,确保设计能够满足计算要求,并具备良好的用户体验。
设计过程涉及到硬件和软件的开发,需要有一定的电子技术和编程的知识。
基于单片机的简易计算器设计

基于单片机的简易计算器设计引言:计算器是一种广泛应用的电子设备,可以进行各种数学计算。
基于单片机的计算器是一种使用单片机作为核心处理器的计算器。
本文将介绍如何设计一个基于单片机的简易计算器。
一、设计思路:1.硬件设计:选择适合的单片机,LCD显示屏,按键开关和电源电路,将它们连接在一起组成计算器的硬件。
2.软件设计:使用单片机的编程语言编写程序,实现计算器功能,如加法、减法、乘法、除法等运算,以及清零、退格、等号等功能。
二、硬件设计:选择单片机:在设计单片机计算器时,我们可以选择MCU,如STC89C52、ATmega32等。
这些单片机性能稳定,功能强大,适合用于计算器的设计。
LCD显示屏:选择合适尺寸和接口的LCD显示屏,用于显示计算结果和输入的数字。
按键开关:选择合适的按键开关,用于接收用户的按键输入,如数字、运算符等。
电源电路:设计适合的电源电路,为计算器提供稳定的电源。
三、软件设计:1.初始化功能:启动计算器时,进行相关初始化操作,如清屏、设置计算器状态等。
2.数字输入功能:通过按键输入,将数字输入到计算器中,同时刷新LCD显示屏上的内容。
3.运算功能:根据用户输入的数字和运算符,进行相应的运算操作,如加法、减法、乘法、除法等。
4.清零功能:按下清零按钮时,将计算器的状态重置为初始状态。
5.退格功能:当用户输入错误时,可以通过按下退格按钮,删除最后一个输入的数字或运算符。
6.等号功能:用户按下等号按钮时,计算器将完成运算,并将结果显示在LCD屏上。
7.错误处理功能:当用户输入错误时,计算器应该给出合适的错误提示。
四、程序实现:1.确定单片机的引脚分配,将LCD显示屏、按键开关和单片机的引脚连接起来。
2.使用单片机的编程语言编写程序,实现计算器的功能。
3.根据运算符和数字的不同,确定相应的运算方法,并在LCD显示屏上显示结果。
4.使用条件语句和循环结构,实现计算器的控制逻辑。
5.通过编程实现按键响应功能,当用户按下相应按键时,执行相应的操作。
STM32晶振选型 晶振不起振 晶振及负载电容 晶振参数计算器

第一步:增益裕量(Gainmargin)计算π 3.14晶振手册:F=32768Hz C0=2pFCL=6pF ESR(R1)=50000ΩSTM32手册:gm=5μA/V(选择单位)gm单位:μA/V(Oscillator transconductance)mA/V结果:gmcrit= 5.420E-07=0.54204μA/Vgainmargin=9.22第二步:外部负载电容的计算Cs=3pF注:一般取2~75~6CL1=CL2= 6.0pF第三步:驱动级别及外部电阻的计算对于32kHz的振荡器来说,一般不推荐使用外部限流电阻(译注:因为LSE的常见问题是振荡器ESR是指晶振的等效串联电阻(其值由晶振制造商给出):IQ是流过晶振电流的均方根有效值,使用示波器可观测到其波形为正弦波。
电流值可使用峰-峰值(IPP)。
当使用电流探头时(如图6),示波器的量程比例可能需要设置为1m 图6 使用电流探头检测晶振驱动电流。
注:分路电容(shunt capacitance)低频(32K)高频SE的常见问题是振荡器驱动能力不足而非晶振被过分驱动)比例可能需要设置为1mA/1mV。
IQMAX均方根有效值(假设流过晶振的电流波形为正弦波)。
AXPP 表达式如下:荡器起振条件将得不到满足从而无法正常工作。
重新计算Gainmargin 。
重新回到第一步。
确保振荡器的起振点在基频上,而不是在其他晶振制造商的给定值,外部电阻RExt是必需的,用以推荐使用RExt了,它的值可以是0Ω。
意到RExt和CL2构成了一个分压/滤波器,考虑通带宽度用电位器来代替RExt,RExt值可预设为CL2的位器的值即是CL2值。
t值对起振条件没有影响。
例如,RExt值的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于STM32的简易计算器一.总体方案设计1.任务要求(1)在开发板的显示屏上设计并显示一个简易的计算器界面,包括结果显示窗、0~9数字键、+、-、×、÷、X2、√、=、Del等按键;(2)可使用开发板上的键盘或触摸屏输入上述按键,并在显示窗中显示计算结果;(3)支持基本的整数加减乘除运算;2.设计方案设计的整体思路:选用意法半导体基于ARM Cortex—M3内核的STM32F103ZET6芯片来处理计算器中加减乘除运算,选用3.5寸的TFT-LCD电阻触摸屏模块来进行控制输入并同时将输入参数及运算结果显示出来,同时通过移植emWin,优化计算器界面,使计算器在视觉上效果上更为人性化。
二.系统硬件设计系统主要器件包括ALIENTEK精英STM32F103V1开发板,3.5寸TFTLCD触摸屏。
1.最小系统开发板1.1 微控制器Cortex-M3采用ARM V7构架,不仅支持Thumb-2指令集,而且拥有很多新特性。
较之ARM7 TDMI,Cortex-M3拥有更强劲的性能、更高的代码密度、位带操作、可嵌套中断、低成本、低功耗等众多优势。
STM32的优异性体现在如下几个方面:1. 超低的价格。
以8位机的价格,得到32位机,是STM32最大的优势。
2. 超多的外设。
STM32拥有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等众多外设及功能,具有极高的集成度。
3. 丰富的型号。
STM32仅M3内核就拥有F100、F101、F102、F103、F105、F107、F207、F217等8个系列上百种型号,具有QFN、LQFP、BGA等封装可供选择。
同时STM32还推出了STM32L和STM32W等超低功耗和无线应用型的M3芯片。
4. 优异的实时性能。
84个中断,16级可编程优先级,并且所有的引脚都可以作为中断输入。
5. 杰出的功耗控制。
STM32各个外设都有自己的独立时钟开关,可以通过关闭相应外设的时钟来降低功耗。
6. 极低的开发成本。
STM32的开发不需要昂贵的仿真器,只需要一个串口即可下载代码,并且支持SWD和JTAG两种调试口。
SWD调试可以为你的设计带来跟多的方便,只需要2个IO口,即可实现仿真调试。
MCU部分原理图如图1-1所示:图1-1MCU部分原理图1.2 复位电路STM32F103的复位电路如图1-2所示:图1-2因为STM32是低电平复位,所以设计的电路也是低电平复位的,这里的R2和C10构成了上述复位电路。
1.3 电源电路STM32F103板载的电源供电部分,如图1-3所示:图1-3图中,有两个稳压芯片:MP2359和AMS117,DC-IN用于外部直流电源流入,范围是DC6-24V,输入电压经过MP2359DC-DC芯片转换为5V电压输出,其中D4是防反接二极管,避免外部直流电源极性相反的时候,烧坏开发板,K1为开发板的总电源开关,F1为1000ma自恢复保险丝,用于保护USB。
AMS117为3.3V 稳压芯片,给开发板供电。
2.TFT-LCD电阻触摸屏2.1 电阻触摸屏原理电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理,光滑防擦的塑料层,它的内表面也涂有一层涂层,在它们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。
当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。
控制器侦测到这一接触并计算出(X,Y)的位置,再根据获得的位置模拟鼠标的方式运作。
这就是电阻技术触摸屏的最基本原理。
电阻触摸屏的优点;精度高、价格便宜、抗干扰能力强、稳定性好电阻触摸屏的缺点:容易被划伤、透光性不太好、不支持多点触摸TFT-LCD模块原理图如图2-1所示:图2-1TFT-LCD模块采用2*17的2.54公排针与外部连接,接口定义如图2-2所示:图2-2从图2-2中可以看出,TFT-LCD模块采用16位的并方式与外部连接,之所以不采用8位的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候,如果用8位数据线,就会比16位的方式慢一倍以上,所以选择16位接口。
TFT-LCD模块采用8080并行接口方式,使得MCU可以快速的访问,该模块的8080并口有如下信号线:CS:TFT-LCD片选信号线。
WR:向TFT-LCD写入数据。
RD:从TFT-LCD读取数据。
D[15:0]:16位双向数据线。
RST:硬复位TFT-LCD。
RS:命令/数据标志(0,读写命令;1,读写数据)。
2.2 触摸屏控制芯片从图2-1中可以看出,TFT-LCD模块的触摸屏控制芯片为XPT2046。
XPT2046是一款4导线制触摸屏控制器,内含12位分辨率125KHZ转换速率逐步逼近型A/D转换器。
XPT2046支持从1.5V到5.25V的低电压I/O口接口。
XPT能通过执行两次A/D转换查出被按的屏幕位置,除此之外,还可以测量加在触摸屏上的压力。
内部自带2.5V参考电压可以作为辅助输入、温度测量和电池监测模式之用,电池监测的电压范围可以从0V到6V。
3.FSMC简介大容量,且引脚数目在100脚以上的STM32F103芯片都带有FSMC接口,本次实验所采用的开发板的主芯片为STM32F103ZET6,是带有FSMC接口的。
FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储卡连接,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM 等存储器。
FSMC框图如图3-1所示:图3-1从图3-1中我们可以看出,STM32的FSMC将外部设备分为3类:NOR/PSRAM、NAND设备、PC卡设备。
它们共用地址数据总线等信号,它们具有不同的CS以区分不同的设备。
本次实验所使用的TFT-LCD就是用FSMC_NE4做片选,其实就是讲TFT-LCD当成SRAM来控制,之所以TFT-LCD可以被当成SRAM设备来使用,是因为一般的外部SRAM的控制有:地址线(如A0-A18)、数据线(D0-D15)、写信号(WE)、读信号(RS)、片选信号(CS),如果SRAM支持字节控制,那么还有UB\LB 信号。
而TFT-LCD的信号包括:RS、D0-D15、WR、RD、CS、RST和BL等,其中正在操作的LCD的时候需要用到的就只有:RS、D0-D15、WR、RD和CS。
其操作时序和SRAM的控制完全类似,唯一不同的是TFT-LCD有RS信号,但没有地址信号。
TFT-LCD通过RS信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,比如把RS接在A0上面,那么当FSMC控制器写地址0时候,会使得A0变为0,对TFT-LCD来说,就是写命令。
而FSMC写地址时候,A0将会变为1,对TFT-LCD来说就是写数据了。
这样,就可以把数据和命令区分开了。
此次实验选择的开发板是将RS连接在A10上面。
STM32的FSMC支持8/16/32位数据宽度,这里用到的LCD是16位宽度,所以在设置的时候选择16位宽度,STM32的FSMC将外部存储器划分为固定大小为256M字节的四个存储块,如图3-2:图3-2从图中可以看出,FSMC总共管理1GB的空间,拥有4个存储块(Bank),此次实验用到的是存储块1。
STM32的FSMC存储块1(Bank1)被分为4个空间,每个区管理64M字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。
Bank1的256M字节空间由28根地址线(HADDR[27:0])寻址,其中HADDR[25:0]来自外部存储器地址FSMC_A[25:0],而HADDR[26:27]对4个区进行寻址,Bank1存储区选择表如图3-3所示:图3-3其中需要注意HADDR[25:0]的对应关系:当Bank1接的是16位宽度存储器的时候:HADDR[25:1]→FSMC_A[24:0];当Bank1接的是8位宽度存储器的时候:HADDR[25:1]→FSMC_A[25:0];不论外部接8/16位宽设备,FSMC_A[0]永远接在外部设备地址A[0]。
此次实验使用的是Bank1的第4区,即HADDR[27:26]=11,进行配置对应第4去的寄存器组,来适应外部设备。
4.AT24C02简介AT24C02是一个2K串行CMOS E2PROM,内部含有256个8位字节,该器件通过IIC总线接口进行操作。
本次实验需要先向24C02读取数据判断触摸屏是否已经校准过了,如果没有校准,则执行校准程序,校准过后再进入电阻触摸屏测试程序,如果已经校准了,就直接进入电阻触摸屏程序。
STM32F103与24C02电路连接如图4-1所示:图4-1管脚名称及功能:A0 A1 A2:器件地址选择SDA:串行数据或地址SCL:串行时钟WP:写保护VCC:1.8V~6.0VGND:地三.系统软件设计1.系统整体流程系统在复位或者上电之后,开始执行各个模块之间的初始化,其中主要的是触摸屏初始化,初始化之后,单片机需要进行检测触摸屏是否已经校准,如果还未进行校准,将进入校准模式进行校准,首次校准完成,之后再进行使用计算器时是不需要进入校准,有就是说单片机只需要进行一次校准,之后的测试将跳过此阶段。
校准阶段完成后,将进入计算器主界面,开始输入第一个参数,也就是需要进行运算的数字,之后选择需要对数字进行的操作方式符号“+”、“-”、“*”、“/”、“√”和“㎡”,然后输出第二个参数,按下“=”键得出想要的结果。
若还需要在此结果上进行计算,可以在得出结果后,直接再次选择需要进行的操作方式,再输入下一个参数,即可得到结果,此次设计的计算器是可以支持连续计算操作。
若需要重新计算,按下界面上的“RST”键清除内容,便可开始新的计算。
触摸屏模块流程图如3-1所示:图3-1程序运算表达式流程图如图3-2所示:图3-22.软件实现方法2.1主函数程序中主函数主要是包括延时函数初始化、中断优先级分配、LCD 初始化函数、定时器初始化、内存管理初始化、GUI 时钟使能、GUI 初始化以及计算器主界面。
由于移植了emwin 设计界面,需要用到定时器定时查询触摸,内存分配以及使能GUI 时钟。
主函数代码如图3-3所示:图3-3 主界面 输入第一个参 数 加 减 乘 除 平方 开方输入第二个参数 显示结果2.2 触摸按键函数在程序初始化各个模块之后,开始检测触摸按键函数,是否有按键按下来执行相应的操作。