基于单片机数据采集及通信的Protues仿真设计与VB上位机
功能:实现了数据采集,其中数据为电压值,通过串口通信,使用vb上位机绘制数据曲线,同时可以显示电压采集的值,如图所示
资料:protues仿真,程序,vb上位机,元器件清单,软件资料等
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1F3f2lx50CL5yMOH5uYDLRg?pwd=8888
部分代码展示
;ADCS BIT P3.5 ;使能接口
;ADCLK BIT P3.6 ;时钟接口
;ADDO BIT P3.7 ;数据输出接口(复用)
;ADDI BIT P3.7 ;数据输入接口
ORG 0000H
LJMP INITOUT
ORG 0023H
LJMP SERVE
ORG 30H
INITOUT:
MOV SP,#60H ;栈顶地址
MOV TMOD,#20H ;定时器1初始化
MOV TH1,#0F3H ;设置波特率为1200MHz,6MHz的晶振
MOV TL1,#0F3H ;
MOV SCON,#50H ;串口初始化为可以接收
MOV PCON,#00H ;波特率不倍增
SETB TR1 ;启动定时器
SETB EA ;开中断
SETB ES ;允许串口中断
MainProgram:
NOP ;主程序主要是等中断
NOP
LCALL CONV
SJMP Mainprogram
;=======================================================
SERVE:
PUSH PSW ;将程序状态字压入堆栈
PUSH ACC ;将累加器压入堆栈
CLR EA ;关闭系统中断
CLR RI ;清除中断标志位
MOV A,SBUF
CJNE A,#01,NEXTI;判断,01号单片机
MOV SBUF,31H
wait:jnb ti,wait
clr ti
CLR RI ;清除中断标志位
SETB EA ;打开系统中断
POP ACC ;累加器出栈
POP PSW ;程序状态字出栈
NEXTI:RETI ;中断程序返回
;==============================================
CONV:MOV 30H,#02H;方式字选择
MOV R0,#31H;数据存储首地址
LCALL ADC0832;调用A/D转换子程序
RET
;========================================
ADC0832:SETB P3.7 ;初始化通道选择
NOP
NOP
CLR P3.5 ;拉低/CS端
NOP
NOP
SETB P3.6 ;拉高CLK端
NOP
NOP
CLR P3.6 ;拉低CLK端,形成下降沿
MOV A,30H
MOV C,ACC.1 ;确定取值通道选择
MOV P3.7,C
NOP
NOP
SETB P3.6 ;拉高CLK端
NOP
NOP
CLR P3.6 ;拉低CLK端,形成下降沿2
MOV A,30H
MOV C,ACC.0 ;确定取值通道选择
MOV P3.7,C
NOP
NOP
SETB P3.6 ;拉高CLK端
NOP
NOP
CLR P3.6 ;拉低CLK端,形成下降沿3
SETB P3.7
NOP
NOP
MOV R7,#8 ;准备送下后8个时钟脉冲