文章目录
- 题目要求
- 第1版方案
- 第2版方案
- 代码介绍
- 获取代码和仿真
题目要求
33、数字电压表设计
基本要求:
了解电压表的工作原理。
对0~2.5V的模拟电压进行循环采集
采集的数据进行A/D转换后用LCD屏显示测量值,显示精度0.0001
用键盘选择测量范围(分档)
超过测量范围时指示灯持续闪烁
第1版方案
两个电阻对80V电压分压,分压倍数是50倍率,所以MSP430得到的电压乘以50倍就是原始电压。
但proteus对分立元件分压仿真有BUG,下图中可以看到,分压后是1.6V的,但是仿真出来是0.148181V,这是有问题的。
第2版方案
这个档位是0到100V的档位,想要50倍率分压后测电压,那不如想简单点,用一个独立元件滑动变阻器来代替即可,比如有0到2.5V的电压调节,程序上自己乘以50倍就好了。
对于程序的逻辑,是契合题目的意思的,这就是可以的了。
整体图是这样的:
这三个按键就分别控制某一个继电器打开,即是打开了某一个档位:
屏幕上显示的,第一行是单片机测到的实际电压,这个和探针的电压是一样的。
第二行显示的是乘以倍率之后的电压,比如档位3是0到100v,假设的倍率是50倍。实际要做实物就按方案1的电路图,程序也可以用方案2的程序,道理都是想通的。
高于测量范围,小灯闪烁。
代码介绍
这是一个基于MSP430F249微控制器的程序,主要实现了以下功能:
- 初始化LCD显示屏,包括设置端口方向、选择普通I/O口、设置数据传输模式等。
- 定义了LCD显示相关的函数,包括写入指令、写入数据、设置显示位置、显示字符、显示字符串等。
- 实现了获取按键信息的函数,通过P5口读取按键的状态,根据按键的不同情况返回相应的键值。
- 设置ADC进行模拟信号的采样,通过P6.0口连接ADC进行模拟信号输入。
- 定义了LED的闪烁功能,通过定时器中断实现LED的闪烁,当达到一定条件时会触发LED的闪烁。
- 主函数中进行了系统的初始化,包括停止看门狗、设置端口方向、初始化LCD、ADC等。
- 在主循环中,进行ADC的采样并显示在LCD上,根据按键输入切换不同的档位。
- 利用定时器中断控制LED的闪烁。
总的来说,这个程序实现了一种基于MSP430F249的控制系统,包括按键输入、模拟信号采样、LCD显示和LED控制等功能。
获取代码和仿真
代码和仿真:
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2