《综合创新训练》研究报告(论文)-单片机实现数字电压表的训练.doc

上传人:小小飞 文档编号:3905009 上传时间:2019-10-10 格式:DOC 页数:37 大小:2.40MB
返回 下载 相关 举报
《综合创新训练》研究报告(论文)-单片机实现数字电压表的训练.doc_第1页
第1页 / 共37页
《综合创新训练》研究报告(论文)-单片机实现数字电压表的训练.doc_第2页
第2页 / 共37页
《综合创新训练》研究报告(论文)-单片机实现数字电压表的训练.doc_第3页
第3页 / 共37页
《综合创新训练》研究报告(论文)-单片机实现数字电压表的训练.doc_第4页
第4页 / 共37页
《综合创新训练》研究报告(论文)-单片机实现数字电压表的训练.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《《综合创新训练》研究报告(论文)-单片机实现数字电压表的训练.doc》由会员分享,可在线阅读,更多相关《《综合创新训练》研究报告(论文)-单片机实现数字电压表的训练.doc(37页珍藏版)》请在三一文库上搜索。

1、 单位代码单位代码 10006 学学 号号 38153219 分分 类类 号号 密密 级级 综综合合创创新新训训练练研研究究报报告告 研究题目:研究题目: 单片机实现数字电压表的训练单片机实现数字电压表的训练 完成人: 余武江 院(系):宇航学院 指导教师: 2010 年 12 月 21 日 工程训练中心 综合创新训练研究报告数字电压表的训练 1 目录目录 一一试验题目试验题目 2 二二.实验要求与任务实验要求与任务2 三三.实验箱、仿真器的用途及使用的简单说明实验箱、仿真器的用途及使用的简单说明.2 四四.实验电路及说明(硬件设计)实验电路及说明(硬件设计)3 1.硬件设计方案3 2.825

2、5 的基本工作原理 .4 3.8255 与单片机的连接及电路译码 .6 4.键盘与 8255 的连接方式 6 5.LED 的显示方法及其与 8255 的连接 .7 6.时钟系统的工作原理及时钟功能的实现方法.9 7.A/D 的工作原理.10 五五.程序编制及说明。程序编制及说明。 11 1.主程序设计及说明11 2.各子程序设计及说明13 1)校时子程序.13 2)时钟显示子程序.14 3)电压测量子程序.15 4)定时器 1 中断服务程序.16 5)欢迎界面及班号显示子程序:.17 六六.程序调试及问题、解决方法程序调试及问题、解决方法 .18 七七.实验结果及结果分析实验结果及结果分析.1

3、9 八八.结论及创新点结论及创新点20 九九.简易数字电压表(数字频率表)操作手册简易数字电压表(数字频率表)操作手册.21 附录:全部程序附录:全部程序22 综合创新训练研究报告数字电压表的训练 2 一一. 试验题目试验题目 80C196 单片机实验箱数字电压表训练程序设计与调试 二二. 实验要求与任务实验要求与任务 1、熟悉实验箱上键盘、LED 显示器与单片机的电路连接 2、熟悉仿真器的作用及文件建立、现场调试等软件的使用 3、熟悉 80C196 的汇编语言程序的编制、编译与调试。 4、完成实验箱键盘上 LED 显示器程序的设计与调试 5、利用 80C196 的定时器完成时钟程序的调试。

4、6、完成双通道数字电压表(含时钟功能)程序的编制与调试。(要求实现键 盘的判别及键盘数据的显示,A/D 数据采集,数字电压表的实现,要实现 程序的主、从结构,程序调试完成后全速运行中可以任意键入键盘数据, 并实时刷新显示数据,程序运行过程中不得死机)。通过键盘实现时钟的校 时(校时要求实现:小时、分、秒) 、电压采集通道的转换、不同功能(时 钟与电压表)的切换运行,键盘功能利用键盘已经提供的 09 数字键和 AF 功能键自行定义。 7、编制简易操作手册 三三. 实验箱、仿真器的用途及使用的简单说明实验箱、仿真器的用途及使用的简单说明 实验箱是集单片机应用技术、在线调试、在线仿真等功能于一体的开

5、发 系统。 仿真器是用以实现硬件仿真的硬件。仿真器可以实现替代单片机对程序 的运行进行控制,例如单步,全速,查看资源断点等。尽管软件仿真具有无 需搭建硬件电路就可以对程序进行验证的优点,但无法完全反映真实硬件的 运行状况,因此还要通过硬件仿真来完成最终的设计。 目前的开发过程中 硬件仿真是必需的。 本实验系统包括 AEDK196W 仿真机和 EXP96 实验箱。实验箱自带电源, 仿真机 AEDK196W 由仿真机主机、仿真电缆和仿真插头三部分组成,可以通 过 EXP96 实验箱上的 XC1 两芯电源插座供电。进行实验时,实验箱需要和仿 真机配合使用。仿真机通过仿真电缆接至实验箱上的仿真插座。具

