單片機上機操作考試題及答案_第1頁
單片機上機操作考試題及答案_第2頁
單片機上機操作考試題及答案_第3頁
單片機上機操作考試題及答案_第4頁
單片機上機操作考試題及答案_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單片機上機考試試題

1.使得8個發(fā)光二極管循環(huán)點亮,采用定時器方式0使得每個發(fā)光二極管點亮的時間為0.5s。

#inckide<reg51.h>

inicounl=0;

intminute=O;

inttemp;

charcodestyle[81={0x7f,0xbf,0xdf,0xef,0xf7.Oxfb,Oxfd.Oxfe};

voiddcsplayO

(

temp=minute%8;

P0=style[lempl;

)

voidtoProcOinterrupt1

(

count++;

TH0=0x0c;

TL0=0x78;

)

voidmain()

(

TMOD=0;

TH0=0x0c;

TLO=0x78;

TRO=1;

ET0=l;

EA=1;

while(l)

|

if(count==100)

(

minule++;

count=0;

)

desplayO;

)

U1

(AIAL1

Pu.1/AD1

P02/AD2

XTAL2PU3/AD3

P04/AD4

POB/AD6

RSTPO7/AD7

P20/A8

P2.1/A9

P22/A10

..迎PS8MP23tMi

..JQ-ALEP24/A12

..31-EAP2.5⑶3

P26/A14

±P2.7/A15

P1。P3.ORXD

±PI1P31/TXD

P12P3.2ANT0

±PI3P3.3AMT1

P14P3.4A0

iPI5P3.5TT1

P1£P3.6iWR

PI7P37JRD

AT89C51

<IEXT?

2.完成下面電路所示的功能,KI,K2對應兩個開關按鍵。P1口對應發(fā)光二極管的狀態(tài)

P1.0PL1Pl.2Pl.3PL4Pl.5Pl.6Pl.7

Kl=0,K2=0OOOOOoOO

Kl=0,K2=l■?■■ooOO

Kl=l,K2=0??oo?■Oo

Kl=l,K2=i■■■■■■■■

^include<rcg51.h>

charcodestyle[4]={0x0,OxfO,0x33,Oxff};

sbitpi_o=pro;

sbitP1_1=P1'1;

voidmain()

(

P0=0xff;

whilc(l)

(

if(Pl_O==O&&Pl」==O)

(

P0=style[0];

)

if(Pl_O==O&&Pl_l==l)

(

P0=style[l];

)

if(Pl0==!&&Pl1二0)

P0=style[2];

)

if(Pl_O==l&&Pl_l==l)

(

P0=style[3];

)

)

U1

工)XTA-1POQJACO

PO.VAW

PO.2/AD2

12-XTA.2

PO.3/AD3

PO.4/AD4

P05/A05

P0&AD6

上RSTPO7/AD7

P23A8

P2.1/A9

P22/A10

生P23IA11

3LLP24/A12

ILLP2S/A13

P26/A14

P27/A1S

P3.ORXD

P31/TXD

P3濟而

P33^NfT

P34/T0

P35al

P3£恒

P37JRD-

A儂C51

<TEX1>

3.在一個數(shù)碼管上循環(huán)顯示"H""E""L〃"L""0",循環(huán)的時間為Is。

^include<reg51.h>

charcodestyle[5]=(0x89,0x86,0xc7,0xc7,OxcO};

inti;

intcount=0;

intsecond=0;

voidtOProOinterrupt1

(

count++;

TLO=OxBO;

TH0=0x3c;

}

voiddisplay。

i=second%5;

PO=style[i];

)

voidmain()

(

TM0D=0x01:

EA=1;

TRO=1;

ETO=1;

TL0=0xB0;

TH0=0x3c;

while(l)

(

if(count==20)

second++;

count=0;

)

display();

)

)

f

>XTAL1PO.O/ADO

P0.1/AD1

P0.2/AD2

XTAL2P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

PO.7/AD7

P2.0/A8_2L

P2.1/A9_22.

P2.2/A10_23.

P2.3/A11_2q£

P2.4/A12

P2.5/A13

P2.6/A14=*i

P2.7/A15

P3.0RXD

圭P3.1/TXD

P32而

±P3.3JINT1

P3.47T0

±P3.57T1_

P3.6恒

P3.7而

AT89C51

<TEXT>

9中二

4.在6個數(shù)碼管上分別顯示自己學號的后六位數(shù)字。

#include<reg51.h>

charcodecodel[]={0x4f,0x4f,0x01,0x06,0x06,0x4f};

