STM32的数字示波器设计说明.docx

上传人:rrsccc 文档编号:10431247 上传时间:2021-05-16 格式:DOCX 页数:10 大小:58.19KB
返回 下载 相关 举报
STM32的数字示波器设计说明.docx_第1页
第1页 / 共10页
STM32的数字示波器设计说明.docx_第2页
第2页 / 共10页
STM32的数字示波器设计说明.docx_第3页
第3页 / 共10页
STM32的数字示波器设计说明.docx_第4页
第4页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《STM32的数字示波器设计说明.docx》由会员分享,可在线阅读,更多相关《STM32的数字示波器设计说明.docx(10页珍藏版)》请在三一文库上搜索。

1、.专业整理 .STM32 的数字示波器设计示波器的设计分为硬件设计和软件设计两部分 。示波器的控制核心采用 ARM9 ,由于 STM32 芯片里有自带的 AD,采样速率最高为 500KSPS,分辨率为 10 位,供电电压为 3.3V,基本上能满足本设计要求,显示部分用 3.2 寸 TFTLCD(分辨率:320*240 )模块 。软件部分采用 C 语言进行设计 ,设计环境为 Keil。硬件总体结构该设计采用模块化的设计方法 ,根据系统功能把整个系统分成不同的具有特定功能的模块 ,硬件整体框图如下图所示 。该示波器由 4 部分电路构成 ,分别是:(1) 输入程控放大衰减电路 ;(2) 极性转换电路

2、 ;(3) AD 转换电路 ;(4) 显示控制电路 ;(5) 按键控制电路 ;整体设计思路是 :信号从探头输入 ,进入程控放大衰减电路进行放大衰减 ,程控放大器对电压大的信号进行衰减 ,对电压小信号进行放大以符合 AD 的测量范围 ,经过处理后信号进入极性转换电路. 学习帮手 .专业整理 .进行电平调整成 03.3V 电压,因为被测信号可能是交流信号 ,而 AD 只能测量正极性电信号 ,经调整后送入 AD 转换电器对信号进行采样,采样所得数据送入 LCD 显示,这样实现了波形的显示 。按键控制可以通过不同的按键来控制波形的放大和缩小 ,同时也可以改变采样间隔 ,以测量更大频率范围的信号 。ST

3、M32 处理器介绍STM32 系列基于专为要求高性能 、低成本、低功耗的嵌入式应用专门设计的 ARM Cortex-M3 内核 。按性能分成两个不同的系列 : STM32F103 “增强型 ”系列和 STM32F101 “基本型 ”系列。增强型系列时钟频率达到 72MHz ,是同类产品中性能最高的产品 ;基本型时钟频率为 36MHz ,以 16 位产品的价格得到比 16 位产品大幅提升的性能,是 16 位产品用户的最佳选择 。两个系列都内置 32K 到 128K 的闪存,不同的是 SRAM 的最大容量和外设接口的组合 。时钟频率 72MHz 时,从闪存执行代码 ,STM32 功耗 36mA ,

4、是 32 位市场上功耗最低的产品 。本设计所用的STM32F103VCT6 集成的片上功能如下 :(1) 1.2v 内核供电 ,1.8V/2.5V/3.3/V存储器供电 ,3.3V 外部 I/O供电(2) 外部存储控制器(3) (3) LCD 控制器(4) 4 通道 DNA 并有外部请求引脚(5) 3 通道 UART. 学习帮手 .专业整理 .(6) 2 通道 SPI(7) 1 通道 IIC 总线接口 1 通道 IIS 总线接口(8) AC 97 编解码器接口(9) 兼容 SD 主接口协议 1.0 版和 MMC 卡协议 2.11 兼容版(10) 2 通道 USB 主机 1 通道 USB 设备(

5、11) 4 通道 PWM 定时器和 1 通道内部定时器 / 看门狗定时器(12) 8 通道 10 位 ADC 和触摸屏接口(13) 80 个通用 I/O 和 24 通道外部中断源LCD 显示介绍LCD 液晶显示器是 Liquid Crystal Display 的简称,LCD 的构造是在两片平行的玻璃当中放置液态晶体 ,两片玻璃中间有许多垂直和水平的细小电线 ,通过通电与否来控制 杆状水晶分子改变方向 ,将光线折射出来产生画面 。LCD 的主要技术参数有 :1. 对比度 LCD 制造时选用的控制 IC、滤光片和定向膜等配件,与面板的对比度有关 ,对于一般用户而言 ,对比度能够达到350:1 就

6、足够了 ,但在专业领域这样的对比度还不能满足用户的要求。对比值定义是最大亮度值 (全白 )除以最小亮度值 (全黑 )的比值2. 亮度 LCD 是一种介于固态与液态之间的物质 ,本身是不能发光的 ,需要借助于额外的光源才行 。因此,灯管数目关系着液晶显示器亮度 。 液晶显示器的最大亮度 ,通常由冷阴极涉嫌管来决定,亮度值一般都在 200250cd/m2 间。. 学习帮手 .专业整理 .3. 可视面积液晶显示器所表示的尺寸就是与实际可以使用的屏幕范围一致 。4. 可视角度 当背光源通过偏极片 、液晶和去向层之后 ,输出的光线变具有了方向性 。也就是说大多说光都是从屏幕中 垂直射出来的,所以从某一个