6、体参看图一。 综合创新训练研究报告数字电压表的训练 3 四四. 实验电路及说明(硬件设计)实验电路及说明(硬件设计) 1.硬件设计方案硬件设计方案 实验箱配备了丰富的硬件电路,和详细的实验内容,同时模块化、 积木化 的结构支持用户自己开发实验,以满足 INTEL 96 系列单片机教学培训需要。 硬件的配备使本实验系统可以工作在二种状态,使用跳线 XB3(位于实验 箱右下部)切换: (1)短路套 XB3 打在右端(VCC) ,实验机上 64K 程序空间完全供用户 使用。 (2)短路套 XB3 打在左端(GND) ,实验机上提供 16KRAM,3/4K I/O,37.25K ROM 空间。 实验箱

7、电路中各接口芯片占用单片机地址如下: ROM(27512)空间地址: 00000BCFFH RAM(6264) 空间地址: 0C0000FFFFH D/A 转换芯片 0832 片选地址:0BD000BDFFH 并行扩展芯片 244 : 0BE000BEFFH 并行扩展芯片 8255 的 PA 口地址: 0BF00H 并行扩展芯片 8255 的 PB 口地址: 0BF02H 并行扩展芯片 8255 的 PC 口地址: 0BF04H 综合创新训练研究报告数字电压表的训练 4 并行扩展芯片 8255 的控制寄存器地址:0BF06H 仿真器中晶体振荡器参数: 晶体振荡器:11.0592MHz 仿真器在

8、进行系统初始参数设置时,按以下数据进行设置: 1、CPU 类型:缺省(80C196KB) 总线宽度:8 位 ALE 管脚:ALE 2、仿真器:AEDK96W 3、通讯:COM1 2.8255 的基本工作原理的基本工作原理 8255 在单片机应用系统中被广泛用于可编程外部 I/O 扩展接口使用 其构成(见图 2): 数据总线缓冲(驱动)器:用于和单片机的数据总线(D-BUS)连接, 1 以实现单片机与 8255 芯片的数据传送。 并行 I/O 接口:8 位的 ABC 口。这三个 8 位 I/O 接口功能通过编程决 2 定其输入/输出功能 读/写控制逻辑,用于管理 8255 所有数据、控制字、状态

9、字的传送。 3 :片选控制, =0: 8255 选通 :读控制, =0:允许单片机从 8255 读取各口数据或状态字 :写控制, =0:允许单片机向 8255 各口写入数据或向控制寄 存器写入命令字 A0 A1 口地址选择 0 0 选通寄存器 A(A 口) 0 1 选通寄存器 B(B 口) 1 0 选通寄存器 C(C 口) 1 1 控制寄存器(控制口) RESET:复位引脚,RESET=1 8255 复位,控制寄存器清零,所有接口 综合创新训练研究报告数字电压表的训练 5 (A、B、C)被设置为输入方式 图 2 8255 芯片组成结构图 图 3 8255 的控制字 综合创新训练研究报告数字电压

10、表的训练 6 图 4 8255 芯片与 CPU 的连接 3.8255 与单片机的连接及电路译码与单片机的连接及电路译码 8255 占用 CPU 的地址如下 : PA8255 EQU 0BF00H ;8255 的 PA 口地址 PB8255 EQU 0BF02H ;8255 的 PB 口地址 PC8255 EQU 0BF04H ;8255 的 PC 口地址 C8255 EQU 0BF06H ;8255 的控制字地址 4.键盘与键盘与 8255 的连接方式的连接方式 实验箱上由 16 个键构成了键盘,该 16 个键分别与 8255 的 PB 口及 PC0、PC1 连接。其中, PB 口用于读入键值

11、,称为行线,PC 口用于输出键盘 扫描信号,称为列线。 (见图 6) 当 PC0、PC1 输出均为 1,键盘封锁 当 PC0、PC1 分别为 0,则可扫描键盘。通过 PB 口读入数据,判断所操作 综合创新训练研究报告数字电压表的训练 7 的键值。 PC0=0 PC1=1 PB0PB7 分别为 0,表示所操作的键码为 07 键 PC0=1 PC1=0 PB0PB7 分别为 0,表示所操作的键码为 8F 键 键码组合关系如下: 00000010b 11111110B ( 02H FEH) 0 00000010b 11111101B ( 02H FDH) 1 00000010b 11111011B