sbitpi_o=pro;

charnum;

voiddelay(inttimer)

(

while(timer)

(

-timer;

)

}

voidmain()

(

inti;

whilc(l)

num=OxFE;

for(i=0;i<6;i++)

(

Pl=num;

P2=codel[i];

delay(1000);

num=(num?l)1;

)

)

)

5.做一個簡易30s的倒計時秒表,秒表的顯示通過8個發(fā)光二極管顯示出來。

#include<reg51.h>

#include*stdio.h"

intcount;

count=0;

voidtOProc()interrupt1

(

TH0=0x3c;

TL0=0xb0;

count++;

if(count==10)

P0=P0+l;

count=0;

if(PO==Oxff)

(

P0=0xel;

}

)

}

voidmain()

(

EA=1;

ETO=1;

TMOD=1;

Tll0=0x3c;

TLO二OxbO;

TRO=1;

P0=0xel;

whiled);

ponwDO

PO1/AD1

PO2AAD2

P03?AD3

P0.4WD4

PO5tWD5

叩&AD6

P07AAD7

P2XMM

P2.1XA9浸

P22U10

P2Ml

P24XA12

P25CM3

P234孟

P27XA15±

P3QFXD

P3.1/TXD玉

P32<<T0"

P33#nF±

P34/T0*

6.使用外中斷0來控制,去實現(xiàn)以下功能。

其中K1為按鍵,P1口對應8個發(fā)光二極管的狀態(tài)

PI.0PLIP1.2PI.3P1.4PI.5PI6P1.7

無按鍵按■■OO■■OO

下(循環(huán))??■■OO??

有按鍵按??■?OOOO

#inckide<reg51.h>

//sbitkl=P2A0;

intcount=0;

voiddelay(unsignedchari):

voidintOProc()interrupt0

(

count++;

Pl=0xfD;

}

voidmain()

