#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位定时
器,此时TL1作计数用,自动重装载的值在TH1内。设计数的预置值(初始值)为X,那么每过256-X个机器周期,定时器溢出一次。为了避免溢出而产生不必要的中断,此时应禁止T1中断。
7.4 答:
参考程序如下: #include
#define uchar unsigned char code uchar
tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f};
uchar send[]={0x04,0x03,0x02,0x01,0x08,0x07,0x06,0x05}; int i,t;
//延时函数,当t取值12000时,若晶振fosc=12MHz,大约延时1s void delay(t) {for(i=0;i main() { unsigned char i,j,k,m; SCON=0x00; //串行口工作方式 while(1) { for(i=0;i<6;i++) {SBUF=(tab[send[i]]); // 发送第i个数据 while(TI==0); // 等待发送是否完成 TI=0; // TI清0 } delay(12000) ; for(m=6;m<12;m++) {SBUF=(tab[send[m]]); // 发送第i个数据 while(TI==0); // 等待发送是否完成 TI=0; // TI清0 } delay(12000) ; } } 7.5 答: 参考程序如下: 甲机发送 发送子程序参考如下: #include