郭天祥单片机编程100例程序及随笔1——LED灯编程
2018-03-12 11:13
253 查看
1.一个待解决问题:
sbit led1 = P1^0;中,led1指的是第一个发光二极管,这是谁给它命名的?为什么单片机能找得到这个灯?
2.三个知识点:
2.1 P1口可以接led灯;点亮二极管 led1 = 0;加的是低电平。
2.2 延时函数。i,j定义为unsigned int类型,j那一段代码不变为110,需要延时多少ms,xms的值就设为多少,比如要延时500ms,i=500。其中j=110,网上的说法是一个for循环语句执行110次的时间为1ms,这个只是近似值,与单片机晶振和指令周期有关。void delay(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
} 2.3单片机_crol_函数。来自#include <intrins.h>文件库。aa = _crol_(aa,1);代表字符左移,用在小灯上可体现为——第一个小灯亮后,使用该函数,第一个小灯灭,第二个小灯亮。此外,第一个小灯是字符的低位。
3.led灯相关练习程序如下(网上下载的版本中有一些错误,自己编改正过来了):
点亮一个发光二极管
#include <reg52.h>
sbit led1 = P1^0;
void main()
{
led1 = 0;
}
点亮P1口的若干二极管
#include <reg52.h>
void main()
{
P1 = 0xaa;
whlie(1);
}
间隔1S亮灭闪动led灯
#include <reg52.h>
sbit led1 = P1^0;
unsigned int i,j;
void main()
{
while(1)
{
led1 = 0;//light the led1
for(i=1000;i>0;i--)
for(j=110;j>0;j--)
led1 = 1;
for(i=1000;i>0;i--)
for(j=110;j>0;j--)
}
}
间隔500ms闪动led灯,并采用调用函数的形式调用延时函数
#include <reg52.h>
sbit led1 = P1^0;
#define uint unsigned int
void delay();
void main()
{
while(1)
{
led1 = 0;//light the led1;
delay();
led1 = 1;
delay();
}
}
void delay()
{
uint i,j;
for(i = 500;i>0;i--)
for(j = 110;j>0;j--);
}
编写程序使得led灯以亮200ms灭800ms的方式闪动,并采用调用延时函数的方法
#include <reg52.h>
#define uint unsigned int
sbit led1 = P1^0;
void delay(uint xms);
void main()
{
while(1)
{
led1 = 0;
delay(200);
led1 = 1;
delay(800);
}
}
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
利用C51自带库_crol_(),以间隔500ms,实现流水灯控制
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar = aa;
void delay();
void main()
{
aa = 0xfe;
whlie(1)
{
P1 = aa;
delay();
aa = _crol_(aa,1);
}
}
void delay()
{
uint i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}
sbit led1 = P1^0;中,led1指的是第一个发光二极管,这是谁给它命名的?为什么单片机能找得到这个灯?
2.三个知识点:
2.1 P1口可以接led灯;点亮二极管 led1 = 0;加的是低电平。
2.2 延时函数。i,j定义为unsigned int类型,j那一段代码不变为110,需要延时多少ms,xms的值就设为多少,比如要延时500ms,i=500。其中j=110,网上的说法是一个for循环语句执行110次的时间为1ms,这个只是近似值,与单片机晶振和指令周期有关。void delay(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
} 2.3单片机_crol_函数。来自#include <intrins.h>文件库。aa = _crol_(aa,1);代表字符左移,用在小灯上可体现为——第一个小灯亮后,使用该函数,第一个小灯灭,第二个小灯亮。此外,第一个小灯是字符的低位。
3.led灯相关练习程序如下(网上下载的版本中有一些错误,自己编改正过来了):
点亮一个发光二极管
#include <reg52.h>
sbit led1 = P1^0;
void main()
{
led1 = 0;
}
点亮P1口的若干二极管
#include <reg52.h>
void main()
{
P1 = 0xaa;
whlie(1);
}
间隔1S亮灭闪动led灯
#include <reg52.h>
sbit led1 = P1^0;
unsigned int i,j;
void main()
{
while(1)
{
led1 = 0;//light the led1
for(i=1000;i>0;i--)
for(j=110;j>0;j--)
led1 = 1;
for(i=1000;i>0;i--)
for(j=110;j>0;j--)
}
}
间隔500ms闪动led灯,并采用调用函数的形式调用延时函数
#include <reg52.h>
sbit led1 = P1^0;
#define uint unsigned int
void delay();
void main()
{
while(1)
{
led1 = 0;//light the led1;
delay();
led1 = 1;
delay();
}
}
void delay()
{
uint i,j;
for(i = 500;i>0;i--)
for(j = 110;j>0;j--);
}
编写程序使得led灯以亮200ms灭800ms的方式闪动,并采用调用延时函数的方法
#include <reg52.h>
#define uint unsigned int
sbit led1 = P1^0;
void delay(uint xms);
void main()
{
while(1)
{
led1 = 0;
delay(200);
led1 = 1;
delay(800);
}
}
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
利用C51自带库_crol_(),以间隔500ms,实现流水灯控制
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar = aa;
void delay();
void main()
{
aa = 0xfe;
whlie(1)
{
P1 = aa;
delay();
aa = _crol_(aa,1);
}
}
void delay()
{
uint i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}
相关文章推荐
- 郭天祥单片机编程100例程序及随笔3——定时器编程
- 郭天祥单片机编程100例程序及随笔2——数码管编程
- 51单片机教程单片机视频教程单片机自学学习入门C语言郭天祥单片机编程入门AD/DA工作原理运放电路
- 单片机定时驱动led程序2--c语言实现
- 单片机的led跑马灯程序
- 51单片机8*8点阵LED显示原理及程序
- 单片机LED数码电路和C程序
- CT107D蓝桥杯单片机编程LED(1)
- 用STM8单片机的定时器实现一个检测几路LED中出现故障程序
- 点亮单片机世界的第一盏灯——LED程序
- 【单片机】[LED]:LED 不用频率闪烁的程序
- C51 语言编程:单片机与 PC 串口通信程序
- IAR开发环境的搭建以及CC2530单片机程序编程实验
- STM32移植contiki入门之三:从LED灯程序到contiki编程模型
- 单片机程序下载,LED灯
- 单片机小白学步系列(十四) 点亮第一个LED的程序分析
- 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础
- ARM嵌入式编程(无操作系统、基于MDK)之最简单的程序:点亮一个LED灯
- 一个经典的控制Led的单片机程序
- JAVA 并发编程随笔【六】线程的竞态条件与临界区