(P0一般接10K的上拉电阻,此图复位电路没给出)
当然,有些比较有心的同学会做些有花样的,如这种“心”形的流水灯
下面试代码:
(1)用总线的方法实现流水灯
#include
#define uchar unsigned char
#define uint unsigned int
uchartable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay(uint xms) //延时约1ms
{
uintx,y;
for(x=110;x>0;x--)
for(y=xms;y>0;y--);
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
P0=table[i];
delay(500);
}
}
}
(2)移位实现流水灯
#include
#define uchar unsigned char
#define uint unsigned int
void delay(uint xms) //延时约1ms
{
uintx,y;
for(x=110;x>0;x--)
for(y=xms;y>0;y--);
}
void main()
{
uchar a,i;
while(1)
{
a=0xfe;
for(i=0;i<8;i++)
{
P0=a;
a=a<<1;
a=a|0x01;
delay(500);
}
}
}
(3)用库函数实现流水灯
#include
#include//此头文件包含移位函数
#define uchar unsigned char
#define uint unsigned int
void delay(uint xms) //延时约1ms
{
uint x,y;
for(x=110;x>0;x--)
for(y=xms;y>0;y--);
}
void main()
{
uint a;
a=0xfe;
while(1)
{
P2=a;
a=_crol_(a,1);
delay(500);
}
}
关键字:流水灯 上拉电阻
引用地址:
3种方法实现流水灯
推荐阅读最新更新时间:2024-03-16 14:02
GPIO输出---LED流水灯(EasyARM2131)
/****************************************Copyright (c)******************* **--------------File Info------------------------------------------------ ** File name: main.c ** Last modified Date: 2011/04-09 ** Last Version: 1.0 ** Descriptions: The main() function example template ** **------------------------------------
[单片机]
PIC16F877A流水灯Proteus仿真程序
单片机源程序如下: //流水灯 #include pic.h //头文件 __CONFIG(0xff32); //配置熔丝位 //延时函数 void delay(unsigned int x) { unsigned int i,j; for(i=0;i x;i++) for(j=0;j 100;j++); } //主函数 void main() { unsigned char i,a; //设置变量 TRISB=0; //设置端口B为输出 PORTB=0;
[单片机]
ARM9(S3C2440)的IO口--LED流水灯
概述 S3C2440A 包含了130 个多功能输入/输出口引脚并且它们为如下显示的八个端口: 端口A(GPA):25 位输出端口 端口B(GPB):11 位输入/输出端口 端口C(GPC):16 位输入/输出端口 端口D(GPD):16 位输入/输出端口 端口E(GPE):16 位输入/输出端口 端口F(GPF):8 位输入/输出端口 端口G(GPG):16 位输入/输出端口 端口H(GPH):9 位输入/输出端口 端口J(GPJ):13 位输入/输出端口 每个端口都可以简单的由软件配置为各种系统配置和设计要求。你必须在开始主程序前定义使用的每个引脚的功能。如果没有使用某个引脚的复用功能,这个引脚可
[单片机]
怎么解决引脚单片机的上拉电阻问题?
单片机 的引脚,可以用程序来控制,输出高、低电平,这些可算是单片机的输出电压。 但是,程序控制不了单片机的输出电流。单片机的输出电流,很大程度上是取决于引脚上的外接器件。 单片机输出低电平时,将允许外部器件,向 单片机 引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”; 单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”。 这些电流一般是多少?最大限度是多少?这就是常见的单片机输出驱动能力的问题。 早期的 51 系列单片机的带负载能力,是很小的,仅仅用“能带动多少个 TTL 输入端”来说明的。 P1、P2 和 P3口,每个引脚可以都带动 3 个
[电源管理]
基于MINI2440开发板的LED流水灯实验(含init.s)
晚上看完了S3C2140A的GPIO开发部分,然后对着2440的数据手册写了个LED的小程序,总结下,程序如下: 初始化部分程序: Init.s IMPORT Main CODE32 AREA Init,CODE,READONLY ENTRY ldr r0, =0x53000000 ;关门狗 mov r1, #0x0 str r1, ;关闭关门狗 ldr sp, =1024*4 ;设置堆栈,由于main函数里调用了其他函数,所以一定要设置堆栈 bl Main main
[单片机]
51单片机P0口什么时候使用上拉电阻?
P0口作为I/O口输出的时候时,输出低电平为0 输出高电平为高组态(并非5V,相当于悬空状态,也就是说P0 口不能真正的输出高电平)。给所接的负载提供电流,因此必须接上拉电阻(一电阻连接到VCC),由电源通过这个上拉电阻给负载提供电流。 P0作输入时不需要上拉电阻,但要先置1。因为P0口作一般I/O口时上拉场效应管一直截止,所以如果不置1,下拉场效应管会导通,永远只能读到0。因此在输入前置1,使下拉场效应管截止,端口会处于高阻浮空状态,才可以正确读入数据。 由于P0口内部没有上拉电阻,是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部的电路提供,绝大多数情况下P0口是必需加上拉电阻的。 1.一般51单片机的P
[单片机]
PIC16F628A LED流水灯示例程序
#include p IC .h __CONFIG(0x3f38); //看门狗关,内部RC震荡,RA6/RA7做I/O //----------------------------------- //延时函数 void delay() { int i; //定义循环变量 for(i=5000;i 0;i--) //循环次数控制 { NOP(); //消耗一个指令 周期 的时间 NOP(); } } //---------------------------------- //初始化函数 void init() { T
[单片机]
按键控制单片机改变流水灯速度
/* 程序效果:有三个按键,按下其中任意一个流水灯的速度改变 */ #include reg52.h //52系列单片机的头文件 #define uchar unsigned char//宏定义 #define uint unsigned int uchar count=40,flag=0; //定义刚开始的流水灯的速度,后一个为标志变量 void main() { uchar i=0;//定义局部变量 EA=1; //打开总中断 ET0=1; //打开定时器 TR0=1; //启动定时器 TH0=(65536-50000)/256; //装初值 TL0=(65536-50000)%256; P2=
[单片机]