51单片机练习:A/D转换篇

本文详细描述了如何使用单片机控制ADCO804进行8位模数转换,通过AD转换函数和数码管显示函数,实现实时显示转换后的数字。同时讨论了实验中的AD转换时序和注意事项。

题目:

【例5.3.1】用单片机控制ADCO804进行模数转换,当拧动实验板上A/D旁边的电位器Re2时,在数码管的前三位以十进制方式动态显示出A/D转换后的数字量(8位A/D转换后数值在0~255变化)。(来自郭天祥老师的51单片机练习)

代码:

AD转换函数:

void ADTransform()
{
	uint i,ADval,bai,shi,ge;
	
	//写入信号
	ADWR = 1;
	_nop_();//延时一个机器周期
	ADWR = 0;//打开写入信号
	_nop_();
	ADWR = 1;//关闭写入信号
	//延时一段时间,待信号全部转换好(此处未用INTR中断标志信号已全部写入)
	for(i = 20;i > 0;i--)
	{
		display(bai,shi,ge);
	}
	
	//读出信号
	P1 = 0xff;//读之前P1全赋1
	ADRD = 1;
	_nop_();//延时一个机器周期
	ADRD = 0;//打开读出信号
	_nop_();
	ADval = P1;//将信号读出
	ADRD = 1;//关闭读出信号
	
	//处理读到的信号
	bai = ADval / 100;//百位
	shi = (ADval % 100) / 10;//十位
	ge = ADval % 10;//个位
	display(bai,shi,ge);
}

数码管显示函数:

//数码管显示函数
void display(uint bai,uint shi,uint ge)
{
	WLE = 1;
	P0 = 0x7e;//百位-位选
	WLE = 0;
	P0 = 0xff;//消影
	DLE = 1;
	P0 = Table[bai];//百位-段选
	DLE = 0;
	delay_1ms(5);
	
	WLE = 1;
	P0 = 0x7d;//十位-位选
	WLE = 0;
	P0 = 0xff;//消影
	DLE = 1;
	P0 = Table[shi];//十位-段选
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值