2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > adc0808模数转换实验报告_ADC0808模数转换显示 单片机程序

adc0808模数转换实验报告_ADC0808模数转换显示 单片机程序

时间:2023-11-05 01:51:58

相关推荐

adc0808模数转换实验报告_ADC0808模数转换显示 单片机程序

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit ST= P1^3;//启动信号

sbit EOC=P1^4;//转换结束信号

sbit OE= P1^5;//输出使能

sbit CLK=P1^6;//时钟信号

//0~9字型码

uchar code seg_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

/**************************************************

函数功能:软件延时

入口参数:类型uint x为1ms的倍数

出口参数:无

****************************************************/

void delay(uint x)

{

uchar i;

while(x--)

for(i=0;i<115;i++);//1ms

}

/**************************************************

函数功能:数码管显示

入口参数:seg_data[]为0~9字型码

出口参数:uint x 要显示的数字

****************************************************/

void display(uint x)

{

uchar i,disp[3];

disp[0]=seg_data[x/100];//百位

disp[1]=seg_data[(x%100)/10]; //十位

disp[2]=seg_data[x%10]; //个位

for(i=0;i<3;i++)

{

P0=disp[i]; //数码管段码

P2=~(1<

delay(20); //延时2ms

P2=0xff; //关闭数码管显示

}

}

main()

{

TMOD=0x02;//T0工作模式2

TH0=0x14;

TL0=0x14;

ET0=1;

EA=1;

TR0=1;

P1=0;//选择ADC0808的通道0

while(1){

ST=0;

EOC=1;//高电平有效

OE=0;

ST=1;//上升沿清零、锁存地址

ST=0;//下降沿开始A/D转换

while(EOC==1);//等待转换完成

OE=1;//输出允许信号

display(P3);//显示转换的数据

}

}

/**************************************************

T0定时器中断给ADC0808提供时钟信号

****************************************************/

void Timer0_INT() interrupt 1

{

CLK=~CLK;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。