




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機上機考試試題
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 形式邏輯試題及答案
- 心電圖訓練試題及答案
- 道路搶險面試題及答案
- 家電公司人力資源規(guī)劃辦法
- 家電公司供應商評估規(guī)章
- 2020-2025年公共營養(yǎng)師之三級營養(yǎng)師自我提分評估(附答案)
- 2020-2025年安全員之A證(企業(yè)負責人)模擬題庫及答案下載
- 2.1 圓(教學課件)數(shù)學蘇科版九年級上冊
- 保安法律知識培訓心得
- 多層電梯維保方案(3篇)
- GB/T 3618-2006鋁及鋁合金花紋板
- GB/T 26255-2022燃氣用聚乙烯(PE)管道系統(tǒng)的鋼塑轉換管件
- GB 31645-2018食品安全國家標準膠原蛋白肽
- 某工業(yè)區(qū)供水管道工程施工組織設計
- 防山體滑坡應急預案
- 江蘇省社會組織網上辦事系統(tǒng)-操作手冊
- DB37-T 3079-2017特種設備事故隱患排查治理體系細則
- 2023版江西省鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務中心地址醫(yī)療機構名單(1744家)
- 模具保養(yǎng)記錄表
- 各種隔離標識
- 鋼質防火門窗項目商業(yè)計劃書范文參考
評論
0/150
提交評論