stc 8位ADC转换实验程序

发布者:吉州古玩斋最新更新时间:2016-09-12 来源: eefocus关键字:stc  8位  ADC转换 手机看文章 扫描二维码
随时随地手机看文章
/*********************************************************************************************
程序名:    8位ADC转换实验程序
编写时间:  2010年3月24日
硬件支持:  STC12C2052AD 使用ADC功能 外部晶体12MHz
接口说明:    
修改日志:  
  1-
/*********************************************************************************************
说明:
PC串口端设置 [ 4800,8,无,1,无 ]
将ADC读出的数值通过串口以十六进制方式显示。
 
/*********************************************************************************************/
 
#include //单片机头文件
#include //51基本运算(包括_nop_空函数)
 
/*********************************************************************************************
函数名:毫秒级CPU延时函数
调  用:DELAY_MS (?);
参  数:1~65535(参数不可为0)
返回值:无
结  果:占用CPU方式延时与参数数值相同的毫秒时间
备  注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){
unsigned int i;
while( a-- != 0){
for(i = 0; i < 600; i++);
}
}
/*********************************************************************************************/
 
/*********************************************************************************************
函数名:UART串口初始化函数
调  用:UART_init();
参  数:无
返回值:无
结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
备  注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]
/**********************************************************************************************/
void UART_init (void){
//EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
//ES = 1; //允许UART串口的中断
 
TMOD = 0x20; //定时器T/C1工作方式2
SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
TH1 = 0xF3; //定时器初值高8位设置
TL1 = 0xF3; //定时器初值低8位设置
PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400)
TR1 = 1; //定时器启动    
}
/**********************************************************************************************/
 
