题目:
【例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];//十位-段选

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






