位移實現流水燈c語言,流水燈位移函數

本文目錄一覽:

單片機C語言流水燈移位指令

//沒有編譯過,大概思路就這樣

#define P_LED P1; //定義到你自己的埠

void main(void)

{

unsigned char circledata=0x01,i=0;

while(1)

{

for(i=0;i4;i++) //顯示範圍 P_LED.0:P_LED3

{

P_LED=circledatai;

Delay_ms(1000);//根據自己的晶振寫延時1S的函數

}

circledata=0xfe;

for(i=3;i=0;i–) //顯示範圍 P_LED.3:P_LED.0

{

P_LED=circledatai;

Delay_ms(1000);//根據自己的晶振寫延時1S的函數

}

}

return;

}

怎麼用c語言用循環位移法實現流水燈

單片機的內容吧。

單片機的一個Port是8位的。

方法1: 移位運算

while (1)

{

led = 0x01;

for (i = 0; i 8; i++)

{

port_2 = led; // 將數值賦值給單片機的Port.

led = led 1; // 左移一位.

}

}

方法2: 乘法運算

while (1)

{

led = 0x01;

for (i = 0; i 8; i++)

{

port_2 = led; // 將數值賦值給單片機的Port.

led = led * 2; // 乘2, 相當於左移1位.

}

}

為什麼C語言位移可以實現發光二極體的流水燈?

每個位代表了一個二極體的引腳。根據單片機外圍電路不同,邏輯高或低電平時,LED會點亮。假設邏輯高電平時LED點亮,如00000001,bit0-7控制led0-7,此時led0點亮,左移一位變為00000010,led0熄滅,led1點亮。

單片機流水燈C語言程序(8個燈,依次點亮每個燈,延時500MS)

1、用精確定時的方法,設置流水燈運行時的時間間隔,延時時間為500MS。

2、#include “reg51.h”首先寫出單片機的頭函數。

3、#include “intrins.h”輸入位移函數。

4、unsigned int count=0,led;定義函數。

5、輸入主函數,定義單片機的埠,寫入延時函數。

6、中斷跳轉,使流水燈運行起來。

用c語言編寫流水燈。

C語言流水燈程序是學習的基礎,一定要搞懂!給你發兩個!

(一)

#includereg51.h //51系列單片機定義文件

#define uchar unsigned char //定義無符號字元

#define uint unsigned int //定義無符號整數

void delay(uint); //聲明延時函數

void main()

{

uint i;

uchar temp;

while(1)

{

temp=0x01;

for(i=0;i8;i++) //8個流水燈逐個閃動

{

P2=~temp;

delay(500); //調用延時函數

temp=1;

}

temp=0x80;

for(i=0;i8;i++) //8個流水燈反向逐個閃動

{

P2=~temp;

delay(500); //調用延時函數

temp=1;

}

temp=0xFE;

for(i=0;i8;i++) //8個流水燈依次全部點亮

{

P2=temp;

delay(500); //調用延時函數

temp=1;

}

temp=0x7F;

for(i=0;i8;i++) //8個流水燈依次反向全部點亮

{

P2=temp;

delay(500); //調用延時函數

temp=1;

}

}

}

void delay(uint a) //延時函數,毫秒級別

{

uint i;

while(–a!=0) //執行空操作循環,其中a為形參,由調用該函數的函數語句提供值

{

for(i=0;i125;i++);//執行當0加到125時,大約會用掉1ms的時間

}

}

(二)

*****************************以下程序均採用12M晶振*****************************************************/

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

sbit p2=P2^0;

void main()

{

TMOD=0x01;

TR0=1;

ET0=1;

EA=1;

while(1)

{

;

}

}

timer0() interrupt 1

{

TH0=0x00;

TL0=0x06;

p2=!p2;

}

(三)

定時流水燈//

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P2=led[leda];

leda++;

if(leda==9)leda=0;

}

}

}

timer2() interrupt 1

{

static uchar t;

TF0=0;

t++;

if(t==10)

{

t=0;

ldelay=1;

}

}

(四)

變速流水燈//

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

uchar speed=100;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P2=led[leda];

leda++;

if(leda==9)

{

leda=0;

speed-=10;

if(speed==0)speed=100;

}

}

}

}

timer2() interrupt 1

{

static uchar t;

TF0=0;

t++;

if(t==speed)

{

t=0;

ldelay=1;

}

}

(五)

//每2兩圈改變一次亮度

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

uchar speeda=30;

uint k=0;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

uchar speed[10]={5,80,70,60,50,40,30,20,10,5};

uint i;

uint k;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P2=led[leda];

leda++;

if(leda==9)

{

leda=0;

k++;

if(k==2){

k=0;

speeda=speed[i];

i++;

if(i==9)i=0;

}

}

}

}

}

timer2() interrupt 1

{

static uchar t;

TF0=0;

t++;

if(t==speeda)

{

t=0;

ldelay=1;

}

}

(六)

//在上面基礎上調燈的亮度(調占空比)

#includereg51.h

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

uchar speeda=30;

uint k=0;

uchar scale;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

uchar speed[10]={5,80,70,60,50,40,30,20,10,5};

uint i;

uint k;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay==1)

{

ldelay=0;

P2=led[leda];

leda++;

scale++;

if(scale==10)scale=0;

if(leda==9)

{

leda=0;

k++;

if(k==2){

k=0;

speeda=speed[i];

i++;

if(i==9)i=0;

}

}

}

}

}

timer2() interrupt 1

{

static uchar t;

TH0=0x1c;

TL0=0xbf;

TF0=0;

t++;

if(t==speeda)

{

t=0;

ldelay=1;

}

if(scale==10)P2=0;

if(scale==0)P2=1;

}

原創文章,作者:OXFGB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/330175.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OXFGB的頭像OXFGB
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29

發表回復

登錄後才能評論