单片机程序设计题综合Word格式文档下载.docx
《单片机程序设计题综合Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机程序设计题综合Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
C.设置为外部中断请求标志位D.设置为边沿触发方式
(1)C
(2)B(3)A(4)D
二.P3.7口做通用I/O输出口,控制继电器的开合,以实现对外部装置(如D1灯)的控制,电路图如图7所示。
#include<
______
(1)______
delay()
uchari,j=250;
for(i=200;
i>
0;
i--)
_____
(2)_____
main()
_____(3)______
while
(1)
{
_____(4)______
delay();
LED=flag;
}
(1)A.while(--j);
B.sbitLED=P3^7;
C.bitflag=0;
D.LED=!
(2)A.while(--j);
(3)A.while(--j);
(4)A.while(--j);
(1)B
(2)A(3)C(4)D;
三.控制直流电动机的正反转
C程序:
reg52.h>
sbitSP1=P1^5;
sbitSP2=P1^6;
sbitSP3=P1^7;
sbitSP4=P3^2;
sbitDK=P3^7;
voidFlash(void)
uchari;
_________
(1)____________
voidSpeed1(void)
_________
(2)____________
Flash();
DK=0;
voidSpeed2(void)
DK=1;
DK=0;
voidSpeed3(void)
voidmain(void)
Dk=1;
while
(1)
if(SP1==0)
while
(1)
{
if(SP2==0)Speed2();
if(SP3==0)Speed3();
if(SP4==0)continue;
Speed1();
if(SP2==0)
if(SP1==0)Speed1();
_________(3)____________
Speed2();
if(SP3==0)
_________(4)___________
Speed3();
(1)A.if(SP3==0)Speed3();
B.if(SP2==0)Speed2();
C.for(i=0;
i<
40;
i++);
D.DK=1;
(2)A.if(SP3==0)Speed3();
(3)A.if(SP3==0)Speed3();
(4)A.if(SP3==0)Speed3();
(1)C
(2)D(3)A(4)B
一.我们采用四位一体的数码管,驱动芯片用串行芯片(74HC595)对数码管进行动态扫描。
电路原理图如下图4所示。
为了显示1234这四位数,我们让后四位亮,前四位不亮。
图4数码管动态扫描电路
【C语言程序】:
#include<
intrins.h>
#defineuintunsignedint
#definePORT_SLED_BITP0
sbitclk=P2^7;
sbitst=P2^6;
sbitio=P2^5;
ucharcodeuc7leds[17]={0xfc,0x60,____
(1)_____,0xf2,
0x66,0xb6,0xbe,0xe0,
0xfe,0xe6,0xee,0x3e,
0x9c,0x7a,0x9e,0x8e,0x00};
uchardisplay_7leds[8]={1,2,3,4,_____
(2)_____};
voidwr595(ucharucdat)
clk=1;
st=1;
for(i=8;
i--)
_____(3)______
______(4)_____
______(5)____
ucdat=ucdat>
>
1;
____(6)_____
______(7)_____
delay(uintdat)
while(dat--)
{;
voidwr7leds(void)
uchari,ch;
______(8)______
for(i=0;
8;
i++)
{
wr595(uc7leds[display_7leds[i]]);
______(9)_______
ch<
<
=1;
delay(300);
main(void)
____(10)_____
(1)A.0xe6B.0x8eC.0xadD.0xda
(2)A.10,10,10,10B.16,16,16,16
C.15,15,15,15D.17,17,17,17
(3)A.io=ucdat&
0x10;
B.io=ucdat&
0x08;
C.io=ucdat&
0x01;
D.io=ucdat&
0x80;
(4)A.st=1;
B.st=0;
C.clk=1;
D.clk=0;
(5)A.st=1;
(6)A.st=1;
(7)A.st=1;
(8)A.ch=0x01;
B.ch=0x80;
C.ch<
D.ch>
(9)A.PORT_SLED_BIT=ch+1;
B.PORT_SLED_BIT=ch-1;
C.PORT_SLED_BIT=~ch;
D.PORT_SLED_BIT=ch;
(10)A.uc7leds()B.wr7leds();
C.wr595()D.display_7leds[]
(1)D
(2)B(3)C(4)D(5)C(6)B(7)A(8)A(9)C(10)B
二.下图是LED点阵的应用电路图,功能是实现循环显示数字0~9。
如图5所示。
图5点阵显示原理图
______
(1)______
sbitsclk=P2^7;
sbitst=P2^6;
sbitda=P2^5;
ucharcodeled_88seg[80]={
___________________
(2)_____________________
0x00,0x00,0x01,0x21,0x7f,0x01,0x01,0x00,//1
0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00,//2
0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00,//3
0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,//4
0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00,//5
0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00,//6
0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00,//7
0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,//8
0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00};
//9
uchari=0;
uchart=0;
voiddelay(uchari)
ucharj;
for(;
for(j=0;
j<
125;
j++){;
voidwr595(ucharwrdat)
sclk=0;
st=0;
_____(3)_______
____(4)_______
wrdat>
_nop_();
sclk=1;
ucharj;
ucharwx;
RCAP2H=0x3c;
RCAP2L=0xb0;
____(5)_____
ET2=1;
TR2=1;
{
wx=0x01;
for(j=i;
i+8;
j++)
wr595(led_88seg[j]);
P0=~wx;
___(6)_____
wx<
}
}
voidtimer2()interrupt5
TF2=0;
_____(7)_____
if(t==20)
t=0;
______(8)______
if(i==____(9)____)
______(10)____
}
(1)A.#definecharunsigneduchar;
B.#defineucharunsignedchar;
C.#defineucharunsignedcharD.#definecharunsigneduchar
(2)A.0x00,0x00,0x41,0x3e,0x41,0x41,0x3e,0x00,
B.0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,
C.0x00,0x00,0x3e,0x41,0x41,0x3e,0x41,0x00,
D.0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,
(3)A.for(i=0;
i--)B.for(i=8;
C.for(i=8;
i--)D.for(i=8;
i++)
(4)A.da=wrdat&
B.da=wrdat&
C.da=wrdat&
D.da=wrdat&
(5)A.ES=1;
B.EA=0;
C.ES=0;
D.EA=1;
(6)A.delay
(2);
B.voiddelay
(2);
C.delay
(2)D.voiddelay
(2)
(7)A.t+=2;
B.++t;
C.t++;
D.t--;
(8)A.i+=2;
B.i+=8;
C.i++;
D.i--;
(9)A.20B.19C.79D.80
(10)Ai=0;
Bi=1;
Ci=2;
Di=3;
(1)C
(2)B(3)C(4)C(5)D(6)A(7)C(8)B(9)D(10)A
P3.7口做通用I/O输出口,控制继电器的开合,以实现对外部装置(如D1灯)的控制,电路图如图所示。
______
(1)B______
_____
(2)__A___
_____(3)__C____
_____(4)__D____
1.(A)while(--j);
(B)sbitLED=P3^7;
(C)bitflag=0;
(D)LED=!
2.(A)while(--j);
3.(A)while(--j);
4.(A)while(--j);
答案:
1B2A3C4D
三、设计题2
P3.5口做通用I/O输出口,控制蜂鸣器断续发声,电路图如图所示。
【C程序】:
______
(1)_A____
voiddelayms(unsignedcharms)
unsignedchari;
while(ms--)
____
(2)_A____
voidmain(void)
while
(1)
_____(3)__BD__
____(4)__D____
_____(5)_A___
____(6)___D___
1.(A)sbitBEEP=P3^5;
(B)sbitBEEP=P3^6;
(C)sbitBEEP=P3^7;
(D)sbitBEEP=P3^4;
2.(A)for(i=0;
i<
120;
i++);
(B)BEEP=1;
(C)BEEP=0;
(D)delayms(250);
3.(A)BEEP=1;
(B)delayms(250);
(C)for(i=0;
4.(A)delayms(250);
(D)BEEP=0;
5.(A)delayms(250);
(B)delay(250);
(C)while
(1);
(D)delay
(1);
6.(A)delayms(250);
(B)for(i=0;
(D)BEEP=1;
1A2A3BD4D5A6D
四、设计题3
我们采用四位一体的数码管,驱动芯片用串行芯片(74HC595)对数码管进行动态扫描。
电路原理图如下图所示。
数码管动态扫描电路
ucharcodeuc7leds[17]={0xfc,0x60,____
(1)D_(D)0xda____,0xf2,
0x66,0xb6,0xbe,0xe0,
0xfe,0xe6,0xee,0x3e,
0x9c,0x7a,0x9e,0x8e,0x00};
uchardisplay_7leds[8]={1,2,3,4,___(B)16,16,16,16__
(2)_B____};
_____(3)_A__io=ucdat&
___
______(4)__D___
______(5)__C_;
_
____(6)_B____
______(7)_A____
______(8)__AB____
______(9)_C______
____(10)_B____
1.(A)0xe6(B)0x8e(C)0xad(D)0xda
2.(A)10,10,10,10(B)16,16,16,16
(C)15,15,15,15(D)17,17,17,17
3.(A)io=ucdat&
(B)io=ucdat&
(C)io=ucdat&
(D)io=ucdat&
4.(A)st=1;
(B)st=0;
(C)clk=1;
(D)clk=0;
5.(A)st=1;
6.(A)st=1;
7.(A)st=1;
8.(A)ch=0x01;
(B)ch=0x80;
(C)ch<
(D)ch>
9.(A)PORT_SLED_BIT=ch+1;
(B)PORT_SLED_BIT=ch-1;
(C)PORT_SLED_BIT=~ch;
(D)PORT_SLED_BIT=ch;
10.(A)uc7leds()(B)wr7leds();
(C)wr595()(D)display_7leds[]