找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3028|回复: 0
打印 上一主题 下一主题
收起左侧

STC12C54系列单片机头文件

[复制链接]
跳转到指定楼层
楼主
ID:75926 发表于 2015-4-3 01:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"STC12C5410AD.H"    //STC12C54系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
void delayms(uint xms)   
{
uint i,j;
for(i=xms;i>0;i--)        //i=xms即延时约xms毫秒
  for(j=110;j>0;j--);
}
void AD_Init()
{
P1M0=0x0f;//0000 1111 设置P1口低4位为开漏模式,用来AD采集
P1M1=0x0f;//0000 1111
ADC_CONTR=0xe0;//1110 0000 开启AD转换器电源,设置最高转换速度
delayms(100);
}
int GetAD(unsigned char channel) //channel为要取的通道号(0~7)
{
unsigned char AD_finished=0;
int result;
ADC_CONTR|=channel;   //选择AD通道号
ADC_CONTR|=0x08;      //启动AD转换
while(AD_finished==0) //等待AD转换结束
{
  AD_finished=(ADC_CONTR&0x10);//查询ADC_FLAG位是否置1
}
result=ADC_DATA*4+ADC_LOW2;//读走AD转换结果,由于ADC_DATA中存储12位中的
//高8位,当要转换成10进制时,需将ADC_DATA中的数左移2位,即相当于*4
ADC_CONTR&=0xf7;     //清除转换结束标志
return (result);    //返回结果给函数
}
float Ad_Av(uchar channel)    //求100次采集电压的平均值
{
float Val_Av=0;
uchar num;
for(num=100;num>0;num--)
{
  Val_Av+=GetAD(channel);//100次采集求和
}
Val_Av/=100.0;            //求平均值
Val_Av=Val_Av*5.0/1024;  //单片机电源为5V,求的真实电压值
return (Val_Av);          //返回给函数
}
void main()
{
float ad1,ad2,ad3,ad4;
AD_Init();
ad1=Ad_Av(1);
ad2=Ad_Av(2);
ad3=Ad_Av(3);
ad4=Ad_Av(4);
while(1);
}                                                                                                                    
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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