12、( 02H FBH) 2 00000010b 11110111B ( 02H F7H) 3 00000010b 11101111B ( 02H EFH) 4 00000010b 11011111B ( 02H DFH) 5 00000010b 10111111B ( 02H BFH) 6 00000010b 01111111B ( 02H 7FH) 7 00000001b 11111110B ( 01H FEH) 8 00000001b 11111101B ( 01H FDH) 9 00000001b 11111011B ( 01H FBH) A 00000001b 11110111B ( 0

13、1H F7H) B 00000001b 11101111B ( 01H EFH) C 00000001b 11011111B ( 01H DFH) D 00000001b 10111111B ( 01H BFH) E 00000001b 01111111B ( 01H 7FH) F 5.LED 的显示方法及其与的显示方法及其与 8255 的连接的连接 试验箱采用共阴 LED 数码管: 图 5 七段 LED 显示块 综合创新训练研究报告数字电压表的训练 8 如图 6 所示,8255 芯片的 PA 口与各个 LED 段码引脚连接(PA0PA7 连 接 LED dpa ) ,由此产生的数码管字形表为

14、: 显示字符 0 1 2 3 4 5 6 7 段选码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 显示字符 8 9 A B C D E F 段选码 7FH 6FH 77H 7CH 39H 5EH 79H 71H 综合创新训练研究报告数字电压表的训练 9 6.时钟系统的工作原理及时钟功能的实现方法时钟系统的工作原理及时钟功能的实现方法 (1)基本功能工作原理: 系统利用计数器 1 溢出中断实现时钟功能。 计数器 1 的计数脉冲来自对 Ts 进行八分频的电路。计数器在系统上电 后便自由运行,当计数器计满产生溢出后,IOS1.5 置“1” ( IOS1.5 =1) , 读 IOS

15、1.5 一次,IOS1 与时间有关的各个标志清“0” ,同时溢出信号还可申 请定时器中断。 定时器 1 溢出中断参数计算如下: 计算每次溢出所需时间 T=(2*8/11.059)*65536 us=94.8165ms 计算每秒的溢出次数 N=1000ms/94.8165ms=10.55 程序中,定义一个名为 t_buf 的六字节十进制时钟数据存储区,一个 名为 dis_buf 的 8 字节显示缓存区,s_buf、m_buf、h_buf 分别为秒、分、 时二进制数据存放单元。程序运行时,定时器 1 每中断 11 次,使秒单元加 1;秒单元每增加 60 次,使分单元加 1,同时秒单元清零;分单元每

16、增加 60 次,使时单元加 1,同时分单元清零;时单元每增加 24 次(12 次)清零。 每次中断,均将 s_buf、m_buf、h_buf 的值经过二十进制转换为十进制, 存入 t_buf 中。将 t_buf 的值依次取出,在 table 中寻找其相应的显示代码, 并送入 dis_buf 中,再经过显示移位,送至 8255A 口,再通过对 8255C 口 的动态扫描实现时钟的动态显示。 (2)校时原理: 图 6 键盘及 LED 显示管与 8255 的连接 图 7 计数器 1 原理图 综合创新训练研究报告数字电压表的训练 10 校时用到 6 键及 7 键。6 键实现时钟秒单元、分单元、时单元的

17、转换, 7 键实现对应单元具体值的调整。在主程序中不断扫描是否按下 6 键,若按 下 6 键,进入校时子程序,关中断。此时对应秒单元的调整,6 键继续按下 1、2、3 次,分别对应调整分单元、调整时单元以及跳出校时,开中断显示 时钟。在相应调整单元每按下 7 键一次,相应单元二进制寄存器 (s_buf,m_buf,h_buf)加 1。 7.A/D 的工作原理的工作原理 将被测的外部模拟信号转换为计算机所能接受的数字量。 (如图 8) 8098 集成 A/D 转换器是 8 通道 10 位逐次逼近 A/D 转换器由一个 8 通 道的模拟多路转换开关、一个采样/保持电路、一个 10 位逐次逼近型 A

18、/D 转换器、A/D 命令寄存器、A/D 结果寄存器等组成。在 80196 中,该 A/D 转换器还可以选择 8 位与 10 位精度两档。 A/D 转换器的模入通道与 P0.0P0.7 共享。A/D 转换可以通过 HSO 命 令选择 F、通道或将 A/D 命令寄存器 AD_COMMAND(02H)的 GO 位置 1 的办法来启动。 在实验中,程序将通道采集的十六进制转化为以 mV 为单位的十进制 数值。原理为:标准电压 Vref(4710mv)经过内部的 256 个梯形电阻网络分 压(20mv) ,再经过电容分压至 1024 个标准电压( 4.6mv)。 启动 A/D 转换后,经过 88 个状

