adc0809模数转换设计,学课设计,自己写的
单片机源程序如下:
- #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};
- sbit CLK=P3^3; //时钟信号
- sbit ST=P3^0; //启动信号
- sbit EOC=P3^7; //转换结束信号
- sbit OE=P3^6; //输出使能
- sbit a=P2^0;
- sbit b=P2^1;
- sbit c=P2^2;
- //延时
- void DelayMS(uint ms)
- {
- uchar i;
- while(ms--) for(i=0;i<50;i++);
- }
- //显示转换结果
- void Display_Result(uchar f)
- {
- uchar d=(f-57)/4;
- a=1;
- b=1;
- c=0;
-
- P0=DSY_CODE[d/100];
- DelayMS(1);
- a=1;
- b=0;
- c=1;
-
- P0=DSY_CODE[d%100/10];
- DelayMS(1);
- a=0;
- b=1;
- c=1;
- P0=DSY_CODE[d%10];
- DelayMS(1);
- }
- //主程序
- void main()
- {
- TMOD=0x02; //T1 工作模式 2
- TH0=0x14;
- TL0=0x00;
- IE=0x82;
- TR0=1;
- while(1)
- {
- ST=0;ST=1;ST=0; //启动 A/D 转换
- while(EOC==0); //等待转换完成
- OE=1;
- Display_Result(P1);
- OE=0;
- }
- }
- //T0 定时器中断给 ADC0808 提供时钟信号
- void Timer0_INT() interrupt 1
- {
- CLK=~CLK;
- }
复制代码
所有资料51hei提供下载:
ad转换数码管显示.zip
(789 Bytes, 下载次数: 13)
|