历史上的今天
今天是:2025年01月20日(星期一)
2020年01月20日 | pic单片机多路ad切换程序介绍
2020-01-20 来源:elecfans
PIC单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。PIC 单片机是一个小的计算机。PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力—般,存储器容量也很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变。如果是同样的体系结构,时钟频率较高的处理能力会较强。
对AD转换的理解
所谓模拟量很好理解就是模拟量是指变量在一定范围连续变化的量;也就是在一定范围(定义域)内可以取任意值(在值域内)。数字量是分立量,而不是连续变化量,只能取几个分立值,如 三位进制数字变量只能取7个整数值0.1.2.3.4.5.6.7。
而不是经过AD通道的话,经过的是普通的IO口,那么模拟信号只会在引脚上出现两种数字结果,一个是1一个是0,而不能比较准确的描述出模拟量的数值,模拟量信号是一种变量信号,比如果0V--10V,或50MA到100MA,开关信号是一种通断信号,比如家里的灯开关,数字信号是一种连续的开关信号或高低电平信号,比如1101----高高低高。一连串的信号代表数字信号。

再继续说一下AD精度的问题,8位AD精度的话就是将这个满电压值分成2^8=256份,比方说51单片机采集的电压范围是0-5v 那么0v对应的是 0 5v对应的是255.
pic单片机多路ad切换程序
void ad_init (void)
{ ADIF=0X00;
ADCON1=0x80;//
ADCON0=0X81; //十位结果必须高为8位
TRISA=0X0FF;//默认为AD输入
PORTA=0X00;
TRISE0=1;
TRISE1=1;
TRISE2=1;
ADON=1;
}
void delay(unsigned int x)
{
unsigned int a,b;
a=(2*x/8);
for(a;a》0;a--);
for(b=5;b》0;b--);
}
unsigned int read_ADresult(unsigned char channel)
{
channel &= 0x07; // 此处语法相当于channel=channel&0x07 联系自反加语法!
ADCON0 &= 0x85; // 清当前通道
ADCON0 |= (channel《《3); //10 xxx 001
delay(30);
ADGO=1;
while(ADGO) conTInue;
return (ADRESH《《8)+(ADRESL);
// return ADRESL;
}
unsigned int ad_res[8];//存放AD转换值
for(j=0;j《8;j++)
{
ad_res[j]=read_ADresult(j);
}
下一篇:pic单片机ad转换c程序分享
史海拾趣
|
随着电子的发展,个人认为dsp的发展空间比单片机大的多,而且应用的领域广,希望能够有坛子里面有更多的人投入进来! 看看应用的领域吧! 1.3.5 DSP芯片的应用自从20世纪70年代末80年代初DSP芯片诞生以来,DSP芯片得到了飞速的发展。DSP芯片的 ...… 查看全部问答> |
|
WINCE的COMMON目录下某个驱动,怎样才能让它生成DLL? 最近在折腾SDIO驱动,发现发现别人给的BSP里用的sdmemory.dll的他们自己做的,没有源码。 我想用系统自带的,想把 WINCE500\\PUBLIC\\COMMON\\OAK\\DRIVERS\\SDCARD\\SDCLIENTDRIVERS\\SDMEMORY 目录下的文件编译成sdmemory.dll, 它的sources文 ...… 查看全部问答> |
|
版主,能否提供STM32全系列的orcad和allegro封装 如题 最近改用allegro,可是封装方面需要重新建立。 本来想去官网下,但是网速极慢,五分钟了连一个FLASH也没有打开,真纠结。 手册倒是有,可是真懒的弄,我看到TI的CM3有这方面的资料,不知STM这边有没有? 若有,请版主提供一个下载。… 查看全部问答> |
|
各位前辈你们好:我用的是430F1232芯片,我通过上位机往芯片里面发数据,就是说接收程序;我用VB编啦一个往430发送数据的程序,这里是没有问题的,波特率设得都是一样的,我用串口助手调试过。但是430芯片就是接收不到,应该是接收程序的问题,有谁 ...… 查看全部问答> |
|
RS-485接口大多都是基于RS-232接口与电脑进行通信的,485协议编程都是基于串口编程的,而由于RS-232与RS-485接口的不同,由于RS-232只支持点对点通信,全双工通信,而RS-485是支持点对多点通信,半双工通信,基于其编写的协议有一定的相关性又有一 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:55 编辑 之前参加飞思卡尔用的K60做主控,用了一年多感觉对他很熟悉了,所以今年点赛还准备用他做主控,不知道有没有和我一样的朋友也在用 … 查看全部问答> |




