当前位置:首页 > 技术学院 > 热搜器件
[导读]ADC0809是单片机教材上常常用到的模数转换芯片,它有8个模拟输入通道,每次可选其中一路,转换成8位二进制数。在PROTEUS仿真环境中,ADC0809并没有仿真功能(也许是版本的问题),仿真必须使用ADC0808。这两个芯片在PR

ADC0809是单片机教材上常常用到的模数转换芯片,它有8个模拟输入通道,每次可选其中一路,转换成8位二进制数。

在PROTEUS仿真环境中,ADC0809并没有仿真功能(也许是版本的问题),仿真必须使用ADC0808。

这两个芯片在PROTEUS中的图形可见下图:

从图中可以看到,这两块芯片仅仅有少数引脚的标注字母不同,而对应的功能是完全相同的。

用ADC0808,按照0809要求的时序进行仿真,完全可以仿真出ADC0809的效果。

一般的教材中,一提到ADC0809,往往都要讲:用D触发器对ALE分频来提供CLK。

实际上,为ADC0809提供CLK脉冲,完全可以利用单片机闲置的引脚,大可不必另外使用硬件。

有些人,也认识到了这个问题,他们采用了单片机定时器中断来输出脉冲,省掉了硬件D触发器。

其实,用定时器,还是很浪费的。完全使用软件,也可以达到输出周期性脉冲的目的。

做而论道注意到:

在单片机软件中,基本上都要编写延时函数

在延时函数中实现输出CLK脉冲,就可以既不用外接硬件,也不占用单片机本身的硬件资源,同样也达到了延时目的,可谓一举多得。

这个做法,在目前所见到各种书籍、各个网文中,还没有人提到 !

这个做法,可说是做而论道的独创。

呵呵,颇为自豪。

下面就是利用ADC0808仿真ADC0809的画面:

图中右边的拨动开关用于选择模拟通道,选好的通道号码将在数码显示器的最高位显示。

图中左边,可以输入8路模拟信号,但是限于幅面,仅仅画出了一路,读者可自行加入另外的7路。

图中下方是一个频率计,测量出CLK的频率约有50KHz,在这个频率下,ADC0809大约用10ms即可进行一次转换,速度足够快了。

适当修改延时函数达到参数,输出CLK的频率还可以高出很多。

C语言程序如下:

#include

//---------------------------------------------------

sbit ALE = P3^3;

sbit OE = P3^4;

sbit EOC = P3^5;

sbit STA = P3^6;

sbit CLK = P3^7;

//---------------------------------------------------

unsigned int num; //AD转换后的数字量

char ch; //通道号码

//---------------------------------------------------

void delay(unsigned int z) //延时函数

{

unsigned int x, y;

for(x = z; x > 0; x--) for(y = 110; y > 0; y--) CLK = ~CLK;

} //在延时函数中,给ADC0809送去CLK,也算是做而论道的一个独创吧 !

//---------------------------------------------------

void display(void)

{

char code table[] = { //共阴段码

0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, //0~7

0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; //8~F

P0 = 0; P2 = 0xf7; P0 = table[ch]; delay(2);//通道号码

P0 = 0; P2 = 0xfb; P0 = table[num / 100] + 128; delay(2);//百位加上小数点

P0 = 0; P2 = 0xfd; P0 = table[num % 100 / 10]; delay(2);//十位

P0 = 0; P2 = 0xfe; P0 = table[num % 10]; delay(2);//个位

P0 = 0; //关闭显示器

}

//---------------------------------------------------

void main(void)

{

while(1) { //无穷循环

ch = P2 / 32; //取来通道号码

P3 = ch + 0xf8; //送给ADC0809

ALE = 1; ALE = 0; //地址锁存

STA = 1; STA = 0; //开始转换,稍候,才可读EOC

display(); //显示,既做延时,又输出CLK

while(EOC == 0) display(); //等待转换结束

num = P1; //取出转换结果

num = num * 100 / 51; //比例变换:255 --> 500

}

}

//---------------------------------------------------

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