单片机实验6:AD0809转换

目录

一、实验目的以及要求

二、实验原理

三、实验内容

四、实验代码


一、实验目的以及要求

(1)掌握A/D转换与单片机接口的方法;

(2)了解A/D芯片0809转换性能及编程方法;

(3)通过实验了解单片机如何进行数据采集。

二、实验原理

三、实验内容

利用实验系统上的0809做A/D转换器,实验系统上的电位器提供模拟量输入,编制程序,将模拟量转换成数字,通过数码管显示出来。

1、用双头线将可调电压区的VOUT接至ADC0809模数转换区的IN0,可调电压区的VIN接至电源+5V,ADC0809模数转换区的CS4接至系统接口区的8000H端口,ADC0809模数转换区的WR接至系统接口区的/IOWR端口,ADC0809模数转换去的RD接至系统接口区的/IORD,ADC0809模数转换区的ADDA、ADDB、ADDC接至GND,CLK接至单脉冲与时钟区的500K,用8芯线将数据总线JX0接至ADC0809模数转换区的JX6;

2、运行程序HW09.ASM,数码管上显示0809.XX,后二位显示当前采集的电压转换的数字量,调节可调电压,该二位将随着电压变化而相应变化,变化范围为00至FF。

四、实验代码

 #include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define com8155 XBYTE[0xff20]      //8155控制口地址
#define pa8155 XBYTE[0xff21]       //8155,PA口,控制LED数码管字位口
#define pb8155 XBYTE[0xff22]       //8155,PB口,控制LED数码管字形口
#define ad0809 XBYTE[0x8000]       //ADC0809片选地址
//*********************************************
//MON51必须用到的
code unsigned char stop[3] _at_ 0x3b;
//*********************************************

void delay(unsigned int i)         //延时程序
{
   unsigned int j,k;
   for(k=0;k<i;k++)
   for(j=0;j<100;j++);  
}

void main(void)
 { uchar idata disbuf[6]={0,8,0,9,5,5};       //六位LED数码管显示缓冲区数组,并赋初值
   uchar code  table[20]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF,0x0C,0x89,0xDE}; //数码管段选码
   com8155=0x43;                              //8155控制字设置
   while(1)
     {uchar  x,y=0x20,m,n,t=0x0f;           //x=6,表示6位数码管,y表示数码管位选码
      y=~y;                                   // 位码取反 y=1101 1111 使Y的选择低电位有效(指定数码管y的值,选择哪个哪个置零,最前面补两个1)
      ad0809=0x00;                            //adc0809选择0通道采样
      delay(1);
      m=ad0809;        //取出采样值,然后将16进制的采样值拆送送到显示缓冲区数组中,m取高四位的十六进制值(disbuf[5]),n取低四位的十六进制值(disbuf[4])
  n=m;
   m=m&t;
  n=n>>4;
   disbuf[5]=n;
  disbuf[4]=m;
      for(x=0;x<6;x++)                        //6个数码管LED分别进行显示
          {pb8155=table[disbuf[x]];           //将字形码(即要显示的数据)传送给pb8155
           pa8155=y;           //送字位码(即哪个数码管被选中)传送给pa8155
           delay(2);            
           y=_cror_(y,1);       //将y进行一位,直接助于字位码的选择赋值
          }
     }
 }

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

x陌北x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值