#include 包含單片機(jī)專用頭文件 #include 這個(gè)是什么俺也不知道,但這個(gè)程序不需要這個(gè)頭文件 void Delay10ms(unsigned int c); 自定義的延時(shí)函數(shù)聲明 main() 主函數(shù) { unsigned int LED; 建立一個(gè)數(shù)值型變量,變量名 LED LED=0xfe; 給這個(gè)變量
AT89C51單片機(jī)是學(xué)習(xí)單片機(jī)必學(xué)的一個(gè)單片機(jī),也是單片機(jī)入門的教材,下面給大家展示一下流水燈的編寫方法,這種方法比較適合初學(xué)者。
材料/工具
電腦 keill,proteus
/******************************************************************************* * 標(biāo)題: ME300系列單片機(jī)開(kāi)發(fā)系統(tǒng)演示程序 - LED流水燈 * ;* 硬件: ME300A,ME300S,ME300A+,ME300B * * 文件: wl001.C * * 日期: 2004-1-5 * * 版本: 1.0 *
方法
首先先在proteus畫出仿真圖,方便仿真程序。
這個(gè)可以借鑒網(wǎng)上的一些資料,具體的看你的原理圖,可以仿寫 最重要的是自己掌握方法 可以到一些貼吧論壇討論,相互學(xué)習(xí) #include typedef unsigned int uint; typedef unsigned char uchar; sbit wela = P2^7; //數(shù)碼管位聲明 sbit dula = P2^6
通過(guò)編譯軟件來(lái)編寫程序,先來(lái)寫入頭函數(shù)。
# include "reg51.h" // 包含頭文件 #define uchar unsigned char void delay02s(void) // 延時(shí)0.2s子程序 { unsigned char i,j,k; for ( i=2;i>0;i-- ) for (j=200;j>0;j-- ) for (k=250;k>0;k-- ); } void main (void) // 主函數(shù) {
根據(jù)自己在proteus畫的圖,定義一下管腳根據(jù)你的原理圖進(jìn)行編寫
最最簡(jiǎn)單的方法就是3個(gè)io口接接那三個(gè)開(kāi)關(guān),用八個(gè)io口驅(qū)動(dòng)八個(gè)燈,然后循環(huán)檢測(cè)三個(gè)開(kāi)關(guān)的狀態(tài)并使用延時(shí)方式來(lái)驅(qū)動(dòng)各個(gè)燈的亮滅
sbit p0=P1^0;
蜂鳴器一直響很容易實(shí)現(xiàn),無(wú)源蜂鳴器給電平就可以控制發(fā)聲了,程序如下: FMQ EQU P3.2ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,#0FEH CLR FMQLOOP: MOV P1,A RL A LCALL DELAY SJMP LOOPDELAY: MOV R2,#200DLY: MOV R3,#250 DJNZ R3,$ DJNZ R2,
sbit p1=P1^1;
這是一個(gè)比較全的程序,花樣較多,供參考。 #include #include #define uint unsigned int #define uchar unsigned char void delay(uint k) { uinti,j; for(i=k;i--;i>0) for(j=100;j--;j>0); } void main() { uchartemp0,temp1; ucharyi; ucha
sbit p2=P1^2;
流水燈程序閑來(lái)沒(méi)事,就總結(jié)一下流水燈的工作,用兩種語(yǔ)言實(shí)驗(yàn)C語(yǔ)言和匯編語(yǔ)言。學(xué)習(xí)單片機(jī)的第一個(gè)程序就是流水燈實(shí)驗(yàn)!學(xué)習(xí)語(yǔ)言的輸出的第一個(gè)程序就是helloword!這都是一個(gè)過(guò)程!我們知道單片機(jī)執(zhí)行的機(jī)器語(yǔ)言!匯編就是其執(zhí)行的根本的語(yǔ)言,
sbit p3=P1^3;
#include #define GPIO P1 #define uint8 unsigned char #define uint16 unsigned int void delay_ms(uint16 x) { uint8 i=110; while(x--) while(i--); } void main() { uint8 i; while(1) { i=8; GPIO=0x01; do { delay_ms(1000); GPIO=GPIO
sbit p4=P1^4;
求C51程序(at89c51的流水燈)1,實(shí)現(xiàn)流水燈從一端依次亮起到另一端過(guò)程中,燈顯示速度越來(lái)越快。(要求使用定時(shí)器實(shí)現(xiàn))2,分別使用定時(shí)器工作方式0~工作方式2實(shí)現(xiàn)
sbit p5=P1^5;
#include "reg52.h" #include "intrins.h" int INTcount,flag; sbit P1^1=CLK; sbit P1^2=DAT; void main() { EA=1; ET0=1; TR0=1; DAT=1; while(1) { CLK=0; if(flag/7==0)DAT=1; else DAT=0; } } void timer() interrupt 1 { TH0=(65536-50000
sbit p6=P1^6;
#include void delay() { unsigned int i; for(i=0;i
sbit p7=P1^7;
假設(shè)P1口接8個(gè)LED燈,通過(guò)灌電流驅(qū)動(dòng)(即0亮1滅)。編譯器keil C代碼如下: #include #include //包含循環(huán)左移函數(shù) _cro_l頭文件 unsigned char tmp; //中間變量 ////////////////////////////////////////////////////////////////////////////
然后寫一個(gè)延時(shí)函數(shù),來(lái)調(diào)節(jié)流水燈的時(shí)間間隔延時(shí)時(shí)間自己定義
void time() interrupt 0 {delay(10); kc++; if(kc==4); kc=0; switch(kc) {case 0:mm=0xff;break; case 1:mm=0xfe;break; case 2:mm=0xf7;break; case 3:mm=0xfc;break; default:break; } IE0 = 0; /* 清除多余的中斷標(biāo)志 */ }
void mdelay(unsigned int t)
visual studio2012包括VB C C#等開(kāi)發(fā)語(yǔ)言用于電腦軟件開(kāi)發(fā),不能做單片機(jī)程序。單片機(jī)還是用keil好。
{
unsigned char n;
1滅)。編譯器keil C代碼如下: #include #include //包含循環(huán)左移函數(shù) _cro_l頭文件 unsigned char tmp; //中間變量 ////////////////////////////////////////////////////////////////////////////////////////////////// // 延時(shí)子程序 ////
for(;t>0;t--)
#include #define uchar unsigned char #define uint unsigned int void delay(uint); void main(void) { uint i; uchar temp; uint j while(1) { if(P3^0==0) { if(P3&0X1E==0x04;) { temp=0x01; for(i=0;i
for(n=0;n<125;n++)
搜索答案 我要提問(wèn) 哪位大蝦幫幫我用AT89C51單片機(jī)控制8個(gè)Led的流水燈的要求編寫用定時(shí)器T0中斷方式控制的鍵盤掃描程序,實(shí)現(xiàn)如下功能(1)按下S1鍵, P3
{;}
}
下面就是主函數(shù),包括流水燈的反復(fù)循環(huán)和j流水燈的方向。
流水燈的程序在百度知道里可以搜到無(wú)數(shù)的答案,有仿真圖加程序,即使不是在P1口,稍微改一下程序的輸出口就行了。
檢查沒(méi)有錯(cuò)誤,編譯一下。就可以進(jìn)行仿真了。
你的LED用錯(cuò)模型了,要用LED-RED 那幾個(gè)后面帶顏色的。 #include #include #define uint unsigned int #define uchar unsigned char uchar i,j; void delay(uint ms) { uchar k; while(ms--) for(k=0;k
擴(kuò)展閱讀,以下內(nèi)容您可能還感興趣。
求個(gè)51單片機(jī)at89c51心形流水燈,程序
這是一個(gè)比較全的程序,花樣較多,供參考。
#include<reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint k)
{
uinti,j;
for(i=k;i--;i>0)
for(j=100;j--;j>0);
}
void main()
{
uchartemp0,temp1;
ucharyi;
ucharyi0,yi1;
uinti,j,k,a,b;
j=k=a=b=3;
//全部亮
P0=P1=P2=P3=0x00;
delay(700);
P0=P1=P2=P3=0xff;
//每個(gè)io口獨(dú)自亮
for(i=2;i--;i>0)
{
P1=P0=0x00;
delay(500);
P1=P0=0xff;
P3=P2=0x00;
delay(500);
P3=P2=0xff;
}
//閃爍3次
for(i=2;i--;i>0)
{
P0=P1=P2=P3=0x00;
delay(100);
P0=P1=P2=P3=0xff;
delay(100);
}
//P1、P2亮,P3、P0暗
for(i=3;i--;i>0)
{
P1=0x00,P2=0x00; P3=0xff,P0=0xff;
delay(500);
P1=0xff,P2=0xff,P3=0x00,P0=0x00;
delay(500);
}
//四個(gè)點(diǎn)的流水
while(j>0)
{
temp0=0xfe,temp1=0x7f;
P1=P3=temp0,P2=P0=temp1;
delay(100);
for(i=7;i--;i>0)
{
temp0=_crol_(temp0,1),temp1=_cror_(temp1,1);
P1=P3=temp0,P2=P0=temp1;
delay(100);
}
j--;
}
//全部亮,閃三次
for(i=3;i--;i>0)
{
P0=P1=P2=P3=0x00;
delay(300);
P0=P1=P2=P3=0xff;
delay(300);
}
//四個(gè)IO口同樣跟蹤流水
while(k>0)
{
temp0=0xfe,temp1=0x7f;
P1=P3=temp0,P2=P0=temp1;
delay(60);
for(i=7;i--;i>0)
{
temp0=temp0<<1,temp1=temp1>>1;
P1=P3=temp0,P2=P0=temp1;
delay(60);
}
k--;
}
P0=P1=P3=P2=0xff;
while(k<3)
{
temp0=0x7f,temp1=0xfe;
P1=P3=temp0,P2=P0=temp1;
delay(60);
for(i=7;i--;i>0)
{
temp0=temp0>>1,temp1=temp1<<1;
P1=P3=temp0,P2=P0=temp1;
delay(60);
}
k++;
}
P3=P2=0xff;
//兩邊單個(gè)從上向下流水
yi=0xfe;
P1=P0=yi;
delay(50);
for(i=7;i--;i>0)
{
yi=_crol_(yi,1);
P1=P0=yi;
delay(50);
}
P1=P0=0xff;
yi=0xfe;
P3=P2=yi;
delay(50);
for(i=7;i--;i>0)
{
yi=_crol_(yi,1);
P3=P2=yi;
delay(50);
}
P3=P2=0Xff;
//兩邊單個(gè)返回流水
for(i=7;i--;i>0)
{
yi=_cror_(yi,1);
P3=P2=yi;
delay(50);
}
P3=P2=0xff;
for(i=7;i--;i>0)
{
yi=_cror_(yi,1);
P0=P1=yi;
delay(50);
}
//全部亮,閃三次
P0=P1=P3=P2=0xff;
for(i=3;i--;i>0)
{
P0=P1=P2=P3=0x00;
delay(100);
P0=P1=P2=P3=0xff;
delay(100);
}
//流水燈
yi0=0xfe,yi1=0x7f;
P3=P2=yi1,P1=P0=yi0;
delay(100);
for(i=7;i--;i>0)
{
yi0=yi0<<1, yi1=yi1>>1;
P1=P0=yi0,P3=P2=yi1;
delay(100);
}
P1=P2=P3=P0=0xff;
delay(200);
yi0=0x7f,yi1=0xfe;
P1=P0=yi0,P3=P2=yi1;
for(i=7;i--;i>0)
{
yi0=yi0>>1,yi1=yi1<<1;
P1=P0=yi0,P3=P2=yi1;
delay(100);
}
//大循環(huán)跟蹤流水
P1=P2=P3=P0=0xff;
for(i=8;i--;i>0)
{
P1=P1<<1;
delay(50);
}
for(i=8;i--;i>0)
{
P3=P3<<1;
delay(50);
}
for(i=8;i--;i>0)
{
P2=P2>>1;
delay(50);
}
for(i=8;i--;i>0)
{
P0=P0>>1;
delay(50);
}
//逆向大循環(huán)跟蹤流水
P1=P2=P3=P0=0xff;
for(i=8;i--;i>0)
{
P0=P0<<1;
delay(50);
}
for(i=8;i--;i>0)
{
P2=P2<<1;
delay(50);
}
for(i=8;i--;i>0)
{
P3=P3>>1;
delay(50);
}
for(i=8;i--;i>0)
{
P1=P1>>1;
delay(50);
}
//全部亮,閃三次
P0=P1=P3=P2=0xff;
for(i=4;i--;i>0)
{
P0=P1=P2=P3=0x00;
delay(100);
P0=P1=P2=P3=0xff;
delay(100);
}
//全部亮,只有一個(gè)暗的在流水
temp0=0x01,temp1=0x00;
P1=P0=temp0,P3=P2=temp1;
delay(100);
for(i=7;i--;i>0)
{
temp0=_crol_(temp0,1);
P1=P0=temp0;
delay(100);
}
P1=P0=0x00;
temp1=0x01;
P3=P2=temp1;
delay(100);
for(i=7;i--;i>0)
{
temp1=_crol_(temp1,1);
P3=P2=temp1;
delay(100);
}
//全部亮,逆向一個(gè)暗在流水
temp0=0x00,temp1=0x80;
P1=P0=temp0,P3=P2=temp1;
delay(100);
for(i=7;i--;i>0)
{
temp1=_cror_(temp1,1);
P3=P2=temp1;
delay(100);
}
P3=P2=0x00;
temp0=0x80;
P1=P0=temp0;
delay(100);
for(i=7;i--;i>0)
{
temp0=_cror_(temp0,1);
P1=P0=temp0;
delay(100);
}
//花樣
temp0=0xaa,temp1=0x55;
P1=P3=temp0,P2=P0=temp1;
delay(500);
for(;a--;a>0)
{
for(i=7;i--;i>0)
{
temp0=_crol_(temp0,1),temp1=_cror_(temp1,1);
P1=P3=temp0,P2=P0=temp1;
delay(500);
}
}
for(;b--;b>0)
{
temp0=0xee,temp1=0x77;
P1=P3=temp0,P2=P0=temp1;
delay(300);
for(i=7;i--;i>0)
{
temp0=_crol_(temp0,1),temp1=_cror_(temp1,1);
P1=P3=temp0,P2=P0=temp1;
delay(300);
}
}
//環(huán)形逐個(gè)亮
P1=P2=P3=P0=0xff;
for(i=8;i--;i>0)
{
P0=P0<<1;
delay(50);
}
for(i=8;i--;i>0)
{
P2=P2<<1;
delay(50);
}
for(i=8;i--;i>0)
{
P3=P3>>1;
delay(50);
}
for(i=8;i--;i>0)
{
P1=P1>>1;
delay(50);
}
//逐個(gè)熄滅e799bee5baa6e78988e69d8331333339663961
for(i=7;i--;i>0)
{
P0=~P0<<1;
P0=~P0;
delay(50);
}
P0=0xff;
for(i=7;i--;i>0)
{
P2=~P2<<1;
P2=~P2;
delay(50);
}
P2=0xff;
for(i=7;i--;i>0)
{
P3=~P3>>1;
P3=~P3;
delay(50);
}
P3=0xff;
for(i=7;i--;i>0)
{
P1=~P1>>1;
P1=~P1;
delay(50);
}
P1=0xff;
}
單片機(jī)流水燈程序
最低0.27元/天開(kāi)通百度文庫(kù)會(huì)員,可在文庫(kù)查看完整內(nèi)容>
原發(fā)布者:蔣455033051
流水燈程序閑來(lái)沒(méi)事,就總結(jié)一下流水燈的工作,用兩種語(yǔ)言實(shí)驗(yàn)C語(yǔ)言和匯編e799bee5baa6e79fa5e98193e4b893e5b19e31333433623739語(yǔ)言。學(xué)習(xí)單片機(jī)的第一個(gè)程序就是流水燈實(shí)驗(yàn)!學(xué)習(xí)語(yǔ)言的輸出的第一個(gè)程序就是helloword!這都是一個(gè)過(guò)程!我們知道單片機(jī)執(zhí)行的機(jī)器語(yǔ)言!匯編就是其執(zhí)行的根本的語(yǔ)言,任何程序的編譯最終還是要生成HEX語(yǔ)言,匯編語(yǔ)言~~!來(lái)回顯示,并且顯示時(shí)還會(huì)發(fā)出蜂嚀聲!P1口接八個(gè)發(fā)光二極管,P2.3接一個(gè)蜂嚀器!一.匯編語(yǔ)言movr7,#8main:movr0,#8;一個(gè)循環(huán)需要移動(dòng)8位movp1,#01111111b;初始為P0.7燈點(diǎn)亮loop:clrp2.3acallds1ms;延時(shí),以便人眼可以觀察到setbp2.3acallds1msmova,p1;讀P0口當(dāng)前顯示的數(shù)據(jù)送到Arra;將A中的數(shù)據(jù)循環(huán)右移1位movp1,a;再將A中右移過(guò)的數(shù)據(jù)送到P0djnzr0,loopdjnzr7,main;移動(dòng)不夠8位,跳到LOOP處循環(huán),ljmprel;流動(dòng)1遍跳轉(zhuǎn)到MAIN處循環(huán)流。;---顯示延時(shí)----------ds1ms:movr1,#1ds1lo:movr2,#200ds2lo:movr3,#200djnzr3,$djnzr2,ds2lodjnzr1,ds1loret;延時(shí)返回rel:end2.C語(yǔ)言#includeunsignedchari;unsignedchartemp;unsignedchara,b;voiddelay(void)//延時(shí)子程序{unsignedcharm,n,s;for(m=20;m>0;m--)for(n=20;n急求懂51單片機(jī)編程的C語(yǔ)言大神幫忙編一個(gè)AT89S52單片機(jī)有創(chuàng)意的8位流水燈程序
#include <reg51.h>
#define GPIO P1
#define uint8 unsigned char
#define uint16 unsigned int
void delay_ms(uint16 x)
{
uint8 i=110;
while(x--)
while(i--);
}
void main()
{
uint8 i;
while(1)
{ i=8;
GPIO=0x01;
do
{
delay_ms(1000);
GPIO=GPIO<<1;
i--;
}while(i);
}
}
一位百流水燈左移。前提度是你問(wèn)的等給一答的時(shí)候才亮。否者回把答GPIO改為oxfe。追問(wèn)設(shè)計(jì)的太簡(jiǎn)單了 設(shè)計(jì)要求是:依照所給單片機(jī)版,盡可能實(shí)現(xiàn)多種花樣不同的流水燈、狀態(tài)指示燈(例:按鍵一次,led1閃,按第二次,led2閃,led1點(diǎn)亮。以此類推),你能設(shè)計(jì)出來(lái)么?能的話給個(gè)QQ號(hào)唄追答這樣啊,你的硬件不也沒(méi)有鍵盤嗎,再說(shuō)按鍵你是要矩陣鍵盤還是獨(dú)立鍵盤。我的qq2561999818,不過(guò)不常在。
51單片機(jī):at89c51接74hc164寫流水燈
#include "reg52.h"
#include "intrins.h"
int INTcount,flag;
sbit P1^1=CLK;
sbit P1^2=DAT;
void main()
{
EA=1;
ET0=1;
TR0=1;
DAT=1;
while(1)
{
CLK=0;
if(flag/7==0)DAT=1;
else DAT=0;
}
}
void timer() interrupt 1
{
TH0=(65536-50000)/256;
TH0=(65536-50000)%256;
INTcount;
if(INTcount==20){CLK=1;INTcount=0;};
flag++;
}
74HC164就是個(gè)移zd位寄存器,假設(shè)你使用的版單片機(jī)是12M晶振,使用定時(shí)器1,并且LED是高電平點(diǎn)亮。那么程序如上,很簡(jiǎn)單,就是設(shè)置兩個(gè)標(biāo)志位再使用定時(shí)器中斷,權(quán)你每隔一秒發(fā)送一個(gè)數(shù)據(jù)給74HC164就可以了。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com