/*********************************************************************************************
函数名:UART串口发送函数
调  用:UART_T (?);
参  数:需要UART串口发送的数据(8位/1字节)
返回值:无 
结  果:将参数中的数据发送给UART串口,确认发送完成后退出
备  注:
/**********************************************************************************************/
void UART_T (unsigned char UART_data){ //定义串口发送数据变量
SBUF = UART_data; //将接收的数据发送回去
while(TI == 0); //检查发送中断标志位
TI = 0; //令发送中断标志位为0(软件清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:8位A/D转换初始化函数
调  用:Read (?);
参  数:输入的端口(0000 0XXX 其中XXX是设置输入端口号,可用十进制0~7表示,0表示P1.0,7表示P1.7)
返回值:无
结  果:开启ADC功能并设置ADC的输入端口
备  注:适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)
/**********************************************************************************************/
void Read_init (unsigned char CHA){
unsigned char AD_FIN=0; //存储A/D转换标志
    CHA &= 0x07;            //选择ADC的8个接口中的一个(0000 0111 清0高5位)
    ADC_CONTR = 0x40; //ADC转换的速度(0XX0 0000 其中XX控制速度,请根据数据手册设置)
    _nop_();
    ADC_CONTR |= CHA;       //选择A/D当前通道
    _nop_();
    ADC_CONTR |= 0x80;      //启动A/D电源
    DELAY_MS(1);            //使输入电压达到稳定(1ms即可)
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:8位A/D转换函数
调  用:? = Read ();
参  数:无
返回值:8位的ADC数据
结  果:读出指定ADC接口的A/D转换值,并返回数值
备  注:适用于STC12C2052AD系列单片机(必须使用STC12C2052AD.h头文件)
/**********************************************************************************************/
unsigned char Read (void){
unsigned char AD_FIN=0; //存储A/D转换标志
    ADC_CONTR |= 0x08;      //启动A/D转换(0000 1000 令ADCS = 1)
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    while (AD_FIN ==0){     //等待A/D转换结束
        AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否
    }
    ADC_CONTR &= 0xE7;      //1111 0111 清ADC_FLAG位, 关闭A/D转换, 
return (ADC_DATA);          //返回A/D转换结果(8位)
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:主函数
调  用:无
参  数:无
返回值:无
结  果:程序开始处,无限循环
备  注:
/**********************************************************************************************/
void main (void){
unsigned char R;
UART_init();//串口初始程序
Read_init(0);//ADC初始化
P1M0 = 0x01; //P1.7~.0:0000 0001(高阻)//注意:更改ADC通道时须同时将对应的IO接口修改为高阻输入。
P1M1 = 0x00; //P1.7~.0:0000 0000(强推)
while(1){
    R = Read ();
    UART_T (R); //串口小秘书,将ADC读出值送入串口显示
}
}/**********************************************************************************************/
/*************************************************************
* 杜洋工作室 www.DoYoung.net
/*************************************************************/
 
关键字:stc  8位  ADC转换 引用地址:stc 8位ADC转换实验程序

上一篇:单片机开发人员的几个常疏忽的问题点
下一篇:PWM模块调试程序(仅实验用)

推荐阅读最新更新时间:2024-03-16 15:09

AVR系列之ADC转换
整理一下关于AVR的ADC转换功能吧 AVR中的数模转换器是一个10位的逐次逼近型ADC 提供8路单端输入通道 单端电压以0V为基准 同时具有7路差分输入通道 这七路差分通道共享一个通用负端(ADC) 输入电压范围为0~VCC 它的转化时间为65~260uS 下面程序的现象为 串口发送命令启动ADC 并将结果通过串口发送到PC 任意字符开启 #include iom16v.h #include macros.h #define uchar unsigned char uchar UcAdcData ; //ADC转换的结果 uchar AdcConCom = 0 ; //ADC 转换完成标志 uchar
[单片机]
飞思卡尔S12P:用8位的价格做16位MCU
作为嵌入式半导体行业的构想者和架构师,飞思卡尔一直致力并推动创新科技发展。8月24日,将举办一年一度的盛会——飞思卡尔技术论坛(FTF),届时大会将设置多场专题研讨会,就汽车信息娱乐市场、汽车新能源等未来发展趋势进行深入讨论。 在汽车电子领域,对于MCU性能的要求高于其他拭擦很难过,但是16位,32位MCU还是在逐渐取代8位MCU市场份额。作为汽车电子领域的领军企业,近年来,飞思卡尔也在积极的拓展MCU产品链路,并不断改进它们的性能。S12P就是其中典型的一款。S12P是一款能够用8位价格购得的16位构架MCU,非常适合入门级汽车的成本敏感型车身控制应用。 表1,2009年中国市场前15家MCU公司排名
[单片机]
飞思卡尔S12P:用<font color='red'>8位</font>的价格做16位MCU
STC单片机流水灯新花样程序
ORG 000H;设置起始地址 START: MOV A,#0FFH;向A寄存器中载入十六进制数0FFH D2: SUBB A,#1;A寄存器中数据减一 call DE ;调入延时程序(修改延时时间可以实现水滴效果) MOV R1,A;将寄存器A中数据传送给R1 MOV P1,R1;输出(外接8个LED,共阳极接法,低电平有效) DJNZ R1,D2;检测R2是否为零,否则跳到D2处继续执行 JMP
[单片机]
基于STC12C5A60S2的帆板控制系统的设计
单片机作为微控制器的一种,广泛应用于日常生活。该课程由于其综合性和实践性较强,涉及知识较多,对培养和锻炼学生运用单片机技术的硬件、软件进行开发设计的能力,学生分析问题,解决问题的能力,高职学生职业技能,实践创新能力有重要的作用,为从事自动控制及应用电子产品的检测、设计奠定基础。本文来源于2011年全国电子设计竞赛F题,设计实现帆板控制系统。系统要求通过键盘预置角度,利用风扇风力大小控制帆板转角,并实时显示。本题涉及了角度检测、电机驱动、PWM、闭环控制、AD转换等单片机应用技术,是帆板自主航行系统中重要的组成部分。 1 系统方案描述 根据要求,本系统由单片机最小系统、人机交互模块、风扇控制模块、角度检测模块、声光报警模块、
[单片机]
基于<font color='red'>STC</font>12C5A60S2的帆板控制系统的设计
基于STC89C52RC单片机的超声波测距程序设计
网络上集的STC89C52RC单片机超声波测距程序及电子制作实物,使用单片机最小系统进行试验,超声波部分使用HC-SR04模块,测量范围:4-300cm,实际测量上最长可达到5.70m。下面是实物图,文章后面附源程序。 4-300cn,实际测量上最长可达到5.7m #include ‘AT89X51.H’ //头文件 unsigned char code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; unsigne
[单片机]
通过CHNet-Q实现以太网通信及ModbusTCP配置方法
三菱Q系列PLC连接CHNet-Q实现以太网通信配置方法 CHNet-Q是兴达易控研制的一款经济型的以太网通讯处理器,是为满足日益增多的工厂设备信息化需求(设备网络监控和生产管理)而设计,用于三菱Q系列PLC圆口的以太网数据采集,非常方便构建生产管理系统。 CHNet-Q采用模块化设计,带通讯线。不占用PLC编程口,即编程软件/上位机软件通过以太网对PLC数据监控的同时,触摸屏可以通过复用接口X2与PLC进行通讯。 CHNet-Q支持工控领域内绝大多数SCADA软件,支持三菱MC以太网协议和ModbusTCP两种通讯方式。 CHNet-Q功能: 1、安装在35mm的导轨上,无需外接电源。COM1口连Q的MD6编程通
[嵌入式]
通过CHNet-Q实现以太网通信及Modbu<font color='red'>sTC</font>P配置方法
单片机多通道AD采集源程序(8路) STC15w系列
12864为串行接法。AD0~AD4接的5V电源。 AD5~AD7接的GND。 STC15W408AS 自带8路10位AD 程序只使用了高八位。量程为255. 程序里面含10位AD采集。1024。 代码已注释。 新手上路。有错误还请斧正。 制作出来的实物图如下: 单片机源程序如下: #include STC15.h #include intrins.h #define uchar unsigned char; #define uint unsigned int; uchar a1,b1; //接收高八位,低八位 uint ad1; //用于接收10位AD数据 #define ADC_POWER
[单片机]
单片机多通道AD采集源程序(8路) <font color='red'>STC</font>15w系列
基于stc89c52单片机控制步进电机
51单片机是许多单片机初学者的入门开发板,今天给大家做一个基于51内核的stc89c52板子来控制步进电机,可以实现步进电机的正反转、加减速。另外,使用板子自带的Ds18b20模块进行环境测温,并将测得的数据用lcd液晶屏进行显示。并在温度达到设定值时蜂鸣器报警。 第一步,硬件 1 stc89c52开发板,这个板子就不多讲了,网上有很多 2 步进电机,用的是网上非常便宜的4相5线步进电机 28BYJ-48,电压为5v 第二,程序 1 步进电机程序,定义步进电机的IO口以及方向以便调速和转向 2 LCD程序,主要是三个函数,一个初始化函数,一个写函数,一个显示函数 3 温度传感器Ds18b20,主要是这个读函
[单片机]
基于<font color='red'>stc</font>89c52单片机控制步进电机
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved