您所在位置: 网站首页 / STC12C5A60S2-AD-PWM应用例程.doc / 文档详情
STC12C5A60S2-AD-PWM应用例程.doc 立即下载
2025-01-05
约3千字
约4页
0
14KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

STC12C5A60S2-AD-PWM应用例程.doc

STC12C5A60S2-AD-PWM应用例程.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include"stc12c5a.h"//头文件在STC公司主页上下载
#include"stdio.h"
#include"intrins.h"
#defineucharunsignedchar
//------------------------------------------------------------------------------
voidAD_init();				//AD初始化函数	
voiddelay(unsignedinta);	//延时函数
floatAD_work(unsignedcharchannel);	//AD数值处理函数
unsignedintAD_get(unsignedcharchannel);	//AD转换函数
unsignedcharsh1,ge1,n1,m1,aa;
intnum,pwm,V,temp1;
sbitPWM=P0^0;				//定义PWM输出口为P0^0
sbitkey1=P0^1;
sbitkey2=P0^2;
//------------------------------------------------------------------------------
voidsend(uchardata1)
{
	ES=0;		//关闭中断
	TI=0;
	SBUF=data1;
	while(!TI);	//等待发送完成
	TI=0;		//中断标志位清0
	ES=1;	//打开中断
}

voiddisplay()				//串口发送AD
{
	temp1=V;
	sh1=temp1/1000;		
	ge1=(temp1%1000)/100;
	n1=((temp1%1000)%100)/10;
	send(sh1+48);
	send('.');
	send(ge1+48);	
	send(n1+48);
	send('V');
	send('');

}


//------------------------------------------------------------------------------
unsignedintAD_get(unsignedcharchannel)
{
	ADC_CONTR=0x88|channel;//开启AD转换10001000即POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0
	_nop_();_nop_();_nop_();_nop_();//要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR寄存器
	while(!(ADC_CONTR&0x10));//等待转换完成
	ADC_CONTR&=0xe7;//关闭AD转换,ADC_FLAG位由软件清0
	return(ADC_RES*4+ADC_RESL);//返回AD转换完成的10位数据(16进制)
}
//------------------------------------------------------------------------------
floatAD_work(unsignedcharchannel)
{
	doubleAD_val,AD_vale;//定义处理后的数值AD_val为浮点数
	unsignedchari;
	for(i=0;i<100;i++)
	AD_val+=AD_get(channel);//转换100次求平均值(提高精度)
	AD_val/=100;
	AD_vale=(AD_val*5000)/1024;//AD的参考电压是单片机上的5v,所以乘5即为实际电压值
	V=AD_vale;
	returnV;
}

//------------------------------------------------------------------------------
voiddelay(unsignedinta)//延时约1ms
{
	unsignedinti;
	while(--a!=0)
	for(i=600;i>0;i--);
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
voidAD_init()
{
	P1ASF=0xff;//P1口全部作为模拟功能AD使用
	ADC_RES=0;//清零转换结果寄存器高8位
	ADC_RESL=0
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

STC12C5A60S2-AD-PWM应用例程

文档大小:14KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用