单片机LED流水灯闪烁灯程序大集合

发布者:Ampoule最新更新时间:2012-08-15 来源: 51hei关键字:单片机  LED  流水灯  闪烁灯 手机看文章 扫描二维码
随时随地手机看文章
/*
点亮LED灯:方1  位操作方式   sbit D1=P1^0;
    方2  总线方工     P1=0x??;
让LED灯闪烁
*/
/*
//方1:位操作方式点亮LED
#include
sbit  D1=P1^0;      //P1^0的P必须是大写
void main()
{
    D1=0;        //使用P1^0必须先经过sbit定义,而不能直接用P1^0=0;否则编译过不了
}
*/

//-------------------------------------------------
:总线方式点亮LED
#include
void main()
{
    P1=0xfd;         //1111 1100 LED是共阳的,低电平时点亮,
所以就是LED1和2灯被点亮
}
*/

//-------------------------------------------------------------
/* 让LED灯闪烁    采用位点亮+内部循环进行延时
#include 
sbit D1=P1^3;              //随便一个你也可改为P1^0,注意P要大写的才可以
unsigned int a;
void main()
{
D1=0;
for (a=0;a<=20000;a++) {};       //for循环 {}空操作即可形成延时效果
D1=1;
for (a=0;a<=20000;a++) {};
}
*/

//--------------------------------------------------------------
/*
//让LED灯闪烁    采用位方式+delay延时函数方式
#include 
sbit D1=P1^0;    //位操作方式
unsigned int a;
void delay(int x)         //延时
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void  main()
{
D1=0;
delay(50);           //调用延时
D1=1;
delay(50);
/
}
*/

//-----------------------------------------------
/*
//让3个灯一起闪烁  ,采用总线方式
#include
unsigned int a;
void delay(int x)          //延时
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
P1=0xf8;             //1111 1000,点亮前3个灯,3个灯一起闪烁
delay(500);
P1=0xff;
delay(500);
}
*/

//----------------------------------------------------
/*
//让LED灯闪烁   采用wlile方式
#include 
sbit P10=P1^0;
int a;
void main()
{
while(1)
  {
     a=51000;
     P10=0;         //点亮灯
     while(a--);    //程序停在这里,一直执行减法,直到a从51000减到0后退出循环,
这就形成延时
     a=5100;      //前面a已经减成0了,这里再给它个初值
     P10=1;
    while(a--);    //又从初值51000减到0为止,形成延时效果
}
}
*/
//-----------------------------------------------------------
/*
//流水灯 ,在PIC单片机里流水灯只要设整个端的0x??
值然后采用端口值=端口值<<1左移1位即可形成流水灯
//而在52单片机里却不行,得用_crol关皱字,
而这个关键字又是在另一头文件intrins.h里,所以在开头就得先包含它_
#include 
#include      //因为要用到corol这一关键字
#define uchar unsigned char
sbit P23=P2^3 ;
sbit D1=P1^0;
void delay(int x)
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
uchar a,temp;
temp=0xfe;
  for (a=8;a>0;a--)   //循环8次,即流水灯8个循环8次即可点亮8个
      {
        P1=temp;
       temp=_crol_(temp,1); //移动
      delay(100);
     }
}
*/

//--------------------------------------------------------------

//流水灯 :正流+倒流;在PIC里流水灯只要设整个端的0x??
值然后采用端口值=端口值<<1左移1位即可形成流水灯
//而在52单片机里却不行,得用_crol关皱字,
而这个关键字又是在另一头文件intrins.h里,所以在开头就得先包含它
#include 
#include      //因为要用到corol这一关键字
#define uchar unsigned char
sbit P23=P2^3 ;
sbit D1=P1^0;
void delay(int x)
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
uchar a,temp;
temp=0xfe;
  for (a=8;a>0;a--)   //循环8次,即流水灯8个循环8次即可点亮8个
     {
      P1=temp;
      temp=_crol_(temp,1); //移动
      delay(100);
     }
temp=0x7f;              //注意这一句,
如果没有这一句,下面的语句循环是循环了,却没东西出来
    for (a=8;a>0;a--)   //循环8次,即流水灯8个循环8次即可点亮8个
   {
     P1=temp;
    temp=_crol_(temp,-1); //移动
     delay(100);
   }
} 
关键字:单片机  LED  流水灯  闪烁灯 引用地址:单片机LED流水灯闪烁灯程序大集合

上一篇:I2C串行总线的操作程序
下一篇:4*3矩阵按键程序

推荐阅读最新更新时间:2024-03-16 13:05

