精华内容
下载资源
问答
  • 最近刚接触pic,用的芯片是pic18f67k22,想实现ad按键,就是按下一个按键,数码管显示相应的数字。但疑问的是,ADCON1这个寄存器的bit7-6不知道怎么配置,程序里应该都不会用到那四种触发信号啊,还请哪位大神能详细...
  • 飞思卡尔单片机AD模块简述(1)

    千次阅读 2010-10-30 20:57:00
    S12XS系列MCU的ATD模块共有27个寄存器,包括6个ATD转换控制寄存器,2个ATD转换状态寄存器,1个ATD比较使能寄存器,1个ATD比较方式寄存器,1个ATD转换输入使能寄存器和16个ATD转换结果寄存器(其中ATDCTL0~ATDCTL5和...

    S12XS系列MCU的ATD模块共有27个寄存器,包括6个ATD转换控制寄存器,2个ATD转换状态寄存器,1个ATD比较使能寄存器,1个ATD比较方式寄存器,1个ATD转换输入使能寄存器和16个ATD转换结果寄存器(其中ATDCTL0~ATDCTL5和ATDSTAT0这7个寄存器为8位寄存器,其余寄存器都是16位寄存器)。

    先给出一段例程

    Code:
    1. void ATD_init(void)   
    2. {   
    3.   ATD0CTL1=0x0f;   //选择8位转换精度   
    4.   ATD0CTL2=0x40;  //打开CCF快速清零位,关闭外部触发输入,关闭中断   
    5.   ATD0CTL3=0x08;   //数据左对齐,non-fifo,转换序列长度为1   
    6.   ATD0CTL4=0xE3;  //采样时间为24个ATD时钟周期,ATDCLK=8MB/8=1MHz   
    7. }  

    下面对各个寄存器做一个介绍:

    (1)ATD控制寄存器0

     Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    保留000WRAP3WRAP2WRAP1WRAP0
       
    复位值00001111

    WRAP [ 3 : 0 ]:回旋通道选择位。这些选择位只有在ATDCTL5的MULT位为1的情况下,也就是多通道转换模式下,才是有效的。WRAP [ 3 : 0 ] = 0时,为保留值。WRAP [ 3 : 0 ]:= x(1<x<15)时,在多通道转换模式下,当完成对第x个模拟输入通道(ANx)的ATD转换后,下一个ATD转换通道将回绕到第0个通道AN0,而不是第N+1个通道。

    (2)ATD控制寄存器1

     Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    读/写ETRIGSELSRES1SRES0SMP_DISETRIGCH3ETRIGCH2ETRIGCH1ETRIGCH0
    复位值01001111

    ETRIGSEL。外部触发源选择位。

    SRES [ 1 : 0 ]:ATD转换精度选择位。

    SRES1SRES0ATD转换精度
    008位
    0110位
    1012位
    11保留

    SMP_DIS:采样前放电控制位。1时对模拟信号采样前,释放ATD模块内部采样电容中的电荷。

    ETRIGCH [ 3 : 0 ] :外部触发通道选择位。当ETRIGCH [ 3 : 0 ] 为x(0<x<15)时,选择第x个模拟输入通道ANx为外部触发信号。

    (3)ATD控制寄存器2

     Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    0AFFCICLKSTPETRIGLEETRIGPETRIGEASCIEACMPIE
     
    复位值00000000

    AFFC:ATD转换CCF快速清零位。

    ICLKSTP:停止模式内部时钟使能位。1位在停止模式下,ATD模块可以继续使用模块内部时钟ICLK进行ATD转换。0位在停止模式下,ATD模块停止当前的转换,退出停止模式后,ATD转换自动重新开始。

    ETRIGLE:外部触发电平/边沿控制位。

    ETRIGP:外部触发极性控制位。

    ETRGLEETRIGP外部触发条件
    00下降沿
    01上升沿
    10低电平
    11高电平
     

    ETRIGE:外部触发信号使能位。

    ASCIE:ATD转换序列结束中断使能位。1为使能ATD转换序列结束中断,也就是说,当SCF=1时,将引发中断;0时,为禁止ATRD转换序列结束中断。

    ACMPIE:ATD比较中断使能位。

     

    (4)ATD控制寄存器3

     Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    读/写DJMS8CS4CS2CS1CFIFOFRZ1FRZ0
    复位值00100000

    DJM:结果寄存器数据对齐位。1表示结果寄存器中的数据位右对齐,0表示结果寄存器中的数据结果为左对齐。

    S8C,S4C,S2C,S1C:A/D转换序列长度定义位,这4位定义了一个A/D转换序列的长度,默认S4C为1,即默认转换序列的长度为4。

    S8CS4CS2CS1C转换序列长度
    00008
    00011
    00102
    00113
    01004
    01015
    01106
    01117
    1xxx8

    FIFO:结果寄存器先进先出模式位。1表示先进先出模式,转换结果依次放在连续的结果寄存器中,当使用完最后一个结果寄存器后,会重新回到第一个结果寄存器存放转换结果。可以根据完成标志位判断哪个寄存器中的结果数据有效。0表示非先进先出模式。A/D转换结果在寄存器中的存放位置和转换序列中的顺序相关联,简单的说,第一次转换的结果放在第一个结果寄存器中,第二次转换的结果放在第二个结果寄存器中,依次类推。

    FRZ [ 1 : 0 ]:后台调试冻结使能位。当调试程序时,如果遇到断点,有时希望此时ATD模块停止。

    FRZ1FRZ0工作状态
    00继续转换
    01未定义
    10完成当前转换,然后暂停
    11立即暂停

     

     

    展开全文
  • 飞思卡尔单片机AD模块简述(3)

    千次阅读 2010-11-02 19:58:00
    通用输入输出端口AD口与ATD模块的模拟输入引脚复用。如果要把某个模拟输入引脚作为通用输入引脚使用,必须置对应的IEN位。当IEN [ x ]为1时,使能ANx引脚上的数字输入缓冲器;当IEN [ x ]为0时,关闭ANx引脚上的...

    (8)ATD比较使能寄存器

     Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    读/写CMPE15CMPE14CMPE13CMPE12CMPE11CMPE10CMPE9CMPE8CMPE7CMPE6CMPE5CMPE4CMPE3CMPE2CMPE1CMPE0
    复位值0000000000000000

    CMPE [ 15 : 0 ]:比较使能位。当CMPE [n]为1时,对一个转换序列中的第N次ATD转换的结果进行比较。当CMPE [ n ]为0时,不做比较。

    (9)ATD状态寄存器2

     Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    CCF15CCF14CCF13CCF12CCF11CCF10CCF9CCF8CCF7CCF6CCF5CCF4CCF3CCF2CCF1CCF0
    复位值0000000000000000

    CCF [ 15 : 0 ]:转换或比较序列完成位。当CCF [ n ]为1时,如果比较功能被禁止(CMPE [ n ] = 0),表示转换序列中的第N次转换完成,结果放在第N个结果寄存器中;如果比较功能被使能(CMPE [ n ] = 1),表示对转换序列中的第N次转换结果进行比较的结果为真,由于结果寄存器存储的是比较阈值,ATD转换结果则丢失。当CCF [ n ]为0时,表示转换未完成或者比较不成功。

    (10)ATD输入使能寄存器

     Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    IEN15IEN14IEN13IEN12IEN11IEN10IEN9IEN8IEN7IEN6IEN5IEN4IEN3IEN2IEN1IEN0
    复位值0000000000000000

    IEN [ 15 : 0 ]:ATD数字输入使能位。通用输入输出端口AD口与ATD模块的模拟输入引脚复用。如果要把某个模拟输入引脚作为通用输入引脚使用,必须置对应的IEN位。当IEN [ x ]为1时,使能ANx引脚上的数字输入缓冲器;当IEN [ x ]为0时,关闭ANx引脚上的数字输入缓冲器。

    (11)ATD比较方式寄存器

     Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    CMPHT15CMPHT14CMPHT13CMPHT12CMPHT11CMPHT10CMPHT9CMPHT8CMPHT7CMPHT6CMPHT5CMPHT4CMPHT3CMPHT2CMPHT1CMPHT0
    复位值0000000000000000

    CMPHT [ 15 : 0 ]:ATD比较方式选择位。当CMPHT [ n ]被置1,且对应的比较使能位CMPE [ n ]被置1时,如果转换序列中的第N次转换结果大于ATDDRn中的比较阈值,CCF [ n ]被置位,表示比较结果为真。当CMPHT [ n ]被置0,且对应的比较使能位CMPE [ n ]被置1时,如果转换序列中的第N次转换结果小于或等于ATDDRn中的比较阈值,CCF [ n ]被置位,表示比较结果为真。

    (12)ATD结果寄存器

     Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    ATDxDR15ATDxDR14ATDxDR13ATDxDR12ATDxDR11ATDxDR10ATDxDR9ATDxDR8ATDxDR7ATDxDR6ATDxDR5ATDxDR4ATDxDR3ATDxDR2ATDxDR1ATDxDR0
    复位值0000000000000000

    当关闭比较操作时,ATD结果会被写入结果寄存器中。ARD状态寄存器0中的CC3~CC0位转换计数,表示当前转换的结果将要写入的结果寄存器的编号。转换结果在结果寄存器中的放置方式与转换精度(8、10、12位)和结果对齐方式有关。

    ATD转换精度DJM转换结果在ATDDRx中的放置方式
    8位0Bit [ 15:8 ]=转换结果
    8位1Bit [ 7:0 ]=转换结果
    10位0Bit [ 15:6 ]=转换结果
    10位1Bit [ 9:0 ]=转换结果
    12位0Bit [ 15:4 ]=转换结果
    12位1Bit [ 11:0 ]=转换结果

    当使能比较功能时,ATD转换结果和比较阈值都总是12位的,与SRES [ 1:0 ]的值无关。当DJM=0时,比较阈值应写到ATDDRn寄存器的Bit [ 15:4 ]中;当DJM=1时,比较阈值应写到ATDDRn寄存器的Bit [ 11:0 ]中。此时,ATD转换结果不会放到结果寄存器,比较完成后则丢失。

     

     

    展开全文
  • 飞思卡尔单片机AD模块简述(2)

    千次阅读 2010-10-31 05:42:00
    (5)ATD控制寄存器4 Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0读/写SMP2SMP1SMP0PRS4PRS3PRS2PRS1PRS0复位值00000101SMP [ 2 : 0 ]:采样时间选择位。SMP

    (5)ATD控制寄存器4

     Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    读/写SMP2SMP1SMP0PRS4PRS3PRS2PRS1PRS0
    复位值00000101

    SMP [ 2 : 0 ]:采样时间选择位。

    SMP2SMP1SMP0采样时间(ATD时钟周期的个数)
    0004
    0016
    0108
    01110
    10012
    10116
    11020
    11124

     

     PRS [ 4 : 0 ]:ATD时钟预分频因子。假设MCU内部总线时钟频率为BUSCLK,那么可以通过那下面公式计算出ATD时钟频率ATDCLK,默认预分频因子为5.

    ATDCLK = BUSCLK / ( 2 * ( PRS + 1 ) )

    注:设置预分频因子时,应使ATDCLK不小于0.25MHz,同时不大于8.3MHz。

    (6)ATD控制寄存器5

     

     Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
    0SCSCANMULTCDCCCBCA
     
    复位值00000000

     ATD控制寄存器5的地址为¥02C5,如果写该处理器时,会停止当前的ATD转换序列,并开始一次新的ATD转换序列。

    SC:特殊通道转换使能位。1表示对特殊通道进行转换,0表示关闭特殊通道转换。

    SCAN:连续转换序列模式位,用于决定ATD转换序列是执行一次还是连续执行。1表示连续执行ATD转换序列,0表示只进行一次ATD转换序列。

    MULT:多通道采样模式选择位。1表示多通道采样,0表示单通道采样。

    CC [ 3 : 0 ]:转换计数。表示当前转换的结果将要写入的结果寄存器编号。

     

    CCCBCA模拟量输入通道
    000AN0
    001AN1
    010AN2
    011AN3
    100AN4
    101AN5
    110AN6
    111AN7

    (7)ATD状态寄存器0

     BIt7BIt6BIt5BIt4BIt3BIt2BIt1BIt0
    SCF0ETORFFIFORCC3CC2CC1CC0
         
    复位值00000000

    SCF:转换序列完成标志位。当一次转换序列完成后,置该标志位。如果转换序列连续进行(SCAN=1),在每一次完成后都会置位该标志位。

    ETORF:外部触发溢出标志位。当处于边沿触发模式(ETRIGLE=0),如果当序列转换正在进行时又检测到一个有效边沿信号时,此标志位置位。

    FIFOR:先入先出溢出标志位此标志位表示在A/D转换完成标志(CCF)还没有被清零时,结果寄存器又被写入了数据。在先进先出模式下,此标志位表示结果寄存器中的数据和输入通道是否处于同步状态,在非先入先出模式下,此标志位结果寄存器中的数据在读出之前已经被新数据覆盖。

    CC [ 3 : 0 ]:转换计数器,表示当前转换的结果将要写入的结果寄存器编号。如果在先进先出模式下(FIFO=0),转换计数器在转换队列的开始和结束时被初始化为000;如果在先进先出模式下(FIFO=1),转换计数器不被初始化,当达到最大值时,转换计数器又被重新置为最小值。

    CC3CC2CC1CC0结果寄存器序号
    00000
    00011
    00102
    00113
    01004
    01015
    01106
    01117
    10008
    10019
    101010
    101111
    110012
    110113
    111014
    111115

     

     

    展开全文
  • 51单片机AD和DA模块

    2014-02-05 15:32:17
    51单片机AD和DA模块
  • 主要包含MSP430单片机AD和DA模块详细程序,以f149为例编写
  • 基于51单片机AD7705模块电压检测,并且在LCD1602实时显示电压值。
  • aa=P1; }while(! DS2); /*等待百位数选通信号*/ HIGH=HIGH&&0X0F;/*得到百位数*/ do{ aa=P1; }while(! DS3);/*等待十位数选通信号*/ LOW=LOW&&0XF0;/*得到十位数*/ do{ aa=P1; }while(!...{
  • 基于51单片机,如何让AD9833模块产生幅度为5V,频率为1kHz的正弦波?请给出代码与注释,谢谢。
  • 这个包含51单片机的各个模块源程序。其中有DA AD 按键 显示 延时 等模块的程序。对参见电子设计竞赛的同学很有帮助。
  • 单片机初学者
  • 用PC104控制模块和C51单片机实现AD检测板、电子技术,开发板制作交流
  • STM32单片机雨滴模块

    2021-03-08 19:35:40
    STM32单片机雨滴模块 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录STM32单片机雨滴模块前言一、设备说明二、部分关键代码1.初始化ADC采集2.读入数据总结 前言 STM32单片机雨滴模块...

    STM32单片机雨滴模块

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


    前言

    STM32单片机雨滴模块功能实现


    一、设备说明

    单片机:STM32f103zet6
    雨滴模块
    在这里插入图片描述
    在这里插入图片描述
    片描述

    二、部分关键代码

    1.初始化ADC采集

    代码如下(示例):

    void  Adc_Init(void)
    { 	
    	ADC_InitTypeDef ADC_InitStructure; 
    	GPIO_InitTypeDef GPIO_InitStructure;
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1	, ENABLE );	  //使能ADC1通道时钟
    	RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M
    	//PA1 作为模拟通道输入引脚                         
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;		//模拟输入引脚
    	GPIO_Init(GPIOA, &GPIO_InitStructure);	
    //**All notes can be deleted and modified**//
    	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;	//ADC工作模式:ADC1和ADC2工作在独立模式
    	ADC_InitStructure.ADC_ScanConvMode = DISABLE;	//模数转换工作在单通道模式
    	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;	//模数转换工作在单次转换模式
    	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;	//转换由软件而不是外部触发启动
    	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;	//ADC数据右对齐
    	ADC_InitStructure.ADC_NbrOfChannel = 1;	//顺序进行规则转换的ADC通道的数目
    	ADC_Init(ADC1, &ADC_InitStructure);	//根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器    
    	ADC_Cmd(ADC1, ENABLE);	//使能指定的ADC1	
    	ADC_ResetCalibration(ADC1);	//使能复位校准  	 
    	while(ADC_GetResetCalibrationStatus(ADC1));	//等待复位校准结束	
    	ADC_StartCalibration(ADC1);	 //开启AD校准
    	while(ADC_GetCalibrationStatus(ADC1));	 //等待校准结束
    
    
    

    2.读入数据

    代码如下(示例):

    			adcx=Get_Adc_Average(ADC_Channel_0,5);//读取ad转换值 5次求平均		
    			printf(" adcx %d\r\n",adcx);	
    			
    			sensorVal =99-((float)adcx*3.3/4096)*2*99.0/5.0;// 采集值  *2表示电阻分压	输出最大5v 但是要转化为最大3.3v		
    			sensorVal =99-((float)adcx*3.3/4096)*99.0/5.0;
    			
    			printf(" sensorVal %d\r\n",sensorVal);
    			if(sensorVal<BASICS_VAL)sensorVal = 0;//过滤传感器本身自带电压
    			else
    			{
    				sensorVal = (sensorVal-BASICS_VAL)*99/(99-BASICS_VAL);//将30-99值转化为0-99的值
    			}
    			
    			printf(dis0,"nowValue:%d   ",sensorVal);		//打印					
    			
    			if(setMode){
    				printf(dis1,"setValue:%02d<   ",setNum);		//打印				
    			}
    			else{
    				printf(dis1,"setValue:%02d    ",setNum);	
    			}
    

    总结

    最后输出的结果:
    根据测试,雨滴模块浸入水的深度不同,返回的电压值转化成的adc值不同:
    完全无水的情况返回的adc值为4096;
    完全浸入水中返回值接近400(是因为有模块供电的电压)。
    根据400~4096的区间,按百分比输出,无水情况输出0,完全浸没输出99;

    展开全文
  • codeworrior单片机ad转换程序,可实现AD转换功能,便于学生更好地理解单片机AD转换程序及其应用。
  • 基于单片机最小系统利用ADs7816芯片实现的AD转换模块 并利用串行通信在计算机上显示
  • 51单片机AD封装

    2018-10-16 20:53:28
    自己收集的51单片机AD原理图库,希望对大家有所帮助,希望大家喜欢.
  • 51单片机AD转换

    千次阅读 多人点赞 2020-08-09 16:09:45
    51单片机AD转换电路设计实现 关于AD转换的原理,大家在《数字电子技术》中已经学过,这里做过多的介绍,本文介绍一款经典的8位AD转换芯片ADC0804,基于51单片机设计AD转换电路,并完成测量值的转换。 1 芯片引脚介绍...
  • 由PC104控制模块和Cgnal C8051F06x单片机组成的控制检测板可用于高端检测设备中,充分利用PC104控制模块单片机丰富的软硬件资源,可用于各种检测应用中 在开发检测设备的过程中,可采用核心板加底板的设计方法来...
  • YL-40AD转换模块 51单片机测试程序,内附详细使用说明,接线视情况而定。
  • 单片机ad转换模块和数码管显示木块 是微机接口大作业的一部分
  • 蓝桥杯单片机组,平时训练的基础代码和各个模块化程序,包括AD、DA和NNN、超声波等外扩器件的程序,程序都已经在官方的开发板上测试通过,这是自己学习半年51单片机的积累,希望对大家有帮助
  • 51单片机常用模块设计查询手册介绍了51单片机系统中常用模块的具体运用,这些模块包括:电源模块、输入输出及显示模块、各类存储模块(并行及串行)、数据传输接口模块、网络通信模块AD/DA模块、语音处理模块、...
  • 摘要 I ...2.3显示模块 5 2.4总原理图 6 3 软件设计 7 3.1 系统总流程图 7 3.2 程序代码 7 4 实验记录与结果分析 13 4.1 仿真基本流程 13 4.2 仿真结果 14 4.3 结果分析 15 5 心得体会 16 参考文献 17
  • 51单片机摇杆 用到了ad模块将ps2 摇杆的信号通过I2c总线,传给单片机处理动作,
  • 蓝桥杯单片机ad,ds13b02,ds18b20,独立按键,矩阵按键,
  • 51系列单片机常用模块程序 延时程序(精确延时,汇编与C混合编程) 人机对话接口(独立式按键(8键),矩阵式键盘(16键),独立式按键"+"矩阵式键盘(24键),LED,LCD) 模拟通道接口(数/模转换器AD558,模/数转换器ADC0808或ADC...
  • pcf8591AD模块采集语音信号的AD转换过程,不一定正确,希望有借鉴价值
  • 资源包括定时器,串口,中断,电源,看门狗,io,存储器,智能卡,用户输入通道,显示模块AD/DA,时钟日历,温度/湿度芯片,定位模块,语言,打印模块,有线通信,无线通信,电机,继电器等。非常适合初学者扫盲!...
  • AD7705模数转换模块,51单片机使用c程序
  • 单片机AD转换及显示实验,EL-MUT-8051-Keil C模块使用指导 ,学生课件第八章 接口技术

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,619
精华内容 2,247
关键字:

单片机ad模块