第8章思考与练习单片机原理及应用-源程序与思考题参考答案.doc:..思考与练****一、 ,模拟输入量程为0・5V,若其相对误差为1LSB,则用百分数表示的相对误差为(C)。A、1% B、% C、% D、%,单片机读取数据的方式有3种,其中不包括(B)。A、查询方式 B、直接读取 C、中断方式D、,调节零点时,模拟输入量(A);调节增益时,模拟输入量(A)oA、0V,5VB、0V,最大值C>最大值,最小值D、最大值,最大值。4・DAC0832有(B)几种控制方式。A、全通、单控、双通 B、直通、单缓冲方式、,应采用(D)指令。A、MOVAZROB、******@DPTRC、MOVCA,***@A+DPTRD、******@DPTR,A二、 和转换速度。,目前应用广泛的主要由3类:逐次逼近式、双积分式和V/F变换式。,具有地址锁存、译码电路的g路模拟开关。,DAC0831是8位串行D/A转换芯片。、单缓冲方式以及双缓冲方。三、 应用题1、用单片机设计一简易数字电压表,并在PROTEUS中进行仿真。参考答案():#inelude<>#inelude<>#defineuintunsignedint#defjneucharunsignedcharsbitCS=P2A0;sbitCLK=P2A1;sbitDATA=P2A2;ucharcodenum[]={Oxfb,Oxfd,Oxfe};ucharcodetable[]={0x40z0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};〃共阳极数码管带小数点段码表ucharcodetablel[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};〃共阳极数码管不带小数点段码表uinttab[3];〃存放电压的数组voiddelay));voiddisplay();ucharRead_AD0831();〃读取AD0831的数据voidmain()while(l)uintt=200,temp;temp=Read_AD0831()*100/51;〃乘以100是为了保留小数点后两位数据,除以51是因为一个51代表IVtab[0]=temp/100;temp=temp%100;tab[l]=temp/10;tab[2]=temp%10;while(t-)AD0831的数据〃得到百位数〃将百位去掉〃得到十位数〃得到个位数〃因为CPU运行很快所以不需要每时每刻都去读取display();〃在数码管上显示数据ucharRead_AD0831()inti=0,tmp=0;DATA=1;CS=O;_nop_();_nop_();CLK=O;_nop_();_nop_();CLK=1;_nop_();_nop_();CLK=O;_nop_();_nop_();CLK=1;_nop_();_nop_();CLK=O;_nop_();_nop_();for(i=0;i<8;i++)〃循环八次按从高位到低位的顺序把数据读走{tmp=tmp«l;tmp=tmp|DATA;CLK=1;_nop_();_nop_();CLK=O;_nop_();_nop_();}CS=1; 〃读完过后将AD0831关闭_nop_();_nop_();returntmp;}voiddisplay(){externuinttab[3];uchari;for(HO;iv3;i++)〃采用动态扫描的方式在3个数码管显示数据P3=num[i]; 〃控制哪个数码管可以显示if(i==0)Pl=table[tab[i]];〃百位应该带小数点显示}else{Pl=tablel[tab[i]];//十位和个位不带小数点显示}delay();P3=Oxff;〃消影}}voiddelay)){uintt=100;while(t-);}2、设计8路数据采集,要求显示路数和采集值,并在PROTEUS屮进行仿真。参考答案():#inelude<>#include<>#defineuintunsignedint#defineucharunsignedcharsbita=P2A
第8章思考与练习单片机原理及应用-源程序与思考题参考答案 来自淘豆网www.taodocs.com转载请标明出处.