查看: 1095|回复: 0
打印 上一主题 下一主题

004、AD功能测试程序

[复制链接]
跳转到指定楼层
沙发
发表于 2015-5-5 17:17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

/********************************************************************
                            汇诚科技

实现功能:此版配套测试程序
使用芯片:STC12C2052AD
晶振:11.0592MHZ
波特率:9600
编译环境:Keil
作者:zhangxinchunleo
网站:www.ourhc.cn
淘宝店:汇诚科技 http://shop36330473.taobao.com
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
/********************************************************************
程序说明:
1、P1口八路AD数据转换。
2、将转换的数据通过串口发送出去。
3、发送数据的格式是:(通道口-数据)

注意:通道口必须有模拟量输入数据才有效。

********************************************************************/

#include<STC12C2052AD.h>                 //库文件
#include <intrins.h>
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型

#define ADC_POWER   0x80            //ADC 电源控制位
#define ADC_FLAG    0x10            //ADC 转换结束标志位
#define ADC_START   0x08            //ADC 开始转换控制位
#define ADC_SPEEDLL 0x00            //210 个时钟周期转换一次
#define ADC_SPEEDL  0x20            //420 个时钟周期转换一次
#define ADC_SPEEDH  0x40            //630 个时钟周期转换一次
#define ADC_SPEEDHH 0x60            //840 个时钟周期转换一次

/********************************************************************
                            延时函数
*********************************************************************/
void delay()//延时程序 0.1秒
{
uchar m,n,s;
for(m=10;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}

/********************************************************************
               功能:串口初始化,波特率9600,方式1
*********************************************************************/

void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
                  
/********************************************************************
                         AD转换初始化程序
*********************************************************************/

void InitADC()
{
    P1 = P1M0 = P1M1 = 0xff;        //设置P1口为开漏模式,使用AD功能
    ADC_DATA = 0;                   //AD数据寄存器清空
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;//打开AD电源,转换周期210
    delay();                       //延时
}

/********************************************************************
                         AD转换控制程序
*********************************************************************/
uchar GetADCResult(uchar px)          //转换输出的数据 (PX为通道口)
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL |px| ADC_START;//开始转换
    _nop_();                        //延时一个机器周期
    _nop_();                                                //延时一个机器周期
    _nop_();                                                //延时一个机器周期
    _nop_();                                                //延时一个机器周期
    while (!(ADC_CONTR & ADC_FLAG));//等待转换结束
    ADC_CONTR &= ~ADC_FLAG;         //关闭AD转换
    return ADC_DATA;                //返回数据
}
/********************************************************************
                         串口数据发送
*********************************************************************/
void SendData(uchar dat)
{
        SBUF = dat;                                                //发送数据
    while (!TI);                    //等待数据
    TI = 0;                         //清零标志位
}
/********************************************************************
                            编辑数据函数
*********************************************************************/
void show(uchar ch)
{
    SendData(ch);                   //发送显示通道
    SendData(GetADCResult(ch));     //发送对应通道的数据
}
/********************************************************************     
/********************************************************************
                            主函数
*********************************************************************/
void main()
{
Init_Com();//串口初始化
InitADC(); //AD转换初始化
while(1)
{
//    show(0);   //显示第一通道的数值
       show(1);   //显示第二通道的数值
//    show(2);   //显示第三通道的数值
//    show(3);   //显示第四通道的数值
//    show(4);   //显示第五通道的数值
//    show(5);   //显示第六通道的数值
//    show(6);   //显示第七通道的数值
//    show(7);   //显示第八通道的数值         
}
}
       
/********************************************************************
                              结束
*********************************************************************/




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入中科因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

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