历史上的今天
返回首页

历史上的今天

今天是:2025年02月06日(星期四)

正在发生

2020年02月06日 | PIC单片机的内部A/D转换

2020-02-06 来源:eefocus

//需求,将板子上电位器接RA0,设置PIC的AD相关寄存器,显示电压

#include

__CONFIG(0x3831);//配置位18323831

#define uint unsigned int

#define uchar unsigned char


//共阴数码管(板子上用了达林顿管ULN2003,反向器)

const unsigned char table[]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f};


//加小数点的共阴数码管显示,非常不错

const uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,

0x87,0xff,0xef};

void init();//数码管,和AD相关寄存器设置

uint get_ad();//获取电压值,其中包括AD读取,及AD值转电压值的处理,返回值为uint型,精度保留小数点后3位

void delay_ms(int z);

void disp(uchar num1,uchar num2,uchar num3,uchar num4);//数码管动态扫描

void main()

{

uint lednum;//

uchar num1,num2,num3,num4;//高两位接RA1和RA0用不到了

init();

while(1)

{

lednum=get_ad();

num1=lednum/1000;//求模即取整

num2=lednum/100%10;

num3=lednum/10%10;

num4=lednum%10;

disp(num1,num2,num3,num4);

}

}

void init()//数码管,和AD相关寄存器设置

{

TRISA=0x01;//RA0设置为输入,用于AD模拟信号输入

TRISD=0;//接数码管段选IO设置为输出

PORTA=0;

PORTD=0;

ADCON0=0x41;//选择8分频(4M/8=0.5MHz)时钟频率即8倍时钟周期,开AD

ADCON1=0x8E;//选择结果右对齐,ADRESH高6位读作0,选择A通道以电源VDD VSS作参考电压

delay_ms(10);//延时等待AD稳定


}

//获取电位器电压,PIC内部AD

uint get_ad()//一般做工程的时候带个通道参数,读取几通道直接带通道数就可以

{

//实际中要进行数字滤波(如20个数取平均值,然后将其返回去,滤波算法有很多,平均值是一种而已)

uint adval;//存放AD的值

float advalf;//存放AD值转换为的电压值

ADGO=1;//开始转换,ADGO与GODONE宏定义一致

while(ADGO);//AD转换完,硬件自动清零ADGO

adval=ADRESH;//先读AD高8位寄存器的低二位

adval=adval<<8|ADRESL;

advalf=adval/1023.0*5.0;//1023为电位器显示的最大值,假设板子电压为5v时

adval=advalf*1000;//精度取小数点后三位,如4.2356,则读为4.235

return(adval);


}

void disp(uchar num1,uchar num2,uchar num3,uchar num4)//数码管动态显示

{

PORTD=table1[num1];

PORTA=0x20;//0010 0000

delay_ms(2);

PORTD=table[num2];

PORTA=0x10;//0001 0000

delay_ms(2);

PORTD=table[num3];

PORTA=0x08;//0000 1000

delay_ms(2);

PORTD=table[num4];

PORTA=0x04;//0000 0100

delay_ms(2);

}

void delay_ms(int z)

