如题,A/D转换基础教程
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- #include<absacc.h>
- #define AD_IN0 XBYTE[0x7fff]//IN0通道访问地址
- unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- unsigned char count=0;//字模
- unsigned int t=0;//中间值
- sbit ad_busy=P2^6;//A/D转换结束标志定义
- sbit o_e=P2^7; //锁存控制口
- sbit s_t=P2^5; //开始信号
- sbit p3_0=P3^0; //时钟端
- sbit p2_0=P2^0; //选通端
- sbit p2_1=P2^1;
- sbit p2_2=P2^2;
- sbit p2_3=P2^3;
- void delay(unsigned int time){
- unsigned int j=0;
- for(;time>0;time--)
- for(j=0;j<125;j++);
- }
- int0_srv() interrupt 1{
- p3_0=!p3_0;}
- void main(){
- TMOD=0X02;//设置T0定时方式2
- TH0=TL0=256-100;//计算初值
- ET0=1;//开中断
- EA=1;
- TR0=1;//启动T0
- p3_0=0;
- while(1){
- AD_IN0=0;//启动A/D转换
- s_t=0;//信号复原
- while(ad_busy==0);//等待A/D转换结束
- o_e=1;//准备读数
- P1=AD_IN0;//转换数据显示
- count=P1;
- t=count*19.61;
- p2_3=0; //分时显示
- P0=table[t%10];
- delay(10);
- p2_3=1;
- p2_2=0;
- P0=table[t/10%10];
- delay(10);
- p2_2=1;
- p2_1=0;
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
实验7.rar
(36.59 KB, 下载次数: 102)
|