找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6260|回复: 1
打印 上一主题 下一主题
收起左侧

单片机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)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:582348 发表于 2019-7-11 19:23 | 只看该作者
运行出错是咋回事啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表