第一范文网 - 专业文章范例文档资料分享平台

stc12c5410ad

来源:用户分享 时间:2025/5/22 5:23:23 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

************ STC12C5410AD******************/ /*功能描述:STC12C5410AD内部AD使用 */ /*作者: */ /*编写时间:2008.8.14 */

/*功能:使用内部AD功能,并把采集的数据传给PC机 */ /*外部晶振22.1184 MHZ */

/*把波特率设置为51的12倍,现在波特率 115200 */ /*注意:需要测得实际电源电压作为参考电压 */ /*L7805稳压在4.88-4.98V之间,根据实际测量确定电压 */ /**************************************************/ /*修改时间: */ /*修改内容: */

#include #include #include #include

#define uchar unsigned char #define uint unsigned int #define ulong unsigned long

sbit PWM0 = P3^7; //pwm口定义green sbit PWM1 = P3^5; //pwm口定义blue sbit PWM2 = P2^0; //pwm口定义 sbit PWM3 = P2^4; //pwm口定义red

sbit AD0 = P1^0; //电位器和外部电压输入共用同一AD口,用跳帽来选择。 sbit AD1 = P1^1; //用做AD按键的输出口。

sbit AD2 = P1^2; //温度测量,测量热敏电阻的参数。

void Delay1ms(unsigned int count); void init_rs232(void); //串口初始化 void STC12C5410AD_int(void); //AD初始化

void Delay1ms(unsigned int count); void init_rs232(void); //串口初始化

/***************************1秒延时子程序start***************************/ void Delay1ms(unsigned int count) {

unsigned int i,j; for(i=0;i

/***************************1秒延时子程序end***************************/ /* 串口通信初始化设置 */ void init_rs232(void) {

AUXR=74; //设置波特率是普通51的12倍 ,允许AD中断 SCON=0x50; PCON=0x00;

TH1=0xFA; //波特率 115200 22.1184MHZ 时候(F4 4800 FA 9600 FDH 9600)*12 TL1=0XFA; TMOD=0X20; TR1=1; }

/*STC12C5410AD的AD初始化程序*/

// ADC_CONTR=[ADC_POWER] [SPEED1] [SPEED0] [ADC_FLAG] [ADC_START] [CHS2] [CHS1] [CHS0]

// ADC_DATA 高8位 ADC_LOW2 //低2位 void STC12C5410AD_int(void) {

ADC_CONTR=0x80 ; //开转换电源 设置转换速度为1080个时钟周期转换一次,选择AD0通道

Delay1ms(20); //稍做延时,大于1ms就可以

/*I/O口作为AD使用,设置漏极开路模式*/ P1M0=1; P1M1=1; }

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

/*****************主程序************************/ main()

{ //main start

uint ad_temp; //AD数据保存的地址

float f; //存放AD采集过来的数据,格式00.000,总共5位 Delay1ms(5000); init_rs232(); //串口初始化 TI=1;

printf(\学习板 AD测试程序\\n\ printf(\ Delay1ms(5000);

printf(\串口初始化成功\\n\\n\ Delay1ms(5000);

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

STC12C5410AD_int(); //AD初始化 printf(\初始化成功\\n\ printf(\选择通道AD0\\n\\n\ printf(\进入AD采集程序\\n\\n\ while(1) {

ADC_CONTR|=0x08; //开始AD转换(ADC_START=1)

// ADC_CONTR|=0x01; //选择AD1通道,AD按键 // ADC_CONTR|=0x02; //选择AD2通道

while(!(ADC_CONTR & 0x10)); //判断AD是否转换结束 ADC_CONTR&=0xef;//转换结束后标志位ADC_FLAG清零 //AD采集进来的数据进行转化 ad_temp=ADC_LOW2;

ad_temp=ad_temp+ ((uint)ADC_DATA)<<2;

f=(4.961*ad_temp)/1024; //基准电压调整,用7805做稳压需要测得实际电源电压 //通过串口打印AD采集进来的数据

printf(\\//串口传输AD采集数据 Delay1ms(5000); }

} //mian end

搜索更多关于: stc12c5410ad 的文档
stc12c5410ad.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c47tu41a37r5dq8n1sb38_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top