STC单片机AD转换程序设计
- 格式:docx
- 大小:13.49 KB
- 文档页数:2
STC12C5A60S2中的AD转换逐次逼近原理AD 里面包含da,当输入电压Vin时,da的最高位是1,即为0.5Vref与输入信号比较,如果输入大于0.5Vref则比较器输出为1,同时da的最高位为1,反之DA最高位则为0,通过8次比较后得到8个01数据即完成ad转换。
现在说下程序中用到stc12单片机两个寄存器ADC_CONTR;主要用来配置ad启动的工作模式;还有个result的寄存器程序中的注意点:配置完ADC_CONTR后要延时4个时钟周期先把程序附上#include "stc12.h"#include "intrins.h"#include "ad.h"uint ad;#define ADC_POWER 0X80 //ADC最高位给adc部分供电,类似于片选#define ADC_START 0X08 //模数转换启动控制位#define ADC_FLAG 0x10 //ad转换需要时间,这个是转换完成标志位#define ADC_SPEEDLL 0X00 //540 clock#define ADC_SPEEDL 0X20 //360 clock#define ADC_SPEEDH 0X40 //180 clock#define ADC_SPEEDHH 0X60 //90 clockuchar ADCresult(uchar aa) //这里的参数是哪个口来ad转换{P1ASF=0X01; //这里的选择和用哪一个P1口作为ad采样ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|aa;//ADC_CONTR=0X88|aa;_nop_();_nop_();_nop_();_nop_();//设置ADC_CONTR寄存器后需加4个CPU时钟周期的延时,才能保证值被写入ADC_CONTR寄存器while (!(ADC_CONTR & ADC_FLAG)); //等待ADC_CONTR,这里的ADC_FLAG相当于一个常数,不是寄存器里面的某个位//while(!ADC_FLAG);//ADC_FLAG=0;ADC_CONTR &= ~ADC_FLAG; //Close ADC 将标志位清零等待下次硬件置1ad=(ADC_RES<<2)+ADC_RESL; //打开10位AD采集功能如果用8位AD 屏掉这句把下一句改为Vo=(float)(ADC_RESL)*500/256; 即可//ADC_RES结果寄存器的高2位;ADC_RES结果寄存器的低8位ad=(float)(ad)*5*100/1024; //Return ADCresult(为显示整数,这里将电压值扩大了十倍)//10位AD采集即2的10次方满值为1024 这里用1024表示5伏的电压//那么用采集到的数量值除以1024 在乘以5 得到的值就是采集的电压数值//这里又*100 是为了扩大100倍显示小数位//ADC_RES*(5/256)为采集的电压值然后扩大10倍便于计算return ad;}这里只是个ad.c源文件,这里有几个问题想说一下1.怎么知道是10位还是8位的ad结果;你可以在ADCresult(uchar aa)最前面加一条AUXR1&=0x04;什么意思呢,转换结果的低2位放在ADC_RES,高8位ADC_RESL 中2为什么不用//while(!ADC_FLAG);//ADC_FLAG=0;这两条因为ADC_FLAG相当于常量前面用宏定义而头文件里只有ADC_CONTR的地址映射;但是如果在头文件中用sbit ADC_FLAG=ADC_CONTR^4会出现错误,具体原因还不清楚先说到这吧。
引言本课题旳任务是对A/D转换电路进行设计,理解A/D转换与单片机旳接口措施,掌握AD0809转换性能及编程措施。
把模拟量转换成数字量旳器件,称为模数转换器,简称为A/D(Anolog to Digit)。
一般旳A/D转换过程是通过采样、保持、量化和编码4个环节完毕旳,这些环节往往是合并进行旳。
当A/D转换结束,ADC输出一种转换结束信号数据。
CPU可有多种措施读取转换成果:①查询方式;②中断方式;③ DMA方式。
通道8位A/D转换器,ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容旳控制逻辑旳CMOS组件。
它是逐次迫近式A/D转换器,可以和单片机直接接口。
ADC0809由一种8路模拟开关、一种地址锁存与译码器、一种A/D转换器和一种三态输出锁存器构成。
多路开关可选通8个模拟通道,容许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D 转换完旳数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完旳数据。
一种实际旳系统中需用传感器把多种物理参数(如压力和温度等)测量出来,并转换为电信号,再通过A/D转换器,传送给微型计算机;微型计算机加工处理后,通过D/A转换器去控制多种参数量。
目录一系统设计原理 (3)二系统设计 (4)三整个系统实现功能 (7)四收获与心得体会 (9)五参照书目 (10)一系统设计原理1 引脚定义:IN0~IN7:8路模拟信号输入端,由地址锁存及译码控制单元旳3位地址A、B、C进行选通切换。
START:A/D转换启动控制信号输入端。
ALE:地址锁存信号输入端,START 和ALE 用于启动A/D转换。
V REF(+)和V REF(-):正、负基准电压输入端。
OE:输出容许控制信号输入端,A/D转换后旳数据进入三态输出数据锁存器,并在OE旳作用下(OE为高电平),通过D0~D7将锁存器旳数据送出。
EOC:A/D 转换结束标志信号。
基于单片机的AD转换电路与程序设计单片机(MCU)是一种集成了处理器核心、内存、输入输出接口和各种外围设备控制器等功能的集成电路。
MCU通常用于嵌入式系统,广泛应用于各个领域,例如家电、工业控制、汽车电子等。
其中,AD转换是MCU中的一个重要模块,用于将模拟信号转换成数字信号。
在应用中,常常需要将外部的温度、湿度、压力或光照等模拟信号进行转换和处理。
AD转换电路一般由模拟输入端、引脚连接、采样保持电路、比较器、取样调节电路、数字输出端等部分组成。
模拟输入端负责接收外部的模拟量信号;引脚连接将模拟输入信号引到芯片的模拟输入端;采样保持电路负责将引脚输入的模拟信号进行采样和保持,保证AD转换的准确性;比较器用于将模拟信号与参考电压进行比较,判断信号的大小;取样调节电路用于调整模拟信号的边界;数字输出端将模拟信号转换成数字信号输出给MCU。
在程序设计方面,MCU通常使用C语言进行编程。
程序设计分为初始化和数据处理两个步骤。
初始化阶段主要包括设置IO口、初始化外设、设置模拟输入通道等工作。
数据处理阶段主要包括数据采样、数值转换、数据处理和输出等工作。
下面以一个简单的温度采集系统为例进行说明。
首先,在初始化阶段,需要设置IO口和外设,以及设置模拟输入通道。
具体步骤如下:1.设置IO口:根据具体需要配置MCU的引脚功能和工作模式。
2.初始化外设:根据需要初始化ADC模块,包括设置采样频率、参考电压等参数。
3.设置模拟输入通道:选择需要转换的模拟输入通道。
接下来,在数据处理阶段,需要进行数据采样、数值转换和数据处理。
具体步骤如下:1.数据采样:使用ADC模块进行模拟信号的采样,将采样结果保存到寄存器中。
2.数值转换:将采样结果转换成数字信号,可以使用如下公式进行转换:数字信号=(ADC采样结果/采样最大值)*参考电压3.数据处理:根据具体需求进行数据处理,例如计算平均值、最大值或最小值,也可以进行滤波或校正。
STC单片机电池点焊机程序代码概述本文将详细介绍STC单片机电池点焊机的程序代码设计。
点焊机是一种常用于电池组装的设备,通过将电池片与电池引线进行点焊,实现电池的连接。
STC单片机是一种常用的微控制器,具有低功耗、高性能和易于编程的特点。
通过编写合适的程序代码,可以实现电池点焊机的自动化控制。
程序框架为了实现电池点焊机的自动化控制,我们需要设计一个程序框架,包括初始化设置、电池检测、点焊控制等功能。
下面是程序框架的详细说明:1. 初始化设置•设置IO口方向:将控制点焊机的IO口设置为输出,用于控制点焊动作的触发。
•设置ADC:配置模拟数字转换器(ADC),用于检测电池电压。
•设置定时器:使用定时器控制点焊机的点焊时间,以确保焊接质量。
2. 电池检测•读取电池电压:使用ADC模块读取电池电压,根据电压值判断是否满足点焊条件。
•判断电池状态:根据电池电压判断电池是否正常,如果电压过低或过高,则停止点焊。
3. 点焊控制•控制IO口输出:根据电池检测结果,控制IO口输出高电平触发点焊动作。
•启动定时器:启动定时器开始计时,控制点焊时间。
•等待定时器中断:等待定时器中断,表示点焊时间到达。
•停止点焊:将IO口输出低电平,停止点焊动作。
程序代码实现下面是STC单片机电池点焊机的程序代码实现示例:#include <reg51.h>// 定义IO口和ADC引脚sbit weldPin = P1^0;sbit adcPin = P2^0;// 定义定时器相关变量unsigned char TH0_value, TL0_value;// ADC初始化函数void ADC_Init(){// 设置ADC引脚为输入模式adcPin = 1;}// ADC读取函数unsigned int ADC_Read(){unsigned int adcValue;// 设置ADC转换开始信号ADC_CONTR = 0x80;// 等待ADC转换完成while (ADC_CONTR & 0x10);// 读取ADC转换结果adcValue = ADC_RES;// 返回ADC值return adcValue;}// 定时器初始化函数void Timer_Init(){// 设置定时器0为工作方式1,16位定时器/计数器 TMOD = 0x01;// 设置定时器0的初值TH0_value = 0xFC;TL0_value = 0x67;// 装载定时器0初值TH0 = TH0_value;TL0 = TL0_value;// 启动定时器0TR0 = 1;}// 定时器中断服务函数void Timer_Interrupt(void) interrupt 1{// 停止定时器0TR0 = 0;// 清除定时器0溢出标志TF0 = 0;// 设置IO口输出低电平,停止点焊weldPin = 0;}// 主函数void main(){// 初始化设置ADC_Init();Timer_Init();while(1){// 电池检测unsigned int batteryVoltage = ADC_Read();if (batteryVoltage < 200 || batteryVoltage > 400) {// 电池电压异常,停止点焊weldPin = 0;continue;}// 点焊控制weldPin = 1;// 等待定时器中断while(!TF0);// 清除定时器溢出标志TF0 = 0;}}结论通过以上的程序代码,我们实现了STC单片机电池点焊机的自动化控制。
目录摘要 (1)ABSTRACT (2)0文献综述 (3)1引言 (3)1.1任务分析与方案确定 (4)1.2单片机的系统分析 (4)1.3A/D转换器的选取 (7)1.4传感器的数据采集 (8)1.5显示与键盘分析 (10)2 系统硬件设计 (13)2.1A/D转换的一般步骤 (13)2.2ADC0809内部功能与引脚介绍 (13)2.3ADC0809与MCS-51系列单片机的接口方法 (16)2.4控制器、振荡源和复位电路 (18)2.5键盘与显示电路 (19)3 软件设计 (21)3.1A/D转换 (21)3.2标度变换 (24)3.3数制转换 (25)3.4键盘程序 (26)3.5LED显示程序 (27)4结论 (28)参考文献 (29)致谢 (30)基于单片机的A/D转换电路与程序设计XXX西南大学工程技术学院,重庆400716摘要:A/D转换是指将模拟信号转换为数字信号,这在信号处理、信号传输等领域具有重要的意义。
常用的A/D转换电路有专用A/D集成电路、单片机ADC模块,前者精度高、电路复杂,后者成本低、设计简单。
基于单片机的A/D转换电路在实际电路中获得了广泛的应用,论文对这一电路结构进行了详细的研究。
关键词:单片机;AD转换器;电路Based on SCM A/D Circuit and Program DesignTANG XiaolingCollege of Engineering and Technology, Southwest University, Chongqing 400716, ChinaAbstract:A/D conversion refers to analog signals into digital signals, which in signal processing, signal transmission fields has the vital significance. Commonly used A/D circuit has dedicated A/D IC chip, high precision, the former ADC module circuit, the complex, low cost, simple design. Based on SCM A/D circuit in practical circuit has been widely used in the circuit, this paper makes A detailed study of the structure.0文献综述数据采集系统(用于将模拟信号转换为计算机可以识别的数字信号。
Stc12c5a60s2系列单片机的A/d数模转换模块实验摘要:与时间成连续函数的物理量,一般都称之为模拟量。
人们在工业生产及科研过程中遇到的被测量绝大部分是模拟量。
例如:电压,电流,温度,压力,位移,速度等。
计算机技术是测量与控制自动化与智能化的关键,是现代测控技术的核心技术之一。
现代计算机是数字计算机,它无法直接处理模拟信号,因此欲实现基于计算机的测量与控制,必须具备将连续变化的模拟信号转变成计算机能够识别及处理的数字信号的手段。
为此模/数转换技术应运而成,并成为现代测控技术中的重要组成部分。
将模拟量转换为一定码制的数字量称为模/数转换。
Stc12c5a60s2系列单片机作为微型控制芯片的一种,其自身自带a/d装换口:P1(p1.0-p1.7),可实现数模转换功能。
实验目的:以Stc12c5a60s2单片机以及1602液晶显示屏做一个简易的”电压测量器“,测量线性稳压电源提供的直流电压,精度0.01v,通过调节电位器,将输入的电压转换为数字量实时显示在1602lcd上。
实现过程:1.理论学习:(1)在掌握1602lcd工作原理及使用方法的基础上,查阅Stc12c5a60s2单片机数模转换模块应用介绍,弄清楚a/d转换器的结构,了解a/d转换器是如何工作的。
(2)理解与a/d转换器相关的寄存器的设置,会根据实际需要设置相关的寄存器。
(3)了解如何配置a/d转换口,如何取出转换结果。
以十位结果为例,计算公式如下:Vcc即单片机实际工作电压,我们用单片机工作电压做模拟参考电压,则输出的实际电压vin=result(结果寄存器中的值)×vcc(单片机工作电压5v)/1024。
2.需注意的问题:(1)Stc12c5a60s2单片机的参考电压源是输入的工作电压vcc,所以一般不用外接参考电压源,如果单片机是采用电池供电,电池电压会在一定范围内漂移,所以vcc就不固定,这时候就需要在8路a/d转换的一个通道外接一个稳定的参考电压源,来计算此时的工作电压vcc,再计算出其他几路a/d转换通道的电压。
STC单片机AD温度转换计算一、概述STC单片机是一种常用的嵌入式微控制器,广泛应用于各种电子设备中。
其中,采集温度传感器的数据是STC单片机的常见应用之一。
本文将介绍如何利用STC单片机的AD转换功能,实现温度数据的采集和计算。
二、AD转换原理1. STC单片机内部的AD转换器是一种10位逐次逼近式AD转换器,可以将模拟信号转换为数字信号。
2. 要进行温度转换,需要先连接温度传感器到STC单片机的AD输入引脚,并将相应的引脚配置为输入模式。
3. 通过编程,设置AD转换器的工作模式、参考电压和时钟频率等参数,以确保AD转换的准确性和稳定性。
三、温度传感器的接入1. 常用的温度传感器有NTC热敏电阻、DS18B20数字温度传感器等。
这些传感器可以通过一定的电路连接到STC单片机的AD输入引脚。
2. 在连接时,需要考虑传感器的电气特性,如输入电压范围、输出信号类型等,以确保传感器与单片机的兼容性。
3. 另外,还需要考虑传感器的精度、响应时间和稳定性等性能指标,以选择合适的传感器用于温度测量。
四、温度转换计算1. 获取AD转换后的数字数据后,需要利用一定的算法将其转换为实际的温度数值。
2. 对于NTC热敏电阻传感器,可以利用斯特林公式和双参数B25/85值来计算温度。
3. 而对于DS18B20数字温度传感器,可以直接从AD转换的数字值中得到温度数据。
4. 在计算过程中需要考虑温度传感器的特性曲线、环境温度补偿等因素,以提高温度测量的准确性和可靠性。
五、温度数据的处理与显示1. 获取到温度数据后,可以进行一定的数据处理和滤波,以消除测量中的噪声和干扰。
2. 可以通过串口通信或LCD显示屏等外设,将温度数据实时显示出来,以方便用户对温度进行监测和控制。
3. 另外,还可以将温度数据存储到EEPROM或外部存储器中,以便后续的数据分析和应用。
六、实验验证1. 为了验证温度转换计算的准确性,可以进行一定的实验验证。
目录一、课程设计目的--------------------- 2二、课程设计内容与要求 ---------------- 2三、芯片简介 ------------------------3(一)A/D 转换芯片0809 引脚图与功能简介二)8051 单片机引脚图与引脚功能简介三)8155 引脚图及功能描述四、设计方案及程序流程图----------------- 10五、子模块设计及硬件电路连接--------- 12(一)A/D 转换模块(二)单片机模块(三)数码管动态扫描模块六、总程序 ------------------- 19七、课程设计总结 -------------------231.收获与体会2.遇到的问题及解决八、参考书目 ---------------------- 24一、课程设计目的单片机课程设计的目的就是要锻炼学生的实际动手能力。
在理论学习的基础上,通过完成一个具有综合功能的小系统,使学生将课堂上学到的理论知识与实际应用结合起来,对电子电路、电子元器件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立设计单片机应用系统的开发设计工作打下一定的基础。
二、课程设计内容与要求要求每个学生(或小组)都要自己动手独立设计完成一个典型的单片机应用小系统。
设计题目由指导教师提供,也可以自己选择设计题目,但难度不应小于参考题目,需经指导教师审查后方可确定是否采纳。
一般4 人为一小组。
课程设计的时间为1 周。
设计的最终作品包括硬件和软件两个部分,要求能够演示并达到设计指标的要求。
每个学生(或小组)在作品完成后,要经指导教师检查通过后才算完成。
课程设计报告每个学生一份,独立完成。
设计目的:利用MCS-51 芯片及相关芯片构成模拟温度检测。
设计要求:1、由可变电阻产生0~5V 连续变化的模拟信号代表温度0~100 度。
2、用ADC 转换器完成模拟量到数字量的转换。
STC15单片机AD转换汇编程序一、引言在嵌入式系统开发中,AD(模数转换)是非常重要且常用的功能之一。
STC15单片机作为一种广泛应用的单片机,其AD转换功能也备受关注。
本文将针对STC15单片机的AD转换功能,深度探讨其汇编程序实现的方法和技巧。
二、STC15单片机AD转换的基本原理STC15单片机通过内部的AD转换模块,可以将模拟信号转换为数字信号,从而方便处理和分析。
其AD转换的基本原理是通过采样保持电路对模拟信号进行采样,然后将其转换为相应的数字量。
在具体的汇编程序中,需要考虑输入端口的设置、参考电压的选取和AD转换开始命令的下发等问题。
三、STC15单片机AD转换的汇编程序实现方法1. 设置输入端口和参考电压在写汇编程序之前,首先需要设置好输入端口和参考电压。
对于STC15单片机,可以通过相应的寄存器设置来实现。
需要注意的是,输入端口的选择和参考电压的设置将直接影响到AD转换的准确性和稳定性,因此需要认真考虑并进行合理设置。
2. 编写AD转换子程序在编写AD转换子程序时,需要考虑如何进行AD采样和转换、如何获得转换结果、以及如何处理转换结果等问题。
在采样转换时,需要注意采样保持电路的作用和AD转换的时钟周期。
获取转换结果后,还需要进行相应的处理,如数据的清洗、分析和存储等。
3. 主程序中调用AD转换子程序在主程序中调用AD转换子程序时,需要注意时序合理性和程序流程的清晰性。
还需要考虑如何根据转换结果进行相应的控制和应用,从而充分发挥AD转换的作用。
四、结论STC15单片机的AD转换功能在实际应用中具有重要意义,通过合理的汇编程序实现,可以充分发挥其优势并应用于各种领域。
熟练掌握AD转换的实现方法和技巧,对于嵌入式系统开发工程师来说是非常必要的。
希望本文的探讨能够对读者有所帮助。
个人观点和理解在实际的嵌入式系统开发中,AD转换是一个常见但又比较复杂的功能模块之一。
通过学习和实践,我深切体会到了AD转换在数据采集、传感器应用等方面的重要性。