19、态周期(Ts),完成转换并将转换码存入 AD 结果单元。 AD 的分辨率=Vref/1023 被测电压计算: Vin= AD 的分辨率*N =(Vref/1023)*N(N 为从 A/D 结果寄存器中取出 的结果) 转换时间:88Ts 图 8 A/D 转换原理图 综合创新训练研究报告数字电压表的训练 11 五五. 程序编制及说明程序编制及说明。 1.主程序设计及说明主程序设计及说明 功能说明: 时钟程序:进行初始化,开放定时器 1 溢出中断,运行欢迎界面 (HELLO)子程序,并提供功能键的扫描。当 C 键按下时,运行 24 小时 制时钟子程序;当 6 键按下,进入时钟设置子程序,设置完需退出

20、校时子 程序;当 1 或 2 键按下时,运行电压测量子程序,分别测量 ACH6 和 ACH7 两个通道电压值,此时若按下 3 键,则实现 ACH6 和 ACH7 通道的 巡检,交替显示两通道的电压值;当 0 键按下时,显示班号 381532。 流程图:(见下页) 综合创新训练研究报告数字电压表的训练 12 初初始始化化 键键盘盘扫扫描描 是是否否有有键键按按下下 是是 是是0 0按按下下吗吗? M M= =1 1, ,N N= =1 1, ,N NN N= =0 0 M M= =0 0, ,N N= =0 0? ?M M= =0 0, ,N N= =1 1? ?M M= =1 1, ,N N=

21、 =0 0? ? 是是 否否否否否否否否 调调用用欢欢迎迎界界面面子子程程序序调调用用电电压压测测量量子子程程序序调调用用时时钟钟显显示示程程序序调调用用班班号号显显示示程程序序 是是是是是是 是是1 1, ,2 2按按下下 吗吗? 是是C C按按下下吗吗?是是6 6按按下下吗吗? 否否 否否 否否 M M= =0 0, ,N N= =1 1, ,N NN N= =0 0 M M= =1 1, ,N N= =0 0, ,N NN N= =0 0 跳跳至至调调整整子子程程序序 是是 是是 是是 M M= =1 1,N N= =0 0, ,N NN N= =0 0 否否 设设置置堆堆栈栈指指针针

22、内内存存单单元元清清零零;标标志志位位M,N,NN清清零零 8 82 25 55 5初初始始化化 主主程程序序 是是3 3按按下下吗吗? 否否 M M= =0 0, ,N N= =1 1, ,N NN N= =1 1 综合创新训练研究报告数字电压表的训练 13 2.各子程序设计及说明各子程序设计及说明 1) 校时子程序 校时子程序功能说明:校时过程中中断关闭,通过按键 6 进行选位, 通过按键 7 对所选位进行加 1 调整。第三次按 6 键时确认修改,重新开中 断,在输入数值的基础上运行时钟程序。 校时程序 是否有键输入 是6按下吗?是7按下吗? 调用时钟显示子 程序 关中断,令X=1 X=X

23、+1 X=4? 跳回主程序 X=1? 秒单元二进制寄 存器自加1 X=2? 分单元二进制寄 存器自加1 时单元二进制寄 存器自加1 否 是 是否 否 否 否 是 综合创新训练研究报告数字电压表的训练 14 2) 时钟显示子程序 功能说明:将时钟十进制数值送入显示缓冲区,寻找各自相应的显示 代码,经过显示移位,通过对 8255A 口和 C 口的控制,实现动态显示时钟 基本功能。 时时钟钟显显示示 子子程程序序 将将二二进进制制时时、分分、秒秒单单元元 ( (S S_ _B BU UF F, ,M M_ _B BU UF F, ,H H_ _B BU UF F) )的的数数转转换换成成 B BC

24、CD D码码 将将T T_ _B BU UF F中中的的数数通通过过t ta ab bl le e列列 表表一一一一对对应应,存存入入缓缓存存区区 D D_ _B BU UF F中中 用用8 82 25 55 5动动态态显显示示显显示示代代码码存存 放放缓缓冲冲区区中中的的内内容容 将将相相应应B BC CD D码码送送至至十十进进制制数数 时时、分分、秒秒单单元元T T_ _B BU UF F 将将D D_ _B BU UF F中中的的数数通通过过 移移位位(57 7、4 46 6、3 35 5、2 24 4)送送至至D DI IS S_ _B BU UF F 中中,同同时时送送“”显显示示

