第8章思考与练习Word格式文档下载.docx
- 文档编号:13683412
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:15
- 大小:18.38KB
第8章思考与练习Word格式文档下载.docx
《第8章思考与练习Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第8章思考与练习Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
4.D/A转换器的种类很多,DAC0831是8位串行D/A转换芯片。
5.DAC0832的工作方式通常是直通方式、单缓冲方式以及双缓冲方。
三、应用题
1、用单片机设计一简易数字电压表,并在PROTEUS^进行仿真。
参考答案(详见作业8.1):
#inelude<
reg52.h>
#ineludevintrins.h>
#defineuintunsignedint
#defineueharunsignedchar
sbitCS=P2A0;
sbitCLK=P2A1;
sbitDATA=P2A2;
ueharcodenum[]={0xfb,0xfd,0xfe};
ueharcodetable[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//共阳极数码管带小数点段码表
ucharcodetable1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//共阳极数码管不带小数点段码表
uinttab[3];
//存放电压的数组
voiddelay();
voiddisplay();
ucharRead_AD0831();
//读取AD0831的数据
voidmain()
{
while
(1)
uintt=200,temp;
以51是因为一个51代表1V
tab[0]=temp/100;
temp=temp%100;
tab[1]=temp/10;
tab[2]=temp%10;
while(t--)
AD0831的数据
temp=Read_AD0831()*100/51;
//乘以100是为了保留小数点后两位数据,除
//得到百位数
//将百位去掉
//得到十位数
//得到个位数
//因为CPU运行很快所以不需要每时每刻都去读取
display();
//在数码管上显示数据
}
ucharRead_AD0831()
inti=0,tmp=0;
DATA=1;
CS=0;
_nop_();
CLK=0;
CLK=1;
CLK=O;
for(i=0;
i<
8;
i++)//循环八次按从高位到低位的顺序把数据读走
tmp=tmp<
<
1;
tmp=tmp|DATA;
CS=1;
//读完过后将AD0831关闭
returntmp;
voiddisplay。
externuinttab[3];
uchari;
3;
i++)//采用动态扫描的方式在3个数码管显示数据
P3=num[i];
//控制哪个数码管可以显示
if(i==0)
P仁table[tab[i]];
//百位应该带小数点显示
else
P仁table1[tab[i]];
//十位和个位不带小数点显示
delay();
P3=0xff;
//消影
voiddelay()
uintt=100;
while(t--);
2、设计8路数据采集,要求显示路数和采集值,并在PROTEUS^进行仿真。
参考答案(详见作业8.2):
#include<
#includevintrins.h>
#defineucharunsignedchar
sbita=P2A0;
sbitb=P2Al;
sbitc=P2A2;
sbitOE=P2A3;
sbitEOC=P2A4;
sbitstart=P3A0;
sbitwelaO=P3A1;
sbitwela仁卩3人2;
sbitwela2=P3A3;
sbitwela3=P3A4;
uinttab[]={O,O,O};
ucharcodetable1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//共阳极数
码管带小数点段码表
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voidread();
uinttemp;
voidmain()
uchart=200;
read();
voidread()
start=0;
start=1;
while(EOC==0);
//转换结束才能退出循环
OE=1;
//允许数据输出
temp=P1;
//显示数据
OE=0;
voiddisplay()
ucharnum,i,n;
temp=temp*100;
//保留小数点后两位
temp=temp/51;
//得到百位数
tab[1]=temp%100/10;
//得到十位数
tab[2]=temp%10;
//得到个位数
num=P2|0xf8;
//为显示哪个通道做准备
switch(num)
case(0xf8):
n=1;
break;
//一通道
case(0xf9):
n=2;
//二通道
case(Oxfa):
n=3;
case(0xfb):
n=4;
case(0xfc):
n=5;
case(0xfd):
n=6;
case(0xfe):
n=7;
case(0xff):
n=8;
4;
i++)//循环显示四位数(通道(一位数),数据(三位数))
if(i==0)//显示通道
PO=table[n];
wela0=1;
//打开位选
wela0=0;
//关闭位选
if(i==1)
PO=table1[tab[O]];
//百位数(使用带小数点显示)
wela1=1;
wela1=0;
if(i==2)
PO=table[tab[1]];
//十位数(不带小数点显示)
wela2=1;
wela2=0;
if(i==3)
P0=table[tab[2]];
//个位数(不带小数点显示)
wela3=1;
wela3=0;
uchart=100;
3、用ADC0831实现对单路数据的采集。
参考答案(详见作业8.3):
ucharcodenum[]={0xfb,0xfd,0xfe};
//共阳极数
//共阳极数码
ucharcodetable[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
管不带小数点段码表
II乘以100是为了保留小数点后两位数据,除
tab[O]=temp/1OO;
display。
;
CS=O;
_nop_();
CLK=O;
CLK=1;
CLK=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 思考 练习
![提示](https://static.bdocx.com/images/bang_tan.gif)