综合训练项目三 数字电压表 用c51单片机和ADC0808A/D转换器把输入的模拟电压电流转变成计算机可以识别的数字信息。我们小组这次通过运用所学知识,制作了一个量程为2.55V的电压表。 1.概念流程图; 
2.电压数字显示流程图: 
3.显示子程序流程图:  遇到的问题:
在这次数字电压表的设计过程中,我们遇到的主要问题是数显程序的编写,我们最初的想法是给一个寄存器存入一定数值,再用DJNZ指令进行跳转,跳转到特定的子程序使数显显示0。但后来发现程序顺序问题会导致无论电压数值为多少,数显程序判断部分都会判断为减到0并跳转。后决定使用Cy位,通过清零来避免干扰。
组员信息:
测控一班 李*坤 1505070112
测控一班 李*哲 1505070110
测控一班 胡*宇 1505070108
组员分工
胡*宇:程序编写;
李*哲:文档编辑;
*坤:仿真电路制作;
程序校对和错误分析有所有组员共同完成。
三、单片机汇编语言程序指令:
-
- LED_0 EQU 30H ;千分位
- LED_1 EQU 31H ;百分位
- LED_2 EQU 32H ;十分位
- LED_3 EQU 33H ;个位
- ADC EQU 35H
- CLOCK BIT P1.4 ;定义0808时钟位
- ST BIT P1.5
- EOC BIT P1.6
- OE BIT P1.7
- ORG 0000H
- LJMP START
- ORG 000BH
- LJMP INT_T0
- ORG 30H
- START: MOV LED_0,#00H
- MOV LED_1,#00H
- MOV LED_2,#00H
- MOV DPTR,#TABLE ;表格数值赋到DPTR
- MOV TMOD,#02H ;定时器选择方式2
- MOV TH0,#0F5H ;防止数码管数位闪动,可设定的置为小于等于245的数
- MOV TL0,#00H
- MOV IE,#82H ;开T0中断
- SETB TR0 ;T0开始计数
- WAIT: CLR ST
- SETB ST ;上升沿清零SAR(SAR用来在A/D转化过程中存放暂态数字量)
- CLR ST ;下降沿启动ADC工作
- JNB EOC,[ DISCUZ_CODE_19 ]nbsp; ;等待转换结果
- SETB OE ;ADC输出
- MOV ADC,P2 ;读取AD转换结果
- CLR OE
- MOV A,ADC
- MOV R7,A ;R7储存AD转换后的结果
- MOV LED_3,#00H ;清空个位
- MOV LED_2,#00H ;清空十分位
- MOV A,#00H
- LOOP1: ADD A,#20H ;一位二进制码对应1000mV
- DA A ;结果转换成BCD码
- JNC LOOP2 ;Cy为0跳转,Cy为1继续执行
- MOV R4,A ;R4储存千分分位、百分位
- INC LED_2 ;十分位加1
- MOV A,LED_2
- CJNE A,#0AH,LOOP4 十分位位不为10跳转,为10继续执行
- MOV LED_2,#00H ;十分位置0
- INC LED_3 ;个位加1
- LOOP4: MOV A,R4
- LOOP2: DJNZ R7,LOOP1 ;R7减1不为0跳转,为0继续执行
- ACALL BTOD1
- LCALL DISP ;调用显示子程序
- LJMP WAIT
- ORG 0200H
- BTOD1: MOV R6,A ;R6储存R7为0后的A的值
- ANL A,#0F0H ;R6与11110000B后赋给A
- MOV R5,#4
- LOOP3: RR A
- DJNZ R5,LOOP3
- MOV LED_1,A ;A右移4次后赋给百分位
- MOV A,R6
- ANL A,#0FH
- MOV LED_0,A ;R6与00001111B后赋给千分位
- RET
-
- INT_T0: CPL CLOCK ;提供0808时钟信号
- RETI
- DISP: ;显示子程序
- MOV A,LED_0
- MOVC A,@A+DPTR
- CLR P1.3 ;千分位显示
- MOV P0,A
- LCALL DELAY ;数值显示
- SETB P1.3
-
- MOV A,LED_1
- MOVC A,@A+DPTR
- CLR P1.2 ;百分位显示
- MOV P0,A
- LCALL DELAY ;数值显示
- SETB P1.2
-
- MOV A,LED_2
- MOVC A,@A+DPTR
- CLR P1.1 ;十分位显示
- MOV P0,A
- LCALL DELAY ;数值显示
- SETB P1.1
-
- MOV A,LED_3
- MOVC A,@A+DPTR
- ADD A,#80H ;显示小数点
- CLR P1.0 ;个位显示
- MOV P0,A
- LCALL DELAY ;数值显示
- SETB P1.0
- RET
- DELAY: MOV R6,#10 ;延时5ms
- D1: MOV R7,#250
- DJNZ R7,$
- DJNZ R6,D1
- RET
- TABLE: DB 3FH,06H,5BH,4FH,66H ;共阴数码管7段值
- DB 6DH,7DH,07H,7FH,6FH
- END
复制代码
全部资料下载:
数字电压表.zip
(419.98 KB, 下载次数: 82)
|