数字电压表设计(选做)
利用 A/D 转换器得到电压值并显示,实现数字电压表功能。
一、预备知识
当前串行 A/D 转换器的使用越来越广泛,本设计利用TLC549 串行A/D 转
换器转换输入模拟电压,有关TLC549 的详细使用说明见使用手册。
二、设计目的
熟悉 A/D 转换原理,掌握串行A/D、键盘扫描、LED 显示电路的工作原理
及编程方法,提高用户实际应用的能力。
三、设计内容
1、设计键盘、LED 显示、A/D 转换电路的原理图;
2、设计程序流程图;
3、编程调试,利用单片机和TLC549 串行A/D 转换器设计一个数字电压表,
能
够测量0 到5V 之间的直流电压值,并在LED 上显示。
四、参考接线
1、将跳线器插在JP20_2 上,JP21_1 连接左面两脚;
2、连接MON51 仿真模块与键盘显示模块的相应的点,如P1.3和 DAT,P1.6
和CLK,P1.5和CS,P1.4和KEY;
3、连接MON51 仿真模块与串行A/D 模块的相应的点,如P1.0接DAT,P1.1
接CS,P1.2接CLK;
4、IN 接电位器的VW 端,电位器VH 接VCC,VL 接GND,通过调节电
位器来调节输入电压的值。
五、流程图
开始
延时 25ms
复位 HD7279
HD7279闪烁测试
闪烁测试持续 5s
复位 HD7279
采样程序
延时 50ms
将数值转换成 0~5V程序
显示转换电压值
六、参考代码
;*************************
;RAM定义
BIT_COUNT DATA 07FH
TIMER DATA 07EH
TIMER1 DATA 07DH
DATA_OUT DATA 021H
DATA_ZH DATA 020H
;*************************
;*************************
;I/O口定义
DAT1 BIT P1.0
CS1 BIT P1.1
CLK1 BIT P1.2
DAT BIT P1.3
KEY BIT P1.4
CS BIT P1.5
CLK BIT P1.6
;*************************
;*************************
;主程序
ORG 0000H
LJMP START
ORG 0100H
START:
MOV SP,#2FH ;定义堆栈
MOV P1,#0AAH ;I/O口初始化
;********************
;延时约25ms
MOV TIMER,#50
START_DELAY: MOV TIMER1,#255
START_DELAY1: DJNZ TIMER1,START_DELAY1
DJNZ TIMER,START_DELAY
;********************
MOV DATA_OUT,#0A4H ;复位指令
LCALL SEND
SETB CS
MOV DATA_OUT,#0BFH ;闪烁测试
LCALL SEND
SETB CS
DEL: MOV R7,#100 ;延时5s
DEL1: MOV R6,#100
DEL2: MOV R5,#244
DEL3: DJNZ R5,DEL3
DJNZ R6,DEL2
DJNZ R7,DEL1
MOV DATA_OUT,#0A4H ;复位指令
LCALL SEND
SETB CS
MAIN:
LCALL CAIYANG ;采样程序
;********************
;延时约50ms
MOV R7,#200
DEL4: MOV R6,#125
DEL5: DJNZ R6,DEL5
DJNZ R7,DEL4
;********************
;********************
;转换电压值
MOV B,#51
DIV AB
MOV R0,A
MOV A,B
CJNE A,#50,GOON
DEC A
GOON:
MOV B,#5
DIV AB
MOV R1,A
;********************
;********************
;显示转换电压值
MOV DATA_ZH,R0
SETB C
MOV DATA_ZH.7,C
MOV R0,DATA_ZH
MOV DATA_OUT,#081H ;下载数据且译码(第二位)
LCALL SEND
MOV DATA_OUT,R0
LCALL SEND
MOV DATA_OUT,#080H ;下载数据且译码(第一位)
LCALL SEND
MOV DATA_OUT,R1
LCALL SEND
SETB CS
;********************
LJMP MAIN
;********************
;采样程序
CAIYANG:
SETB CS1
CLR CLK1
CLR CS1
SETB DAT1
MOV BIT_COUNT,#8
LCALL SHORT_DELAY
CAIYANG_LOOP:
SETB CLK1
LCALL SHORT_DELAY
MOV C,DAT1
RLC A
CLR CLK1
LCALL SHORT_DELAY
DJNZ BIT_COUNT,CAIYANG_LOOP
SETB CS1
RET
;********************
;********************
;发送一个数据到HD7279
SEND:
MOV BIT_COUNT,#8
CLR CS
LCALL LONG_DELAY
SEND_LOOP:
MOV C,DATA_OUT.7
MOV DAT,C
SETB CLK
MOV A,DATA_OUT
RL A
MOV DATA_OUT,A
LCALL SHORT_DELAY
CLR CLK
LCALL SHORT_DELAY
DJNZ BIT_COUNT,SEND_LOOP
CLR DAT
RET
;********************
;********************
;延时子程序
LONG_DELAY: MOV TIMER,#25 ;约50us
DELAY_LOOP: DJNZ TIMER,DELAY_LOOP
RET
SHORT_DELAY: MOV TIMER,#4 ;约8us
DELAY_LP: DJNZ TIMER,DELAY_LP
RET
;********************
END
;*************************
数字电压表设计(选做)
本文档为【数字电压表设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。