




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
*LED閃爍的簡(jiǎn)單試驗(yàn)
*連接方法:JP11(P2)和JP1用8PIN排線連接起來(lái)
#include<reg51.h>〃此文件中定義了51的一些特殊功能寄存器
voiddelay(unsignedinti);〃聲明延時(shí)函數(shù)
main()
(
P2=0x00;//置P0口為低電平
delay(600);〃調(diào)用延時(shí)程序
P2=Oxff;〃置P0口為高電平
delay(600);//調(diào)用延時(shí)程序
/*******延時(shí)函數(shù)*************/
voiddelay(unsignedinti)
unsignedcharj;
for(i;i>0;i-)〃循環(huán)600*255次
for(j=255;j>0;j-);
)
;二進(jìn)制加法試驗(yàn)
;p2口八個(gè)燈作二進(jìn)制加法。理解二進(jìn)值的計(jì)算*
;硬件連接:p2口8路指示燈
描述:
p2口八個(gè)燈作二進(jìn)制加法。理解二進(jìn)值的計(jì)算*
連接方法:JP11(P2)和JP1(LED燈)用8PIN排線連接起來(lái)*
#include<reg52.h>
voiddelay(unsignedinti);〃聲明延時(shí)函數(shù)
main()
unsignedcharNum=Oxff;
while(1)
{P2=Num;
delay(lOOO);〃延時(shí)函數(shù)
Num—;
voiddelay(unsignedinti)
unsignedcharj;
for(i;i>0;i-)
for(j=255;j>0;j-);
)
********
LED閃爍的簡(jiǎn)單試驗(yàn)
*延時(shí)實(shí)現(xiàn)p2口LED流水燈效果(用循環(huán)移位指令)
連接方法:JP11(P2)和JP1(LED燈)用8PIN排線連接起來(lái)
#include<reg51.h>〃此文件中定義了51的一些特殊功能寄存器
#include<intrins.h>
voiddelayms(unsignedcharms)
//延時(shí)子程序
unsignedchari;
while(ms-)
for(i=0;i<120;i++);
main()
unsignedcharLED;
LED=Oxfe;//Oxfe11111110
while(l)
P2=LED;
delayms(250);
LED=LED?1;〃循環(huán)右移1位,點(diǎn)亮下一個(gè)LED”<v”為左移位
if(P2==0x00){LED=Oxfe;}//Oxfe=11111110
描述:跑馬燈程序
連接方法:JP11(P2)和JP1(LED燈)用8PIN排線連接起來(lái)
#include<reg51.h>
#include<intrins.h>
*延時(shí)子程序*
voiddelayms(unsignedcharms)
unsignedchari;
while(ms—)
for(i=0;i<120;i++);
)
*主程序*
main()
(
unsignedcharLED;
LED=Oxfe;
P2=LED;
while(l)
(
delayms(250);
LED=_crol_(LED,l);〃循環(huán)右移1位,點(diǎn)亮下一個(gè)LED此函數(shù)位庫(kù)函數(shù)
P2=LED;
)
)
,**************************************************************'***************
沖斷控制的P2.0小燈。采用11.0592/12MHZ晶振。
;連接方法:JPI1(P2)和JPI(LED燈)用8PIN排線連接起來(lái)
ORGOOOOh
AJMPmain
ORGOOObh
AJMPint_timer
ORG0030h
main:MOVtmod,#01h;設(shè)置定時(shí)器工作方式寄存器。
MOVth0,#high(65536-10000);
MOVtl0,#low(65536-10000);設(shè)10MS初始值。
MOVie,#82h;設(shè)置中斷允許寄存器
MOV30h,#10;
MOV31h,#6;30H和31H是兩個(gè)軟件計(jì)數(shù)器。
SETBtrO;啟動(dòng)定時(shí)
AJMP$;原地踏步
int_timer:;定時(shí)器0中斷服務(wù)程序。
MOVth0,#high(65536-10000);
MOVU0,#low(65536-10000);重設(shè)10MS定時(shí)。
DJNZ30h,ll;
MOV30h,#10;
DJNZ31h,ll;
MOV31h,#6;軟件計(jì)數(shù)
CPLp2.0;10*6*10MS=600MS時(shí)間到,Pl.l取反
11:RETI;中斷返回
END
;*跑馬燈實(shí)驗(yàn)
;延時(shí)實(shí)現(xiàn)LED流水燈效果p2口八個(gè)燈作跑馬燈。采用了寄存器存中間數(shù)
;連接方法:JP11(P2)和JP1(LED燈)用8PIN排線連接起來(lái)
#include<reg52.h>
voiddelay(unsignedinti);〃聲明延時(shí)函數(shù)
charLED;
main()
(
unsignedchari;
while(1)
LED=Oxfe;
for(i=0;i<8;i++)
P2=LED;
delay(500);
LED=LED?1;//左移
LED=LEDI0x01;〃移位后,后面的位為高電平
if(LED==0x7Dbreak;/麋前退出FOR循環(huán)
for(i=0;i<8;i++)
{
P2=LED;
delay(500);
LED=LED?1;〃右移
LED=LEDI0x80;〃移位后,后面的位為高電平
voiddelay(unsignedinti)
unsignedcharj;
for(i;i>0;i-)
for(j=255;j>0;j-);
按鍵狀態(tài)顯示試驗(yàn)*
/*連接方法:連接JP10(P0)與JP5(按鈕接口)
JP11(P2)與JP1(LED接口)*
/*按鍵則點(diǎn)亮LED燈,8路指示燈接p0U
#include<reg5l.h>
#include<intrins.h>
sbitBEEP=PM5;〃將蜂鳴器定義在Pl.5端口上
sbitRELAY=P1A4;〃將繼電器定義在Pl.4端口上
sbitKI=P0A0;sbitK2=0x80Al;//P0和0X80表示的是同一個(gè)地址
sbitK3=P0A2;sbitK4=0x80八3;
sbitK5=P0A4;sbitK6=0x80八5;
voidbeep();
main()
while(l)
P2=Oxff;
if(Kl==0)P2=Oxfe;
if(K2!=1)PI2=Oxfd;
if(!K3)P2=Oxfb;
if(?K4)P2=0xf7;
if(!Kl&&!K2)?P2=0x00;//2個(gè)按鈕同時(shí)按下P2□8個(gè)燈全部點(diǎn)亮
if(!K5)beep();〃喇叭發(fā)聲
if(!K6)
RELAY=0;〃通過(guò)了反相器(HC6800試用)
else
RELAY=1;
)
voidbeep()
unsignedchari,j;
for(i=0;i<100;i++)
BEEP=!BEEP;//BEEP取反
for(j=0;j<250;j++)〃需要產(chǎn)生方波
_nop_();
}
BEEP=1;//關(guān)閉蜂鳴器
*按鍵控制程序
*連接方法:JP1O(P2)與JP1(LED燈)連接,
*JP11(P0)與JP5(按鍵接口)連接*
*開(kāi)始點(diǎn)亮PILED
按P01LED向右移一位*
*按POOLED向左移一位
*連續(xù)按動(dòng)按鈕LED會(huì)不停的左移或右移
#include<reg5l.h>
#include<intrins.h>
unsignedcharscan_key();
voidproc_key(unsignedcharkey_v);
voiddelayms(unsignedcharms);
sbitKI=P0A0;〃對(duì)應(yīng)按鈕KI
sbitK2=P0Al;〃對(duì)應(yīng)按鈕K2
main()
(
unsignedcharkey_s,key_v;
key_v=0x03;
P2=Oxfe;
while(l)
(
key__s=scan_key();
if(key_s!=key_v)
{
delayms(lO);
key_s=scan_key();
if(key_s!=key_v)
key_v=key_s;
proc_key(key_v);
unsignedcharscan_key()
(
unsignedcharkey_s;
key_s=0x00;
key_s1=K2;
key_s?=1;
key_s1=KI;
returnkey_s;
}
voidproc_key(unsignedcharkey_v)
(
if((key_v&0x01)==0)
(
P2=_cror_(P2,l);
)
elseif((key_v&0x02)==0)
(
P2=_crol_(P2,1);
}
)
voiddelayms(unsignedcharms)//延時(shí)子程序
(
unsignedchari;
while(ms—)
for(i=0;i<120;i++);
*按鍵控制程序
*連接方法:JP10(P2)與JP1(LED燈)連接,
*JPU(P0)與JP5(按鍵接口)連接*
*開(kāi)始點(diǎn)亮PILED
;鍵盤(pán)P2.5控制的小燈P0.0。P2.7對(duì)應(yīng)K1*
ORG0000H
AJMPMAIN
ORG0030H
MAIN:MOVC,p0.0;檢測(cè)按鍵
MOVP2.0,C;根據(jù)按鍵決定輸出。
AJMPMAIN;循環(huán)
END
;P0.0小鍵盤(pán)按下P2.0亮再按0.5秒滅。
;連接方法:連接方法:JP10(P2)與JPI(LED燈)連接,
JP11(P0)與JP5(按鍵接口)連接
;FLAG20HEXPRESSTHE0.5STIMEARRIVED.
;FLAG21HEXPRESSTHELEDLIGHTED.
ORGOOOOh
AJMPmainO
ORG0030h
MAINO:
CLR21H;清標(biāo)志
main:
MOVC,P0.0;檢測(cè)按鍵
JCmain
MOVR6,#200;設(shè)定延時(shí)
MOVR7,#200
TTO:
JNB21H,TT2;檢測(cè)燈狀態(tài)
tt:
MOVC,P0.0;檢測(cè)按鍵
JNCttl
JNB20H,MAIN;檢測(cè)時(shí)間標(biāo)志
CLR20H
AJMPTT3
TT2:
MOVc,P0.0;檢測(cè)按鍵
JNCtt2
TT3:
CPL21H;改變燈狀態(tài)
CPLp2.0
AJMPmain
TT1:NOP;延時(shí)但不是子程序
NOP
NOP
NOP
NOP
NOP
DJNZR6,TT
MOVR6,#200
DJNZR7,TT
MOVR7,#200
SETB20H
AJMPTT
END
,*.?************....*************....*********.....********........*******’‘'',
按鍵PO.O每按下次加一,通過(guò)的P2端口顯示
;連接方法:JP1O(P0)與JP1(LED燈)連接,
;JP11(P2)與JP5(按鍵接口)連接*
;顯示出其的二進(jìn)制計(jì)數(shù)值。
,******************************************************************************
orgOOOOh
ajmploop
org0030h
mova,#Offh
loop:jnbpO.O,tt
jmploop
tt:movp2,a;全不亮
calldelay;延時(shí)。
deca;每次減一。
jmploop
delay:movr5,#50;延時(shí)。
d1:movr6,#40
d2:movr7,#20
ret
end
******************************************************************************
鍵盤(pán)控制的花樣彩燈。*
連接方法:JP10(P2)與JP1(LED燈)連接,
JP11(P0)與JP5(按鍵接口)連接
按p24,p27,p26,p27,p2口8個(gè)燈分別作移動(dòng)右移動(dòng),停止右移左移*
*?*************..*.*************....*****************....***********...*
亮燈控制程序;
,,
ORG0000H
UMPSTART
org0030h
;主程序;
START:
MOVP3,#OFFH
JNBP0.7,FUN0;檢測(cè)按鍵
JNBPO.4,FUN1
JNBP0.5,FUN2
JNBP0.6,FUN3;關(guān)閉按紐
AJMPSTART
FUNO:LCALLDL10MS;消岸抖動(dòng)
JBP0.7,START
WAITLO:JNBP0.7,WAITL0;等待鍵釋放
FUNO1:LCALLFUNOO
AJMPSTART
FUN1:LCALLDL10MS;消岸抖動(dòng)
JBP0.4,START
WAITLkJNBP3.3,WAITL1;等待鍵釋放
FUN1O:LCALLFUN11
AJMPSTART
FUN2:LCALLDL10MS;消岸抖動(dòng)
JBPO.5,START
WAITL2:JNBP0.5,WAITL2;等待鍵釋放
FUN20:LCALLFUN22
AJMPSTART
FUN3:LCALLDL10MS;消岸抖動(dòng)
JBP0.6,START
WAITL3:JNBP0.6,WAITL3;等待健釋放
MOVP2,#OFFH;關(guān)顯示
UMPSTART
FUNOO:MOVA,#0FEH;左移子程序
FUNOOO:MOVP2,A
LCALLDLO5S
JNBACC.7,OUT;檢測(cè)是否結(jié)束
RLA
AJMPFUNOOO
OUT:RET
FUN11:MOVA,#07FH;右移子程序
FUN111:MOVP2,A
LCALLDLO5S
JNBACC.O,OUT;檢測(cè)是否結(jié)束
RRA
AJMPFUN111
FUN22:MOVA,#0AAH;間隔顯示子程序
MOVP2,A
LCALLDL30S
CPLA
MOVP2,A
LCALLDL30S
RET
.*********,
;延時(shí)程序;
,************,
DL512:MOVR2,#0FFH;延時(shí)500US
LOOPkDJNZR2XOOP1
RET
DL10MS:MOVR3,#14H;延時(shí)10MS
LOOP2:LCALLDL512
DJNZR3,LOOP2
RET
DL05S:MOVR4,#0AH;延時(shí)-100MS
LOOP3:LCALLDL10MS
DJNZR4,LOOP3
RET
DL30S:MOVR5,#O3H;延時(shí)300MS.
LOOP4:LCALLDL05S
DJNZR5,LOOP4
RET
end
此為獨(dú)立按鍵接口
[文件名]C51音樂(lè)程序(八月桂花)
[功能]通過(guò)單片機(jī)演奏音樂(lè)
#include<REG52.H>
include<INTRINS.H>
〃本例采用89C52,晶振為11.0592MHZ
//關(guān)于如何編制音樂(lè)代碼,其實(shí)十分簡(jiǎn)單,各位可以看以下代碼.
〃頻率常數(shù)即音樂(lè)術(shù)語(yǔ)中的音調(diào),而節(jié)拍常數(shù)即音樂(lè)術(shù)語(yǔ)中的多少拍;
〃所以拿出譜子,試探編吧!
sbitBeep=P1A5;
unsignedcharn=0;//n為節(jié)拍常數(shù)變量
unsignedcharcodemusic_tab[]={
0x18,0x30,OxlC,0x10,//格式為:頻率常數(shù),節(jié)拍常數(shù),頻率常數(shù),節(jié)拍常數(shù),
0x20,0x40,OxlC,0x10,
0x18,0x10,0x20,0x10,
OxlC,0x10,0x18,0x40,
OxlC,0x20,0x20,0x20,
OxlC,0x20,0x18,0x20,
0x20,0x80,OxFF,0x20,
0x30,OxlC,0x10,0x18,
0x20,Ox15,0x20,OxIC,
0x20,0x20,0x20,0x26,
0x40,0x20,0x20,0x2B,
0x20,0x26,0x20,0x20,
0x20,0x30,0x80,OxFF,
0x20,0x20,OxlC,0x10,
0x18,0x10,0x20,0x20,
0x26,0x20,0x2B,0x20,
0x30,0x20,0x2B,0x40,
0x20,0x20,OxlC,0x10,
0x18,0x10,0x20,0x20,
0x26,0x20,0x2B,0x20,
0x30,0x20,0x2B,0x40,
0x20,0x30,OxlC,0x10,
0x18,0x20,0x15,0x20,
OxlC,0x20,0x20,0x20,
0x26,0x40,0x20,0x20,
0x2B,0x20,0x26,0x20,
0x20,0x20,0x30,0x80,
0x20,0x30,OxlC,0x10,
0x20,0x10,OxlC,0x10,
0x20,0x20,0x26,0x20,
0x2B,0x20,0x30,0x20,
0x2B,0x40,0x20,0x15,
OxIF,0x05,0x20,0x10,
OxIC,0x10,0x20,0x20,
0x26,0x20,Ox2B,0x20,
0x30,0x20,Ox2B,0x40,
0x20,0x30,OxlC,OxlO,
0x18,0x20,0x15,0x20,
OxIC,0x20,0x20,0x20,
0x26,0x40,0x20,0x20,
0x2B,0x20,0x26,0x20,
0x20,0x20,0x30,0x30,
0x20,0x30,0xlC,0xl0,
0x18,0x40,OxlC,0x20,
0x20,0x20,0x26,0x40,
0x13,0x60,0x18,0x20,
0x15,0x40,0x13,0x40,
0x18,0x80,0x00
);
voidintO()interrupt1〃采用中斷0控制節(jié)拍
{TH0=0xd8;
TLO=Oxef;
n-;
)
voiddelay(unsignedcharm)〃控制頻率延時(shí)
(
unsignedi=3*m;
while(—i);
)
voiddelayms(unsignedchara)〃豪秒延時(shí)子程序
(
while(-a);〃采用while(-a)不要采用while(a-);各位可編譯一下看看
匯編結(jié)果就知道了!
)
voidmain()
{unsignedcharp,m;〃m為頻率常數(shù)變量
unsignedchari=0;
TMOD&=0x0f;
TMODI=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(l)
a:p=music_tab[i];
if(p—0x00){i=0,delayms(lOOO);gotoplay;}〃如果碰到結(jié)束符,延時(shí)1
秒,回到開(kāi)始再來(lái)一遍
elseif(p—Oxff){i=i+l;delayms(100),TR0=0;gotoa;}〃若碰到休止符,延時(shí)100ms,
繼續(xù)取下一音符
else{m=music_tab[i++],n=music_tab[i++];}〃取頻率常數(shù)和節(jié)拍
常數(shù)
TR0=l;〃開(kāi)定時(shí)器1
while(n!=0)Beep=~Beep,delay(m);〃等待節(jié)拍完成,
通過(guò)P1口輸出音頻(可多聲道哦!)
TR0=0;〃關(guān)定時(shí)器1
ORG0000H;偽指令,指定程序從8000H開(kāi)始存放
AJMPMAIN;跳轉(zhuǎn)指令,程序跳轉(zhuǎn)到MAIN處
ORG01OOH;偽指令,指定以下程序從8100H開(kāi)始存放
MAIN:
MOVSP,#60;給堆棧指針賦初值
LOOP:ACALLMUSIC
AJMPLOOP
,***********************
;蜂鳴器輸出聲響子程序
,*********************
MUSIC:
MOVR5,#60H;控制音長(zhǎng)
MIC:
CPLP1.5
ACALLDELAY5MS;控制音調(diào)
DJNZR5,MIC
RET
,***************
;延時(shí)子程序
DELAY5MS:
MOVR7,#3H
DELAYO:MOVR6,#40H
DELAY1:DJNZR6,DELAY1
DJNZR7,DELAY0
RET
END
orgOOOOh
ajmpmain
org0030h
main:
MOVR2,#08H
DLV1:MOVR3,#0FAH
DLV2:CPLP1.5
LCALLDELAY1;延時(shí)
DJNZR3JDLV2
DJNZR2,DLV1
MOVR2,#10H;改變循環(huán)初值
DLV3:MOVR3,#0FAH
DLV4:CPLP1.5
LCALLDELAY2
DJNZR3,DLV4
DJNZR2,DLV3
ajmpmain
delay1:
movr7,#00h
LLA:DJNZR7,LLA
ret
delay2:
movr7,#128
LLB:DJNZR7,LLB
ret
end
ORG0000H
JMPMAIN
ORG000BH
JMPINTTO
ORG01OOH
MAIN:MOVSP,#60H
MOVTMOD,#01H
SETBETO
SETBEA
SETBTRO
STARTO:;clrPl.5
MOV30H,#00H
NEXT:MOVA,30H
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVR2,A
JZENDD
ANLA,#0FH
MOVR5,A
MOVA,R2
SWAPA
ANLA,#0FH
JNZSING
CLRTRO
JMPDI
SING:DECA
MOV22H,A
RLA
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOVTH0,A
MOV21H,A
MOVA,22H
RLA
INCA
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
SETBTRO
DI:CALLDELAY
INC30H
JMPNEXT
ENDD:CLRTRO
JMPSTARTO
INTTO:
PUSHPSW
PUSHACC
MOVTL0,20H
MOVTH0,21H
CPLPl.5
POPACC
POPPSW
RETI
DELAY:MOVR7,#02
DELAYO:MOVR4,#187
DELAY1:MOVR3,#248
DJNZR3,$
DJNZR4,DELAY1
DJNZR7,DELAYO
DJNZR5,DELAY
RET
TABLE:DB82HoiH,81H,94H,84H,0B4H,0A4H,04H
DB82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
DB0E2H,01H,OE1H,0D4H,0B4H,0C4H,0B4H,04H
DB82H,01H,81H,94H,84H,0B4H,0A4H,04H
DB82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB82HoIH,81H,0F4H,0D4H,0B4H,0A4H,94H
DB0E2H,01H,OE1H,0D4H,0B4H,0C4H,0B4H,04H
//TABLEI:DW64260,64400,64524,64580,64684,64777,64820,64898
//DW64968,65030,65058,65110,65157,65178,65217
END
ORGOOOOH
LIMPSTART
ORGOOOBH
INC20H;中斷服務(wù),中斷計(jì)數(shù)器加1
MOVTH0,#0D8H
MOVTL0,#0EFH;12M晶振,形成10毫秒中斷
RETI
START:
MOVSP,#50H
MOVTH0,#0D8H
MOVTL0,#0EFH
MOVTMOD,#01H
MOVIE,#82H
MUSICO:
NOP
MOVDPTR,#DAT;表頭地址送DPTR
MOV20H,#00H;中斷計(jì)數(shù)器清0
MOVB,#00H;表序號(hào)清0
MUSIC1:
NOP
CLRA
MOVCA,@A+DPTR;查表取代碼
JZENDO;是00H,則結(jié)束
CJNEA,#0FFH,MUSIC5
□MPMUSIC3
MUSIC5:
NOP
MOVR6,A
INCDPTR
MOVA,B
MOVCA,@A+DPTR;取節(jié)拍代碼送R7
MOVR7,A
SETBTRO;啟動(dòng)計(jì)數(shù)
MUSIC2:
NOP
CPLPl.5
MOVA,R6
MOVR3,A
LCALLDEL
MOVA,R7
CJNEA,20H,MUSIC2;中斷計(jì)數(shù)器(20H)=R7否?
;不等,則繼續(xù)循環(huán)
MOV20H,#00H;等于,則取下一代碼
INCDPTR
;INCB
LIMPMUSIC1
MUSIC3:
NOP
CLRTRO淋止100毫秒
MOVR2,#0DH
MUSIC4:
NOP
MOVR3,#0FFH
LCALLDEL
DJNZR2,MUSIC4
INCDPTR
LJMPMUSIC1
ENDO:
NOP
MOVR2,#10H;歌曲結(jié)束,延時(shí)1秒后繼續(xù)
MUSIC6:
MOVR3,#00H
LCALLDEL
DJNZR2,MUSIC6
UMPMUSICO
DEL:
NOP
DEL3:
MOVR4,#02H
DEL4:
NOP
DJNZR4,DEL4
NOP
DJNZR3,DEL3
RET
NOP
DAT:
db26h,20h,20h,20h,20h,20h,26h,10h,20h,l0h,20h,80h,26h,20h,30h,20h
db30h,20h,39hJ0h,30h,l0h,30h,80h,26h,20h,20h,20h,20h,20h,lch,20h
db20h,80h,2bh,20h,26h,20h,20h,20h,2bh,l0h,26h,l0h,2bh,80h,26h,20h
db30h,20h,30h,20h,39hJ0h,26hJ0h,26h,60h,40hJOh,39h』0h,26h,20h
db30h,20h,30h,20h,39h,l0h,26h,l0h,26h,80h,26h,20h,2bh,l0h,2bh,lOh
db2bh,20h,30h,l0h,39h,l0h,26h,l0h,2bh,l0h,2bh,20h,2bh,40h,40h,20h
db20h,l0h,20h,l0h,2bh,l0h,26h,30h,30h,80h,l8h,20h,l8h,20h,26h,20h
db20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20hJch,20h,20h,20h
db20h,80h,lch,20h,lch,20h,lch,20h,30h,20h,30h,60h,39h,10h,30h,lOh
db20h,20h,2bh,l0h,26h,l0h,2bhJ0h,26h,l0h,26h,l0h,2bh,l0h,2bh,80h
db18h,20h,l8h,20h,26h,20h,20h,20h,20h,60h,26h,l0h,2bh,20h,30h,20h
db30h,20h,lch,20h,20h,20h,20h,80h,26h,20h,30h,l0h,30h,10h,30h,20h
db39h,20h,26h,lOh,2bh,l0h,2bh,20h,2bh,40h,40h,l0h,40h,l0h,20h,lOh
db20h,l0h,2bh,l0h,26h,30h,30h,80h,00H
END
/*繼電器實(shí)驗(yàn)
/*連接方法:連接JP11(P2)與JP5(按鈕接口)
/*按下P2.7繼電器P1.4動(dòng)作
#include<reg51.h>//51的端口和各特殊寄存器定義在此文件中
sbitRELAY=P1A4;〃定義繼電器對(duì)應(yīng)單片機(jī)管腳
sbitKI=P2A7;//定義按鈕對(duì)應(yīng)單片機(jī)管腳
主函數(shù)*
main()
(
if(!K1)RELAY=0;〃按鈕按下開(kāi)啟繼電器
elseRELAY=1;//按鈕松開(kāi)關(guān)閉繼電器
138譯碼器實(shí)驗(yàn)
*實(shí)驗(yàn)?zāi)康?1.了解138譯碼器工作原理*
2.學(xué)會(huì)用C語(yǔ)言對(duì)138譯碼器編程控制*
實(shí)驗(yàn)現(xiàn)象:LED燈每隔一段時(shí)間循環(huán)點(diǎn)亮*
接線方法:J15連JP1(參考圖片連接)*
#include<reg5l.h>
sbitHC138A=P2A2;//定義譯碼器輸入端A在P2.2管腳上
sbitHC138B=P2八3;//定義譯碼器輸入端B在P2.3管腳上
sbitHC138C=P2A4;〃定義譯碼器輸入端C在P2.4管腳上
延時(shí)函數(shù)
voiddelay(unsignedinti)
(
unsignedcharj;
for(i;i>0;i-)〃循環(huán)1500*255次CPU在這里執(zhí)行一段時(shí)間
for(j=255;j>0;j-);
main()
(
//點(diǎn)亮第一個(gè)LED燈
HC138C=0;HC138B=0;HC138A=0;//輸入000
delay(1500);〃延時(shí)
//點(diǎn)亮第二個(gè)LED燈
HC138C=0;HC138B=0;HC138A=1;〃輸入001
delay。500);//延時(shí)
//點(diǎn)亮第三個(gè)LED燈
HC138C=O;HC138B=l;HC138A=0;//輸入010
delay(1500);
//點(diǎn)亮第四個(gè)LED燈
HC138C=0;HC138B=1;HC138A=1;〃輸入Oil
delay(2000);
//點(diǎn)亮第五個(gè)LED燈
HC138C=l;HC138B=0;HC138A=0;〃輸入100
delay(1500);
//點(diǎn)亮第六個(gè)LED燈
HC138c=1;HC138B=O;HC138A=1;〃輸入101
delay(1500);
HC138C=l;HC138B=l;HC138A=0;〃輸入110
delay(1500);
HC138c=I;HC138B=1;HC138A=1;〃輸入111
delay(1500);
Inputs
Outputs
EnableSelect
G1G2#CBAY0Y1Y2Y3Y4Y5Y6Y7
XHXXXHHHHHHHH
LXXXXHHHHHHHH
HLLLLLHHHHHHH
HLLLHHLHHHHHH
HLLHLHHLHHHHH
HLLHHHHHLHHHH
HLHLLHHHHLHHH
HLHLHHHHHHLHH
HLHHLHHHHHHLH
HLHHHHHHHHHHL
?G2-G2AiG2B
H"N^iLwlowtowel.X*don'tc?e74LS138
*標(biāo)題:試驗(yàn)數(shù)碼管上如何顯示數(shù)字(共陽(yáng)極)*
*連接方法:P0與JP3用8PIN排線連接
*請(qǐng)學(xué)員認(rèn)真消化本例程,用單片機(jī)腳直接控制數(shù)碼管*
#include<reg5l.h>
voiddelay(unsignedinti);〃函數(shù)聲名
//此表為L(zhǎng)ED的字模01234567
89abcdef
unsignedcharcodeLED7Code[]=
{?Ox3F,?0x06,?Ox5B,?0x4F,?0x66,?0x6D,?0x7D,?0x07,?0x7F,?0x6F,?0x77,?0x7C,?0x39,?0x5
E,?0x79,?0x71};
main()
(
unsignedintLedNumVal;〃定義變量
while(l)
//將字模送到P0口顯示
LedNumVal++;
P0=LED7CodelLedNumVal%16J&0x7f;//LED70x7f為小數(shù)點(diǎn)共陰和共陽(yáng)此
處也是不一樣;
delay(6000);〃調(diào)用延時(shí)程序
)
延時(shí)程序*
voiddelay(unsignedinti)
(
charj;
for(i;i>0;i-)〃循環(huán)6000*200次
for(j=200;j>0;j-);
我5I極數(shù)—丁
*標(biāo)題:試驗(yàn)數(shù)碼管上顯示數(shù)字(單片機(jī)直接實(shí)現(xiàn)位選共陰極)
*連接方法:P0與J12用8PIN排線連接P1與JP16用排線連接
*請(qǐng)學(xué)員認(rèn)真消化本例程,用573鎖存器控制和單片機(jī)腳直接位選控制(非譯碼器控制)數(shù)碼
管*
#include<reg5l.h>
voiddelay(unsignedinti);〃函數(shù)聲名
charDelayCNT;//定義變量
〃此表為L(zhǎng)ED的字模,共陰數(shù)碼管0-9-
unsignedcharcodeDisp_Tab[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};〃段碼控制
〃此表為8個(gè)數(shù)碼管位選控制,共陰數(shù)碼管1-8個(gè)-
unsignedcharcodedispbitf8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};〃位選控制
查表的方法控制
main()
unsignedinti,LedNumVal=l;〃變量定義
unsignedintLedOut[10J;〃變量定義
DelayCNT=O;
while(l)
if(++DelayCNT>=20)〃控制數(shù)字變化速度
(
DelayCNT=O;//20個(gè)掃描周期清零一次
++LedNumVal;〃每隔20個(gè)掃描周期加一次
LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
LedOut[l]=Disp_Tab[LedNumVal%1000/100]l0x80;
LedOut[2]=Disp_Tab[LedNumVal%100/10];
LedOut[3]=Disp_Tab[LedNumVal%10];
LedOut[4]=Disp_Tab[LedNumVal%10000/1000];〃千位
LedOut[5]=Disp_Tab[LedNumVal%1000/100]l0x80;〃百位帶小數(shù)點(diǎn)
LedOut[6]=Disp_Tab[LedNumVal%100/10];〃十位
LedOut[7]=Disp_Tab[LedNumVai%10];//個(gè)位
for(i=0;i<9;i++)
{
PO=LedOutliJ;
Pl=dispbit[i];〃使用查表法進(jìn)行位選
/*switch(i)〃使用switch語(yǔ)句控制位選
caseO:P1=0x7F;break;
case1:P1=OxbF;break;
case2:P1=OxdF;break;
case3:P1=OxeF;break;
case4:P1=0xi7;break;
case5:P1=Oxfb;break;
case6:P1=Oxfd;break;
case7:P1=Oxfe;break;
*/
delay(150);〃掃描間隔時(shí)間太長(zhǎng)會(huì)數(shù)碼管會(huì)有閃爍感
)
voiddelay(unsignedinti)
(
charj;
for(i;i>0;i-)
for(j=200;j>0;j-);
)
*標(biāo)題:試驗(yàn)數(shù)碼管上顯示數(shù)字(譯碼器位選共陰極)*
*連接方法:P0與J12用8P1N排線連接
*請(qǐng)學(xué)員認(rèn)真消化本例程,用573鎖存器和譯碼器控制和數(shù)碼管
#include<reg5l.h>
sbitLS138A=P2A2;〃定義138譯碼器的輸入A腳由P2.2控制
sbitLS138B=P2八3;〃定義138譯碼器的輸入腳B由P2.3控制
sbitLS138C=P2A4;〃定義138譯碼器的輸入腳C由P2.4控制
voiddelay(unsignedinti);〃函數(shù)聲名
charDelayCNT;
〃此表為L(zhǎng)ED的字模,共陰數(shù)碼管0?9-
unsignedcharcodeDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
/************主函數(shù)**********************/
main()
(
unsignedinti,LedNumVal;
unsignedintLedOut[10];
DelayCNT=0;
while(l)〃進(jìn)入循環(huán)狀態(tài)
(
if(++DelayCNT>=50)
{
DelayCNT=0;〃延時(shí)計(jì)數(shù)每掃描一次加一次
++LedNumVal;//每隔50個(gè)掃描周期加一次
LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
LedOutLlJ=Disp_Tab[LedNumVal%1000/100JI0x80;
LedOut[2]=Disp_Tab[LedNumVal%100/10];
LedOutl3J=Disp_Tab[LedNumVal%10J;
LedOut[4]=Disp_Tab[LedNumVal%10000/1000];〃千位
LedOut[5]=Disp_Tab[LedNumVal%1000/100]l0x80;//百位帶小數(shù)點(diǎn)
LedOut[6]=Disp_Tab[LedNumVal%100/10];〃十位
LedOutl7J=Disp_Tab[LedNumVal%10];〃個(gè)位
for(i=0;i<8;i++)〃實(shí)現(xiàn)8位動(dòng)態(tài)掃描循環(huán)
(
PO=LedOut[i];〃將字模送到P0口顯示
switch(i)〃使用switch語(yǔ)句控制位選也可以是用查表的方式學(xué)員可以試著自
己修改
(
caseO:LS138A=0;LS138B=O;LS138C=0;break;
case1:LS138A=1;LS138B=O;LS138C=O;break;
case2:LS138A=0;LS138B=1;LS138C=0;break;
case3:LS138A=1;LS138B=1;LS138C=O;break;
case4:LS138A=0;LS138B=0;LS138C=1;break;
case5:LS138A=l;LS138B=0;LS138C=1;break;
case6:LS138A=0;LS138B=1;LS138C=1;break;
case7:LS138A=1;LS138B=1;LS138C=1;break;
delay(150);
)
*延時(shí)程序*
voiddelay(unsignedinti)
charj;
for(i;i>0;i-)
for(j=200;j>0;j-);
)
****
*標(biāo)題:74HC573輸出使能試驗(yàn)(單片機(jī)直接實(shí)現(xiàn)位選共陰極)
*連接方法:PO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 冰柜使用合同范本
- 云南2025年云南省民族宗教事務(wù)委員會(huì)委屬事業(yè)單位招聘7人筆試歷年參考題庫(kù)附帶答案詳解
- 科技發(fā)展中的倫理與安全意識(shí)普及
- 科技公司如何應(yīng)對(duì)網(wǎng)絡(luò)攻擊的實(shí)戰(zhàn)經(jīng)驗(yàn)
- MJC13-生命科學(xué)試劑-MCE
- GPV574-生命科學(xué)試劑-MCE
- 2002-G12-生命科學(xué)試劑-MCE
- 1-Phenylethylamine-hydrochloride-生命科學(xué)試劑-MCE
- 中山廣東中山市東鳳鎮(zhèn)第二中學(xué)招聘臨聘教師筆試歷年參考題庫(kù)附帶答案詳解
- 租借婚紗合同范本
- 旅行社運(yùn)營(yíng)實(shí)務(wù)電子課件 1.2 了解旅行社核心業(yè)務(wù)部門(mén)
- 部編版五年級(jí)語(yǔ)文下冊(cè)課文四字詞總結(jié)
- 綜合交通運(yùn)輸體系認(rèn)知
- GM/T 0115-2021信息系統(tǒng)密碼應(yīng)用測(cè)評(píng)要求
- YY 0670-2008無(wú)創(chuàng)自動(dòng)測(cè)量血壓計(jì)
- JJF 1458-2014磁軛式磁粉探傷機(jī)校準(zhǔn)規(guī)范
- GB/T 39935-2021塑料制品薄膜和片材抗粘連性的測(cè)定
- GB/T 324-2008焊縫符號(hào)表示法
- 機(jī)器人技術(shù) 第一章 緒論
- 馬工程教材 《公共財(cái)政概論》PPT-第八章 稅收
- GB/T 22544-2008蛋雞復(fù)合預(yù)混合飼料
評(píng)論
0/150
提交評(píng)論