码迷,mamicode.com
首页 > 其他好文 > 详细

(七)ADC0809 模数转换的学习 AD转换

时间:2015-12-25 20:45:39      阅读:743      评论:0      收藏:0      [点我收藏+]

标签:

ADC0808

引脚功能各引脚功能如下:

1~5和26~28(IN0~IN7):8路模拟量输入端
8、14、15和17~21:8位数字量输出端
22(ALE):地址锁存允许信号,输入,高电平有效。
6(START): A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC): A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):数据输出允许信号,输入,高电平有效。    当A/D转换结束时,此端输入一个高电平,输出数字量。
10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):参考电压输入端
 
23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路
 
仿真图:
技术分享
 
上图计算公式:
3.45/5= X / 255  那么 X=175.95   也就是 176 (对应 LED   1011 0000  )  ,实验正确
 
参考程序代码:
 1 #include<reg52.h>
 2 #define uchar8  unsigned char 
 3 #define uint16  unsigned int 
 4 #define LED P0 
 5 #define out P1
 6 sbit start = P2^1 ;
 7 sbit OE   = P2^7;       //   当A/D转换结束时,此端输入一个高电平,输出数字量。OE=0,关闭输出,不准输出到单片机
 8 sbit EOC  = P2^3;      //  A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
 9 sbit CLOCK = P2^0;      //  时钟脉冲输入端
10 
11 sbit add_a = P2^4;    // abc  用来选择 ADC芯片的通道,
12 sbit add_b = P2^5;
13 sbit add_c = P2^6;
14 
15 void main(void)
16 {
17 
18   uchar8  temp ;
19 
20   add_a=0;  add_b=0;  add_c=1;   // 选择 ADC0809 芯片的通道 4   对应 100 
21 
22   while(1)
23   {
24       start=0;
25       start=1;   // 上升沿使得 0809 复位
26       start=0;   // 下降沿  启动AD 转换
27       
28       while(1)
29       {
30             CLOCK = ! CLOCK ; if( EOC == 1)  break ;   // 等待转换结束,跳出循环                                                  
31       }
32        
33         OE=1;
34 
35       temp = out ;   // 暂存转换结果
36       OE = 0;         // 关闭输出
37 
38       LED=~temp;      // 这里取反,是因为自己把 电路图 线接反了
39                       //所以通过软件修改,使得LED 亮的 为 1,灭的为 0
40                         // 采样结果通过 P0 口 输出到 LED 灯
41   }
42 
43 } 

 

 
 总结: 拓展 怎样才能把 要显示的 在 数码管 或者 LCD 屏幕上显示出来呢??????有点困难,想不出,有没有专门的译码器????
 
 
 
 

(七)ADC0809 模数转换的学习 AD转换

标签:

原文地址:http://www.cnblogs.com/shengruxiahua/p/5076821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!