找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5556|回复: 1
打印 上一主题 下一主题
收起左侧

基于单片机的数字电压表综合训练报告(汇编语言源码)

[复制链接]
跳转到指定楼层
楼主
ID:296768 发表于 2018-3-31 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

综合训练项目三

数字电压表

  • 功能说明:

用c51单片机和ADC0808A/D转换器把输入的模拟电压电流转变成计算机可以识别的数字信息。我们小组这次通过运用所学知识,制作了一个量程为2.55V的电压表。

  • 逻辑框图:

1.概念流程图;

2.电压数字显示流程图:

3.显示子程序流程图:



    遇到的问题:

在这次数字电压表的设计过程中,我们遇到的主要问题是数显程序的编写,我们最初的想法是给一个寄存器存入一定数值,再用DJNZ指令进行跳转,跳转到特定的子程序使数显显示0。但后来发现程序顺序问题会导致无论电压数值为多少,数显程序判断部分都会判断为减到0并跳转。后决定使用Cy位,通过清零来避免干扰。

组员信息:

测控一班 李*坤 1505070112

测控一班 李*哲 1505070110

测控一班 胡*宇 1505070108

    组员分工

胡*宇:程序编写;

李*哲:文档编辑;

*坤:仿真电路制作;

程序校对和错误分析有所有组员共同完成。




三、单片机汇编语言程序指令:



  1. LED_0        EQU        30H                                ;千分位
  2.         LED_1        EQU        31H                                ;百分位
  3.         LED_2        EQU        32H                                ;十分位
  4.         LED_3        EQU        33H                                ;个位
  5.         ADC                EQU        35H
  6.         CLOCK        BIT        P1.4                        ;定义0808时钟位
  7.         ST                BIT        P1.5
  8.         EOC                BIT        P1.6
  9.         OE                BIT        P1.7
  10.                 ORG        0000H
  11.                 LJMP START
  12.                 ORG        000BH
  13.                 LJMP INT_T0
  14.         ORG        30H
  15. START:        MOV        LED_0,#00H
  16.                 MOV        LED_1,#00H
  17.                 MOV        LED_2,#00H
  18.                 MOV        DPTR,#TABLE                                ;表格数值赋到DPTR
  19.                 MOV        TMOD,#02H                                ;定时器选择方式2
  20.                 MOV        TH0,#0F5H                                ;防止数码管数位闪动,可设定的置为小于等于245的数
  21.                 MOV        TL0,#00H
  22.                 MOV        IE,#82H                                        ;开T0中断
  23.                 SETB TR0                                        ;T0开始计数
  24. WAIT:        CLR        ST
  25.                 SETB ST                                                ;上升沿清零SAR(SAR用来在A/D转化过程中存放暂态数字量)
  26.                 CLR        ST                                                ;下降沿启动ADC工作
  27.                 JNB        EOC,[        DISCUZ_CODE_19        ]nbsp;                                       ;等待转换结果
  28.                 SETB OE                                                ;ADC输出
  29.                 MOV        ADC,P2                                        ;读取AD转换结果
  30.                 CLR        OE                 
  31.                 MOV        A,ADC                                       
  32.                 MOV        R7,A                                        ;R7储存AD转换后的结果                                
  33.                 MOV        LED_3,#00H                                ;清空个位
  34.                 MOV        LED_2,#00H                                ;清空十分位
  35.                 MOV        A,#00H                                       
  36. LOOP1:        ADD        A,#20H                                        ;一位二进制码对应1000mV
  37.                 DA        A                                                ;结果转换成BCD码
  38.                 JNC        LOOP2                                        ;Cy为0跳转,Cy为1继续执行
  39.                 MOV        R4,A                                        ;R4储存千分分位、百分位
  40.                 INC        LED_2                                        ;十分位加1
  41.                 MOV        A,LED_2
  42.                 CJNE A,#0AH,LOOP4                        十分位位不为10跳转,为10继续执行
  43.                 MOV        LED_2,#00H                                ;十分位置0
  44.                 INC        LED_3                                        ;个位加1
  45. LOOP4:        MOV        A,R4
  46. LOOP2:        DJNZ R7,LOOP1                                ;R7减1不为0跳转,为0继续执行
  47.                 ACALL BTOD1
  48.                 LCALL DISP                                        ;调用显示子程序
  49.                 LJMP WAIT
  50.                 ORG        0200H
  51. BTOD1:        MOV        R6,A                                        ;R6储存R7为0后的A的值
  52.                 ANL        A,#0F0H                                        ;R6与11110000B后赋给A
  53.                 MOV        R5,#4
  54. LOOP3:        RR        A
  55.                 DJNZ R5,LOOP3                                
  56.                 MOV        LED_1,A                                        ;A右移4次后赋给百分位        
  57.                 MOV        A,R6
  58.                 ANL        A,#0FH                                       
  59.                 MOV        LED_0,A                                        ;R6与00001111B后赋给千分位
  60.                 RET               
  61.                                        
  62. INT_T0:        CPL        CLOCK                                        ;提供0808时钟信号
  63.                 RETI
  64. DISP:                                                                ;显示子程序
  65.                 MOV        A,LED_0                                       
  66.                 MOVC A,@A+DPTR
  67.                 CLR        P1.3                                        ;千分位显示
  68.                 MOV        P0,A
  69.                 LCALL DELAY                                        ;数值显示
  70.                 SETB P1.3
  71.                                                         
  72.                 MOV        A,LED_1
  73.                 MOVC A,@A+DPTR
  74.                 CLR        P1.2                                        ;百分位显示
  75.                 MOV        P0,A
  76.                 LCALL DELAY                                        ;数值显示
  77.                 SETB P1.2
  78.                
  79.                 MOV        A,LED_2
  80.                 MOVC A,@A+DPTR               

  81.                 CLR        P1.1                                        ;十分位显示
  82.                 MOV        P0,A
  83.                 LCALL DELAY                                        ;数值显示
  84.                 SETB P1.1
  85.                
  86.                 MOV        A,LED_3
  87.                 MOVC A,@A+DPTR
  88.             ADD A,#80H                                        ;显示小数点
  89.                 CLR        P1.0                                        ;个位显示
  90.                 MOV        P0,A
  91.         LCALL DELAY                                        ;数值显示
  92.                 SETB P1.0
  93.                 RET

  94. DELAY:        MOV        R6,#10                                        ;延时5ms
  95. D1:                MOV        R7,#250
  96.                 DJNZ R7,$
  97.                 DJNZ R6,D1
  98.                 RET
  99. TABLE:        DB        3FH,06H,5BH,4FH,66H                ;共阴数码管7段值
  100.                 DB        6DH,7DH,07H,7FH,6FH
  101.                 END

复制代码

全部资料下载:
数字电压表.zip (419.98 KB, 下载次数: 82)



评分

参与人数 2黑币 +69 收起 理由
vvv64 + 3
admin + 66 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:564989 发表于 2019-6-18 11:49 | 只看该作者
很实用,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表