精品文档-单片机技术及应用项目化教程(郭晓凤)-第5章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
项目五 模/数转换接口及应用
图5-2 复位电路
8
项目五 模/数转换接口及应用
图5-3 时钟电路
9
项目五 模/数转换接口及应用
2) 硬件电路的总体设计 数字电压表硬件电路总体设计如图5-4所示。此电路的工 作原理是:+5 V模拟电压信号通过变阻器VR1分压后,由 ADC0808的IN0通道进入(由于使用的IN0通道,所以ADDA、 ADDB、ADDC均接低电平);经过模/数转换后,产生相应的数 字量经过其输出通道D0~D7传送给AT89C51芯片的P1口, AT89C51负责把接收到的数字量经过数据处理,产生正确的7 段数码管的显示段码传送给四位LED,同时它还通过其四位 I/O口P2.0、P2.1、P2.2、P2.3产生位选信号控制数码管的亮 灭。此外,AT89C51还控制ADC0808的工作。其中,单片机 AT89C51通过定时器中断从P2.4输出方波接到ADC0808的CLOCK, P2.6发正脉冲启动A/D转换,P2.5检测A/D转换是否完成,转 换完成后,P2.7置高,从P1口读取转换结果送给LED显示出来。
A A,#0FH B,R1 A,B
A
MOV R1,A LCALL DISP LCALL DJW DJNZ R3,SB2
POP
DPH
POP
DPL
MOV A,53H
INC A
MOV 53H,A CJNE R0,#00H,28L4
项目五 模/数转换接口及应用
L2: CLR C
MOV A,R2
ADD A,#01H
10
项目五 模/数转换接口及应用
图5-4 硬件电路总体设计
11
项目五 模/数转换接口及应用
简易数字直流电压表的硬件电路已经设计完成,就可以选 取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理, 并仔细地检查修改,直至形成完善的硬件原理图。但要真正实 现电路对电压的测量和显示的功能,还需要有相应的软件配合, 才能达到设计要求。
wk.baidu.com22
项目五 模/数转换接口及应用
表5-1 简易数字电压表与“标准”数字电压表对比测试表
标准电压值/V 0.00 0.50 1.00 1.50 2.00 2.50 3.00 3.50 4.00 4.99
简易电压表测量值/V 0.00 0.51 1.00 1.51 2.00 2.50 3.00 3.50 4.00 5.00
DA A MOV R2,A
LJMP SB1
L3: CLR C
;0.5 V相加溢出后进位
MOV A,R1
ADD A,#01H
DA
A
MOV R1,A
LJMP SB1
29
DISP:
项目五 模/数转换接口及应用
MOV A,R1
;显示电压子程序
SWAP A
ANL A,#0FH
MOV DPTR,#TAB1
MOVC A,@A+DPTR
16
项目五 模/数转换接口及应用
4.系统调试 软件调试的主要任务是排查错误,错误主要包括逻辑和功 能错误,这些错误有些是显性的,而有些是隐性的,可以通过 仿真开发系统发现并逐步改正。Proteus软件可以对基于微控 制器的设计连同所有的周围电子器件一起仿真,用户甚至可以 实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来 对设计进行交互仿真。Proteus支持的微处理芯片包括8051系 列、AVR系列、PIC系列、HC11系列及Z80系列等。Proteus可 以完成单片机系统原理图电路绘制、PCB设计,更为显著的特 点是可以与μVisions3 IDE工具软件结合进行编程仿真调试 [8]。
CLR P3.0
MOV P1,A
LCALL DELAY
SETB P3.0
MOV A,R2
ANL A,#0FH
MOV DPTR,#TAB1
MOVC A,@A+DPTR
30
项目五 模/数转换接口及应用
CLR P3.1
MOV P1,A
LCALL DELAY
SETB P3.1
MOV A,R2
SWAP A
ANL A,#0FH
14
项目五 模/数转换接口及应用
图5-6 A/D转换流程图
15
项目五 模/数转换接口及应用
3) 显示子程序 显示子程序采用动态扫描实现四位数码管的数值显示,在 采用动态扫描显示方式时,要使得LED显示的比较均匀,又有 足够的亮度,需要设置适当的扫描频率,当扫描频率在70 Hz 左右时,能够产生比较好的显示效果,一般可以采用间隔10 ms对LED进行动态扫描一次,每一位LED的显示时间为1 ms。 在本设计中,为了简化硬件设计,主要采用软件定时的方 式,即用定时器0溢出中断功能实现11 μs定时,通过软件延 时程序来实现5 ms的延时。
18
项目五 模/数转换接口及应用
图5-7 输入电压为0 V时LED的显示结果
19
项目五 模/数转换接口及应用
图5-8 输入电压为1.50 V时LED的显示结果
20
项目五 模/数转换接口及应用
图5-9 输入电压为3.50 V时LED的显示结果
21
项目五 模/数转换接口及应用
2) 误差分析 通过以上仿真测量结果可得到简易数字电压表与“标准” 数字电压表对比测试表,如表5-1所示。 由于单片机AT89C51为8位处理器,当输入电压为5.00 V 时,ADC0808输出数据值为255(FFH),因此单片机最高的数值 分辨率为0.0196 V(5/255)。这就决定了电压表的最高分辨率 只能到0.0196 V,从上表可看出,测试电压一般以0.01 V的 幅度变化。
6
项目五 模/数转换接口及应用
时钟电路设计:电路中的器件选择可以通过计算和实验确 定,也可以参考一些典型电路的参数。如图5-3所示时钟电路 中,电容器C1和C2对振荡频率有微调作用,通常的取值范围 是30 pF ± 10 pF,在这个系统中选择了33 pF;石英晶振选 择范围最高可选24 MHz,它决定了单片机电路产生的时钟信 号振荡频率,在本系统中选择的是12 MHz,因而时钟信号的 振荡频率为12 MHz。
程序清单: ORG 0000H SJMP MAIN ORG 0003H LJMP PINT0
24
MAIN:
项目五 模/数转换接口及应用
MOV 50H,#19H MOV 54H,#78H MOV DPTR,#7FF8H MOV 51H,DPH MOV 52H,DPL MOV R0,#04H MOV 53H,#00H MOV R7,#00H SETB EA SETB IT0 SETB EX0
复位电路设计:单片机在启动运行时都需要复位,使CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状 态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特 触发输入。当振荡器起振后,只要该引脚上出现2个机器周期 以上的高电平即可确保使器件复位。复位完成后,如果RST端 继续保持高电平,MCS-51就一直处于复位状态,只有RST恢复 低电平后,单片机才能进入其他工作状态。单片机的复位方式 有上电自动复位和手动复位两种,图5-2是51系列单片机系统 常用的上电复位和手动复位组合电路,只要Vcc上升时间不超 过1 ms,它们都能很好的工作。
2.硬件电路的设计与制作 1) 设计方案 硬件电路设计由6个部分组成:A/D转换电路、AT89C51单 片机、LED显示系统、时钟电路、复位电路以及测量电压输入 电路。硬件电路设计框图如图5-1所示。
4
项目五 模/数转换接口及应用
图5-1 数字电压表系统硬件设计框图
5
项目五 模/数转换接口及应用
绝对误差/V 0.00 0.01 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.01
23
项目五 模/数转换接口及应用
从表5-1可以看出,简易数字电压表测得的值基本上比标 准电压值偏大0~0.01 V,这可以通过校正ADC0808的基准电 压来解决。因为该电压表设计时直接用5 V的供电电源作为电 压,所以电压可能有偏差。当要测量大于5 V的电压时,可在 输入口使用分压电阻,而程序中只要将计算程序的除数进行调 整就可以了。
17
项目五 模/数转换接口及应用
本系统的调试主要以软件为主,其中,系统电路图的绘制 和仿真采用的是Proteus软件,而程序方面,采用的是汇编语 言,用Keil软件产生、Hex文件并通过烧录软件将程序写入单 片机。
1) 显示结果分析 (1) 当IN0口输入电压值为0 V时,显示结果如图5-7所示, 测量误差为0 V。 (2) 当IN0输入电压值为1.50 V时,显示结果如图5-8所 示,测量误差为0.01 V。 (3) 当IN0口输入电压值为3.50 V时,显示结果如图5-9 所示,测量误差为0 V。
MOVX @DPTR,A
;开始A/D转换
LCALL DELAY
;调用延时大于A/D转换的时
间
MOVX A,@DPTR
;取A/D转换后的十六进制数
INC DPTR PUSH DPL
;A/D转换芯片的地址加一 26 ;压入堆栈
L1: 进制的调整
到L2
到L3 SB1:
项目五 模/数转换接口及应用
MOV A,R1
3.应用程序设计 根据模块的划分原则,将该程序划分为初始化模块、A/D 转换子程序和显示子程序,这三个程序模块构成了整个系统软 件的主程序,如图5-5所示。
12
项目五 模/数转换接口及应用
图5-5 数字式直流电压表主程序框图
13
项目五 模/数转换接口及应用
1) 初始化程序 所谓初始化,是对将要用到的MCS-51系列单片机内部部 件或扩展芯片进行初始工作状态设定,初始化子程序的主要工 作是设置定时器的工作模式、初值预置、开中断和打开定时器 等。 2) A/D转换子程序 A/D转换子程序用来控制对输入的模块电压信号的采集测 量,并将对应的数值存入相应的内存单元,其转换流程图如图 5-6所示。
MOVX @DPTR,A
LCALL DELAY
MOVX A,@DPTR MOV R4,A
JZ
SB22
MOV DPTR,#TAB2
MOVC A,@A+DPTR
CLR P3.4
MOV P1,A
LCALL DELAY
SETB P3.4
RET
31
项目五 模/数转换接口及应用
DJW: MOV A,53H
;显示第几
路转换电压子程序
MOV DPTR,#TAB1
MOVC A,@A+DPTR
CLR P3.5
MOV P1,A
2
项目五 模/数转换接口及应用
1.任务要求 (1) 以MCS-51系列单片机为核心器件,组成一个简单的 直流数字电压表。 (2) 采用一路模拟量输入,能够测量0~5 V之间的直流 电压值。 (3) 电压显示用4位一体的LED数码管显示,至少能够显 示两位小数。 (4) 尽量使用较少的元器件。
3
项目五 模/数转换接口及应用
LCALL DELAY
SETB P3.5
RET
INTV: PUSH ACC
;只显示其中一路
中断
PUSH 53H
MOV 53H,#00H
32
CX2:
项目五 模/数转换接口及应用
MOV R1,#00H
MOV R2,#00H
MOV R3,#0FFH
MOV R4,#00H MOV DPH,51H
MOV DPL,52H
项目五 模/数转换接口及应用
项目五 模/数转换接口及应用 任务1 数字电压表的设计 任务2 简易数控电源
1
项目五 模/数转换接口及应用
任务1 数字电压表的设计 知识目标:了解和掌握单片机的外围基本芯片的搭接,掌 握转换模块、数据处理模块及显示模块。 能力目标:A/D转换采用ADC0808对输入的模拟信号进行 转换,控制核心AT89C51再对转换的结果进行运算处理,最后 驱动输出装置LED显示数字电压信号。
;进行十六进制到十
ADD A,50H
DA
A
MOV R1,A
JC
L2
;每次加19 ;如果溢出则跳转
MOV ADD DA A MOV JC
A,R5 A,54H
R5,A L3
;进行0.5 V相加 ;如果溢出则跳转
DJNZ R4,L1 27 ;判断十六进制数是否转换
SB2:
项目五 模/数转换接口及应用
SWAP ANL MOV ADD DA
25
项目五 模/数转换接口及应用
L4:
MOV R1,#00H
;R1存放十六进制转
换成十进制后的低两位
MOV R2,#00H
;R2存放十六进制转换成十
进制后的高两位
MOV R3,#0FFH ;循环显示十进制数
MOV R4,#00H
;存放A/D转换后的十
六进制数
MOV R5,#00H
;存放0.5相加后的数
项目五 模/数转换接口及应用
图5-2 复位电路
8
项目五 模/数转换接口及应用
图5-3 时钟电路
9
项目五 模/数转换接口及应用
2) 硬件电路的总体设计 数字电压表硬件电路总体设计如图5-4所示。此电路的工 作原理是:+5 V模拟电压信号通过变阻器VR1分压后,由 ADC0808的IN0通道进入(由于使用的IN0通道,所以ADDA、 ADDB、ADDC均接低电平);经过模/数转换后,产生相应的数 字量经过其输出通道D0~D7传送给AT89C51芯片的P1口, AT89C51负责把接收到的数字量经过数据处理,产生正确的7 段数码管的显示段码传送给四位LED,同时它还通过其四位 I/O口P2.0、P2.1、P2.2、P2.3产生位选信号控制数码管的亮 灭。此外,AT89C51还控制ADC0808的工作。其中,单片机 AT89C51通过定时器中断从P2.4输出方波接到ADC0808的CLOCK, P2.6发正脉冲启动A/D转换,P2.5检测A/D转换是否完成,转 换完成后,P2.7置高,从P1口读取转换结果送给LED显示出来。
A A,#0FH B,R1 A,B
A
MOV R1,A LCALL DISP LCALL DJW DJNZ R3,SB2
POP
DPH
POP
DPL
MOV A,53H
INC A
MOV 53H,A CJNE R0,#00H,28L4
项目五 模/数转换接口及应用
L2: CLR C
MOV A,R2
ADD A,#01H
10
项目五 模/数转换接口及应用
图5-4 硬件电路总体设计
11
项目五 模/数转换接口及应用
简易数字直流电压表的硬件电路已经设计完成,就可以选 取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理, 并仔细地检查修改,直至形成完善的硬件原理图。但要真正实 现电路对电压的测量和显示的功能,还需要有相应的软件配合, 才能达到设计要求。
wk.baidu.com22
项目五 模/数转换接口及应用
表5-1 简易数字电压表与“标准”数字电压表对比测试表
标准电压值/V 0.00 0.50 1.00 1.50 2.00 2.50 3.00 3.50 4.00 4.99
简易电压表测量值/V 0.00 0.51 1.00 1.51 2.00 2.50 3.00 3.50 4.00 5.00
DA A MOV R2,A
LJMP SB1
L3: CLR C
;0.5 V相加溢出后进位
MOV A,R1
ADD A,#01H
DA
A
MOV R1,A
LJMP SB1
29
DISP:
项目五 模/数转换接口及应用
MOV A,R1
;显示电压子程序
SWAP A
ANL A,#0FH
MOV DPTR,#TAB1
MOVC A,@A+DPTR
16
项目五 模/数转换接口及应用
4.系统调试 软件调试的主要任务是排查错误,错误主要包括逻辑和功 能错误,这些错误有些是显性的,而有些是隐性的,可以通过 仿真开发系统发现并逐步改正。Proteus软件可以对基于微控 制器的设计连同所有的周围电子器件一起仿真,用户甚至可以 实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来 对设计进行交互仿真。Proteus支持的微处理芯片包括8051系 列、AVR系列、PIC系列、HC11系列及Z80系列等。Proteus可 以完成单片机系统原理图电路绘制、PCB设计,更为显著的特 点是可以与μVisions3 IDE工具软件结合进行编程仿真调试 [8]。
CLR P3.0
MOV P1,A
LCALL DELAY
SETB P3.0
MOV A,R2
ANL A,#0FH
MOV DPTR,#TAB1
MOVC A,@A+DPTR
30
项目五 模/数转换接口及应用
CLR P3.1
MOV P1,A
LCALL DELAY
SETB P3.1
MOV A,R2
SWAP A
ANL A,#0FH
14
项目五 模/数转换接口及应用
图5-6 A/D转换流程图
15
项目五 模/数转换接口及应用
3) 显示子程序 显示子程序采用动态扫描实现四位数码管的数值显示,在 采用动态扫描显示方式时,要使得LED显示的比较均匀,又有 足够的亮度,需要设置适当的扫描频率,当扫描频率在70 Hz 左右时,能够产生比较好的显示效果,一般可以采用间隔10 ms对LED进行动态扫描一次,每一位LED的显示时间为1 ms。 在本设计中,为了简化硬件设计,主要采用软件定时的方 式,即用定时器0溢出中断功能实现11 μs定时,通过软件延 时程序来实现5 ms的延时。
18
项目五 模/数转换接口及应用
图5-7 输入电压为0 V时LED的显示结果
19
项目五 模/数转换接口及应用
图5-8 输入电压为1.50 V时LED的显示结果
20
项目五 模/数转换接口及应用
图5-9 输入电压为3.50 V时LED的显示结果
21
项目五 模/数转换接口及应用
2) 误差分析 通过以上仿真测量结果可得到简易数字电压表与“标准” 数字电压表对比测试表,如表5-1所示。 由于单片机AT89C51为8位处理器,当输入电压为5.00 V 时,ADC0808输出数据值为255(FFH),因此单片机最高的数值 分辨率为0.0196 V(5/255)。这就决定了电压表的最高分辨率 只能到0.0196 V,从上表可看出,测试电压一般以0.01 V的 幅度变化。
6
项目五 模/数转换接口及应用
时钟电路设计:电路中的器件选择可以通过计算和实验确 定,也可以参考一些典型电路的参数。如图5-3所示时钟电路 中,电容器C1和C2对振荡频率有微调作用,通常的取值范围 是30 pF ± 10 pF,在这个系统中选择了33 pF;石英晶振选 择范围最高可选24 MHz,它决定了单片机电路产生的时钟信 号振荡频率,在本系统中选择的是12 MHz,因而时钟信号的 振荡频率为12 MHz。
程序清单: ORG 0000H SJMP MAIN ORG 0003H LJMP PINT0
24
MAIN:
项目五 模/数转换接口及应用
MOV 50H,#19H MOV 54H,#78H MOV DPTR,#7FF8H MOV 51H,DPH MOV 52H,DPL MOV R0,#04H MOV 53H,#00H MOV R7,#00H SETB EA SETB IT0 SETB EX0
复位电路设计:单片机在启动运行时都需要复位,使CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状 态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特 触发输入。当振荡器起振后,只要该引脚上出现2个机器周期 以上的高电平即可确保使器件复位。复位完成后,如果RST端 继续保持高电平,MCS-51就一直处于复位状态,只有RST恢复 低电平后,单片机才能进入其他工作状态。单片机的复位方式 有上电自动复位和手动复位两种,图5-2是51系列单片机系统 常用的上电复位和手动复位组合电路,只要Vcc上升时间不超 过1 ms,它们都能很好的工作。
2.硬件电路的设计与制作 1) 设计方案 硬件电路设计由6个部分组成:A/D转换电路、AT89C51单 片机、LED显示系统、时钟电路、复位电路以及测量电压输入 电路。硬件电路设计框图如图5-1所示。
4
项目五 模/数转换接口及应用
图5-1 数字电压表系统硬件设计框图
5
项目五 模/数转换接口及应用
绝对误差/V 0.00 0.01 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.01
23
项目五 模/数转换接口及应用
从表5-1可以看出,简易数字电压表测得的值基本上比标 准电压值偏大0~0.01 V,这可以通过校正ADC0808的基准电 压来解决。因为该电压表设计时直接用5 V的供电电源作为电 压,所以电压可能有偏差。当要测量大于5 V的电压时,可在 输入口使用分压电阻,而程序中只要将计算程序的除数进行调 整就可以了。
17
项目五 模/数转换接口及应用
本系统的调试主要以软件为主,其中,系统电路图的绘制 和仿真采用的是Proteus软件,而程序方面,采用的是汇编语 言,用Keil软件产生、Hex文件并通过烧录软件将程序写入单 片机。
1) 显示结果分析 (1) 当IN0口输入电压值为0 V时,显示结果如图5-7所示, 测量误差为0 V。 (2) 当IN0输入电压值为1.50 V时,显示结果如图5-8所 示,测量误差为0.01 V。 (3) 当IN0口输入电压值为3.50 V时,显示结果如图5-9 所示,测量误差为0 V。
MOVX @DPTR,A
;开始A/D转换
LCALL DELAY
;调用延时大于A/D转换的时
间
MOVX A,@DPTR
;取A/D转换后的十六进制数
INC DPTR PUSH DPL
;A/D转换芯片的地址加一 26 ;压入堆栈
L1: 进制的调整
到L2
到L3 SB1:
项目五 模/数转换接口及应用
MOV A,R1
3.应用程序设计 根据模块的划分原则,将该程序划分为初始化模块、A/D 转换子程序和显示子程序,这三个程序模块构成了整个系统软 件的主程序,如图5-5所示。
12
项目五 模/数转换接口及应用
图5-5 数字式直流电压表主程序框图
13
项目五 模/数转换接口及应用
1) 初始化程序 所谓初始化,是对将要用到的MCS-51系列单片机内部部 件或扩展芯片进行初始工作状态设定,初始化子程序的主要工 作是设置定时器的工作模式、初值预置、开中断和打开定时器 等。 2) A/D转换子程序 A/D转换子程序用来控制对输入的模块电压信号的采集测 量,并将对应的数值存入相应的内存单元,其转换流程图如图 5-6所示。
MOVX @DPTR,A
LCALL DELAY
MOVX A,@DPTR MOV R4,A
JZ
SB22
MOV DPTR,#TAB2
MOVC A,@A+DPTR
CLR P3.4
MOV P1,A
LCALL DELAY
SETB P3.4
RET
31
项目五 模/数转换接口及应用
DJW: MOV A,53H
;显示第几
路转换电压子程序
MOV DPTR,#TAB1
MOVC A,@A+DPTR
CLR P3.5
MOV P1,A
2
项目五 模/数转换接口及应用
1.任务要求 (1) 以MCS-51系列单片机为核心器件,组成一个简单的 直流数字电压表。 (2) 采用一路模拟量输入,能够测量0~5 V之间的直流 电压值。 (3) 电压显示用4位一体的LED数码管显示,至少能够显 示两位小数。 (4) 尽量使用较少的元器件。
3
项目五 模/数转换接口及应用
LCALL DELAY
SETB P3.5
RET
INTV: PUSH ACC
;只显示其中一路
中断
PUSH 53H
MOV 53H,#00H
32
CX2:
项目五 模/数转换接口及应用
MOV R1,#00H
MOV R2,#00H
MOV R3,#0FFH
MOV R4,#00H MOV DPH,51H
MOV DPL,52H
项目五 模/数转换接口及应用
项目五 模/数转换接口及应用 任务1 数字电压表的设计 任务2 简易数控电源
1
项目五 模/数转换接口及应用
任务1 数字电压表的设计 知识目标:了解和掌握单片机的外围基本芯片的搭接,掌 握转换模块、数据处理模块及显示模块。 能力目标:A/D转换采用ADC0808对输入的模拟信号进行 转换,控制核心AT89C51再对转换的结果进行运算处理,最后 驱动输出装置LED显示数字电压信号。
;进行十六进制到十
ADD A,50H
DA
A
MOV R1,A
JC
L2
;每次加19 ;如果溢出则跳转
MOV ADD DA A MOV JC
A,R5 A,54H
R5,A L3
;进行0.5 V相加 ;如果溢出则跳转
DJNZ R4,L1 27 ;判断十六进制数是否转换
SB2:
项目五 模/数转换接口及应用
SWAP ANL MOV ADD DA
25
项目五 模/数转换接口及应用
L4:
MOV R1,#00H
;R1存放十六进制转
换成十进制后的低两位
MOV R2,#00H
;R2存放十六进制转换成十
进制后的高两位
MOV R3,#0FFH ;循环显示十进制数
MOV R4,#00H
;存放A/D转换后的十
六进制数
MOV R5,#00H
;存放0.5相加后的数