25、代代码码到到其其第第2、5位位 R RE ET T 综合创新训练研究报告数字电压表的训练 15 3) 电压测量子程序 功能说明:将 A/D 采集到的电压数值显示在低五位的显示器,同时判 定所采集的通道号,显示在最高位显示器上。 流程图:(见下页) 电电压压测测量量 子子程程序序 开开A AD D转转换换,选选择择 按按键键相相应应通通道道 N NN N= =1 1? A AD D转转换换是是否否完完 成成 跳跳至至主主程程序序 定定时时改改变变A AD D转转换换 通通道道实实现现巡巡检检功功 能能 调调用用电电压压显显示示子子 程程序序 读读A AD D转转换换结结果果 处处理理转转换换结结

26、果果送送 至至H HS SI IR RE ES S 是是 否否 否否 是是 综合创新训练研究报告数字电压表的训练 16 4) 定时器 1 中断服务程序 功能说明:定时器 1 每 94.8165ms 中断一次,每中断 11 次秒单元加 1,秒 单元每增加 60 次分单元加 1,分单元每增加 60 次时单元加 1,时单元分增加 24 次清零。从而实现时钟基本功能 。 定定时时器器1 1中中断断 服服务务程程序序 保保护护现现场场 重重装装定定时时器器1命命 令令、数数据据 时时钟钟计计数数器器减减 1=0? 计计数数器器重重赋赋初初值值 秒秒单单元元加加1 =60? 秒秒单单元元清清0 分分单单元

27、元加加1 =60? 分分单单元元清清0 时时单单元元加加1 1 =24? 时时、分分、秒秒单单元元 清清零零 恢恢复复现现场场 秒秒单单元元数数据据 二二十十转转换换 分分单单元元数数据据 二二十十转转换换 时时单单元元数数据据 二二十十转转换换 中中断断返返回回 是是 否否 是是 是是 是是 否否 否否 否否 综合创新训练研究报告数字电压表的训练 17 5) 欢迎界面及班号显示子程序: 功能说明:当单片机最初运行时显示“HELLO”欢迎界面,当按下 0 键时 显示班号 381532。 欢欢迎迎界界面面 子子程程序序 将将字字符符H HE EL LL LO O的的显显示示代代 码码送送入入显显

28、示示缓缓存存区区 选选择择8 82 25 55 5初初始始显显示示 位位 初初始始化化8 82 25 55 5 循循环环扫扫描描H HE EL LL LO O显显示示代代码码的的每每一一 位位,同同时时逐逐位位改改变变显显示示位位 8 82 25 55 5初初始始显显示示位位加加1 1 跳跳回回主主程程序序 显显示示班班号号 子子程程序序 将将字字符符3 38 81 15 53 32 2的的显显示示代代 码码送送入入显显示示缓缓存存区区 选选择择8 82 25 55 5初初始始显显示示 位位 初初始始化化8 82 25 55 5 循循环环扫扫描描3 38 81 15 53 32 2显显示示代代

29、码码的的每每 一一位位,同同时时逐逐位位改改变变显显示示位位 8 82 25 55 5初初始始显显示示位位加加1 1 跳跳回回主主程程序序 综合创新训练研究报告数字电压表的训练 18 六六. 程序调试及问题、解决方法程序调试及问题、解决方法 1.显示子程序调试问题分析:显示子程序调试问题分析: (1) 在 KEY_LED 子程序中,若延时过短,显示亮度高,但是数码无法辨 认,无法读数;若延时过长,显示亮度低,闪烁严重,显示不清晰。 我们经过反复的调整,找到了一个合适的延时时间,使显示码清晰可 辨,而且稳定,亮度适宜。 (2) 在校时子程序中,延时不仅影响显示,而且,将影响输入值的采集。 延时过

30、短,键盘扫描过快,一次可能输入几位;延时过长扫描过慢, 需按下键较长时间才能响应。所以我们在每次大循环当中,利用多次 调用显示子程序,使显示清晰,同时由于显示子程序占用了一次大循 环的大部分时间,键盘扫描的时间间隔也变得更加适宜,可谓是一箭 双雕! (3) 由于 A/D 转换过快,电压采集值也变化很快,造成电压的低位显示 不稳定,处于不断改变的状态,可以适当增加延时时间或取平均值, 最后多调用显示程序,这样既保证了稳定性,又保证了显示亮度。 2.欢迎界面及班号显示问题分析:欢迎界面及班号显示问题分析: (1) 要实现 HELLO 及 381532 两个代码在数码管上的循环移位显示的动 态效果,

