❶ 用單片機P0控制8個LED,要求8個LED按1357——2468的順序輪流點亮
一鍵多功能按鍵識別技術 1.實驗任務 開關K1接在P3.2管腳上,在AT89S51單片機的P0.0埠接有1個發光二極體,上電的時候,L1接在P1.0管腳上的發光二極體在亮,當一次按下開關K1的時候,燈滅,再按一次,燈亮,如此輪流下去。 2.系統板上硬體連線 把「單片機系統」區域中的P3.2埠連接到「獨立式鍵盤」區域中的K1埠上;把P0.0連到L1上 3.程序設計方法 (1. 設計思想由來 在我們生活中,我們很容易通過這個叫張三,那個叫李四,另外一個是王五;那是因為每個人有不同的名子,我們就很快認出,同樣,對於要通過一個按鍵來識別每種不同的功能,我們給每個不同的功能模塊用不同的ID號標識,這樣,每按下一次按鍵,ID的值是不相同的,所以單片機就很容易識別不同功能的身份了。 (2. 設計方法 從上面的要求我們可以看出,L1到亮滅受開關K1來控制,我們給L1亮滅定義出不同的ID號,當L1在亮時,ID=0;當L1在滅時,ID=1;分別給出不同的ID號我們就能夠完成上面的任務了 4.匯編程序: ID EQU 30H K1 BIT P3.2 L1 BIT P0.0 ORG 0000H CLR P1.7 MOV ID,#00H START: JB K1,REL ;K1沒閉合轉 LCALL DELAY10MS ;K1閉合,延時消抖動 JB K1,REL :再判斷 INC ID MOV A,ID CJNE A,#02,REL MOV ID,#00H REL: JNB K1,$ ;等待開關彈起 MOV A,ID CJNE A,#00H,IS0 ;判斷相應ID CLR L1 :ID=0,燈亮 LCALL DELAY光 ;延時 SJMP START IS0: CJNE A,#01H,START; SETB L1 LCALL DELAY SJMP START DELAY10MS: MOV R6,#20 ;延時10MS子程序 LOOP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LOOP1 RET DELAY: MOV R5,#20 ;延時20MS子程序 LOOP2: LCALL DELAY10MS DJNZ R5,LOOP2 RET END
❷ 單片機獨立鍵盤上 一直按k1實現led燈1357閃爍,間隔1秒 按一下k2 2468閃爍 間隔1秒
單片機 利用定時器,實現LED燈閃爍 利用定時器0,工作方式1實現LED以1s亮滅閃爍 評論 共1條qq574090173 : 一個簡單的小程序 單片機不同頻率閃爍一個LED燈簡單程序,
❸ 流水燈1357依次隔0.5s亮,然後8642依次亮,求一下單片機C語言大神,幫忙解答一下!
假設P0口接LED,高電平點亮
#include <reg51·h〉
#define uint unsigned int;
#define uchar unsigned char;
void delayms(uint t)//延時子程序
{
uint I,j,k;
for(i=110i>0;i--)
for(j=110j>0;j--)
for(k=125;k>0;k--);
}
void main()//主程序
{
while(1)
{
P0=0X01; delayms(500);
P0=0X04; delayms(500);
P0=0X10; delayms(500);
P0=0X40; delayms(500);
P0=0X80; delayms(500);
P0=0X20; delayms(500);
P0=0X08; delayms(500);
P0=0X02; delayms(500);
}
}
❹ 用單片機控制4位LED數碼顯示,先從左到右慢速動態掃描顯示數字「1357」,「2468」,然後在從
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dis_code_[]={0xf9,0xb0,0x92,0xf8,0xa4,0x99,0x82,0x80,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x8c};
void delay(uint t)
{
uchar i;
while (t--)
{
for(i=0;i<200;i++);
}
}
void main()
{
uchar i,j=0x80;
while(1)
{
for(i=0;i<4;i++)
{j=_crol_(j,1);
P0=dis_code_[i];
P2=j;
delay(200);
}
}
while(1)
{for(i=4;i<8;i++)
{j=_crol_(j,1);
P0=dis_code_[i];
P2=j;
delay(180);
}
}
while(1)
{for(i=8;i<12;i++)
{j=_crol_(j,1);
P0=dis_code_[i];
P2=j;
delay(100);
}
}
while(1)
{for(i=12;i<16;i++)
{j=_crol_(j,1);
P0=dis_code_[i];
P2=j;
delay(100);
}
}
}
❺ 單片機流水燈c語言程序。燈按從左到右2468然後1357依次循環亮。速求啊!
#include "REG52.H"
// 顯示花樣流水燈編碼
const unsigned char Expetr_ROM[] = { 0xFD, 0xF7, 0xDF, 0x7F, 0xFE, 0xFB, 0xEF, 0xBF
} ;
// 延時1ms
void Delay_1ms(unsigned int Cnt)
{
unsigned int x, y;
for(x = Cnt; x > 0; x--)
for(y = 120; y > 0; y--);
}
int main(void)
{
unsigned char i;
while(1)
{
for(i = 0; i < 8; i++)
{
P1 = Expetr_ROM[i];
Delay_1ms(500);
}
}
}
❻ 用單片機控制4位LED數碼管顯示,先從左到右慢速動態掃描顯示數字「1357」,「2468」,然後在
首先你要明確這是要在實驗板上實現呢?還是只是畫個模擬來實現呢?
那要模擬,首先你要畫個模擬圖,模擬圖也不會畫嗎?
如果沒有實驗板,也沒有模擬圖,寫了程序也沒有用,那怎麼執行程序呢?
❼ 最近在學51單片機 點亮led燈程序中P1=0xaa是控制1357燈亮2468滅 如果我想
改成P1=0xDD
P1有8個IO口,P1=0Xaa你可以看做 「10101010」分別控制8個IO口,即控制LED燈的亮滅。
你要26亮其他滅 那就是 「11011101」也就是 P1=0xDD。明白了嗎?
❽ 單片機中LED燈,有八個LED燈,先從左向右亮,在從右向左亮,然後在先1357亮,在2468亮,求演算法
真心想幫你,但是學太久了,忘了,P2是管腳,RL
A
左移,加一個右移,前兩個就實現了
至於1357
2468
就用除法判斷吧
❾ 如何使用單片機STC89C52點亮光循環1357
先畫出電路圖。