熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-6-5 09:53
正文摘要:實(shí)驗(yàn)要求: 實(shí)驗(yàn)三 LED燈控制器 實(shí)驗(yàn)?zāi)康模杭由顚?duì)定時(shí)/計(jì)數(shù)器、中斷、IO端口的理解,掌握定時(shí)/計(jì)數(shù)器、中斷的應(yīng)用編程技術(shù)及中斷程序的調(diào)試方法。 實(shí)驗(yàn)內(nèi)容:利用C8051F310單片機(jī)設(shè)計(jì)一個(gè)LED燈控制器 主要功能和 ... |
本帖最后由 渣渣馬 于 2020-6-6 21:44 編輯 #include<reg51.h> #include<intrins.h> sbit D1=P0^0; //LED閃爍 sbit KINT=P3^1; //開關(guān) sbit LS=P3^7; //無源蜂鳴器 char code DATA[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x40}; //CA段碼 char code a[][2]={{2,10},{1,10},{11,3}}; //數(shù)碼顯示的幾種模式 int t=0,temp=5; //t用于變數(shù)碼管,temp用于時(shí)間變換 void DelayMs(int x) //延時(shí) { int i; while(x--) for(i=0;i<120;i++); } void LED2() //數(shù)碼顯示 { int i,m; m=0x01; for(i=0;i<2;i++) P2=0xff,P1=_crol_(m,i),P2=DATA[a[t]],DelayMs(1); } void BUZZ() //蜂鳴器響0.5s { int i; for(i=0;i<500;i++) LS=!LS,DelayMs(2); } void init() //初始化 { IE=0x8a; //¿aT0 TR0=1; TR1=1; TMOD=0x22; TH0=(256-200)%256; LS=1; D1=1; } void main() { init(); while(1) { if(!KINT) 開關(guān)檢測(cè) { while(!KINT); //等待開關(guān)釋放 t=++t%3; //0~2 switch(t) { case 0:temp=5;break; //2Hz case 1:temp=10;break; //1Hz case 2:temp=3;break; //0.3Hz default:break; } } } } void time0() interrupt 1 //定時(shí)用 { static int t0=0,t1=0; t0++; if(t0==500) //100ms { t1++; t0=0; if(t1==temp) //¸÷ÖÖê±¼äμÄÇD»» { D1=!D1; BUZZ(); t1=0; } } } void time1() interrupt 3 //LED2數(shù)碼顯示 { LED2(); } /*代碼有點(diǎn)多,我是自己敲得,對(duì)你希望有用!把代碼放在Keil中顯示注釋*/ |
兄弟,你這H5寫的就不到位了! |
Powered by 單片機(jī)教程網(wǎng)