31、就是要实现数码管位选和数码管段选的同时变化。这是我们 亟待解决的技术问题。 (2) 为此我们先将要显示的字符所对应的显示代码存放在显示缓存区中, 然后依次将显示缓存区中的代码送至 8255A 端口,同时将 8255 位选 即 C 端口逐次加上 20H,以实现移位,这样就实现了代码的一次扫描 显示。 (3) 当再次扫描时,我们将位选的初始位在上一次的基础上右移一位,再 次扫描显示缓存区中的内容。周而复始,即可实现 HELLO 及 381532 的动态移位显示。 3.电压巡检子程序中的问题分析:电压巡检子程序中的问题分析: (1) 为实现电压巡检功能,需定时交替扫描 ach6 与 ach7 两个通

32、道的电压 值,这就要求定时改变 A/D 通道,即改变 A/D 通道选择寄存器的值, 同时在改变显示的通道号。 (2) 我们通过设置巡检标志寄存器 NN,在未开启巡检功能时 NN=0,而开 启后 NN=1。在主程序中,当检测到 NN=1 时,则显示某一通道一定 时间后切换到另一通道,如此往复。 综合创新训练研究报告数字电压表的训练 19 七七. 实验结果及结果分析实验结果及结果分析 1.标准数据与测量数据表(电压表):标准数据与测量数据表(电压表): 测量电压误差 序号 标准电压 (mv) ACH6ACH7ACH6ACH7 备注 100000最小测量值 2172151161-12.21%-6.4

33、0% 3916896906-2.18%-1.09% 4149814791489-1.27%-0.60% 5211020922107-0.85%-0.14% 6260025772592-0.88%-0.31% 7308030473062-1.07%-0.58% 8356035323547-0.79%-0.37% 9409040674086-0.56%-0.10% 104710472347330.28%0.49%最大测量值 2.误差分析:误差分析: 整体上看,电压较低时,误差相对较大,电压较高时,误差相对较小, 测量精度较高。 误差来源主要有三方面,首先是系统误差,这主要由 A/D 转换自身的 误

34、差决定,无法消除;其次是由 A/D 基准电压不是标准的 5.12V 所致,若 输入为 5.12V,则输入电压计算公式为:Vin= 5120/1023*N(N 为从 A/D 结 果寄存器中取出的结果) ,理论 A/D 的分辨率约为 5mv,但若实际的 A/D 参考电压与标准值相差较大时就会带来较大的误差,这一误差可通过测量 真实的参考电压,求得实际的分辨率来提高精度;最后一点是测量仪器 (数字电压表)本身存在误差,这一误差也无法消除。 最后我们还通过更改不同的分辨率来测量输入电压,再将其与实验测量 值进行比较和校正,从而寻找到最佳的分辨率。 综合创新训练研究报告数字电压表的训练 20 八八. 结

35、论及创新点结论及创新点 1.课题完成情况课题完成情况 我们圆满完成了要求的所有任务,并且加入了要求之外的一些功能, 同时还对整个系统进行了多次改进和优化,用较少数目的按键实现了所有 功能,并且各按键功能独立,互不干扰,这样既提高了按键的利用率,又 有利于系统的进一步扩展。除此之外,我们还编写了多位数输入右移显示 的小程序。 2.课题创新点或新思路课题创新点或新思路 (1) 程序的欢迎界面 (2) 电压的双通道独立测量和巡检 (3) 校时的同步显示调整 (4) 各功能键相互独立,互不干扰 (5) 按键数目少,键的利用率高 3.目前存在的问题及解决的方案目前存在的问题及解决的方案 存在问题: (1

36、) 校准时间时还不能很直观的看出是对哪个单元进行更改 (2) 电压显示尚不够稳定,波动较大 解决方案: (1) 在调整相应单元时,相应单元闪烁 (2) 取多次电压值的平均值 1.收获与体会收获与体会 经过将近一个学期的学习,我们的程序终于臻于完善。作为第一次接 触单片机的实际应用,我们磕磕绊绊地走过来,经历了很多很多的坎坎坷 坷,从对单片机的一无所知到似乎已经开始入门,我们克服很多困难,也 因此收获巨大。 由于大二的时候学习了足够多的数字电路知识,我们本学期也同时学 习微机原理,所以理解单片机的理论知识并不太难,而由理论进入编程, 用了太长的时间。起初的几个周,我们主要锻炼一些小程序,对比着实

