嵌入式课程设计报告。
课题 : 基于stm32的简易示波器的实现
班级 : 自动化 111
姓名 : 徐栋良。
学号 : 1110310016
同组成员: 陈叶健自动化112 1110310046
李高峰自动化091 1110310036
指导老师:陈才。
摘要。示波器是能在屏幕上以图形方式显示、观测被测信号随时间变化的仪器。它是一种最常用的电子测量/电工测量仪器。
它能把肉眼看不见的电信号变换成看得见的图像,便于人们研究各种电现象的变化过程。
示波器利用狭窄的、由高速电子组成的电子束,打在涂有荧光物质的屏面上,就可产生细小的光点(这是传统的模拟示波器的工作原理)。而现在常用的是通过a\d采样将电信号的强弱转化为数值,通过处理器中软件程序的处理,可以在液晶屏上显示出被测信号的瞬时值的变化曲线。利用示波器能观察各种不同信号幅度随时间变化的波形曲线,还可以用它测试各种不同的电量,如电压、电流、频率、相位差、调幅度等等。
1、课题描述:
简单的示波器包能显示低频的波形,如方波、三角波等波形,还可以通过看液晶屏上的坐标读出相应输入的信号的周期、幅值等。由于条件和能力有限,所以就做个能实现简单波形显示的简易示波器。
示波器的程序设计虽然听起来很简单,只要通过a\d转换采样得到数据,再通过液晶屏显示波形。但是实际上要实现简易示波器的功能的程序设计具有一定的难度,要多方面考虑多个问题,并找到比较合理的解决方法。通过本次设计,大致了解了基于stm32的程序设计过程,学习到了相应的知识,在一定程度增长了自己的能力!
简易示波器是利用stm32mini开发板为硬件基础,图形通过开发板自带2.8寸tft显示,信号由stm32内部adc转换得到,数据通过dma传输,获得300个点,然后描点得到相应的坐标,最后将波形显示在液晶屏上,供使用者观察并读出想要的信息。最后把运算的结果显示在彩屏。
最基本要求:波形显示,读出幅值和周期。
2、课题分析。
a)、硬件要求。
处理器选择:
stm32f103ze,这款处理器具有512k的flash,64k的ram,足够大的空间,内置a\d转换,可以让程序员的可以有更大的发挥空间,而不用为节省空间而上脑筋。
图形显示:带触摸的液晶屏,2.8寸的tft屏。
jlink**器:使用jlink v8**器,**器能够**程序、****,便于程序编写与错误检查。
b)、软件要求:
固件库:stm32编程,可以使用固件库,st公司提供stm32处理器的固件库,以方便程序员编程,缩短了项目的编程周期。
图形软件:使用gui嵌入式图形界面软件。gui是个小型的图形软件,包括有基本的图形显示,还有许多图形控件,如:
按钮,编辑框,窗口,滚动条等等,而我们的示波器的制作就要用到其中的编辑框和窗口2个控件。
c)、设计方案:
程序流程:用adc采样得到输入波形的相关数值,再通过dma传输传送一个数组里。数组通过gui描点显示在液晶屏上。
界面设计:用开发板历程里画线的程序在液晶屏上画好相当于方框格的界面,再通过局部扫屏保留界面中的线。
说明功能:将要输入的波形用导线连接到开放板的带a\d的i\o接口上,经过一系列的处理在液晶屏上显示相应的波形。如果输入波形的频率、幅值发生变化,那么液晶屏上的显示也会发生相应的变化。
另外通过外部按键可以使液晶屏上的波形变化暂停。
3、所使用到相关说明。
a)、stm32f103zt6e简介:
arm 32位cortex-m3 微处理器,72mhz频率, 512kb flash, 64kb sram,灵活的静态存储器控制器存储器:sram, psram, nor 和nand flash,pll, 内置的rc正当频率为8mhz 和32khz, 实时时钟,嵌套中断控制器, 节电模式, jtag 和swd两种模式,4个同步16位计时器与输入捕获, 输出比较和pwm波,2个16位的高级定时器, 2 个16位的基本定时器, 2 个16位的看门狗定时器,系统时钟定时器, 3个spi/i2s模块, 2 个i2c模块, 5个usart模块, 一个usb 2.0 全速接口,一个can 2.
0b active, 3个112 位16通道a/d 控制器, 2个12位的d/a 控制器, 1个sdio接口, 快速的i/o 口。
b)、dma介绍:
dma,全称为:direct memory access,即直接存储器访问。dma 传输方式无需 cpu 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 ram 与 i/o 设备开辟一条直接传送数据的通路,能使 cpu 的效率大为提高。
直接存储器存取(dma)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。这就节省了cpu的资源来做其他操作。两个dma控制器有12个通道(dma1有7个通道,dma2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。
还有一个仲裁器来协调各个dma请求的优先权。
c)、gui简介。
uc\gui是一种嵌入式应用中的图形支持系统。它设计用于为任何使用lcd图形显示的应用提供高效的独立于处理器及lcd控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意lcd控制器和cpu下任何尺寸的真实显示或虚拟显示。它的设计架构是模块化的,由不同的模块中的不同层组成,由一个lcd驱动层来包含所有对lcd的具体图形操作。
uc\gui可以在任何的cpu上运行,因为它是 100%的标准c**编写的。ucgui能够适应大多数的使用黑白或彩色lcd的应用,它提供非常好的允许处理灰度的颜色管理。还提供一个可扩展的2d图形库及占用极少ram的窗口管理体系。
uc\gui的设计目标是为使用lcd作为图形显示装置的应用提供高效的/与lcd控制器独立及处理器独立的图形用户接口。它适合于单任务环境及多任务环境,如私用的操作系统或是商业的rtos(实时操做系统。ucgui以c源码形式提供, 并适用于任意lcd控制器和cpu下任何尺寸的真实显示或虚拟显示。
它包含以下特性:
1] 适用任何8/16/32位cpu, 只要有相对应的标准c编译器。
2] 任何的控制器的lcd显示器(单色,灰度,颜色), 只要有适合的lcd驱动可用。
3] 在小模式显示时无须lcd控制器。
4] 所有接口支持使用宏进行配制。
5] 显示尺寸可定制。
6] 字符和位图可在lcd显示器上的任意起点显示,并不仅局限于偶数对齐的地址起点。
7] 程序在大小和速度上都进行了优化。
8] 编译时允许进行不同的优化。 、
9] 对于缓慢一些的lcd控制器, lcd显存可以映射到内存当中, 从而减少访问次数到最小并达到更高的显示速度。
10]清晰的设计架构。
11]支持虚拟显示, 虚拟显示可以比实际尺寸大(即放大).
四、**分析。
主函数:int main(void)
u16 i,j,k设置变量。
delay_init(72初始化延迟函数。
nvic_configuration初始化中断。
usart1_init初始化串口。
adc1_init初始化adc
led_init初始化led
rtc_init();
gui_init初始化图形界面。
key_init初始化按键。
label画出 x , y 坐标*/
while(1)
k = key_scan按键暂停。
if( k!= 0)
/*labels the x & y-axis*/
void label(void)
int x, y;
gui_setpensize(1显示线的大小。
gui_clearrect(20, 0, lcd_xsize - 1 , lcd_ysize - 20); 先清空,似乎不加也可以。
gui_drawrect(20, 0, lcd_xsize - 1 , lcd_ysize - 20); 画出矩形。
gui_setfont(&gui_font6x8设置默认字体。
/* 画出 x 坐标 */
for (x = 0; x < lcd_xsize - 20; x +=15)
/*画出 y 坐标*/
for (y = 0; y < 120; y +=20)
int ypos = y + 20;
gui_drawhline(ypos, 15, 20画出水平刻表。
if ( ypos ==120 )
gui_dispcharat('0', 7, ypos - 4else
gui_gotoxy(2, ypos-4);
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...
课程设计报告格式
表序 表题为五号宋体,居中排于表的正上方 图和表中的文字为小五号宋体 四周封闭,表跨页时另起表头。图和表中的注释 注脚为小五号宋体 数学公式居中排,公式中字母正斜体和大小写前后要统一。公式另行居中,公式末不加标点,有编号时可靠右侧顶边线 若公式前有文字,如例 解等,文字顶格写,公式仍居中 公式中的外...