(

EA=1;

EXO=1;

ITO=1;

Pl=0xcc;

whilc(l)

{if(count%2==0)

(

if(P1==0xcc)

(

Pl=0x30;

delay(500);

}

else

(

Pl=0xcc;

delay(500);

)

I

voiddelay(unsignedchari)

unsignedcharj,k;

for(k=0;k<i;k++)

for(j=0;j<255;j++);

in

,23

F23TA10

■Z3TA,,

?232

FZflfAU

FZMU,

fE

7.通過A/D轉換電路,將模擬電壓值在兩個發(fā)光二極管上顯示出來。(查詢和中斷方式均可)

#include<reg51.h>

#include<absacc.h>

#defineaXBYTE[0xcfa8]

sbitp=P3A2;

sbitshi=P3A4;

sbitge=P3A5;

voidsepr(unsignedcharw);

voiddisp();

unsignedchari,x,chh,chi;

voidmain()

(

while(l)

{

adc0809=0;

while(p);

x=adc0809;

sepr(x);

disp();

)

I

voidsepr(unsignedcharw)

unsignedcharch;

ch=w;

chh=ch/51;

ch=ch%511,

chl=(ch*10)/51;

}

voiddisp()

(

unsignedcharledl[]=(0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f);

unsignedcharled2[]={Oxbf,0x86,Oxdb,OxcT,0xe6,Oxed,Oxfd,0x87,Oxff,Oxef};

shi=O;

ge=l;

a=led2[chh];

for(i=0;i<50;i++);

shi=l;

ge=0;

a=ledl[chi];

for(i=0;i<50;i++);

8.采用定時器方式1使得8個發(fā)光二極管按如下方式點亮,循環(huán)的時間為2s

P1.0Pl.lPl.2Pl.3Pl.4Pl.5Pl.6Pl.7

oooO■?■■

?■■■oOOO

??oo??OO

■■■■■■■■

#include<reg51.h>

charcodestyle[4]={0x0f,0xfD.0xcc,0xff};

inti;

intcount=0;

intsccond=0;

voidtOPro()interrupt1

(

count++;

TL0=0xB();

TH0=0x3c;

voiddisplayO

(

i=second%4;

P()=style[i];

voidmain()

TMOD=OxOl;

EA=1;

TRO=1;

ETO=1;

TLO=OxBO;

THO=Ox3c;

while(l)

(

if(count==40)

(

second++;

count=0;

)

display();

)

)

D1

U1

?XTAL1PO.OXADO

P0.1/AD1

P02/AD2

X7AL2P03/AD3

P0.4ZAD4

P0.5XAD5

P0.6/AD6

RSTPO7XAD7m

P2.O/A8

P2.1/A9

P2.2/A10

PSENP2.3/A11m

ALEP2.4/A12

EAP2.5/A13

P2.6/A14

P2.7/A15

P1.0P3MXD

P1.1P31/TXD嗑

PI.2P32/NT0"

RI.3P33flNfT上

P1.4,3MO

PI.5嚏

PI6P3SA^<TEX7>?

PI.7P37JRO

AT89C51

9.在一個數(shù)碼管上循環(huán)顯示“0〃"1”"5"3個數(shù)字,循環(huán)的時間為Is。

#include<reg5l.h>

charcodestyle[3]={0xc0,0xf9,0x92};

inti;

intcount=0;

intsecond=0:

voidlOPro()interrupt1

{

count++;

TL0=0xB0;

TH0=0x3c;

}

voiddisplayO

{

i=second%3;

PO=style[i];

voidmain()

(

TMOD=OxOi;

EA=1;

TR()=1;

ETO=1;

TL0=0xB0;

TH0=0x3c;

while")

(

if(count==20)

(

second++;

count=0;

displayO;

U1

1AL1ru.WAuu

PCCU.41//ADC14

PccU.c2/gADrs2r

12_XTAL2PU.3/AD3

P0.4/AD4

ccf/A

P0.6/AD6

RSTP0.7/AD7

P2.0/A8

P2.1/A9

P22/A10

..29-PSENP2.3/A11

..1Q-ALEP2.4/A12

..JI.EAP2.57A13

P2.6/A14

P2.7/A15

P1.0P3.0JRXD

±P1.1P3.1/TXD

PI.2P3.2JINT0

±P1.3P3.3JINT1

P1.4P3.4/T0

±rC4i.C3P3.5/I1

P1.6P3.6WVR

P1.7P3.7笊D

AT89C51

<TEXT>

10.在4個數(shù)碼管上穩(wěn)定顯示出"A""C""E""P"四個字符。

#include<reg51.h>

charcodestyle[4]={0x88,0xc6,0x86,0x8c};

voidrnain()

(

while(l)

{

PO=style[O];

P2=style[l];

P3=style[2];

Pl=style[3];

)

11.試采用定時方式2,在P1.0引腳上輸出頻率為IKHz的方波(可能有問題)

#include<reg51.h>

intcount;

count=0;

sbitpl_O=PlAO;

voidt()Proc()interrupt1

(

pl_O=-pl_O;

I

voidmain()

(

EA=1;

ETO=1;

TM0D=2;

TH0=0x06;

TL0=0x06;

TRO=1;

pl-0=l;

while(l);

U1

■XTAL1PO.O/ADO

PO.1/AD1

POJ2/AD2

XTAL2P0.3/AD3

P04/AD4

P0.5/AD5

PO.6/AD6

RSTPO.7/AD7

P2.0/A8

P2.1/A9

P2.2/A10

PSEN-P2.3/A11

ALEP2.4/A12

EAP2.5/A13

P2.6/A14

±P2.7/A15

令P1.0P3.0JRXD

±P1.1P3.1/TXD

P1.2P32l近叵

圭P1.3P3.3/1NTT

P1.4P3.4/T0

±P1.5P3.5/T1

P1.6P3.6破

P1.7P3.7/RD-

AT89C51

<TEXT>.

12.做一個20s的簡易秒表,當按鍵K1按下時,秒表暫停計數(shù),K2按下時,開始計數(shù)。

#include"reg51.h"

#dcfincucharunsignedchar

#defineuintunsignedint

uin(count=0;

uchari;

//0-9段碼

ucharcodetimefl={Oxc0,Oxf9,Oxa4,OxbO,Ox99,Ox92,Ox82,OxfB,Ox8O,Ox9O};

voidStop()interrupt2//INTI中斷

{

ET0=1;

TR0=I;

I

voidStart()interrupt0//INTO中斷

(

ETO=0;

TRO=0;

1

voidTimer()interrupt1//TO中斷

(

TH0=(65536-50000〃256;〃恢復定時器0初值

TL0=(65536-50000)%256;

if(++i==20)Z/50ms*20=ls轉換狀態(tài)

i=0;

count++;

P0=time[count/10];

Pl=time[count%iO];

if(count==20)count=0;〃滿20s后顯示00

)

)

voidmain()

{〃初始顯小00

P0=OxcO;

Pl=0xc0;//T0采用方式1

TMOD=Ox()1;〃中斷總開關

EA=1;

EX0=1;

EXI=1;

IT0=1;

IT1=l;//INT0優(yōu)先

PX0=1;

while(l);

I

PODMDQ

PO.1AD1

PO20KD2

P03WD3

PO.WDI

POSWDS

P05WD6

PO.7AD7

P2IW專

P2.W

P220M口

K.UM2

P2sxM3

P2g14

P2.7XM5

10

P3IMX0

P3.VTXD

P3%而

P33ANTF

P3.VTD

P3肛

_!L

14.使用外中斷1來控制,當無按鍵按下時8個發(fā)光二極管循環(huán)點亮,循環(huán)點亮的時間為1s,

有按鍵按下時,8個發(fā)光二極管全部熄滅。

#includc"stdio.h"

#include"reg51.h"

intcounl=0;

voidinterINTl()interrupt2

|

PO=Oxff;

ET0=0;

TR0=0;

)

voidinterTOOinterrupt1

{

if(count==15)

|

TIIO=OxBD;

TL0=0xC0;

P0=(P0?l)|l;

if(PO=Oxff)

{

P0=0xfe;

1

count=0;

)

count++;

}

voidmain()

(

EA=1;

ETO=1;

TRO=1;

TMOD=OxOI;

TH0=0xBD;

TL()=0xC0;

P0=0xfe;

while(l)

{

if(P3A3==。)

EX1=1;

IT1=1;

D1

R1

邑YH.LOW

U1

/,0W

二一>>:TAL1叩QADO

PO.1/AD1

PO.2/AD2p,LOW

12-XTAL2

PO3AD3

PO4AD4

PO.S/AD5,LOW

PO.6/AD6R5

PO.7/AD7

P20/A8

P21/A9

3P2.2/A1O

3P2.3/A11

3P2MAi2

P2.5/A13

P2.6/A14??令.

::lP2.7/A15

XJ

P3ORXD

±dP3.1/TXD

±dP321NTO

P331NT1

±4dP3.4/TO

P3包L

P3麗a

P37/RD-

..............AT09C51................................

<TEXT>

I5.通過串口控制單片機產生IKHz的波型,當PC通過串口發(fā)過來“K”時,開始產生波型,

當發(fā)過來“S”時,停止產生波型,fosc=12MHz。(沒答案)

15.通過A/D轉換電路,將模擬電壓值在兩個發(fā)光二極管上顯示出來。(查詢和中斷方式均可)

#include<reg51.h>

#inckidc<absacc.h>

#defineaXBYTE[Oxcfa8]

sbitp=P3A2;

sbitshi=P3A4;

sbitge=P3A5;

voidsepr(unsignedcharw);

voiddisp();

unsignedchari,x,chh,chl;

voidmain()

{

while(l)

|

adc0809=0;

whilc(p);

x=adc0809;

sepr(x);

disp();

i

voidsepr(unsigncdcharw)

(

unsignedcharch;

ch=w;

chh=ch/51;

ch=ch%51

chl=(ch*10)/51;

I

voiddisp()

(

unsignedcharledl[l={0x3f;0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsignedcharled2[]={0xbf,0x86,0xdb,0xcf.0xe6.0xed,0xfd.0x87,0xff.0xef);

shi=O;

ge=l;

a=lcd2[chh];

for(i=0;i<50;i++);

shi=l;

ge=0:

a=ledl[chl];

for(i=0;i<50;i++);

16.完成下面電路所示的功能,KI,K2對應兩個開關按鍵。P1口對應發(fā)光二極管的狀態(tài)

PI.0BLIPl.2Pl.3PL4Pl.3Pl.6PI7

Kl=0,K2=0?■■??■?■

Kl=0,K2=l■■■■oooo

Kl=l,K2=0Oooo■■oo

K1=I,K2=1o?o?o?o■

#include"stdio.h"

#include"reg5l.h"

sbitp0_0=P0A0;

sbitpO_l=P()Al;

voiddelayO

{

inttime=1000;

whiic(tinic>0)

time-;

voidrnain()

//Pl=0xaa;

while(l)

{

if(p()_O==O)

(

if(pO_l==O)

(

Pl=0X00;

delay。;

)

elseif(pO_l==l)

(

Pl=0X0f;

delay。;

)

)

elseif(pO_O==I)

(

if(pO_l==O)

(

Pl=0Xi3;

delay。;

)

elseif(pO_l==l)

(

Pl=0Xaa;

delay。;

£瀛

事蠹

一嘉

f

X

F

E

21五健

F

F遴

A

:

lz

:

2顯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論