37、验 指导书,我们从第一个实验做起,一点一点摸索,当又一个小程序成功写 出,当又一个流程图从手中画出,当实验目的成功被达到,我们都被这一 个一个小小的胜利鼓舞。第一个实验程序是最艰辛的,就像所有的事情, 第一步总是最难的,而当我们做到时,后面的就容易了很多。 编程的时候,首先要把思路认清。在我们编写校时子程序的时候,由 综合创新训练研究报告数字电压表的训练 21 于刚开始没有将时钟程序的原理弄清楚,白费了一上午的时间,后来仔细 地学习了程序原理,将思路弄清楚,画出大致流程图,程序很快就出来了。 最重要的是耐心和细心。在编写电压程序的时候,我们决定采用中断 法。程序的草稿很快出来了,但运行后显示数

38、值总不能随外部电压动态变 化,这个问题折磨了我们两天,就在筋疲力尽就要放弃时,忽然发现进入 中断后没有 PUSHF修改之后,问题迎刃而解。 我在期间得到的最大教训是:有一些细节的东西必须注意到,否则可 能扰乱整个程序。例如:地址的存放占据一个字的空间;如果 A/D 中服程 序如果有 PUSHF,那么同时也关闭了软件定时器的中断;调用子程序 (lcall 或 scall)必须有 ret 和它配套;堆栈时注意“先进后出”这些都 让我们或多或少的吃了点亏,也因此记忆深刻,牢牢掌握。 团队精神发挥着很大的作用。尽管大家原来都没有学过,但一起来摸 索,一方面可以想得更详细,更周到,可以产生更多的想法和思

39、路;一方 面也能相互鼓励,尤其在检查程序的时候,一个人做很容易有挫败感。 不管怎么说,我们最终实现了程序要求的所有功能,可谓圆满完成任 务。这次学习经历使我进一步接触了实践操作,更为以后更深层次的操作 打下了基础。虽然还有很多路要有,但我更有自信。 感谢陈老师耐心的教导,深入浅出的教学使我能抓住重点,在我们程 序毫无头绪时给予关键的指点。 九九. 简易数字电压表(数字频率表)操作手册简易数字电压表(数字频率表)操作手册 运行程序后,显示欢迎界面“HELLO” 。 说明 按键 功能备注 0按下后动态移位显示班号 381532 1按下后显示 ach6 通道的输入电压值 2按下后显示 ach7 通道

40、的输入电压值 3按下后实现 ach6 与 ach7 双通道巡检 6 按下后进入校时环节,此时选通秒单元,每按 下 7 键一次,秒单元加一;再次按下 6 键 1、2、3 次分别对应选通分单元、选通时单元、 返回时钟显示,7 键的功能同上。 c按下后显示时间 除 7 键外各按 键功能独立,且可 实现任意功能间的 切换(校时环节需 先完成时间设置) , 时钟可由按下 c 键 或通过校时开启, 一旦开启便一直运 行。 综合创新训练研究报告数字电压表的训练 22 附录:全部程序附录:全部程序 CPU 80C196KB AX EQU 20H AL EQU 20H AH EQU 21H BX EQU 22H

41、 BL EQU 22H BH EQU 23H CX EQU 24H CL EQU 24H CH EQU 25H DX EQU 26H DL EQU 26H DH EQU 27H EX EQU 28H EL EQU 28H EH EQU 29H FX EQU 2AH FL EQU 2AH FH EQU 2BH GX EQU 5AH GL EQU GX GH EQU GX+1 HX EQU 5CH HL EQU HX HH EQU HX+1 IX EQU 5EH IL EQU IX IH EQU IX+1 LX EQU 60H LL EQU LX LH EQU LX+1 KX EQU 62H KL

42、 EQU KX KH EQU KX+1 COUNT3 EQU 6AH ;通用计数器 3 COUNT4 EQU 6BH ;通用计数器 4 综合创新训练研究报告数字电压表的训练 23 T_COUNT EQU 6CH ;定时计数器 T_VT EQU 11 ;T1“1“秒=11 DIS_BUF_P EQU 70H ;显示代码存放缓冲区 D_BUF EQU 80H T_BUF EQU 8AH S_BUF EQU 90H ;二进制数秒单元 M_BUF EQU 91H ;二进制数分单元 H_BUF EQU 92H;二进制数时单元 DT EQU4CH;延时系数 BCDEQU 0C00EH;BCD 码存放地址

