找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2153|回复: 0
收起左侧

通道10位串行AD转换器MAX192 Keil开发环境下单片机源程序及工程文件

[复制链接]
ID:277378 发表于 2018-2-1 17:13 | 显示全部楼层 |阅读模式

“8通道10位串行AD转换器MAX192”,Keil开发环境下源程序及工程文件

("8-channel 10-bit serial AD converter MAX192", Keil development environment, source code and project files)

0.png

单片机源程序如下:
  1. /****************************************************************/
  2. /* 这是调用MAX192编程序(MAX192B.ASM)的C51程序。               */
  3. /* 文件名为CALL192.C。                                          */
  4. /* 功能:本程序主要是读出MAX192芯片输入通道CH0,CH1,...,CH7的模数*/
  5. /*    转换值,转换值依次放在数组mid1[8]中,转换值的标度变换值放在*/
  6. /*    浮点数组volt[8]中。MAX192芯片的8个通道可编程为单极性/双极 */
  7. /*    性和差动/单端工作,这里采用单端\单极性输入。MAX192有内部时 */
  8. /*    钟和外部时钟两种工作模式,这里采用内部时钟模式。MAX192具有 */
  9. /*    片内电压基准,也可用外部基准,这里使用内部4.096V电压基准。  */
  10. /****************************************************************/
  11. #include <reg52.h>
  12. #define uchar unsigned char
  13. #define uint unsigned int

  14. void delay1(uint x);
  15. extern  uint chai;          //把全局变量chai声明为外部变量
  16. extern  uint a_func(uchar); //把a_func 声明为外部函数

  17. uint idata mid1[8];
  18. float idata volt[8];
  19. uchar  idata i;

  20. void delay1(uint x)          //延时程序
  21. {
  22. uchar tw;
  23. while (x-->0){
  24. for (tw=0;tw<125;tw++){;}
  25. }
  26. }

  27. void main()                   //主程序
  28. {
  29.       SP=0xcf;
  30.       delay1(1000);
  31.       EA=0;
  32.       chai=a_func(0x8e);      // 读出MAX192芯片输入通道CH0的AD转换值
  33.       mid1[0]=chai;           // 把它放入数组mid1中。
  34.       delay1(10);
  35.       chai=a_func(0xce);      // 读出MAX192芯片输入通道CH1的AD转换值
  36.       mid1[1]=chai;           // 把它放入数组mid1中。
  37.       chai=a_func(0x9e);
  38.       mid1[2]=chai;
  39.       chai=a_func(0xde);
  40.       mid1[3]=chai;
  41.       chai=a_func(0xae);
  42.       mid1[4]=chai;
  43.       chai=a_func(0xee);
  44.       mid1[5]=chai;
  45.       chai=a_func(0xbe);
  46.       mid1[6]=chai;
  47.       chai=a_func(0xfe);       // 读出MAX192芯片输入通道CH7的AD转换值
  48.       mid1[7]=chai;            // 把它放入数组mid1中。
  49.       for (i=0;i<8;i++){
  50.       volt[i]=(float)mid1[i]/1024.0*4.096;  // 标度变换,且变成浮点数。
  51. ……………………

  52. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


汇编语言源程序:
  1. ;/*****************************************************************/
  2. ;/* 这是MAX192的汇编程序,  文件名MAX192.ASM                       */
  3. ;/* 功能:本程序主要是读出MAX192输入通道CH0,CH1,..CH7的模数转换值, */
  4. ;/*    转换值放在寄存器R6,R7中,R6放高位。MAX192芯片的8个通道       */
  5. ;/*    可编程为单极性/双极性和单端/差动工作, 这里采用单端\单极性   */
  6. ;/*    输入。MAX192有内部时钟和外部时钟两种工作模式,这里采用内     */
  7. ;/*    部时钟模式。MAX192有内带4.096V的基准电压,也可用外部基准    */
  8. ;/*    电压,这里采用内带4.096V的基准电压。                        */
  9. ;/******************************************************************/
  10. SI           EQU P1.3
  11. SO           EQU P1.2
  12. SCK          EQU P1.1
  13. CS           EQU P1.0

  14.              ORG 0030H
  15.              CLR EA
  16.                          CLR SCK
  17.                          CLR CS         ;发送一个字节
  18.                          MOV A,#08EH    ;08EH-选择CH0,单端/单极性,内部时钟模式,用内带基准电压
  19.                           LCALL BYTE_OUT ;0CEH-选择CH1,单端/单极性,内部时钟模式,用内带基准电压
  20.              SETB CS        ;09EH-选择CH2,单端/单极性,内部时钟模式,用内带基准电压
  21.                          NOP            ;0DEH-选择CH3,单端/单极性,内部时钟模式,用内带基准电压
  22.                          NOP            ;0AEH-选择CH4,单端/单极性,内部时钟模式,用内带基准电压
  23.              NOP            ;0EEH-选择CH5,单端/单极性,内部时钟模式,用内带基准电压
  24.              NOP            ;0BEH-选择CH6,单端/单极性,内部时钟模式,用内带基准电压
  25.              NOP            ;0FEH-选择CH7,单端/单极性,内部时钟模式,用内带基准电压
  26.              NOP
  27.              CLR CS         ;读回两个字节
  28.                          LCALL BYTE_IN
  29.                          MOV R6,A
  30.                          LCALL BYTE_IN
  31.                          MOV R7,A
  32.                          SETB CS
  33.              CLR C
  34.              MOV A,R6
  35.              RRC A
  36.              MOV R6,A
  37.              MOV A,R7
  38.              RRC A
  39.                    MOV R7,A
  40.              CLR C
  41.              MOV A,R6
  42.              RRC A
  43.              MOV R6,A
  44.              MOV A,R7
  45.              RRC A
  46.                    MOV R7,A
  47.              CLR C
  48.              MOV A,R6
  49.              RRC A
  50.              MOV R6,A
  51.              MOV A,R7
  52.              RRC A
  53.                    MOV R7,A
  54.                    CLR C
  55.              MOV A,R6
  56.              RRC A
  57.              MOV R6,A
  58.              MOV A,R7
  59.              RRC A
  60.                    MOV R7,A
  61.                    CLR C
  62.              MOV A,R6
  63.              RRC A
  64.              MOV R6,A
  65.              MOV A,R7
  66.              RRC A
  67.                    MOV R7,A
  68.              MOV A,R6
  69.              ANL A,#03H
  70.                    MOV R6,A
  71.              LJMP $
  72. BYTE_OUT:    MOV R0,#08H  ;发送单个字节到芯片串口
  73. BOUT1:       CLR SCK
  74.                    RLC A
  75. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
4115624MAX192-c51.rar (33.96 KB, 下载次数: 21)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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