找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机ADC0832+DAC0808电压检测设计(含VB上位机)仿真+源程序

[复制链接]
跳转到指定楼层
楼主
题目:电压检测系统

概述:1、用一个单片机和DAC0808转换组成一个随机电压发生单元(0~5V);
         2、另一个单片机和ADC0832转换组成数据采集单元;
         3、通过串行接口将采集的数据传到上位机中,需要编写上位计算机程序,对采集的数据进行处理,如显示当前值、画出一定时间内的记录曲线等。

说明:1、这里是一个仿真系统,需要安装虚拟串口工具。proteus的串行接口对应虚拟串口com3,VB程序对应虚拟串口com4。
              1200BSP,无校验位,8个数据位,1个停止位;单片机系统采用的是6M晶振。
         2、上位机程序用VB编写,数据采集程序用汇编语言编写,随机电压发生程序用C语言编写。
         3、上位机程序可直接运行“工程1.exe”,如果在VB6.0的机器上可以看见原代码。
         4、如果提示缺少MSCOMM32.OCX,可将文件夹中所带的MSCOMM32.OCX复制粘帖到c:\windows\system32\下即可(不会对您的系统造成任何危害)。


电压检测系统仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


上位机源码:


单片机源程序如下:
  1. ;ADCS BIT P3.5 ;使能接口
  2. ;ADCLK BIT P3.6 ;时钟接口
  3. ;ADDO BIT P3.7 ;数据输出接口(复用)
  4. ;ADDI BIT P3.7 ;数据输入接口
  5. ORG     0000H
  6. LJMP INITOUT
  7. ORG 0023H
  8. LJMP SERVE
  9. ORG 30H
  10. INITOUT:
  11. MOV SP,#60H   ;栈顶地址
  12. MOV TMOD,#20H  ;定时器1初始化
  13. MOV TH1,#0F3H  ;设置波特率为1200MHz,6MHz的晶振
  14. MOV TL1,#0F3H  ;
  15. MOV SCON,#50H  ;串口初始化为可以接收
  16. MOV PCON,#00H  ;波特率不倍增
  17. SETB TR1   ;启动定时器
  18. SETB EA   ;开中断
  19. SETB ES   ;允许串口中断
  20. MainProgram:   
  21. NOP    ;主程序主要是等中断
  22. NOP
  23. LCALL CONV
  24. SJMP Mainprogram
  25. ;=======================================================
  26. SERVE:
  27. PUSH PSW        ;将程序状态字压入堆栈
  28. PUSH ACC        ;将累加器压入堆栈
  29. CLR EA        ;关闭系统中断         
  30. CLR RI          ;清除中断标志位
  31. MOV A,SBUF
  32. CJNE A,#01,NEXTI;判断,01号单片机

  33. MOV SBUF,31H


  34. wait:jnb ti,wait
  35.      clr ti

  36. CLR RI          ;清除中断标志位
  37. SETB EA         ;打开系统中断
  38. POP ACC         ;累加器出栈
  39. POP PSW         ;程序状态字出栈
  40. NEXTI:RETI            ;中断程序返回



  41. ;==============================================
  42.      
  43. CONV:MOV 30H,#02H;方式字选择
  44.      MOV R0,#31H;数据存储首地址
  45.      LCALL ADC0832;调用A/D转换子程序

  46.      RET
  47. ;========================================
  48. ADC0832:SETB P3.7 ;初始化通道选择
  49.         NOP
  50.         NOP
  51.         CLR P3.5 ;拉低/CS端
  52.         NOP
  53.         NOP
  54.         SETB P3.6 ;拉高CLK端
  55.         NOP
  56.         NOP
  57.         CLR P3.6 ;拉低CLK端,形成下降沿
  58.         MOV A,30H
  59.         MOV C,ACC.1 ;确定取值通道选择
  60.         MOV P3.7,C
  61.         NOP
  62.         NOP
  63.         SETB P3.6 ;拉高CLK端
  64.         NOP
  65.         NOP
  66.         CLR P3.6 ;拉低CLK端,形成下降沿2
  67.         MOV A,30H
  68.         MOV C,ACC.0 ;确定取值通道选择
  69.         MOV P3.7,C
  70.         NOP
  71.         NOP
  72.         SETB P3.6 ;拉高CLK端
  73.         NOP
  74.         NOP
  75.         CLR P3.6 ;拉低CLK端,形成下降沿3
  76.         SETB P3.7
  77.         NOP
  78.         NOP
  79.     MOV R7,#8 ;准备送下后8个时钟脉冲
  80. ADH:MOV C,P3.7 ;接收数据
  81.     MOV ACC.0,C
  82.     RL A ;左移一次
  83.     SETB P3.6
  84.     NOP
  85.     NOP
  86.     CLR P3.6 ;形成一次时钟脉冲
  87.     NOP
  88.     NOP
  89.     DJNZ R7,ADH ;循环8次
  90.     MOV C,P3.7 ;接收数据
  91.     MOV ACC.0,C
  92.     MOV @R0,A
  93.     MOV R7,#8
  94. ADL:MOV C,P3.7 ;接收数据
  95.     MOV ACC.0,C
  96.     RR A ;左移一次
  97.     SETB P3.6
  98.     NOP
  99.     NOP
  100.     CLR P3.6 ;形成一次时钟脉冲
  101.     NOP
  102.     NOP
  103.     DJNZ R7,ADL ;循环8次
  104.     MOV B,@R0
  105.     CJNE A,B,ADC0832 ;数据校验
  106.     SETB P3.5 ;拉高/CS端
  107.     CLR P3.6 ;拉低CLK端
  108.     SETB P3.7 ;拉高数据端,回到初始状态
  109.     RET
  110. ;=======================================
复制代码

所有资料51hei提供下载:
电压检测系统(含VB上位机)proteus仿真 程序资料.rar (151.53 KB, 下载次数: 94)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:160725 发表于 2019-4-30 08:09 | 只看该作者
值得学习
回复

使用道具 举报

板凳
ID:525633 发表于 2019-5-1 16:46 | 只看该作者

值得学习
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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