标签:[] add top 地址 允许 main 取数 class typedef
————————————————————————————————————————————
ADC0809
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
工作原理:
ALE:地址锁存允许信号接入端,高电平时允许改变CBA的值,低电平时锁死,防止在A/D转换过程中切换通道
| 
 通道  | 
 C  | 
 B  | 
 A  | 
| 
 IN0  | 
 0  | 
 0  | 
 0  | 
| 
 IN1  | 
 0  | 
 0  | 
 1  | 
| 
 IN2  | 
 0  | 
 1  | 
 0  | 
| 
 IN3  | 
 0  | 
 1  | 
 1  | 
| 
 IN4  | 
 1  | 
 0  | 
 0  | 
| 
 IN5  | 
 1  | 
 0  | 
 1  | 
| 
 IN6  | 
 1  | 
 1  | 
 0  | 
| 
 IN7  | 
 1  | 
 1  | 
 1  | 
OE=1时,D0-D7引脚上为转换后的数据,当OE=0时,D0-D7为对外呈现高阻状态
p.s.
其他引脚:

IN0~IN7:8路模拟量输入引脚
CLK:时钟信号输入端
V_(REF(+)):参考电压正端
V_(REF(-)):参考电压负端
————————————————————————————————————————————
数字电压表实验
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
实现效果:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
实现思路:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
连接说明:
| 
 ADC0808  | 
 OUT1-OUT8  | 
 89C51  | 
 P0.0-0.7  | 
 转换后数据输出到单片机  | 
| 
 
  | 
 START  | 
 
  | 
 P3.0  | 
 
  | 
| 
 
  | 
 EOC  | 
 
  | 
 P3.1  | 
 
  | 
| 
 
  | 
 OE  | 
 
  | 
 P3.2  | 
 
  | 
| 
 
  | 
 IN0  | 
 POT-HG  | 
 +  | 
 输入模拟信号  | 
| 
 
  | 
 ADDA/ADDB/ADDC/VREF(-)  | 
 GND  | 
 
  | 
 0 0 0 选择通路IN0  | 
| 
 
  | 
 ALE/VREF(+)  | 
 POWER  | 
 
  | 
 将地址存入地址锁存器中  | 
| 
 数码管  | 
 1/2/3/4/5/6/7  | 
 89C51  | 
 P2  | 
 控制数码管显示位数  | 
| 
 
  | 
 A/B/C/D/E/F/G/DP  | 
 
  | 
 P1  | 
 控制显示段码  | 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
实现代码:
1 #include <reg52.h> 2 typedef unsigned char uchar; 3 typedef unsigned int uint; 4 uchar code table[] = 5 { 6 0xfc, 0x60, 0xda, 0xf2, 0x66, 0xb6, 0xbe, 0xe0, 0xfe, 0xf6, 0xee, 0x3e, 0x9c, 0x7a, 0x9e, 0x8e 7 }; 8 sbit start = P3 ^ 0; //控制start引脚 9 sbit eoc = P3 ^ 1; //查询eoc引脚情况 10 sbit oe = P3 ^ 2; //输出允许控制端 11 sbit dot = P1 ^ 0; //数码管小数点 12 void Delay(uchar m) 13 { 14 while(m--); 15 } 16 void main() 17 { 18 uint temp; 19 start = 0; 20 oe = 0; //oe为高阻状态 21 start = 1; //start下降沿开始转换 22 start = 0; 23 while(1) 24 { 25 if (eoc == 1) //当eoc为1时转换结束 26 { 27 /*读入状态*/ 28 oe = 1; //打开oe,数据读入引脚 29 temp = P0; 30 temp = temp * 1.0 / 255 * 500; //读入的数值转换成模拟电压对应的电压值 31 oe = 1; //oe呈高阻 32 /*数码管显示*/ 33 P2 = 0xfe; //数码管选择最后一位 34 P1 = table[temp % 10]; 35 Delay(500); 36 P2 = 0xfd; //数码管选择十位 37 P1 = table[temp / 10 % 10]; 38 Delay(500); 39 P2 = 0xfb; //数码管选择百位 40 P1 = table[temp / 100 % 10]; 41 dot = 1; //显示小数点 42 Delay(500); 43 /*启动下一次转换*/ 44 start = 1; 45 start = 0; 46 } 47 } 48 }

标签:[] add top 地址 允许 main 取数 class typedef
原文地址:http://www.cnblogs.com/hughdong/p/6979204.html