7、较大的角度观看液晶显示时 ,便不能看到原来的颜色 ,甚至是只能看到全白或者全黑 。 为了解决这个问题 ,制造商们也着手开发广角技术 ,到目前为止有三种比较流行的技术 ,分别是:TN+FILM 、IPS 和 MVA 。5. 色彩度 任何一种色彩都是由红 、绿、蓝三种基本色组成的。LCD 面板上是由 480272 个像素点组成现象的 ,每个独立的像素色彩是由红 、绿、蓝(R、G、B)三种基本色来控制 。软件整体设计整体设计思路是 :信号从探头输入 ,进入程控放大衰减电路进行放大衰减 ,程控放大器对电压大的信号进行衰减 ,对电压小信号进行放大以符合 AD 的测量范围 ,经过处理后信号进入极性转换电路

8、进行电平调整成 03.3V 电压,因为被测信号可能是交流信号 ,而AD 只能测量正极性电信号 ,经调整后送入 AD 转换电器对信号进行采样,采样所得数据送入 LCD 显示,实现波形的显示按键控制可以通过不同的按键来控制波形的放大和缩小 ,同时也可以控制程控放大器,选择放大和衰减的倍数 。该示波器软件开发环境为 Keil 4,代码采用 C 语言编写 。ARM中软件完成的功能 :. 学习帮手 .专业整理 .(1)输入波形显示和峰峰值测量。(2)LCD 的初始化和显示控制 。(3)按键的检测和控制 。数字手持示波器技术参数(1) 水平扫描速度可调(2) 垂直电压灵敏度可调(3) 被测信号的电压峰峰值

9、在屏幕上显示。 (4) 能测量输入频率为1HZ50KHZ的信号 (5) 测量幅度范围为 -3.3V3.3V软件编程与调试整体设计思路是 :经过程控放大衰减和极性转换后的电压作为 AD 转换的输入电压 ,然后通过不同的按键来控制波形的放大和缩小,最后在 LCD 屏上显示出大小适中的波形 。 同时测出电压峰峰值,并显示。以下是根据整个系统进行的软件设计 。软件设计总体框图系统总体框图如图3-1 所示:. 学习帮手 .专业整理 .键盘控制程序利用 4 个按键 K1,K2,K3,K4 来选择波形的放大和缩小 ,按键采用外部中断方式 。其中通过 K1 和 K2 来调整波形显示的高度比例 ,通过 K3 和

10、 K4 来改变采样间隔增加或减少一个周期内采样点数 ,达到控制水平扫描速度 ,使低频率波形能完整显示 。当检测到 K1 时,波形幅度系数置为 2,当检测到 K2 时,波形幅度系数置为 1/2 ,否则波形幅度系数为 1,以此控制幅度的放大和缩小 。当检测到 K3、K4 时,采样函数中分别加入不同的延时函数来拉长或缩短波形 。按键中断程序流程图如下图所示 。. 学习帮手 .专业整理 .峰峰值测量程序设计通过遍历 AD 转换结果 ,取出最大值和最小值求差,结果即为电压峰峰值 。测量函数 :high_vpp=low_vpp=Buff0;for(i=0;ihigh_vpp). 学习帮手 .专业整理 .h

11、igh_vpp = Buffi;/最大值if(Buffilow_vpp)low_vpp = Buffi;/最小值vpp=(float)(high_vpp-low_vpp)*(6.6/4096);LCD 显示程序设计本设计所使用的是 3.2 寸 320240 图形点阵 LCD,该部分程序主要有 LCD初始化,AD 转换过来的数据转换成显示数据 。用数组连续存储 AD 转换结果 ,存满后依次在 LCD 上显示,依次循环 。显示过程中由于 STM32 处理器频率较低 ,导致显示一屏的时间较长 ,从而使刷屏速度较慢 ,效果不好 。这里采用每次刷一列的的算法 ,即每次显示下一列点之前将此列初始化为屏幕底

12、色,从而改善视觉效果。LCD 显示主要程序为 :int main()Stm32_Clock_Init(9);/ 系统时钟设置delay_init(72);/ 延时初始化LCD_Init();/ 初始化液晶KEY_Init();/ 按键初始化. 学习帮手 .专业整理 .Adc_init();/ADC 初始化LCD_Clear(BLACK);/ 清屏POINT_COLOR=RED;/ 点颜色BACK_COLOR=BLACK; / 背景色while(1)key=KEY_Scan();/ 获取按键返回值high_vpp=low_vpp=Buff0;for(i=0;i200;i=i+1)Buffi=Ge

13、t_Adc(0);Choose_Delay();/ 改变采样间隔for(i=0;i200;i=i+1)Clear_Line(i);/ 清列first_point=next_point;temp=Buffi;Vpp_Change();/ 调整电压显示幅度next_point=100+temp*100/4096;/ 得到点坐标Draw_net();/ 画网格. 学习帮手 .专业整理 .LCD_DrawLine(first_point,i,next_point,i+1);/通过连线画波形LCD_ShowChar(80,220,V,18,0);vpp=(float)(high_vpp-low_vpp)*(6.6/4096);/ 求得峰值temp=vpp;LCD_ShowChar(97,202,o,18,0);LCD_ShowChar(50,220,.,18,0);LCD_ShowNum(40,220,temp,1,18,0);/ 显示峰峰值整数位vpp-=temp;temp=vpp*100;LCD_ShowNum(58,220,temp,2,18,0);/ 显示峰峰值小数位. 学习帮手 .

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1