⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数据采集系统程序.txt

📁 以GMS97C2051单片机为核心
💻 TXT
字号:
数据采集程序如下:

DATA_SAM:  
 MOV     R0,#30H ;数据缓冲区首地址30H→R0
 
 MOV     R1,#00000000B ;0通道方式/通道数据 
 ACALL  RD_AD ;第一次读取的转换结果可能不准确,丢弃。 
 MOV     R1,#00010000B ;1通道方式/通道数据 
 ACALL  RD_AD ;送1通道方式/通道数据并读第0通道转换结果 
 MOV     @R0,R2 ;转换结果存放到数据缓冲区,下同 
 INC    R0  
 MOV     @R0,R3  
 INC    R0  
 MOV     R1,#00100000B ;2通道方式/通道数据 
 ACALL  RD_AD ;送2通道方式/通道数据并读第1通道转换结果 
 MOV     @R0,R2  
 INC    R0  
 MOV     @RO,R3  
 INC    R0  
 ………… ;其它通道操作方式类推 
 RET  

    单片机通过编程产生串行时钟,并按时序发送与接收数据位,完成通道方式/通道数据的写入和转换结果的读出,程序如下,供数据采集模块“DATA_SAM” 调用。

 CLK    EQU      P3.3  
 DIN    EQU      P3.4  
 DOUT   EQU      P3.5  
 CS      EQU     P3.7  
RD_AD:  
 CLR    CLK ;清I/O时钟 
 SETB   CS ;设置片选为高 
 CLR    CS ;设置片选为低 
 MOV     R4,#08 ;先读高8位 
 MOV    A, R1 ;把方式/通道控制字放到A 
LOP1:  
     MOV    C,DOUT ;读转换结果 
 RLC    A ;A寄存器左移,移入结果数据位,移出方式/通道控制位 
 MOV     DIN,C ;输出方式/通道位 
 SETB   CLK ;设置I/O时钟为高 
 CLR    CLK ;清I/O时钟 
 DJNZ   R4,LOP1 ;R4不为0,则返回LOP1 
 MOV     R2,A ;转换结果的高8位放到R2中 
 MOV     A,#00H ;复位A寄存器 
 MOV     R4,#04 ;再读低4位 
LOP2:  
 MOV     C,DOUT ;读转换结果 
 RLC    A ;A寄存器左移,移入结果数据位 
 SETB   CLK ;设置I/O时钟为高 
 CLR    CLK ;清I/O时钟 
 DJNZ   R4,LOP2 ;R4不为0,则返回LOP2 
 MOV     R3,A ;转换结果的低4位放到R3中 
 SETB   CS ;设置片选为高 
 RET  

    串行数据传输模块包括串行口初始化子程序和数据传输子程序,各子程序分别如下。其中数据传输采用查询方式,也可以方便地改为中断方式。

INIT_COM:  
 MOV   SCON,#50H ;串口方式1工作,8位数据位,1位停止位,无奇偶校验 
 MOV   PCON,#80H ;SMOD=1,波特率增倍 
 MOV   TMOD,#20H ;波特率设置,fOSC=12MHz,波特率=2* 2400,N=0F3H 
 MOV   TH1,#0F3H  
 MOV   TL1,#0F3H  
 SETB  TR1 ;启动定时器T1 
 RET  
RS232:  
 MOV   R0,#30H ;缓冲区首地址30H→R0 
 MOV   R5,#22 ;发送数据长度→R5,11* 2=22 
LOOP:  
 MOV   A,@R0 ;取数据→A 
 MOV   SBUF,A ;数据→SBUF 
WAIT:   
 JBC   TI,CONT ;判断发送中断标志,是1则转到CONT,并清TI 
 SJMP  WAIT  
CONT:  
 INC   R0  
 DJNZ  R5,LOOP  
 RET  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -