标题:
通道10位串行AD转换器MAX192 Keil开发环境下单片机源程序及工程文件
[打印本页]
作者:
xinggujie
时间:
2018-2-1 17:13
标题:
通道10位串行AD转换器MAX192 Keil开发环境下单片机源程序及工程文件
“8通道10位串行AD转换器MAX192”,Keil开发环境下源程序及工程文件
("8-channel 10-bit serial AD converter MAX192", Keil development environment, source code and project files)
0.png
(57.67 KB, 下载次数: 44)
下载附件
2018-2-2 04:14 上传
单片机源程序如下:
/****************************************************************/
/* 这是调用MAX192编程序(MAX192B.ASM)的C51程序。 */
/* 文件名为CALL192.C。 */
/* 功能:本程序主要是读出MAX192芯片输入通道CH0,CH1,...,CH7的模数*/
/* 转换值,转换值依次放在数组mid1[8]中,转换值的标度变换值放在*/
/* 浮点数组volt[8]中。MAX192芯片的8个通道可编程为单极性/双极 */
/* 性和差动/单端工作,这里采用单端\单极性输入。MAX192有内部时 */
/* 钟和外部时钟两种工作模式,这里采用内部时钟模式。MAX192具有 */
/* 片内电压基准,也可用外部基准,这里使用内部4.096V电压基准。 */
/****************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay1(uint x);
extern uint chai; //把全局变量chai声明为外部变量
extern uint a_func(uchar); //把a_func 声明为外部函数
uint idata mid1[8];
float idata volt[8];
uchar idata i;
void delay1(uint x) //延时程序
{
uchar tw;
while (x-->0){
for (tw=0;tw<125;tw++){;}
}
}
void main() //主程序
{
SP=0xcf;
delay1(1000);
EA=0;
chai=a_func(0x8e); // 读出MAX192芯片输入通道CH0的AD转换值
mid1[0]=chai; // 把它放入数组mid1中。
delay1(10);
chai=a_func(0xce); // 读出MAX192芯片输入通道CH1的AD转换值
mid1[1]=chai; // 把它放入数组mid1中。
chai=a_func(0x9e);
mid1[2]=chai;
chai=a_func(0xde);
mid1[3]=chai;
chai=a_func(0xae);
mid1[4]=chai;
chai=a_func(0xee);
mid1[5]=chai;
chai=a_func(0xbe);
mid1[6]=chai;
chai=a_func(0xfe); // 读出MAX192芯片输入通道CH7的AD转换值
mid1[7]=chai; // 把它放入数组mid1中。
for (i=0;i<8;i++){
volt[i]=(float)mid1[i]/1024.0*4.096; // 标度变换,且变成浮点数。
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
汇编语言源程序:
;/*****************************************************************/
;/* 这是MAX192的汇编程序, 文件名MAX192.ASM */
;/* 功能:本程序主要是读出MAX192输入通道CH0,CH1,..CH7的模数转换值, */
;/* 转换值放在寄存器R6,R7中,R6放高位。MAX192芯片的8个通道 */
;/* 可编程为单极性/双极性和单端/差动工作, 这里采用单端\单极性 */
;/* 输入。MAX192有内部时钟和外部时钟两种工作模式,这里采用内 */
;/* 部时钟模式。MAX192有内带4.096V的基准电压,也可用外部基准 */
;/* 电压,这里采用内带4.096V的基准电压。 */
;/******************************************************************/
SI EQU P1.3
SO EQU P1.2
SCK EQU P1.1
CS EQU P1.0
ORG 0030H
CLR EA
CLR SCK
CLR CS ;发送一个字节
MOV A,#08EH ;08EH-选择CH0,单端/单极性,内部时钟模式,用内带基准电压
LCALL BYTE_OUT ;0CEH-选择CH1,单端/单极性,内部时钟模式,用内带基准电压
SETB CS ;09EH-选择CH2,单端/单极性,内部时钟模式,用内带基准电压
NOP ;0DEH-选择CH3,单端/单极性,内部时钟模式,用内带基准电压
NOP ;0AEH-选择CH4,单端/单极性,内部时钟模式,用内带基准电压
NOP ;0EEH-选择CH5,单端/单极性,内部时钟模式,用内带基准电压
NOP ;0BEH-选择CH6,单端/单极性,内部时钟模式,用内带基准电压
NOP ;0FEH-选择CH7,单端/单极性,内部时钟模式,用内带基准电压
NOP
CLR CS ;读回两个字节
LCALL BYTE_IN
MOV R6,A
LCALL BYTE_IN
MOV R7,A
SETB CS
CLR C
MOV A,R6
RRC A
MOV R6,A
MOV A,R7
RRC A
MOV R7,A
CLR C
MOV A,R6
RRC A
MOV R6,A
MOV A,R7
RRC A
MOV R7,A
CLR C
MOV A,R6
RRC A
MOV R6,A
MOV A,R7
RRC A
MOV R7,A
CLR C
MOV A,R6
RRC A
MOV R6,A
MOV A,R7
RRC A
MOV R7,A
CLR C
MOV A,R6
RRC A
MOV R6,A
MOV A,R7
RRC A
MOV R7,A
MOV A,R6
ANL A,#03H
MOV R6,A
LJMP $
BYTE_OUT: MOV R0,#08H ;发送单个字节到芯片串口
BOUT1: CLR SCK
RLC A
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
4115624MAX192-c51.rar
(33.96 KB, 下载次数: 21)
2018-2-1 17:13 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1