标题: 单片机ADC0808接口实验,利用Proteus软件,含C程序和电路图 [打印本页]

作者: 深潭溦澜    时间: 2019-3-10 15:59
标题: 单片机ADC0808接口实验,利用Proteus软件,含C程序和电路图
这是我曾经做的智能仪器设计实验,ADC0808与单片机8051的中断方式接口电路。采用线选法规定其端口地址,用单片机的P2.7引脚作为为选信号,因此端口地址为7FFFH。片选信号和 信号一起经或非门产生ADC0808的启动信号START和地址锁存信号ALE;片选信号和 信号一起经或非门产生ADC0808输出允许信号OE,OE=1时选通三态门,使输出锁存器中的转换结果送入数据总线。ADC0808的EOC信号经反相后接到8051的 引脚,用于产生转换完成的中断请求信号。ADC0808芯片的3位模拟量输入通道地址码输入端A、B、C分别接到8051的P0.0、P0.1和P0.2,故只要向端口地址7FFFH分别写入数据00H~07H,即可启动模拟量输入通道0~7进行A/D转换。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include"reg52.h"
  2. #include"absacc.h"
  3. #define ADC 0x7fff                                            //定义ADC0808端口地址
  4. unsigned data ADCDat[8] _at_ 0x30        ;
  5. unsigned i=0;

  6. main()
  7. {
  8. EX1=1; IT1=1; EA=1;
  9. XBYTE[ADC]=i;                                                        //启动ADC0808第0通道
  10. while(1)
  11. {
  12. if(P3^3==0)                           //查询P3^3状态
  13. P1=ADCDat[0] ;         }                                        //第0通道转换结果送至P1口显示
  14. }
  15. int1()interrupt 2 using 1
  16. {
  17.   ADCDat[i]=XBYTE[ADC];                                        //读取ADC0808转换结果并存入内存
  18.   i++;
  19.   XBYTE[ADC]=i;                                                           //启动ADC0808下一通道
  20.   if(i==8)
  21.   {
  22.   i=0;
  23.   XBYTE[ADC]=i;                                                   //重新启动ADC0808第0通道
  24.   }
  25. }
复制代码

所有资料51hei提供下载:
ADC接口实验.zip (19.45 KB, 下载次数: 53)


作者: 伟伟1024    时间: 2019-7-11 19:23
运行出错是咋回事啊?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1