计算机控制

0 0 0 //查询方式 #include sbit P1_0=P1^0; sbit P1_1=P1^1;

void delay(void) /*延时*/ {

unsigned char i; for (i=50;i>0;i--); }

void mian() {

unsigned char i; while(P1_1==1); P1_0=1; delay(); P1_0=0; SCON=0x10; while(!RI); RI=0; i=SBUF; }

开关S接到INT1 //中断方式

#include sbit P1_0=P1^0;

void delay(void) /*延时*/ {

unsigned char i; for (i=50;i>0;i--); }

void EXT0_INIT(void) {

EA=1; EX0=1; IT0=1; }

void int(void)interrupt0 {

unsigned char i;

1 0 0 0 0 P1_0=1; delay(); P1_0=0; SCON=0x10; while(!RI); RI=0; i=SBUF; }

void mian(void) {

EXT0_INIT(); while(1); }

第三章作业

3.1 衡量D/A转换器好坏的主要性能指标有哪几项? 答:分辨率、转换精度、建立时间和非线性误差。

3.2 已知8位DA转换器参考电压VREF为-5V,当输入数据为80H时,理论上输出电压为多少?

答:利用下面公式计算:

BVout??VREF

256B=128 (80H转换为十进制),VREF=-5V,计算得到Vout=2.5 V。

3.3 8位D/A转换器DAC0832中的8位输入寄存器和8位DAC寄存器各有什么功能?为什么需要两个寄存器?

答:两个寄存器配合实现如下工作方式:直通、单缓冲和双缓冲。使用两个寄存器可以实现两次缓冲操作,从而可以简化某些应用系统中的硬件接口电路设计。同时,利用两级缓存,提高了转换速率。

3.4 某A/D转换电路如图所示。 (1) 写出8255的四个端口的地址;

(2) 该电路采用什么控制方式?画出该种转换的程序框图; (3) 用C51编写完成上述转换的程序。

P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.01&G1G2AY6G2BABC8255CSPB7-PB0ADC0809D7-D0IN0V1PC7A1A0PC3STARTALEEOCABCP0.7-P0.0D7-D0 答:

(1) AD0809通过8255与单片机连接,因此,8255的四个端口地址为:0x78ff-0x7bff; (2) 采用查询式控制方法,相应得程序流程图如下:

开始设置8255工作模式ADC0809工作EOC=1?YN

从8255读数据结束

(3).

#include #include

#define uchar unsigned char

#define COM8255 XBYTE[0x7bff] //命令口地址 #define PB8255 XBYTE[0x79ff] //B口地址 #define PC8255 XBYTE[0x7aff] // C口地址

void main(void) {

uchar j;

COM8255=0x83;//PC高位置输出,低位置输入;B口输入 _nop_();

COM8255=0x0e; //启动AD转换 COM8255=0x0f; _nop_();

COM8255=0x0e;

while(( 0x08 & PC8255)==0); // 判断A/D转换结束 j=PB8255; while(1) }

3.5 如下图所示,试用中断方式编写C51程序,对IN3通道上的模拟电压数据连续进行8次采集,求平均值后将转换结果送入内部RAM 20H单元的数据缓冲区中。 答:

D ALE G 74LS 373 OE Q ADC0809 CLK IN0 IN1 IN2 ADDA ADDB ADDC D0~D7 IN3 IN4 IN5 IN6 IN7 CP Q A0 A1 A2 P0 MCS-51 单 片 机 WR P2.7 RD INT0 ≥1 ≥1 START ALE OE EOC 51单片机与ADC0809的接口

#include #include

#define uchar unsigned char uchar xdata *adch; uchar data *addata; uchar i; uchar sum; uchar ave;

void ADint0 (void) interrupt 0 {

uchar j; j=*adch; sum=sum+j; i++; if(i==0x08)

联系客服:779662525#qq.com(#替换为@)