单片机双路显示电压表课程设计.doc
《单片机双路显示电压表课程设计.doc》由会员分享,可在线阅读,更多相关《单片机双路显示电压表课程设计.doc(21页珍藏版)》请在三一办公上搜索。
1、目录一、设计任务-1二、总体方案设计与方案论证-3三、总框图及总体软件设计说明-6四、系统资源分配说明-11五、局部程序框图及其设计说明-12六、系统功能与操作说明-18七、调试记录及调试结果-18八、课程设计总结-21九、源程序清单(详细注释)-22一、设计任务设计课题:智能双路数字电压表设计目的:通过小型微机应用产品的设计与调试过程,运用微机原理及接口技术课程所学的基本知识,在设计中加以应用,进而得到理解、巩固和提高,学习掌握分析与解决实际问题的方法与手段,提高设计、编程与调试的实际动手能力,作为工程技术工作的一次基本训练。设计任务:设计一个以单片机为核心的智能双路数字电压表,通过多选一电
2、子模拟开关及A/D转换器巡回采集两路被测电压的数据,进行信号处理及标度变换,以一定的节拍时间交替显示,应有显见的符号标示被测信号源回路,并可通过按钮开关操控冻结或切换显示,可通过键盘进行参数设定,编程并在单片机实验板上模拟调试实现。基本设计要求:1、八位LED 7段数码管显示当前检测回路的标识、电压值及其单位或其他界面信息。2、电压测量范围0V4.96V,应有输入被测电压超量程判断及提示。3、应采取数字滤波技术提高测量与显示的稳定性。4、基本显示模式为:两路被测电压值按设定的节拍交替测量与显示,电压值保留二位小数。5、设置一个“冻结”按钮开关以操控进入或退出当前回路的冻结显示方式,冻结显示期间
3、每约0.5S更新一次测量值。6、设置一个“切换”按钮开关以操控强行切换显示下一检测回路数据。7、对开关量输入信号须进行软件消抖动处理。8、键盘设定交替测量显示的节拍范围为0.5S5.0 S,设定分辨率0.1V,设定界面应有醒目的当前修改位提示。9、无操作时间超过30秒钟后自动恢复为基本的运行状态。功能扩展提示:(选做)1、开机进行接口部件及数码显示器、指示灯、讯响器等自检。2、每隔一定的时间,穿插显示实时钟信息一定的时间,通过键盘设定其间隔参数。3、扩展显示模式二:同时显示两路电压测量数据,每约0.5S更新一次测量值,电压值保留一位小数。设置一个“模式”拨动开关以选择两种显示模式之一。4、超上
4、限告警功能,通过键盘设定电压上限值范围为0V4.96V ,监测到某回路电压超上限时有相应显示内容的闪烁提示、超上限LED指示灯亮、讯响告警及继电器触点输出控制功能。5、实现带有回差的超上限告警功能,通过键盘设定回差值的范围为0 .10V0.50V,设定回差分辨率0.01V。6、添加超下限告警功能。7、添加多挡量程功能,如1.24V量程、0.31V量程。8、其他功能扩展。二、总体方案设计与方案论证 本次课程设计是要设计出一个智能双路数字电压表,能符合实际应用且充分考虑到客户的需求。基于基本的设计要求,我采取了先设计出若干个具有不同功能的子模块,再由主流程不断循环调用,同时各个子模块之间还可以通过
5、设定标志位或调用同一单元进行彼此的相互关联,采用这种模块化的设计方式是为了使能使各个程序块分工明确,设计思路清晰明了,降低程序复杂度,使程序设计、调试和维护等操作简单化。 由设计要求,将程序分为以下十四个模块,分别是系统初始化、开关输入与消抖、标度转换、拆字送显缓、键盘扫描、显示更新、AD采集与数据滚存、交替显示、冻结控制、切换控制、设定节拍、节拍位闪烁、设定模式下无操作控制、时钟显示。同时还增加一个主流程模块,用于在后十三个模块之间不断循环。实现电压表的工作正常进行。由于电压表具有不同的工作模式,在不同的模式下数码管的显示内容是不同的,因此设计了一个进程代码单元,使得在不同进程代码下拆字送显
6、缓的内容是不同的,同时由于某些功能只有在某个进程时方可以实现,也可以通过判断这个进程代码单元的内容来决定是否可以执行该功能。采取这种控制方案便可以实现电压表不同模式的显示和控制。在模块化的程序结构和用代码单元来代表不同模式的大方案下,一下是每个模块的具体方案:1. 系统总初始化模块在系统初始化模块中需要向82C55芯片和A/D0809芯片的控制端口送入对应的控制字,实现数码管与键盘接口等的初始化,完成各PB按键、SW电平开关等端口的输入输出设定,同时还要在系统初始化模块中给一些变量或存储单元赋初值,为系统开始工作做好准备。2.开关输入与消抖模块对PB口采用滚动滤波法实现开关消抖,将29H到2E
7、H共7个单元作为开关输入状的存储单元。其中2EH为新态,2FH为前态,29H、2AH、2BH、2CH、2DH存储的是最近五次的电平值,通过比较近五次的电平值是否相等,若相等则将该值存入新态单元中,供后面的其他模块子程序调用。不相等则继续存储比较。同时在后面的其他模块调用时,通过比较2EH与2FH的内容就可以对开关的各种状态进行判断,同时还很好的消除了抖动的影响。 3.标度转换模块 在标度转换模块这里有两种方案可供选择:一种是首先判断高位66H单元中式1还是0,若是1,则对BCD码的百位存放单元赋值2,而后对低位67H单元中的值除以一百取到百位值,加到BCD码百位存放单元中,而后取余数除以十,整
8、数加到十位存放单元中并判定若是和值超过10则百位加一,之后取除以十以后的余数加到个位单元中,然后再次判断十位单元是否需要加1,乃至百位单元是否需要加1。但由于此种方法过于繁琐,因此在调试模块中改用余老师提供的办法写出另一种实现方式的程序。高位依旧判断是0还是1,是1则低位的值应加上256,所以只需在高位加2,而低位先加上56,再进行进位判断。具体程序在调试报告中说明,但由于新写好的程序未有机会调试,因此在程序清单部分中还是采用老方法。 4.拆字送显缓模块 在拆字送显缓模块中,需要对数码管不同的显示模式分开拆字送显缓,因此进程代码在这里就起到了很好的区别对待作用了。分别用01,02,03,10,
9、11代表进程模式为显示第一路、显示第二路、显示时钟、设定节拍整数位以及设定节拍小数位。同时在基本模式即第一第二路电压值显示状态下,对数码管其他位固定赋值“U1= V”“U2= V”即可,仅需对由标度转换后的单元拆字送到需要显示电压值的四个数码管对应的显缓单元中。而节拍设定模式下仅显示两位节拍值与节拍单位。 5.键盘扫描模块键盘扫描方法共有线反转法和扫描法。扫描法的思想是先把某一位置为低电平,其余位为高电平,然后检查各电平的变化。弱某行线电平为低电平,则可确定此行列交叉点为按下键。但由于此方法需要多次扫描,过于麻烦,因而我们采用的是线反转法。线反转法就是通过两步:第一步使列线全为输出低电平,行线
10、输入,则行线由高变低所在行为按键所在行;第二步使使行线全为输出低电平,列线输入,则列线由高变低所在列为按键所在列。 同时设定两个单元62H与61H为旧态单元与新态单元。判断出键盘按下的键号存入61H中,可以通过比较61H与62H的内容判断键盘按键的状态。并在其他子模块中调用61H中的值实现不同按键的不同操作。 6.显示更新模块本模块的功能是将拆字后显示缓冲单元所存的内容通过查表得相应字段码一一送往各个数码管显示,其中有包括对基本模式下电压值的小数点以及节拍设定数据个位小数点的处理。 7.AD采集与数据滚存模块 由于有双路数据,采用主流程循环奇数次对第一路进行采集并滚存,偶数次为另一路。同时由于
11、AD转换需要一定的转换时间,所以采用先读取某一路上一次转换的结果,设四个单元滚存数据,然后再启动另外一路下一次转换的流程。每一路都滚存四个单元并求取其平均值,这羊能够提高数据测量与显示的稳定性 8.交替显示模块 该模块仅在进程模式为基本工作模式下进行,通过引入定时器中断程序中的一个计时单元来判断时间是否与设定节拍的时间相一致,一致时则切换到另一路显示的进程中。 9.冻结控制模块 冻结控制是通过PB口上的按键PB2来控制的,当PB2处于按下状态就进入冻结模式,冻结模式下是能够保持显示此时的工作模式,没有交替显示,持续显示第一路、第二路或时钟模式,冻结模式下可以进行强制手动切换,但不能进入设定模式
12、。 10.强制切换控制模块 强制切换模式是在进程代码为01或者02即显示第一路和第二路电压的基本模式时方可实现的,由PB3按键控制,按下PB3按键能够由当前显示的这一路立刻跳转到显示另一路电压值。冻结模式下亦可强制切换。 11. 节拍设定模块 节拍设定也是由PB口上的两个按键来控制的,PB7键按下进入节拍设定模式,按下键盘上的数字键进行对节拍整数位和小数位的设定,同时设置两个存储单元一个为临时节拍单元用于拆字显示,一个为确定节拍单元,用于交替显示比较。PB0为确定键,当确定键按下后将设定完的节拍值送入确定节拍单元,作为之后交替显示的节拍时间。 12.节拍位闪烁模块 此模块是当进入节拍设定时用于
13、提示当前为哪一位修改,其实现原理是将定时器中断中的1S计时单元拿来分段,某一段中让数码管亮,而某一段对数码管当前位关显示。当整数位设定时有数字键按下后立刻跳到小数位闪烁,不断循环。 13.设定时无操作控制模块 无操作是在设定模式下当一定时间内PB口与键盘上均无任意键按下时即跳转回基本工作模式。通过引入定时器中断中的一个计时单元来与设定的时间进行判断,同时在键盘与PB口扫描程序中对案件有否按下进行判断,按下则对该计时单元清零,由此实现无操作控制。 14.时钟显示模块 时钟显示模式的进程代码为03,在定时器中断子程序中能实现实时钟功能,因此我们只需在交替显示模块中没交替几轮后便使进程代码跳为显示时
14、钟的模式,而后由拆字子程序拆存放时钟时分秒值的那几个单元便可以在数码管上每几个轮回显示一次实时钟。三、总框图及总体软件设计说明1.总体软件模块图如下所示:开关输入及消抖标度转换AD采集并滚存拆字送显缓 键盘扫描显示更新冻结显示控制交替显示控制初始化等待芯片上电复位主程序手动切换控制 设定节拍控制 设定节拍位闪烁控制 设定模式下定时实现无操作 时钟显示 2. 总体软件设计说明: 单片板一上电后首先进行系统的初始化,对两片82C55芯片的控制口写入控制字,完成各端口的输入输出设定,定义82C55(U3)为数码管显示与矩阵键盘接口A和B口输出字段字位,C口输入。82C55(U5)为LED显示,开关,
15、按键接口,A口输出驱动L8-15,B口输入按键P0-7,C口输入电平开关SW0-7。同时给一些变量或存储单元赋初值,开T0中断,初始化T0定时方式为方式2,TH0、TL0均赋初值为48H。在进入主循环之前,先进行九轮调用AD采集子模块,目的是为了让四个滚存单元先存好AD转换的值以便在第一次调用标度转换时就可以以准确的AD转换值进行计算,保证了测量的稳定性。之后进入主循环,首先调用的是开关输入及消抖子程序,放在最开始的目的是为了方便后续子模块对PB口按键开关的使用,本次设计普遍采用按键下降沿有效,因此后续模块只需判断弱前态为高电平,新态为低电平即按键按下,进行操作即可。接下来调用的是标度转换子模
16、块,之所以要将标度转换放在主流程调用的前端是为了能够在第一轮就有AD转换后转成可显示的BCD码电压值输出显示,标度转换约每0.5s调用一次,因此在子程序开头应有判断主流程循环50次后方进行一次标度转换。接下来调用的是拆字送显缓模块,拆字送显缓中每次对进程代码单元内的内容进行判断,根据各个不同进程代码进入到相应的拆字模块中进行不同的拆字,在拆字送显缓模块中还应对基本工作模式下的第一路和第二路电压值进行判断,看是否有超过最大量程4.96V,若有超量程应有超量程提示,此时数码管会显示出“UI=1-V”或“U2=1-V”。拆字送显缓模块调用完后进入键盘扫描模块,键盘扫描模块即用线反转法判断出哪个键号按
17、下,键号存入61H单元中以供后用。而后进入显示更新模块中,本模块的功能是将显缓单元中的内容通过查表得相应字段码一一送往对应的显示缓冲单元显示,该模块包括对电压值的个位小数点的处理,当判断查表转到33H单元时,就将33H中的内容附上小数点。接下来是AD采集模块,AD采集模块中分两路轮流采集,主流程循环奇次采集U1电压,偶次循环采集U2电压,每次采集都读取一次AD转换后的值存到四个滚存单元的最外层,同时四个滚存单元滚存一轮,则每个单元的值都滚到下一单元,而最内侧单元的值是最早读取的则被覆盖。然后再启动另一路电压的AD转换,用主流程10ms的时间作为转换的延时时间。因此AD采集是每10MS采集一次。
18、而后是交替显示模块,除了基本的实现按照节拍设定的时间来交替显示外,为保证一轮交替后能够立刻显示最新的电压值,因此在一轮交替后会将标度转换子程序开头的计数单元赋值1,从而能够在随后调用标度转化时立刻减一开始标度转换。同时在一轮交替完也会进行对27H计数单元加一,以实现达到一定交替次数后进行一次时钟显示。冻结模块是PB口上的PB2按键控制,按下冻结当前路显示,再次按下退出。强制切换模式是由PB3按键控制,按下就会强制跳到另一路的电压显示,这两种控制在跳转到另一路时都要对交替显示中的计时单元置零,使之能正常的进行交替显示,否则当该计时单元超过设定节拍单元后会一直增加到FFH,再回到00H,这样会使得
19、某一路显示得特别长时间。设定与闪烁模块的工作模式是,按下PB7,则设定节拍单元将初始节拍值送临时节拍单元,则此时数码管会显示临时节拍单元的节拍值,同时整数位闪烁,表示此时数字键按下会改变整数位值,当有数字键按下则小数位立刻开始闪烁,此时进入设定小数位,当有数字键按下后又会返回到整数位的设定,而按下的键号都会立刻送到临时节拍单元,直到确定键PB0按下,便会将此时临时节拍单元存的值送回确定节拍单元中。这便是新的节拍。而在设定完成后回到基本工作模式也要对标度转换的计数单元赋值为1.无操作模块子程序主要是执行计时单元与设定时间相一致时返回基本工作模式,而具体判断有否按键按下则主要在键盘扫描与PB口开关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 显示 电压表 课程设计

链接地址:https://www.31ppt.com/p-4147283.html