43、TABLEEQU 0C014H;段码存放地址 HSIRES EQU 0C00AH ;AD 计算结果(二进制) HSIRESHEQU 0C00CH PA8255EQU 0BF00H;8255 的 PA 口地址 PB8255EQU 0BF02H;8255 的 PB 口地址 PC8255EQU 0BF04H;8255 的 PC 口地址 C8255 EQU0BF06H;8255 的控制字地址 ;*变量* COUNT2EQU 30H ADSELEQU 50H;AD 转换通道选择变量 LEDSELEQU4FH;LED 扫描显示位选变量 CHANNAL EQU 4BH;显示通道号 TSPEQU48H;TSP

44、 地址不能为 4AH SP1EQU 46H;段码查找时的段码地址偏移量 ADKEYEQU2CH;AD 转换开关标志 DDTT EQU 32H NEQU 34H M EQU 35H XEQU36H YEQU37H ZEQU38H ZZEQU39H MMEQU40H NNEQU42H ORG 2000H ;定时器中断向量 DW 2800H ;*初始化* ORG2080H LDSP,#0FFH;设堆栈指针首地址 LDAX,#C8255;8255 初始化. 综合创新训练研究报告数字电压表的训练 24 LDBBL,#82H;A,B,C 口均工作在方式 0 STBBL,AX;写 8255 控制字 LDBC

45、L,#1 STBCL,PC8255 LDCX,#HSIRES;HSIRES 存储区清零 LDDX,#0 LDEX,#0 STDX,CX+ STEX,CX LDBLEDSEL,#0 LDBDDTT,#0 LDBN,#0 LDBM,#0 LDBX,#1 LDBZ,#0 LDNN,#0 LDMM,#0 CLRBADKEY;清 AD 转换开关标志 ;*主程序* MAIN: ADDB ZZ,#1 CMPB ZZ,#0FFH JERESETZ LDBAH,PC8255;读 PC 口状态 XORB AH,#3;PC1,PC0 两位进行异或 STBAH,PC8255;键盘扫描移位 LDBAL,PB8255;读

46、 PB 口状态 CMPB AL,#0FFH;是否有键按下? JENEXT2;否,转到 NEXT2 LDBAL,PB8255;读 PB 口状态 LDBAH,PC8255;读 PC 口状态 ANDB AH,#3;提取键码 CMPAX,#02FDH;是1键按下吗? JEK1;是,转去 K1 CMPAX,#02FBH ;是2键按下吗? JEK2;是,转去 K2 CMPAX,#02F7H;是3键按下吗? JEK3;是,转去 K3 CMPAX,#01EFH;是C键按下吗? JEKCKC;是,转去 KC CMPAX,#02BFH;是6键按下吗 综合创新训练研究报告数字电压表的训练 25 JECLKT;是,转

47、去 CLK_SET CMPAX,#02FEH;是0键按下吗 JEKBKB;是,转去 KB SJMPNEXT2;跳转到 NEXT2 KCKC:LJMPKC KBKB:LJMPKB CLKT: LJMPCLK_SET RESETZ: LDBZ,#0 SJMPMAIN K1:LDNN,#0 LDBM,#0 LDBN,#1 LCALL KEY1;调用 KEY1 子程序 SJMPNEXT2;跳转到 NEXT2 K2:LDNN,#0 LDBM,#0 LDBN,#1 LCALL KEY2;调用 KEY2 子程序 SJMPNEXT2 K3:LDNN,#1 LDBM,#0 LDBN,#1 LCALL KEY1

48、SJMPNEXT2 NEXT2: CMPB N,#1 JNEDIS_PLAY CMPB M,#1 JEDIS_PLAY2;显示 38153219-26 LCALL DISPLAY;调用电压显示子程序 CMPB ADKEY,#1;AD 转换开关标志=1 吗? JNEMAINT;否,跳转到 MAIN CMPNN,#1 JECHANCHA NEXT2_2: LDBAL,AD;是,读 AD 转换结果的低 8 位 JBSAL,3,MAINT;AD 转换完吗?否,跳转到 MAIN LDBAH,ADH;是,读 AD 转换结果的高 8 位 SHRAX,#6;AD 转换结果右移 6 位 MULU AX,#49;计算电压值 综合创新训练研究报告数字电压表的训练 26 CLRBX DIVAX,#10 STAX,HSIRES;电压值存入 HSIRES 存放区 STR0,HSIRESH;HSIRES 存放区的高 16 位为 0 LDBADCOM,ADSEL;再次开动 AD 转换 SJMPMAIN;跳转到 MAIN DIS_PLAY2: SCALL DISPLAY3 SJMPM

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

当前位置:首页 > 其他


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