第一范文网 - 专业文章范例文档资料分享平台

单片机课后习题答案(《单片机应用技术》C语言版)

来源:用户分享 时间:2025/6/4 13:46:07 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

(4) :DAC寄存器写信号,并启动转换。低电平有效。

(5) :数据向DAC寄存器传送控制信号,传送后即启动转换,低电平有效。

ADC0809与8051单片机接口时,控制信号主要有:ALE、START、EOC、OE。作用分别是:

(1)ALE:地址锁存允许信号在ALE上升沿,ADDA、ADDB、ADDC地址状态被送入地址锁存器中。 (2)START:转换启动信号。START上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换;在A/D转换期间,START应保持低电平。 (3)OE:输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高电阻;OE=1,输出转换得到的数据。

(4)EOC——转换结束状态信号。启动转换后,系统自动设置EOC=0,转换完成后,EOC=1。该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。 6.4

答:

所谓单缓冲方式就是使0832的两个输入寄存器中有一个处于直通方式,而另一个处于受控的锁存方式,或者两个输入寄存器同时受相同的信号控制的方式。在实际应用中,如果只有一路模拟量输出,或虽有几路模拟量但并不要求同步输出的情况,就可采用单缓冲方式。

所谓双缓冲方式,就是把DAC0832的两个锁存器都接成受控锁存方式。

6.5

答:

判断A/D转换是否结束一般可采用3种方式,即EOC信号和单片机相连可有3种方式:

① 延时方式:EOC悬空,启动转换后,延时100μs后读入转换结果。 ② 查询方式:EOC接单片机端口线,查得EOC变高,读入转换结果,作为查询信号。

③ 中断方式:ROC经非门接单片机的中断请求端,转换结束作为中断请求

信号向单片机提出中断申请,在中断服务中读入转换结果。

其中延时方式和查询方式均占用单片机CPU,即在这段时间,CPU只能做延时或查询的工作,而采用中断方式时,CPU可先执行主程序,一旦产生中断,才去处理数据接收的工作,使得CPU利用率较前面两种要高。 6.6

答:

(1)周期为25ms的锯齿波发生器C语言源程序如下:

#include #include

#define DA0832 XBYTE[0x7fff] #define uchar unsigned char

#define uint unsigned int uchar i;

void delay_100us() { TH1=0xff; 定时0.1ms

TL1=0x9c;

TR1=1; // 启动定时器1

while(!TF1); // 查询计数是否溢出,即定时0.1ms时间到,TF1=1

TF1=0; 志位TF清零 }

void main(void) { TMOD=0x10;

while(1)

{ for(i=0;i<=255;i++)

{ DA0832=i; }

}

//形成锯齿波输出值,最大255

//D/A转换输出

// 置定时器1为方式1

// 0.1ms时间到,将定时器溢出标

// 置定时器初值0xff9c,即65436,

delay_100us();

}

(2)周期为50ms的三角波C语言源程序如下:

#include #include

#define DA0832 XBYTE[0x7fff] #define uchar unsigned char #define uint unsigned int uchar i,j;

void delay_100us() { TH1=0xff; TL1=0x9c; TR1=1;

// 启动定时器1

//置定时器初值0xff9c,即65436,定时0.1ms

while(!TF1); // 查询计数是否溢出,即定时0.1ms时间到,TF1=1 TF1=0; }

void main(void) {

TMOD=0x10; while(1) {

for(i=0;i<=255;i++) //形成三角波输出值,最大255

//D/A转换输出

// 置定时器1为方式1

// 0.1ms时间到,将定时器溢出标志位TF清零

{ DA0832=i; }

delay_100us();

for(j=255;j>=0;j--)//形成三角波输出值,最大255

}

{ DA0832=j; } }

//D/A转换输出

delay_100us();

(3)周期为50ms的方波C语言源程序如下:

#include #include

#define DA0832 XBYTE[0x7fff] #define uchar unsigned char #define uint unsigned int uchar i,j;

void delay_25ms() { TH1=0x9e; TL1=0x58;

TR1=1; // 启动定时器1

while(!TF1); // 查询计数是否溢出,即定时25ms时间到,TF1=1

TF1=0; 志位TF清零 }

void main(void)

// 25ms时间到,将定时器溢出标

// 置定时器初值

{ TMOD=0x10;

while(1) {

// 置定时器1为方式1

DA0832=255; //形成方波输出值,最大255 ,D/A

转换输出

}

delay_25ms(); DA0832=0; delay_25ms();

//D/A转换输出

}

6.7

答:

在选定转换通道后,ADC0809工作的主要有以下几个步骤: 1.启动A/D转换,给START引脚一个下降沿; 2.ALE信号与START信号一般连接在一起,这样使得在ALE信号的前沿写入地址信号,紧接着在其后沿就启动转换;

3.查询EOC引脚状态,EOC引脚由0变1,表示A/D转换过程结束; 4.允许读数,将OE引脚设置为1状态。

5.读取A/D转换结果,从ADC0809的外部地址读取其转换结果。

习题7答案

7.1 单项选择题 (1) A (2)B (3)D (6) C (7)B (8)C (11) C (12)D (13)A 7.2

答:

在异步通信中,数据是不连续传送的,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端可以由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。

(4) C (5)B (9) C (10)A

异步通信的字符帧格式分为无空闲位帧格式和有空闲位帧格式。 7.3 答:

T1的溢出率取决于单片机定时器T1的计数速率和定时器的预置值。当定时器T1做波特率发生器使用时,通常是工作在模式2,即自动重装载的8位定时

单片机课后习题答案(《单片机应用技术》C语言版).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0vqsc4mmgh2mdyx423a46cyp27lzc201bnc_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top