16*64LED点阵时钟(移动+翻页显示)单片机源程序
单片机源码: /*********************************************************** 名称: 16*64点阵 MCU: STC89C52 晶振: 22.1184M 时间: 外部器件: 16*64点阵,ds1302 接线: 见DS1302.h,DS18B20.h和本主文件 ***********************************************************/ #include REGX52.H #include DS1302.h #i
[单片机]
16*64<font color='red'>LED</font>点阵时钟(移动+翻页显示)<font color='red'>单片机</font>源程序
直接使用单片机的USART发送数据
一、使用USART发送数据   我们在写单片机程序的时候,在Debug时,往往要用到串口输出信息,这是会使用printf打印出我们想要的信息来,但是printf有一个弊端,就是输出打印时间较长。这样在一些对时间精度要求非常高的场合,使用printf将会带来一系列问题,这时,如果使用单片机的USART自定义一个协议,直接发送数据到上位机,将会得到我们想要的效果。下面对怎样使用USART发送数据做一个整理。 1、发送单个字符 void USART1_PutChar(u8 ch) { USART_SendData8(USART1,(u8)ch); while(USART_GetFlagStatus(USART1,USART_
[单片机]
基于AT89S52单片机的电子闹钟设计
一、系统功能要求 电脑时钟的任务要求为:系统一运行就从00点00分00秒开始计时,并在数码管上显示时、分、秒当前值。 二、系统整体方案 1、明确任务 基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;六个数码管动态显示时、分、秒的当前值。 2、 硬件和软件功能的划分 本课题要求实现的功能比较简单。百分之一秒的控制由at89s51的定时器T0完成;百分之一秒寄存器的内容加一由T0中断完成;动态显示、矩阵式键盘。 整体框图如下: 1. 单片机的选择 AT89S52,它是一个低电压,高性能CMOS8位单片机,内含4k bytes的可反复擦鞋的制度程序存储器(PEROM)和128
[单片机]
基于AT89S52<font color='red'>单片机</font>的电子闹钟设计
平凡单片机教学 第十九讲 定时/计数器实验2
前面我们做了定时器的实验,现在来看一看计数实验,在工作中计数通常会有两种要求:第一、将计数的值显示出来,第二、计数值到一定程度即中断报警。第一种如各种计数器、里程表,第二种如前面例中讲到的生产线上的计数。先看第一种吧。我们的硬件中是这样连线的:324构成的振荡器连到定时/计数器1的外部引脚T1上面,我们就利用这个来做一个计数实验,要将计数的值显示出来,当然最好用数码管了,可我们还没讲到这一部份,为了避免把问题复杂化,我们用P1口的8个LED来显示计到的数据。 程序如下: ORG 0000H AJMP START ORG 30H START: MOV SP,#5FH MOV TMOD,#01000000
[单片机]
大陆LED企业如何防范专利“大棒”
当前的照明产业正面临着一场变革,LED以其优良的性能和广阔的应用前景成为目前发展最快的照明技术之一。创新是实现产业发展的最主要推动力,加强LED照明产业的自主创新能力,加快技术创新步伐,增强中国LED照明产业的核心竞争力,成为摆在我们面前的严峻挑战。 核心专利匮乏面临侵权风险 专利储备不足会使中国企业在市场竞争中丧失主动权。 从国际LED照明产业竞争布局来看,目前美国、东亚、西欧三足鼎立,高端产品市场被少数的国际公司占据,整个产业的布局在逐步成形。LED产业的核心专利技术主要掌握在日亚、飞利浦等大公司的手中。目前来看,国外的一些大企业不仅是在专利数量上,在品质上也占据绝对的优势。国家智慧财产权局保护协调司司长张志成告诉
[电源管理]
51单片机的延时子程序
延时程序在单片机编程中使用非常广泛,但一些读者在学习中不知道延时程序怎么编程,不知道机器周期和指令周期的区别,不知道延时程序指令的用法, ,本文就此问题从延时程序的基本概念、机器周期和指令周期的区别和联系、相关指令的用法等用图解法的形式详尽的回答读者 我们知道程序设计是单片机开发最重要的工作,而程序在执行过程中常常需要完成延时的功能。例如 在交通灯的控制程序中,需要控制红灯亮的时间持续30秒,就可以通过延时程序来完成。延时程序是如何实现的呢?下面让我们先来了解一些相关的概念。 一、机器周期和指令周期 1.机器周期是指单片机完成一个基本操作所花费的时间,一般使用微秒来计量单片机的运行速度,51 单片机的一个机器周期包
[单片机]
51单片机 步进电机旋转角度控制
#include reg52.h typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; uchar code beatCode = { 0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6 }; ulong beats = 0; uchar T0RH = 0, T0RL = 0; void turnMotor(ulong angle){ EA = 0; beats = angle * 4076 / 360;
[单片机]
微控制器的FSMC到底是咋回事?(下)
摘要:上一篇文章我们具体讲解了FSMC的原理配置,这一章主要是关于使用FSMC的SRAM初始化流程,以及使用STM32CubeMX对FSMC进行配置。 一、SRAM初始化流程 通过上面的讲解,通过对 FSMC 相关的寄存器的描述,大家对 FSMC 的原理有了一个初步的认识,如果还不熟悉的朋友,请一定要搜索网络资料理解FSMC的原理。只有理解了原理,使用库函数才可以得心应手。那么在库函数中是怎么实现FSMC的配置的呢?FSMC_BCRx,FSMC_BTRx 寄存器在库函数是通过什么函数来配置的呢?下面我们来讲解一下 FSMC 相关的库函数: 1.1 使能FSMC时钟 要使用FSMC,当然首先得开启其时钟。然后需要把
[单片机]
<font color='red'>微控制器</font>的FSMC到底是咋回事?(下)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved