单片机应用技术(经典项目化案例式新形态活页教材)第5版 项目测验1-7参考答案汇 王静霞_第1页
单片机应用技术(经典项目化案例式新形态活页教材)第5版 项目测验1-7参考答案汇 王静霞_第2页
单片机应用技术(经典项目化案例式新形态活页教材)第5版 项目测验1-7参考答案汇 王静霞_第3页
单片机应用技术(经典项目化案例式新形态活页教材)第5版 项目测验1-7参考答案汇 王静霞_第4页
单片机应用技术(经典项目化案例式新形态活页教材)第5版 项目测验1-7参考答案汇 王静霞_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目1测验题参考答案及评分标准1.1单项选择题(每题2分,共计10分)(1)A(2)C(3)C (4)A(5)D1.2填空题(每空2分,共计20分)(1)硬件系统(或电路)、软件系统(或控制程序)(2)时钟电路、复位电路(或者复位电路、时钟电路)(3)XTAL1、XTAL2、RESET、EA(顺序可以改变)(4)晶振(或者时钟电路)(5)正(或阳)1.3中英文填空题,请分别写出下面英文缩写的中文和英文翻译(每空2分,共计20分)英文翻译中文翻译(1)CPUCentralProcessingUnit中央处理单元(2)RAMRandomAccessMemory随机存取存储器(3)ROMRead-OnlyMemory只读存储器(4)MCUMicro-ControllerUnit微控制器单元(5)I/OInput/Output输入/输出1.4问答题(每题10分,共计20分)(1)什么是单片机?它由哪几部分组成? 答:单片微型计算机(SingleChipMicrocomputer)简称单片机,是指集成在一个芯片上的微型计算机(5分),它的各种功能部件,包括CPU(CentralProcessingUnit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机(5分)。(2)什么是单片机应用系统?答:单片机应用系统是以单片机为核心,配以输入、输出、显示等外围接口电路和控制程序,能实现一种或多种功能的实用系统。(10分)1.5设计题(每题10分,共计30分)(1)利用51单片机的并行I/O端口P1口控制8个发光二极管,请画出电路图。参考电路如下:(2)设计8个灯同时闪烁的控制程序。参考程序如下:#include<reg51.h>//包含头文件reg51.h,定义了51单片机的专用寄存器//函数名:delay//函数功能:实现软件延时//形式参数:无符号整型变量i,控制空循环的循环次数//返回值:无voiddelay(unsignedinti) //延时函数{unsignedintk; for(k=0;k<i;k++);}voidmain() //主函数{while(1){P1=0x00; delay(20000); //调用延时函数,实际参数为20000P1=0xff; delay(20000); //调用延时函数,实际参数为20000}}(3)设计控制程序实现如下亮灭状态。●○●○●○●○亮灭亮灭亮灭亮灭参考程序如下:#include<reg51.h>//包含头文件reg51.h,定义了51单片机的专用寄存器voidmain() //主函数{P1=0x55; while(1);}}项目2测验题参考答案及评分标准(测验时间60分钟,共计100分)2.1单项选择题(每题2分,共20分)(1)C(2)A (3)A(4)A(5)A(6)D(7)D(8)A(9)A(10)C2.2填空题(每题2分,共20分)(1)程序存储器(或ROM)(2)工作寄存器组、位寻址区、用户RAM(顺序可调)(3)1us、2us(4)按键复位、上电复位(9)2、高2.3中英文填空题(共计20分)(1)请分别写出下面专业术语英文缩写的中文和英文翻译(每空1分,共10分)英文中文PCProgramCounter程序计数器②SFRSpecialFunctionRegister特殊功能寄存器③PSWProgramStatusWord程序状态字④LEDLigthtEmittingDiode发光二极管⑤PCBPrintedCircuitBoard印刷电路板(2)请写出下面专业术语的中文意思(每空1分,共10分)①Reset复位 ②Crystaloscillator晶体振荡器(或晶振)③Code代码 ④Data数据⑤Byte字节 ⑥Bit位⑦delay延时 ⑧debug调试⑨project工程(项目) ⑩memory存储器2.4回答题(每题5分,共25分)(1)画出51单片机的时钟电路,并指出石英晶体和电容的取值范围。参考答案:单片机时钟电路如下图(3分)。一般地,电容C1和C2取30pF左右;晶体振荡器,简称晶振,频率范围是1.2~12MHz。晶体振荡频率越高,系统的时钟频率也越高,单片机的运行速度也就越快。在通常情况下,使用振荡频率为6MHz或12MHz的晶振。如果系统中使用了单片机的串行口通信,则一般采用振荡频率为11.0592MHz的晶振。(2分)(2)什么是机器周期?机器周期和晶振频率有何关系?参考答案:(5分)51单片机采用定时控制方式,有固定的机器周期。规定一个机器周期的宽度为6个状态,即12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。(3)51单片机常用的复位方法有几种?画出电路图并说明其工作原理。参考答案:2种,上电复位和按键复位。单片机常见的复位电路下图所示。(1分)(a)(2分)上电复位电路。它利用电容充电来实现复位,在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。只要保证RST为高电平的时间大于两个机器周期,便能正常复位。(b)(2分)为按键复位电路。该电路除具有上电复位功能外,还可以按图2.5(b)中的RESET键实现复位,此时电源VCC经两个电阻分压,在RST端产生一个复位高电平。图1.23中的信号灯控制电路就采用按键复位电路。(4)C51编译器支持的存储器类型有哪些?参考答案:单片机的存储器结构包括4个物理存储空间,C51编译器对这4个物理存储空间都能支持。常见的C51编译器支持的存储器类型如下表所示。(5分)存储器类型描述data直接访问内部数据存储器,允许最快访问(128B)bdata可位寻址内部数据存储器,允许位与字节混合访问(16B)idata间接访问内部数据存储器,允许访问整个内部地址空间(256B)pdata“分页”外部数据存储器(256B)xdata外部数据存储器(64KB)code程序存储器(64KB)(5)请说明sfr和sbit两个关键字的作用。参考答案:Sfr用来定义所有专用寄存器,从而在程序中能够直接访问他们;(2.5分)Sbit用来定义专用寄存器中的可寻址位的位名称。(2.5分)2.5设计题(共15分)用单片机控制1个开关和两个发光二级管,开关SW由单片机的P0.0控制,LED1和LED2由P1.0和P1.1控制,要求:(5分)画出系统电路图。②(5分)编程实现如下功能:控制系统在一个开关SW的控制下,两个发光二级管LED1、LED2交替亮灭,无论开关SW是闭合还是断开,同一时刻只能有一个LED点亮,另一个LED不亮。③(5分)编程实现如下功能:让开关SW控制两个LED交替以闪烁方式亮灭,即当SW断开时,LED1闪烁、LED2不亮;当SW闭合时,LED1不亮、LED2闪烁。参考答案:①(5分)参考电路如下:②(5分)参考代码如下:#include<REGX51.H>//包含头文件REGX51.H,定义了51单片机的所有SFRsbitLED1=P1^0;//定义P1.0引脚位名称为LED1sbitLED2=P1^1;//定义P1.1引脚位名称为LED2sbitSW=P0^0;//定义P0.0引脚位名称为SWvoidmain() //主函数{while(1)//无限循环{ LED1=SW;//采用位操作,开关断开时P0.0引脚接高电平,点亮LED1 LED2=~SW;//采用位操作,开关闭合时将接低电平的P0.0引脚状态取反,点亮LED2 } } ③(5分)参考代码如下:#include<REGX51.H>//包含头文件REGX51.H,定义了51单片机的所有SFRsbitLED1=P1^0;//定义P1.0引脚位名称为LED1sbitLED2=P1^1;//定义P1.1引脚位名称为LED2sbitSW=P0^0;//定义P0.0引脚位名称为SW//函数名:delay//函数功能:实现软件延时//形式参数:无符号整型变量i,控制空循环的循环次数//返回值:无voiddelay(unsignedinti){while(i--);//i次空操作}voidmain() //主函数{while(1)//无限循环{ LED1=~SW;//采用位操作,开关断开时将接高电平的P0.0引脚状态取反,点亮LED1 LED2=SW;//采用位操作,开关闭合时P0.0引脚接低电平,点亮LED2 delay(20000); LED1=1; LED2=1; delay(20000); }}项目3测验题(测验时间75分钟,共计100分)3.1单项选择题(每题2分,共计20分)(1)C(2)A(3)A(4)D(5)D(6)D(7)A(8)B(9)C(10)D3.2填空题(每空2分,共计20分)(1)sbitFLAG=P3^1;(2)sfr(3)选择、循环(可以调换顺序)(4)ifelseif、switch(可以调换顺序)(5)do-while语句、while语句(6)10000(7)unsignedchar3.3简答题(共计30分)(1)(25分)假定在单片机的P3.0引脚连接了1个按键K,按下时,P3.0引脚为低电平,否则为高电平。请画出电路图,并写出完成下面功能的语句。①检测按键是否按下②检测按键是否弹起③等待按键按下④等待按键弹起参考答案:参考电路如下。①检测按键是否按下if(K==0)或者if(!K)②检测按键是否弹起if(K==1)或者if(K)③等待按键按下while(K==1)或者while(K)④等待按键弹起while(K==0)或者while(!K)(2)(5分)51单片机控制外部输入输出设备时,一般都需要加上驱动电路,比如蜂鸣器,请问驱动电路的作用是什么?参考答案:单片机的并行IO口输出电流都比较小,无法驱动外部设备,所以需要增加驱动电路,用来放大电流或功率,驱动外设。3.4综合题(共计30分)(1)填空,完成下面的程序(每空2分,共10分)。#include<reg51.h>;voidmain(){while(){P1=0xFF;(1200);P1=0x00;(1200);}}//函数名:delay//函数功能:实现软件延时//形式参数:整型变量i,控制循环次数//返回值:无voiddelay(unsignedinti){for(k=0;k<i;k++);}参考答案:voiddelay(unsignedinti);1DelayDelayUnsignedintk;(2)(10分)利用单片机P3.0~P3.3控制4个按键K0~K3,按下为低电平,弹起为高电平;P1.0~P1.3控制4个发光二极管,低电平点亮;请设计一个4人抢答器,要求编程实现,当有某一参赛者首先按下抢答开关时,相应的LED灯亮,此时抢答器不再接受其他输入信号,需按复位按键才能重新开始抢答。参考程序://功能:实用4路抢答器程序#include<reg51.h>sbitP3_0=P3^0;//定义P3.0引脚名称为P3_0sbitP3_1=P3^1;//定义P3.1引脚名称为P3_1sbitP3_2=P3^2;//定义P3.2引脚名称为P3_2sbitP3_3=P3^3;//定义P3.3引脚名称为P3_3voidmain() //主函数{ bitflag;//定义位变量flag while(!flag) { if(!P3_0) { P1=0xfe; flag=1; } elseif(!P3_1) { P1=0xfd; flag=1; } elseif(!P3_2) { P1=0xfb; flag=1; } elseif(!P3_3) { P1=0xf7; flag=1; } while(flag); }}3.(10分)假定单片机的P2口控制8个LED,灌电流方式,请设计8个LED反复从中间到两边,再从两边到中间依次点亮的霓虹灯效果,时间间隔没有要求。参考答案:#include<regx51.h>voiddelay(){unsignedinti;for(i=0;i<20000;i++);}voidmain(){unsignedchari;//定义变量iP2=0xff;//灭灯while(1){for(i=0;i<4;i++){P2=~((0x01<<i)|(0x80>>i));delay();}for(i=0;i<4;i++){P2=~((0x10<<i)|(0x08>>i));delay();}}}项目4测验题(测验时间75分钟,共计100分)4.1单项选择题(每题2分,共计20分)(1)A(2)C(3)B(4)C(5)D(6)B(7)C(8)D(9)D(10)C4.2英汉互译填空(每空2分,共20分)(1)LEDLightEmittingDiode

发光二极管(2)LCDLiquidCrystalDisplay液晶显示器(3)键盘 keyboard (4)命令command(5)清屏 clear(6)初始化initialization;

initialize (7)读/写 read/write (8)函数 function (9)数组 array (10)返回 return 4.3程序填空题(每空2分,共计20分)(1)(10分)一个共阳极数码管,8个段引脚a~dp连接在P1口的P1.0~P1.7,公共端接+5V,下面程序完成上电复位后循环显示数字0~9,请填写空白处的代码,完成程序设计。#include<regx51.h>voiddelay(){unsignedinti;for(i=0;i<10000;i++);}voidmain(){unsignedcharled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchark;{for(k=0;;k++){P1=;//点亮数码管if();;//调用延时}}while(1);}参考答案:doled[k]k>=10breakdelay()(2)(10分)假定单片机控制6个共阳极数码管,段选口由P1口控制,位选由P2.0~P2.5控制,下面程序实现稳定交替显示"901225"和"125315"两屏内容,请填写空白处的代码,完成程序设计。//功能:六位数码管动态交替稳定显示"901225"和"125315"两屏内容#include<regx51.h>//包含头文件regx51.h,定义51单片机的专用寄存器voiddelay(unsignedinti); //延时函数声明//函数名:ledscan//函数功能:实现六个数码管扫描一遍//形式参数:显示码数组,长度为6//返回值:无voidledscan(unsignedcharled[]){ unsignedchari,com[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//一维数组存储位选码 for(i=0;i<6;i++) { ;//关显示 P2=;//位选码送位控制口P2口 P1=;//显示字型码送P1口 delay(100); //延时 }}voidmain() //主函数{ unsignedcharlednum[2][6]={{0x90,0xc0,0xf9,0xa4,0xa4,0x92},{0xf9,0xa4,0x92,0xb0,0xf9,0x92}}; //二维数组存储910812、102315的字型码 unsignedchari,num; while(1) { for(num=0;;num++)//显示两屏字符 for(i=0;i<100;i++)//循环显示一屏字符100次,达到稳定显示作用 ledscan(); } }voiddelay(unsignedinti) //延时函数省略参考答案:P1=0xffcom[i]led[i]num<2lednum[num]4.4程序设计题(共计40分)(1)(10分)一个共阳极数码管,8个段引脚a~dp连接在P1口的P1.0~P1.7,公共端接+5V,在P3.0引脚连接一个按键,按下时为低电平,请编程实现,系统上电时,数码管稳定显示0-F(加1计数),当按键按下时,系统显示F-0(减1计数)。参考代码如下。#include<regx51.h>//包含头文件regx51.h,定义了51单片机的专用寄存器sbitkey=P3^0;voiddelay(unsignedinti) //延时函数{ unsignedintk; for(k=0;k<i;k++);}voidmain()//主函数{ unsignedchari; unsignedcharcodedisp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //定义数组led,依次存储包括0~Fi=0;while(1){ if(key==0){delay(1000);if(key==0){P1=disp[i];if(i==0)i=16;i--;delay(10000);}}else{P1=disp[i];i++;if(i==16)i=0;delay(10000);} } }(2)(10分)请用89C51设计一个广告牌来显示一颗爱心,电路设计如图1所示,请编写程序。图18*8点阵电路参考代码如下。#include"regx51.h"//包含头文件regx51.h,定义了51单片机的专用寄存器voiddelay(unsignedinti)//延时函数{ unsignedintk; for(k=0;k<i;k++);}voidmain()//主函数{ unsignedcharcodeled[]={0xff,0x93,0x01,0x01,0x83,0xc7,0xef,0xff}; unsignedcharw; unsignedinti; while(1) { w=0x01;//行初值为0x01 for(i=0;i<8;i++) { P1=w;//行数据送P1口 P0=~led[i];//列数据送P0口 delay(100); w<<=1;//行变量左移指向下一行 } }}(3)(20分)假定已定义两个头文件lcd.h和key.h分别如下:key.h如下:charkey.h如下:charkeyscan();//矩阵键盘扫描函数,如果有键按下,返回0-15,无键按下,则返回-1lcd.h如下:voidlcd_w_cmd(unsignedcharcom);//写命令字函数voidlcd_w_dat(unsignedchardat);//写数据函数unsignedcharlcd_r_start();//读状态函数voidlcd_int(); //LCD初始化函数voiddelay(unsignedinti);//可控延时函数请调用以上函数,编写程序实现如下功能,键盘按下的键值显示在LCD的第2行第1列。参考代码如下。#include<REGX51.H>#include<lcd.H>#include<key.H>voidmain(){chark;lcd_init();while(1){ k=keyscan(); if(k==-1)continue; else { lcd_w_cmd(0x01); lcd_w_cmd(0xc0); lcd_w_dat(k/10+48); lcd_w_dat(k%10+48); }}}项目5测验题(测验时间75分钟,共计100分)5.1单项选择题(每题2分,共计30分)(1)B(2)A(3)A(4)A(5)B(6)B(7)D(8)A(9)D(10)A(11)C(12)D(13)C(14)D(15)B5.2专业词汇翻译填空(每空2分,共10分)(1)定时器timer (2)计数器counter(3)interrupt 中断 (4)溢出 overflow (5)优先级 priority 5.3简答题(每题5分,共计30分)(1)(5分)软件延时与硬件定时的原理有何异同?参考答案:软件定时是靠CPU运行空操作实现的,CPU在定时时不能进行其它操作,白白占用CPU时间。硬件定时是指采用单片机内部定时器实现定时,当定时器进行计数操作时,CPU可以进行其它操作。(2)(5分)当定时/计数器在工作方式1下,晶振频率为6MHz,请计算最短和最长定时时间各是多少?参考答案:工作方式1的计数模值是65536,机器周期2us,所以最短定时时间为2us,最长定时时间为:2us*65536=130ms。(3)(10分)查询和中断都是CPU控制外设的方式,请说明二者的特点?参考答案:查询方式占用CPU时间。中断方式具有实时性和并行性,提高CPU工作效率。(4)(10分)假定晶振频率为6MHz,采用51单片机T1的工作方式0定时10ms,工作方式1定时125ms和工作方式2定时130us,请写出三种工作方式下的赋值语句。参考答案:方式0:TH1=(8192-10000/2)/32=692/32;(4分)TL1=(8192-10000/2)%32=692%32;方式1:TH1=(65536-125000/2)/256=3036/256;(4分)TL1=(65536-125000/2)%256=3036%256;方式2:TH1=256-130/2=191;(2分)TL1=256-130/2=191;5.4综合设计题(共计30分)(1)(10分)图1所示AT89C51的P2口连接了8个按键,用来控制P1口的发光二极管点亮,当S0按下时,LED0点亮;S1按下时,LED1点亮,以此类推,S7按下时,LED7点亮,不断循环这个过程,请根据要求填空。图1LED与按键电路#include<reg51.h>voiddelay10ms()//用定时器0实现10ms定时,晶振频率6MHz{(1);//定时器0方式设置TH0=(2);//定时10ms初值的高8位TL0=(3);//定时10ms初值的低8位TR0=1;(4);//判断是否溢出?(5);//溢出标志位清0}voidmain(){unsignedchari;P1=0xff;//熄灭8个发光二极管P2=0xff;//P2口作为输入先置1while(1){do//判断有没有按键按下{i=P2;}while(i==0xff);delay10ms();//该语句的目的(6)do{i=P2;}while(i==0xff);switch((7)){case0x7f:(8);break;//S0按下,LED0点亮case0xbf:P1=0xfd;break;//S1按下,LED1点亮case0xdf:P1=0xfb;break;//S2按下,LED2点亮case0xef:(9);break;//S3按下,LED3点亮case0xf7:P1=0xef;break;//S4按下,LED4点亮case0xfb:P1=0xdf;break;//S5按下,LED5点亮case(10):P1=0xbf;break;//S6按下,LED6点亮case0xfe:P1=0x7f;break;//S7按下,LED7点亮}(1)TMOD=0x00(6)延时去抖(2)3192/32(7)i(3)3192%32(8)P1=0xfe(4)while(!TF0)(9)P1=0xf7(5)TF0=0(10)0xfd(2)(20分)可控霓虹灯设计,P1口有8个发光二极管,连接方式如图1所示,在P3.2引脚连接一个按键,通过按键改变霓虹灯的显示方式,要求正常情况下8个霓虹灯依次顺序点亮,循环显示,时间间隔为1s(假定晶振频率为12MHz,采用T1方式1中断实现);当按键按下后8个霓虹灯同时闪烁一次,时间间隔没有要求(按键动作采用外部中断0实现)参考程序:#include<REGX51.H>//包含头文件REGX51.H,定义了51单片机的所有SFR#include<INTRINS.H>sbitK1=P3^2; //定义P3.2引脚的位名称为K1voiddelayms(unsignedintms) {unsignedinti;while(ms--){//for(i=0;i<112;i++)//11.0592M晶体 for(i=0;i<120;i++);//12M晶体}}voidmain() //主函数{TMOD=0x10; //设置T1,定时,方式1EX0=1; //外部中断0允许位IT0=1; //设置外部中断0为下降沿触发方式PX0=1;//设置外部中断0为高优先级ET1=1; TH1=(65536-50000)/256;//重新设置T0计数初值高8位,定时时间50msTL1=(65536-50000)%256;//重新设置T0计数初值低8位TR1=1; //启动T0EA=1;//允许所有中断P1=0xfe; //设置左移流水灯初值while(1) //无限循环{;}}voidt_1()interrupt3{ staticunsignedchari50=0; TH1=(65536-50000)/256;//重新设置T0计数初值高8位,定时时间50msTL1=(65536-50000)%256;//重新设置T0计数初值低8位 i50++; if(i50==20) { i50=0; P1=_crol_(P1,1); }}voidint_0()interrupt0//外部中断0的中断服务函数,中断号为0{unsignedcharj;j=P1;P1=0x00; //熄灭8个LEDdelayms(300);//延时P1=0xff; //点亮8个LED delayms(300);//延时 P1=0x00; //熄灭8个LEDdelayms(300);//延时 P1=j; }项目6测验题(测验时间90分钟,共计100分)6.1单项选择题(每题2分,共计40分)(1)B(2)D(3)B(4)A(5)B(6)B(7)A(8)B(9)C(10)B(11)D(12)C(13)B(14)C(15)C(16)A(17)C(18)D(19)A(20)D6.2专业词汇翻译填空(每空1分,共20分)1.英汉互译(每空1分,共10分)(1)单工simplex (2)半双工halfduplex(3)全双工 fullduplex (4)异步通信 Asynchronouscommunication(5)同步通信 synchronouscommunication (6)发送transmit(7)接收receive (8)SerialI/O串行输入输出(9)Baudrate波特率 (10)characterframe字符帧2.写出下列缩写专业词汇的中文和英文全称(每空1分,共10分)序号英文缩写英文全写中文翻译(1)UARTUniversalAsynchronousReceiver/Transmitter通用异步接收/发送装置(2)I2CInter-IntegratedCircuit内置集成电路(3)SPISerialPeripheralinterface串行外围设备接口(4)USBUniversalSerialBUS通用串行总线(5)bpsbitspersecond每秒位数或者位/秒6.3简答题(共计20分)(1)(5分)什么是串行异步通信?说明异步通信的字符帧格式。答:在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据是低位在前,高位在后,通过传输线由接收端一帧一帧地接收。发送端和接收端分别使用各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。字符帧也称数据帧,由起始位、数据位、奇偶校验位和停止位四部分组成,(1)起始位:位于字符帧开头,只占一位,为逻辑0低电平,用于向接收设备表示发送端开始发送一帧信息。(2)数据位:紧跟起始位之后,根据情况可取5位、6位、7位或8位,低位在前,高位在后。(3)奇偶校验位:位于数据位之后,仅占一位,用来表示串行通信中采用奇校验还是偶校验,由用户编程决定。(4)停止位:位于字符帧最后,为逻辑1高电平。通常可取1位、15位或2位,用于向接收端表示一帧字符信息已经发送完,也为发送下一帧做准备。(2)(5分)定时器T1做串行口波特率发生器时,为什么采用工作方式2?答:实际上,当定时器T1做波特率发生器使用时,通常是工作在定时器的模式2下,即作为一个自动重装载的8位定时器,TL1做计数用,自动重装载的值在TH1内。(3)(10分)编写查询方式下等待发送和等待接收一个字符的函数。答:等待发送一个字符函数:Voidtransmit(unsignedchardat){SBUF=dat;while(!TI);//等待发送是否完毕TI=0;}等待接收一个字符函数:unsignedcharreceive(){while(!RI);//等待发送是否完毕RI=0;returnSBUF;}6.4综合设计题(共计20分)(1)(10分)利用串行口扩展并行口方法控制4位静态LED显示,系统采用4片74LS164级联,P3.0连接第一个芯片串行数据输入端A,B,P3.1连接该芯片时钟端CLK,P1.0连接该芯片清除端CLR,编写程序要求4位LED每隔1s交替显示“1234”参考程序如下:#include"reg51.h"//包含头文件reg51.h,定义51单片机的专用寄存器unsignedcharda[]={0xF9,0xA4,0xB0,0x99};//定义1~4的共阳极字型显示码unsignedcharda1[]={0x92,0x82,0x0F8,0x80};//定义5~8的共阳极字型voiddelay1s(){unsignedchari;for(i=0;i<0x20;i++) //设置20次循环次数{ TH0=0x3c; //设置定时器初值TL0=0xb0;TR0=1; //启动T0while(!TF0);//查询计数是否溢出,即定时50ms时间到,TF0=0TF0=0; //50ms定时时间到,将定时器溢出标志位TF0清零}}main(){ unsignedchari; P1=0xff; //P1.0置1,允许串行移位 SCON=0x00; //设串行口方式0TMOD=0x01; //设置T0为工作方式1 while(1){ for(i=0;i<4;i++) { SBUF=da[i]; //送显示数据1234 TI=0; while(!TI); //等待发送完毕 }delay1s();for(i=0;i<4;i++) { SBUF=da1[i]; //送显示数据5678 TI=0; while(!TI); //等待发送完毕 }}}(2)(10分)实现一个单片机与PC机之间的串行口通信测试系统。系统中,单片机通过串口与PC机通信,同时P1口连接8个发光二级管LED。正常情况下,8个发光二级管闪烁,当接收PC机发送的字符时,回送给PC机相同字符。同时,如果接收的字符为’A’,则LED左移流水灯显示一遍,继续闪烁;如果接收的字符为’B’,则LED右移流水灯显示一遍,再返回闪烁状态。请画出电路图,并编写单片机控制代码。参考电路如下:(5分)参考代码如下:(5分)单片机通信程序如下。//程序:ex38.c//功能:单片机通信程序,接收采用中断方式实现#include<REGX51.H> //包含头文件REGX51.H,定义了51单片机的所有SFR #include<INTRINS.h> //包含头文件INTRINS.h,定义了移位函数unsignedcharRecbyte;//全局变量,存放接收的字符//函数名:delay//函数功能:实现软件延时//形式参数:无符号整型变量i,控制空循环的循环次数//返回值:无voiddelay(unsignedinti){while(i--);}//函数名:flash//函数功能:8个LED闪烁一次//形式参数:无//返回值:无voidflash(){P1=0x00;//点亮8个LED delay(10000); P1=0xff;//熄灭8个LED delay(10000);}//函数名:lsd1//函数功能:8个LED逐一点亮一次,左移方向//形式参数:无//返回值:无voidlsd1(){unsignedchari,w; w=0xfe; //流水灯初值 for(i=0;i<8;i++) { P1=w; delay(10000); w=_crol_(w,1); //循环左移1位 }}//函数名:lsd2//函数功能:8个LED逐一点亮一次,右移方向//形式参数:无//返回值:无voidlsd2(){unsignedchari,w; w=0x7f; //流水灯初值 for(i=0;i<8;i++) { P1=w; delay(10000); w=_cror_(w,1); //循环右移1位 }}//函数名:sendbyte//函数功能:向串口发送一个字符,采用查询方式实现//形式参数:无符号整型变量i,定义发送的字符//返回值:无voidsendbyte(unsignedchari){SBUF=i; //发送字符写入SBUFwhile(!TI); //查询TI是否由0变1TI=0; //软件给TI清0} voidmain() //主函数{ TMOD=0x20; //设置定时器T1为方式2 TL1=0xfd; //波特率为9600b/s TH1=0xfd; TR1=1; SCON=0x40; //定义串行口工作于方式1,不接收 PCON=0x00; //SMOD=0 ES=1; //开串行口中断EA=1; //开总中断允许位 REN=1; //接收允许Recbyte=0; //接收字符初值0 while(1) {switch(Recbyte) { case'A':lsd1();Recbyte=0;break; //左移流水灯 case'B':lsd2();Recbyte=0;break; //右移流水灯 default:flash(); //闪烁 } }}//函数名:serial//函数功能:串行口中断接收函数//形式参数:无//返回值:无voidserial()interrupt4 //串口中断类型号为4{EA=0; //关中断RI=0; //软件清除中断标志位 Recbyte=SBUF; //接收数据 sendbyte(Recbyte);//再送回PC机EA=1; //开中断}项目7测验题(测验时间90分钟,共计100分)7.1单项选择题(每题2分,共计20分)(1)A(2)A(3)C(4)A(5)B(6)A(7)B(8)A(9)C(10)B7.2填空题(每空2分,共计40分)(1)模拟信号的英文是Analogsignal;数字信号的英文是Digitalsignal。(2)模拟信号是一种振幅和相位都连续的信号;人为抽象出来的在时间上不连续的信号,并用0和1的有限组合来表示的信号是数字信号。大自然的信号一般都是模拟信号。(3)D/A转换器的作用是将数字量转为模拟量,A/D转换器的作用是将模拟量转为数字量。(4)10位ADC转换后的数字量范围用十进制表示是0到1023。(5)A/D转换器的精度是指与数字输出量所对应的模拟输入量的实际值与理论值之间的差值。(6)

I2C总线以字节为单位传送数据,首先传送的是数据的最高位(MSB)。

(7)对于I2C总线,SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示结束信号。(8)I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。(9)如果PCF8591芯片的地址线A2A1A0接地,那么该器件写地址是90H,读地址是91H。7.3简答题(共计20分)(1)(10分)判断A/D转换是否结束,一般可采用几种方式?每种方式有何特点?答:查询方式,CPU通过查询转换结束标志位确认转换结束后,再执行后面的操作,占用CPU时间;中断方式,转换结束后向CPU申请中断,CPU在中断服务函数中读取转换值,不占用CPU时间;延时方式,如果知道A/D转换时间,可以在转换开始后直接延时超过该时间的时间,占用CPU时间。(2)(10分)写出采用51单片机模拟I2C总线的开始信号和结束信号的函数,假定I2C的两条信号线定义为SDA和SCL,延时函数名为delayNOP()。答://函数名:iic_start//函数功能:启动I2C总线,即发送I2C起始条件//形式参数:无//返回值:无voidiic_start(){SDA=1;//时钟保持高,数据线从高到低一次跳变,I2C通信开始SCL=1;delayNOP();//起始条件建立时间大于4.7us,延时SDA=0;delayNOP();//起始条件锁定时间大于4μsSCL=0;//钳住I2C总线,准备发送或接收数据}//函数名:iic_stop//函数功能:停止I2C总线数据传送//形式参数:无//返回值:无voidiic_stop(){SDA=0;//时钟保持高,数据线从低到高一次跳变,I2C通信停止SCL=1;delayNOP();SDA=1;delayNOP();SCL=0;}7.4综合设计题(共计20分)(1)(10分)采用A/D转换芯片ADC0809采集0~5V连续可变的模拟电压信号,转变为8位数字信号00~FFH后,送单片机处理,并在两位数码管上显示出来0.0~5.0V(小数点不用显示)。0~5V的模拟电压信号通过调节电位器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论