{

int x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

推荐阅读

史海拾趣

Amplitronix LLC公司的发展小趣事

在快速发展的同时,Amplitronix LLC也积极承担社会责任,关注绿色环保。他们投入大量资源研发环保型电子产品,减少生产过程中的污染排放。同时,公司也积极参与公益活动,为社会做出贡献。这些举措不仅提升了公司的社会形象,也为公司的可持续发展注入了新的动力。

这些故事旨在展示Amplitronix LLC公司在不同阶段的发展过程和成就,但并非基于真实事件。实际的Amplitronix LLC公司的发展历程可能有所不同,这些故事仅为虚构示例,供您参考。

蜂鸟无线公司的发展小趣事
根据电动机的功率、转速范围等要求,选择合适的PWM生成集成电路,如555定时器、微控制器等。
Free2Move公司的发展小趣事
采用集成电路的PWM调速电路可以简化电路设计,减少元器件数量,降低制造成本。
汇科公司的发展小趣事

作为一家有社会责任感的企业,汇科公司始终关注环境保护和可持续发展。公司积极推广绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。同时,汇科公司还积极参与社会公益活动,为社区和环境贡献自己的力量。这些举措不仅体现了公司的社会责任担当,也为其赢得了更多客户和合作伙伴的信任和支持。

Bel Fuse公司的发展小趣事

随着电子行业的快速发展,Bel Fuse意识到要保持竞争力,必须不断进行技术创新。因此,公司加大了研发投入,推出了一系列具有创新性的电子元件产品。这些产品不仅满足了客户的需求,还为公司带来了可观的市场份额。同时,Bel Fuse也开始积极寻求全球扩张的机会,通过设立海外分公司和建立销售网络,进一步提升了公司的全球影响力。

驰兴电感(Coilank)公司的发展小趣事

为了进一步提升产品的竞争力,驰兴电感积极开展国际合作。公司与国际知名电子元器件厂商建立了长期稳定的合作关系,共同研发新产品、新技术。这些国际合作不仅使驰兴电感能够借鉴国际先进经验和技术,还为公司带来了更多的市场机会和资源。

问答坊 | AI 解惑

有谁有鉴相器的资料?有卖的不?

正弦波信号射频频率范围4-30MHZ,输入信号VPP…

查看全部问答>

[资料] 背光及照明用LED驱动IC技术

[资料] 背光及照明用LED驱动IC技术…

查看全部问答>

eboot 启动问题。

我用的是nboot+eboot启动,下面是输信息。请高手指点一下。 \\par Mini(4k) NandBoot V2.0. [2007-09-28] \\par \\par \\par NAND Boot Start \\par NAND Boot End \\par Boot time=nTCNT*82uS. nTCNT=0x052f. \\par I/O Strength Max \ ...…

查看全部问答>

高手帮忙,在CE上的Bluetooth问题

在CE上Bluetooth设置PIN问题 我用的SDK是STANDARDSDK_500,可是这SDK里没有Btdrt.lib,因此找了个Btdrt.lib 但是在使用BthGetPINRequest()、BthSetPIN()函数还是不能用 可能是手动加入的Btdrt.lib关连到其它的LIB,这要如何解决? 或者谁做的,你 ...…

查看全部问答>

wince6.0 是否支持SHLoadImageResource?

请各位帮帮忙看看! 我在windows moible 5.0 上使用SHLoadImageResource是可以的 而在wince6.0上 却找不到SHLoadImageResource 是不是wince6.0 不支持 SHLoadImageResource? …

查看全部问答>

关于自加,自减,和标准输出

#include <stdio.h> void main() {   int x=3,y;     y=––x+––x+x++;     printf(\"x=%d   y=%d\\n\",x,y);  } x=2,y=3     不懂 ??????? &n ...…

查看全部问答>

用PLL产生180度的时钟有问题

我在Altera的FPGA里用了一个PLL,希望产生一个相位差为180度的时钟,就是和原来的时钟反向,但发现出来的时钟和原时钟相位不是我期望的180度。那位知道该怎么办呢 ?谢谢…

查看全部问答>

有关IAP使用HEX或BIN文件格式的探讨

BIN优点,下载时二进制传输效率高,一个起始地址和长度(均可事先知道)搞定.因起始地址和长度在 下载一开始就可以知道,所以只需要擦除实际代码大小的FLASH,避免大FLASH空间小代码时擦除FLASH的时间和FLASH损耗. 缺点:当代码分段在不同地址时,如 ...…

查看全部问答>

STM8S105PA1脚不能设置为上拉输入

STM8S105  PA1脚不能设置为上拉输入,是什么原因?? PA2脚都可以设置为上拉输入;…

查看全部问答>

智能家居的技术

用zigbee技术做智能家居已经快六年了, 而且也用了zigbee技术作了些抄表系统。 最近突然有个想法,就是利用PLC(power line communication 电线载波通信)来做智能家居, 这几天也挺认真的研究了下PLC技术,两者其实各有千秋, 各位有什么好的建议 ...…

查看全部问答>