|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ADC0809 数模转换与显示' @ w% v' x$ D1 G: A! P
1 ^* {! J8 k( L9 d5 u
+ E4 o6 J) q: h- a
/* 名称:ADC0809 数模转换与显示 说明:ADC0809 采样通道 3 输入的 模拟量,转换后的结果显示在数码管上。 */ #include<reg51.h> #define uchar unsigned char #define uint unsigned int //各数字的数码管段码(共阴) uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};! _3 H. |7 P ]7 X% @) ]& M
" n0 [) `; e4 \) E5 ]+ u+ @
sbit CLK=P1^3; //时钟信号 sbit ST=P1^2; //启动信号
: B$ M$ F' x( y$ {$ U t
1 Q: Z' X& ]+ ~4 T6 Ksbit EOC=P1^1; //转换结束信号 sbit OE=P1^0; //输出使能 //延时 void DelayMS(uint ms) { uchar i; while(ms--) for(i=0;i<120;i++); } //显示转换结果 void Display_Result(uchar d) { P2=0xf7; 第 4 个数码管显示个位数 P0=DSY_CODE[d%10]; DelayMS(5); P2=0xfb; 第 3 个数码管显示十位数 P0=DSY_CODE[d%100/10]; DelayMS(5); P2=0xfd; 第 2 个数码管显示百位数 P0=DSY_CODE[d/100]; DelayMS(5); } //主程序 void main() { TMOD=0x02; //T1 工作模式 2 TH0=0x14; TL0=0x00; IE=0x82; TR0=1; P1=0x3f; //选择 ADC0809 的通道 3(0111)(P1.4~P1.6) while(1) { ST=0;ST=1;ST=0; //启动 A/D 转换 while(EOC==0); //等待转换完成 OE=1; Display_Result(P3); OE=0; } } //T0 定时器中断给 ADC0808 提供时钟信号 void Timer0_INT() interrupt 1 { CLK=~CLK; }
) e6 S( A! j0 f% T' x4 C3 c0 P& w# F# G9 ^
) h9 u) F) o$ v8 W" o
3 n8 w% D6 [5 [6 o/ ]- l( n# U. ?' o+ p
4 [6 S% X9 r$ G; @- D" A: R6 V( D% N' Y7 V" g
% d, c$ L# u4 J. |
|
|