(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
#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
#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
#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位定时
相关推荐: