条分缕析看AD转化和外部储存器的相关知识

本文详细解析了AD转换芯片ADC0809和外部存储器扩展的相关知识,包括C51主控芯片的ALE、WR、RD信号的作用,74LS273和74LS373的功能,以及38译码器和或非门的应用。通过实例分析了地址和数据的传输流程,并提供了代码示例,展示了如何通过地址和数据总线实现外部存储器的扩展和AD转换数据的读取。
摘要由CSDN通过智能技术生成

条分缕析看AD转化和外部储存器的相关知识

 

前言:由于本次实验运用的知识比较综合且夹杂了总线扩展的内容,导致proteus的原理图的内容看不懂以及代码为何修改的背景知识不明确,特此统一说明原理和试验箱电路图具体接法,供同学们参考,若有遗漏和错误请及时联系我补正。(估计期末考试会考。。。。。)

例程:

#include<reg52.h>

#include<absacc.h>

unsigned char code led Tab[]={Ox3F,Ox06,Ox5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0X77,0x7C,0x39,0x5E,0x79,0x71,0x40}

unsigned char codetabIndex[]={OXFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

unsigned char codeNum[8]={0x00,0x00,0x10,0x10,0x09,0x00,0x08,0x00};

unsigned char data0809;

#define LNUMXBYTE[0xa000]

#defineLBIT XBYTE[0xb000]

#define CS_0809 XBYTE[0x8000]

 

void Delay_us(unsigned int time)

{

while(time--);

}

 

void dynamicLed(unsigned charCounter,unsigned char Ligh)

{

 unsigned char i;

 for(i=0;i<Counter;i++)

  {

  Delay_us(Ligh);

  LNUM=0X00;

  LBIT=tabIndex[i%8];

  LNUM=ledTab[Num[i]%20];

  }

}

 

addc()interrupt 0

{

  data0809=CS_0809;

  Num[0]=data0809&0x0f;

  Num[1]=data0809>>4;

 

  CS_0809=0;

}

 

void main(void)

{

 EA=1;

 EX0=1;

 IT0=1;

 CS_0809=0;

while(1)

  {

    dynamicLed(8,100);

 } 

}

 

1.首先讲芯片布局

Proteus原理图:




其中我们可以发现有51主芯片,adc0809(图示的是0808基本功能相同),74ls273两片,,74ls373一片,74ls32或门两片,38译码器一片,74ls02或非门两片。

其中我们可以发现新增的adc0809,74ls273以及74ls373是主要构成部分并且是连接P0的部分,并且也依靠P0的地址和数据输出来控制其功能(位选,字形,38转换等等),所以逐一分析各个芯片的主要功能:

 

(1)     c51(主芯片)

作为主芯片控制其他的芯片,但是这次实验中相较于以往的实验拉取新的端口使用,比如ALE和WR(P36)和RD(P37),这次实验元件使用比较多的根本原因,是因为C51的作为程序储存区仅有4kb,而本次实验的数据量比较大,c51本身存储不了(扩展的极限是64kb),所以希望扩展内存来达到程序的存储和运行,故而本次要用到扩展总线和地址寻址的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值