《微机控制课后习题及答案(二).pdf》由会员分享,可在线阅读,更多相关《微机控制课后习题及答案(二).pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机控制课后习题及答案(2)项目一三.综合题1.画出微机控制系统的组成框图。受控对象输久通道及接口输出通道及接口计算机外存人机交互设备及接口2.简述输入/输出通道及接口的作用。输入/输出通道及接口分为模拟量输入/输出通道和数字量输入/输出通道两种。输入通道及接口把受控对象经传感器转换后的电信号,转换为数字量送入控制器。输出通道及接口把控制器处理结果再转换成执行机构所需信号,去控制受控对象。3.简述人机交互设备的作用。人机交互设备实现了用户和计算机之间的信息交换。4.画出声光报警电路的框图。5.画出自动门的框图。单片机驱动LED驱 动 一扬声器单片机*驱防-执行机构;项目二三.综合题1.简述三基
2、色原理。三基色原理是指自然界中的绝大部分彩色,都可以由三种 基 色(红,绿,蓝)按一定比例混合得到;反之,任意一种彩色均可被分解为三种基色。作为基色的三种彩色,要相互独立,即其中任何一种基色都不能由另外两种基色混合来产生。2.利 用2个按键控制七色发光二极管。一个按键用于切换颜色,另一个按键用于熄灭手电。#include#define uchar unsigned char#define uint unsigned intsbit RED=P2A0;sbit GRE=P2A1;sbit BLU=P2A2;sbit kaishi=PlAO;sbit qiehuan=PlAl;bit biaozh
3、i=0;uchar cishu=O;void delay(uint a);main()(while(l)(if(kaishi=O)(delay(l);if(kaishi=O)(biaozhi=!biaozhi;while(!kaishi);)lf(biaozhi=0)RED=O;GRE=O;BLU=O;else(if(qiehuan=O)(delay;if(qiehuan=O)(cishu+;if(cishu=9)cishu=l;switch(cishu)(case 1:RED=O;GRE=O;BLU=O;break;case 2:RED=O;GRE=O;BLU=l;break;case 3:
4、RED=O;GRE=l;BLU=O;break;case 4:RED=O;GRE=l;BLU=l;break;case 5:RED=l;GRE=O;BLU=O;break;case 6:RED=l;GRE=O;BLU=l;break;case 7:RED=l;GRE=l;BLU=O;break;case 8:RED=l;GRE=l;BLU=l;break;while(!qiehuan);)void delay(uint a)(uint i,j;for(i=0;ia;i+)for(j=0;j1827;j+);)3.利用8个按键控制七色发光二极管,每一个按键控制一种状态。要求画出框图、硬件电路图,
5、并编写源程序。硬件电路图见教材图2-3,P1 口接8个按键。#include#define uchar unsigned char#define uint unsigned intsbit RED=P2A0;sbit GRE=P2A1;sbit BLU=P2A2;bit biaozhi=0;void delay(uint a);main()(w hile(l)(if(Pl!=OXFF)(delay(l);if(Pl!=OXFF)(switch(Pl)casecasecasecasecasecasecasecaseOXFE:RED=O;GRE=O;BLU=O;break;OXFD:RED=O;G
6、RE=O;BLU=l;break;OXFB:RED=O;GRE=l;BLU=O;break;0XF7:RED=O;GRE=l;BLU=l;break;OXEF:RED=l;GRE=O;BLU=O;break;OXDF:RED=l;GRE=O;BLU=l;break;OXBF:RED=l;GRE=l;BLU=O;break;0X7F:RED=l;GRE=l;BLU=l;break;while(Pl!=OXFF);)void delay(uint a)(uint i,j;for(i=0;ia;i+)for(j=0;j1827;j+);)4.用七色发光二极管与蜂鸣器设计声光报警电路。项目三三.综合题
7、1.简述锁存功能。锁存功能是指将数据保存在锁存器的输出端,不会丢失。2.简述74HC573数据锁存过程。先传送数据,后锁存数据。3.简述行扫描原理。行扫描是指每次只能选中一行,所有的行轮流点亮。4.用2 线-4线译码器(使能端E1),构成3 线-8线译码器。5.简述74LS595串入-并出一个字节的过程。第 1 步,串行输入一个字节至移位寄存器。第 2 步,将数据传送至8 位存储器。第 3 步,打开三态门。6.用 74LS595构成24位移位寄存器,写出步骤并画图。7.编写函数在32X64点阵上显示32X32的汉字。void hang32x32(uchar tabl,uchar tab2)(c
8、har ij;for(i=0;i=0;j-)yzimo(tabli*4+j);for(j=3;j=0;j-)yzimo(tab2i*4+j);RCK=1;xsaomiao(i);_nop_();)8.编写函数在32X64点阵上显示24X32的汉字。void hang24x32(uchar tabl,uchar tab2)(char ij;for(i=0;i=0;j-)yzimo(tabli*4+j);for(j=3;j=0;j)yzimo(tab2i*4+j);RCK=1;xsaomiao(i);_nop_();)9.编程在32X64点阵上显示多屏信息。main()(uchar i;while
9、(l)for(i=0;i220;i+)hang24x32(ji,wei);for(i=0;i220;i+)hang24x32(qi,tian);)10.设计一个动画,用 32X64点阵显示。项目四三.综合题1.简述无字库12864的屏幕管理机制。12864显示屏的点阵大小为128列X64行。以中间为间隔一分为二,为左屏和右屏;每半屏均分为8 个数据页;每页的大小为8 行、64列。2.写出无字库12864显示信息所需的函数声明。void lcdkaixianshi(void);void lcdguanxianshi(void);void lcdshezhiye(uchar ye);void lc
10、dshezhilie(uchar lie);void lcdxiezimo(uchar zijie);void lcdshezhiyelie(uchar ye,uchar lie);void lcdqingping(void);void lcdchushihua(void);void Icdxianshil6xl6(uchar tabzuchar qiye,uchar qilie);3.写出Icdxianshil6xl6()和 Icdxianshil6x8()的函数定义及函数声明,并写出显示“镇北路6 号”的函数调用。void Icdxianshil6xl6(uchar tab,uchar q
11、iye,uchar qilie);void Icdxianshil6xl6(uchar tab,uchar qiye,uchar qilie)(uchar i,j;for(i=0;i2;i+)(for(j=0;j16;j+)(lcdshezhiyelie(i+ye,j+lie);lcdxiezimo(tabi*16+j);)void Icdxianshil6x8(uchar tab,uchar qiye,uchar qilie);void Icdxianshil6x8(uchar tab,uchar qiye,uchar qilie)(uchar ij;for(i=0;i2;i+)for(j=
12、0;j8;j+)Icdshezhiyelie(i+ye,j+lie);lcdxiezimo(tabi*8+j);)lcdxianshil6xl6(zhen,2,0);Icdxianshil6xl6(bei,2,16);Icdxianshil6xl6(lu,2,32);Icdxianshil6x8(liu,2,48);Icdxianshil6xl6(hao,2,56);4.编写函数显示6 4 X 6 4的图片。void Icdxianshi64x64(uchar tabzuchar qiye,uchar qilie)(uchar ij;for(i=0;i8;i+)(for(j=0;j1000所以
13、ADC的位数=10位2.根据ADC0832的时序图编写函数。uchar adc0832du(uchar tongdao)(uchar i=0;uchar shujvl,shujv2;ADCCS=0;_nop_();_nop_();ADCDI=1;_nop_();_nop_();ADCCLK=1;_nop_();_nop_();ADCCLK=0;_nop_();_nop_();ADCCLK=1;_nop_();_nop_();ADCDI=(tongdaol)&0 x01;_nop_();_nop_();ADCCLK=0;_nop_();_nop_();ADCCLK=1;_nop_();_nop_
14、();ADCDI=tongdao&0 x01;_nop_();_nop_();ADCCLK=0;_nop_();_nop_();ADCCLK=1;_nop_();_nop_();ADCDI=1;_nop_();_nop_();ADCCLK=0;_nop_();_nop_();shujvl=0;for(i=0;i8;i+)(shujvl=shujvll;shujvl=shujvl|ADCDO;ADCCLK=1;_nop_();_nop_();ADCCLK=0;_nopj);_nop_();)shujv2=0;for(i=0;i8;i+)(shujv2=shujv2l;if(ADCDO)shujv
15、2=shujv210 x80;ADCCLK=1;_nop_();_nopj);ADCCLK=0;_nopj);_nop_();ADCCS=1;ADCCLK=0;ADCDO=1;if(shujvl=shujv2)return(shujvl);3.某 10位 ADC输入模拟电压范围是05V,试确定模拟量与数字量之间的关系。3D _ DW23 204.64.设计单片机测控系统,用于测试某一场所的环境温度。提供的传感器参数为:测温范围-4060,输出信号05V,测试精度1C;试择A D C,及如何实现该环境温度的测试并显示?需 要(60+40)/1=100个状态。因为 28=256 100所以ADC的
16、位数=8位,U=D/51;因为测温范围-4060,输出信号05V,所以t=20U-40;得:t=0.39U-405.根据图6-12编写函数,实现数据的串行传送。CSJL0 1 2 3 4 5 6 7MSB TSR图6-12 串行传送数据时序图void chuansong(uchar y)(uchar i;for(i=0;i8;i+)(CLK=O;if(y&0 x01)D=l;else D=0;CLK=1;y=yi;5.简述矩形波频率的测试原理。频率是指i s内完成周期性变化的次数。主要解决两个问题:第一:定 时 1s;用定时/计数器T 1 定 时 50ms,T 1 溢 出 1 次 是 50 m
17、 s,溢 出 2 0 次时,为 2 0 次X50ms=1000ms=lSo第二:在 1S的时间内,统计矩形波周期的个数。6.用 DS18B20和湿度传感器监控室内环境质量。7.通过光敏电阻监测光线的变化,使路灯自动工作。项目七三.综合题1.简述直流电机的工作原理。直流电机是根据通电导体在磁场中会受力的原理来工作的。直流电机由定子和转子两大部分组成。定子在直流电机运行时静止不动,定子的主要作用是产生磁场。转子在直流电机运行时处于转动状态,其主要作用是产生电磁转距和感应电动势,是直流电机进行能量转换的枢纽,又称为电枢。2.编程用按键控制直流电机的速度;一个按键增速,另一个按键减速。#include
18、#define uchar unsigned char#define uint unsigned intsbit zeng=P1A3;sbit jian=P1A4;sbit PWM=PlA0;uchar pwmgao=100,pwmdi=100;uchar dangwei=0;void pwmtiaosu(void);void qudong(void);void delayms(uint a);void delayus(uint a);void main()(while(l)(qudong();pwmtiaosu();)void pwmtiaosu(void)if(zeng=O)(delaym
19、s(lO);if(zeng=O)(dangwei+;if(dangwei=5)dangwei=O;while(lzeng);)if(jian=O)(delayms(lO);if(jian=O)(if(dangwei=O)dangwei=5;dangwei-;while(ljian);)switch(dangwei)case0:pwmgao=0;pwmdi=200;break;case1:pwmgao=50;pwmdi=150;break;case2:pwmgao=100;pwmdi=100;break;case3:pwmgao=150;pwmdi=50;break;case4:pwmgao=2
20、00;pwmdi=0;break;)void qudong(void)(uchar i;for(i=0;ipwmdi;i+)(PWM=0;delayus(l);)for(i=0;ipwmgao;i+)(PWM=1;delayus(l);void delayms(uint a)void delayus(uint a)3.编程用PWM波控制LED的亮度。#include#define uchar unsigned char#define uint unsigned intsbit LED=P2A0;uchar pwmgao=0/pwmdi=80,cd;void qudong(void);void delayus(uint a);void main()while(l)if(pwmgao=80)&(pwmdi=0)cd=0;if(pwmgao=0)&(pwmdi=80)cd=l;if(cd)pwmgao+;pwmdi-;else pwmgao-;pwmdi+;qudong();)void qudong(void)uint i;for(i=0;i300;i+)LED=O;delayus(pwmgao);LED=1;delayus(pwmdi);