第二讲51单片机入门与流水灯程序编写

合集下载

51单片机流水灯程序

51单片机流水灯程序

51单片机流水灯程序51单片机是一种广泛使用的微控制器,具有丰富的IO端口和定时器资源。

流水灯程序是51单片机入门的基础示例之一,通过多个LED灯按照一定顺序逐个亮起或熄灭,形成流水灯的效果。

下面详细介绍51单片机流水灯程序的编写。

一、硬件连接要实现流水灯效果,需要将多个LED灯连接到51单片机的IO端口上。

一般使用P1端口作为输出端口控制LED灯的亮灭,P2端口作为输出口控制LED灯亮起的顺序。

具体连接方式如下:•将LED灯的阳极通过限流电阻连接到VCC。

•将每个LED灯的阴极通过限流电阻连接到P1端口。

•将P2端口的每个引脚依次连接到每个LED灯的阴极。

二、程序实现#include <reg52.h> //包含51单片机头文件#define LED P1 //定义LED为P1端口#define ORDER P2 //定义顺序控制为P2端口void delay(unsigned int t); //延时函数声明void main(){unsigned char i;while(1) //循环控制流水灯效果{for(i=0; i<8; i++) //控制8个LED灯{LED = 0x01<<i; //将第i个LED灯置亮delay(10000); //延时一段时间,使LED灯亮起后延时熄灭LED = 0x01>>(i+1); //将第i个LED灯置灭}}}void delay(unsigned int t) //延时函数定义{unsigned int i, j;for(i=0; i<t; i++){for(j=0; j<1275; j++);}}该程序首先定义了LED和ORDER两个变量,分别对应P1和P2端口的输出口。

在主函数中,使用一个while循环控制流水灯效果。

在循环内部,使用一个for循环控制8个LED灯的状态。

在每次循环中,先将第i个LED灯置亮,延时一段时间后将其置灭,然后进入下一个循环。

(完整版)51单片机流水灯程序

(完整版)51单片机流水灯程序

1.第一个发光管以间隔200ms 闪烁。

2.8 个发光管由上至下间隔1s 流动,其中每个管亮500ms, 灭500ms 。

3.8 个发光管来回流动,第个管亮100ms 。

4.用8 个发光管演示出8 位二进制数累加过程。

5.8 个发光管间隔200ms 由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁 5 次。

重复此过程。

6.间隔300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到8 个管亮,然后重复整个过程。

7.间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。

1#include<reg52.h>#define uint unsigned intsbit led 仁P"0;void delay();void main(){while(1){led1=0;delay();led1=1;delay();}}void delay(){uint x,y;for(x=200;x>0;x--) for(y=100;y>0;y--);}#include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit p P1A0; uchar a;void delay(); void main() {a=0xfe;P1=a;while(1){ a=_crol_(a,1); delay();P1=a; delay();}}void delay(){uint b; for(b=55000;b>0;b--);}3#include<reg52.h>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void delay() {uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--);}void main() {uchar a,i;while(1)a=0xfe; for(i=0;i<8;i++){P1=a; delay(100); a=_crol_(a,1);}a=0x7f; for(i=0;i<8;i++){P1=a; delay(100); a=_cror_(a,1);4#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint a) { uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);}void main() {uchar b;while(1){b++;P1=~b; delay(200);5#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void main() { uchar a,i,j;while(1){ for(j=0;j<2;j++){a=0xfe; for(i=0;i<8;i++){P1=a;delay(200); a=_crol_(a,1);}a=0x7f; for(i=0;i<8;i++){P1=a; delay(200); a=_cror_(a,1);}}P1=0xff; for(j=0;j<10;j++) {delay(300);P1=~P1;}}}void delay(){uint x,y; for(x=200;x>0;x--) for(y=110;y>0;y--); 6 #include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(){uint x,y; for(x=300;x>0;x--) for(y=110;y>0;y--);} void main(){uchar a,i,j; while(1) {a=0xfe; for(j=0;j<8;j++) { for(i=0;i<8-j;i++) {P1=a; delay(200); a=_crol_(a,1);} a=_crol_(a,j); P1=0xff; a=a<<1;}} }7#include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint z){uint x,y; for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){uchar a,i,j;for(j=0;j<3;j++){P1=0x55;delay(300);P1=0xaa; delay(300);}for(j=0;j<3;j++){a=0xfe;for(i=0;i<8;i++){P1=a;delay(300); a=_crol_(a,1);}}P1=0xff; for(j=0;j<3;j++){P1=0x7e;delay(300);P1=0xbd; delay(300);P1=0xdb; delay(300);P1=0xe7; delay(300);}P1=0xff;for(j=0;j<3;j++){P1=0xe7;delay(300);P1=0xdb;delay(300);P1=0xbd;delay(300);P1=0x7e;delay(300);}P1=0xff; for(j=0;j<6;j++) {P1=~P1; delay(300);}P1=0xff;while(1);}。

第二讲 51单片机入门与流水灯程序的编写

第二讲  51单片机入门与流水灯程序的编写

处理器
一、认识51单片机
常见51单片机封装
一、认识51单片机
51单片机实验板
一、认识51单片机
一、认识51单片机
一、认识51单片机
引脚的简单介绍
1、电源和时钟引脚。如Vcc、GND、XTAL1、XTAL2… 2、编程控制引脚。如RST、PSEN、EA…… 3、I/0口引脚。如P0、P1、P2、P3……
具体教程今晚会在群里面公布 敬请关注!!
三、51单片机基础编程
1、编写正确的C程序。 2、C程序的编译 3、将生成的.hex文件下载进单片机
点亮发光二极管
让它亮起来!! #include <reg52.h> sbit led1=P0^0; void main() { led1=0; } //52系列单片机头文件 //声明单片机P0口第一位
4、点击下载程序,立马给单片机供电。 5、程序下载完成。
你的灯亮啦!!
让它闪起来!!
知识点
4、C语言中的数据类型 基本数据类型: short int、long int、char、float、 double…… char:字符型,占用一个字节,范围0~256
int:整型 ,keil中占用两个字节,范围0~65536
//主函数
//点亮第一个LED灯
知识点
1、reg52.h
在代码中引用头文件,其作用在于将这个头文件的 内容放在引用头文件的位置处,免去每次编写同类 程序都要将头文件中语句重复编写。 头文件的两种书写方法: #include <reg52.h> #include "reg52.h"
知识点
2、C语言注释的写法 (1)//注释语句
一、认识51单片机

51单片机流水灯C程序

51单片机流水灯C程序

P0口控制,先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;不过这个程序实现的应该是这样的先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动;再从中间往两边流动(延时0."1s)#include<reg52."h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharvoiddelay();voidmain(){uchartemp,temp1,temp2,a,b;while(1){for(b=3;b>0;b--){temp=0xaa;P0=temp;delay();temp=0x55;P0=temp;delay();}for(a=3;a>0;a--){temp=0xfe;for(b=7;b>0;b--){P0=temp;temp=_crol_(temp,1);delay();P0=temp;delay();}}temp1=0xfe;temp2=0x7f;for(a=8;a>0;a--){temp=temp1&temp2;P0=temp;delay();temp1=_crol_(temp1,1);temp2=_cror_(temp2,1);}}}voiddelay(){uinta,b;for(a=100;a>0;a--)for(b=100;b>0;b--);}程序实现的第2种方法:实现单片机led流水灯从中间向两边,从两边向中间的效果,下面的程序就是实现思路,这个是直接调用,应该明白吧,数组那其实也可以改一下,如采用一维数组,在多次调用;也可以采用二维数组。

-----------------------------------------------------#include<reg#defineuintunsignedint#defineucharunsignedcharucharTABLE[]={0xFF,0xE7,0xC3,0x81,0x00,//从中间向两侧点亮0xFF,0xE7,0xC3,0x81,0x00,0xFF,0xE7,0xC3,0x81,0x00,0xFF,0x7E,0x3C,0x18,0x00,//从两侧向中间点亮0xFF,0x7E,0x3C,0x18,0x00,0xFF,0x7E,0x3C,0x18,0x00};uchari;DELAY(){uints;for(s=0;s<300;s++);}main(){while(1){if(TABLE[i]!=0x01&TABLE[i]!=0x33){P0=TABLE[i]; i++;DELAY();}else{i=0;}}}*程序详细功能介绍:*利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0."2秒)。

实验二.51单片机点亮流水灯

实验二.51单片机点亮流水灯

硬件连接
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
#include<reg52.h> sbit A0=P1^0;//位地址声明 sbit A1=P1^1; sbit A2=P1^2; sbit A3=P1^3; sbit ENLED=P1^4; unsigned char LED[8]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};//定义无符号字符型一维数组LED的8个初值 void main() { ENLED=0; A3=1; unsigned int i=0;//无符号整形I,并赋初值0 while(1) { P1=LED[0]; for(i=0;i<30000;i++); P1=LED[1]; for(i=0;i<30000;i++); P1=LED[2]; for(i=0;i<30000;i++); P1=LED[3]; for(i=0;i<30000;i++); P1=LED[4]; for(i=0;i<30000;i++); P1=LED[5]; for(i=0;i<30000;i++); P1=LED[6]; for(i=0;i<30000;i++); P1=LED[7]; for(i=0;i<30000;i++); } }
• 表达式1首先执行一次且只执行一次;然后 执行表达式2,通常都是一个判断条件的表 达式,如果表达式2成立,就执行(要执行 的语句);然后再执行表达式3。。。。一 直到表达式2不成立时,跳出循环继续执行 循环语句。

多种方法写出的51单片机流水灯C语言程序

多种方法写出的51单片机流水灯C语言程序

目录流水灯最原始 (1)流水灯位左移 (3)流水灯移位函数 (4)流水灯数组 (5)流水灯精确定时器 (6)流水灯最原始#include "reg51.h"sbit p0=P1^0;sbit p1=P1^1;sbit p2=P1^2;sbit p3=P1^3;sbit p4=P1^4;sbit p5=P1^5;sbit p6=P1^6;sbit p7=P1^7;voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){while(1){P1=0;p0=1;mdelay(1000);p0=0;p1=1;mdelay(1000);p1=0;p2=1;mdelay(1000);p2=0;p3=1;mdelay(1000);p3=0;p4=1;mdelay(1000);p4=0;p5=1;mdelay(1000);p5=0;p6=1;mdelay(1000);p6=0;p7=1;mdelay(1000);p7=0;}}流水灯位左移#include "reg51.h"voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char i;unsignedint led;while(1){led=0xfe;for(i=0;i<8;i++){P1=led;mdelay(1000);led=led<<1;led=led|0x01;}}}流水灯移位函数#include "reg51.h"#include "intrins.h"voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char led;led=0x01;while(1){P1=led;led=_crol_(led,1);mdelay(1000);}}流水灯数组#include "reg51.h"unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; voidmdelay(unsigned int t){unsigned char n;for(;t>0;t--)for(n=0;n<125;n++){;}}void main(){unsigned char i;while(1){for(i=0;i<8;i++){P1=table[i];mdelay(1000);}}}流水灯精确定时器#include "reg51.h"#include "intrins.h"unsignedint count=0,led;void main(){P1=0x00;led=0x01;EA=1;ET0=1;TMOD=0x01;TH0=0x3c;TL0=0xb0;TR0=1;for(;;){;}}voidbiao() interrupt 1{count++;if(count==20){count=0;P1=led;led=_crol_(led,1);}TH0=0x3c;TL0=0xb0;}。

单片机流水灯程序

单片机流水灯程序

单片机流水灯程序流水灯是一种简单而常见的电子技术实验项目,也是学习掌握单片机编程的基本操作之一。

本文将介绍如何使用C语言编写单片机流水灯程序,并通过Markdown文本格式输出。

硬件准备在开始编写流水灯程序之前,我们需要准备以下硬件设备:1.单片机开发板(如:Arduino、STM32等)2.LED灯(可根据自己的需求选择,一般使用红色、黄色、绿色等常见颜色的LED灯即可)3.杜邦线(用于连接单片机和LED灯)程序编写引入头文件首先,我们需要引入相应的头文件,以便使用单片机相关的功能库和定义常量。

#include <Arduino.h>定义引脚接下来,我们需要定义引脚,将LED灯的接口与开发板的引脚连接起来。

#define LED_PIN_1 2#define LED_PIN_2 3#define LED_PIN_3 4#define DELAY_TIME 500在这个例子中,我们使用了3个LED灯,分别连接到开发板的2、3、4号引脚。

DELAY_TIME用于控制每个灯亮起的时间间隔,单位是毫秒。

初始化引脚在进入主程序之前,我们需要对引脚进行初始化,设置引脚的输出模式。

void setup() {pinMode(LED_PIN_1, OUTPUT);pinMode(LED_PIN_2, OUTPUT);pinMode(LED_PIN_3, OUTPUT);}主程序接下来就是我们的主程序部分,我们可以使用循环语句来实现LED灯的流水效果。

void loop() {digitalWrite(LED_PIN_1, HIGH);delay(DELAY_TIME);digitalWrite(LED_PIN_1, LOW);digitalWrite(LED_PIN_2, HIGH);delay(DELAY_TIME);digitalWrite(LED_PIN_2, LOW);digitalWrite(LED_PIN_3, HIGH);delay(DELAY_TIME);digitalWrite(LED_PIN_3, LOW);}在这个例子中,我们依次点亮每个LED灯,并延迟一定的时间后熄灭,然后依次点亮下一个LED灯,以此循环。

51单片机爱心流水灯原理及制作

51单片机爱心流水灯原理及制作

51单片机爱心流水灯原理及制作引言:在现代科技发展的背景下,电子产品已经成为我们生活中不可或者缺的一部份。

而作为电子制作的入门级项目,流水灯因其简单而受到泛博爱好者的爱慕。

本文将介绍使用51单片机制作爱心流水灯的原理及制作过程。

1. 原理介绍:爱心流水灯是一种特殊的流水灯效果,通过控制LED灯的亮灭顺序和时间间隔,形成一个爱心图案在LED灯带上流动的效果。

其原理基于51单片机的GPIO (通用输入输出)口控制LED灯的亮灭,通过改变LED灯的状态来实现流动效果。

2. 材料准备:制作爱心流水灯所需的材料如下:- 51单片机开辟板- LED灯带- 面包板- 杜邦线- 电阻- 电容- 电源适配器3. 硬件连接:首先,将51单片机开辟板和面包板连接起来。

然后,将LED灯带连接到面包板上,确保正极和负极正确连接。

接下来,通过杜邦线将51单片机的GPIO口与LED灯带连接起来。

最后,将电阻和电容连接到电路中,以保护电路免受过电流和过电压的伤害。

4. 软件编程:使用Keil C编译器进行软件编程。

首先,需要定义LED灯带的控制引脚,并初始化为输出模式。

然后,编写程序来控制LED灯的亮灭顺序和时间间隔。

在本例中,我们将使用循环语句和延时函数来实现流水灯效果。

通过改变LED灯的状态和延时时间,可以形成一个爱心图案在LED灯带上流动的效果。

5. 程序调试:将编写好的程序下载到51单片机开辟板上,并连接电源适配器。

打开开关,LED灯带上的爱心流水灯效果就会开始显示出来。

如果浮现问题,可以通过调试程序和检查硬件连接来解决。

6. 制作扩展:如果你对爱心流水灯的效果满意,你还可以进一步扩展你的制作。

例如,你可以添加一个按键来控制流水灯的启停,或者通过蓝牙模块和手机APP来远程控制流水灯的效果。

这些扩展可以增加你的制作的趣味性和创造性。

结论:通过本文的介绍,我们了解了51单片机爱心流水灯的原理及制作过程。

通过硬件连接和软件编程,我们可以制作出一个具有特殊效果的流水灯。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
培训内容和目的
1、认识51单片机 2、掌握keil C51软件的安装与工程的建立 3、掌握51单片机的程序编写、编译和下载流程 4、掌握流水灯程序的编写原理和方法 5、掌握51单片机最小系统原理与焊接方法 6、掌握datesheet的使用和学习方法
一、认识51单片机
什么是单片机?
单片机(Single chip microcomputer)是一种集成电路芯 片,是采用超大规模集成电路技术把具有数据处理能力的 中央处理器CPU、随机存储器RAM、只读存储器ROM、多种 I/O口和中断系统、定时器/计数器等功能(可能还包括显 示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器 等电路)集成到一块硅片上构成的一个小而完善的微型计 算机系统。
1、将串口下载器上的TX、RX分别和单片机的RX、TX相连。 2、将两者的VCC、GND分别连接到一起。 3、将串口下载器连接电脑的USB口。
程序的下载
烧录软件:
烧录软件的使用(以PZ-ISP为例)
1、打开软件 2、选择芯片类型(选择STC89C5XXX系列) 3、打开文件,选择编译生成的目标.hex文件。 4、点击下载程序,立马给单片机供电。 5、程序下载完成。
一、认识51单片机
Vcc和GND:单片机电源引脚,常压为+5V,低 压为+3.3V
XTAL:外接时钟引脚 RST:单片机复位引脚,高电平有效,用于单
片机的复位初始化操作。 I/O口:输入输出控制引脚
一、认识51单片机
第二功能引脚: 部分接口具有第二功能,在51单片机中如:
二、keil安装与工程的建立
其中:void表示无返回值 delay1s为函数名,可随意取,最好方便记忆和读懂 括号内为空(void),表示该函数不带任何参数。
注意事项:
知识点
再换一种
No Image
流水灯跳起来
No Image
四、51单片机最小系统原理
创翼科技社51学习板最小系统原理图
No Image
第二次焊接实践
第二次焊接实践
具体教程今晚会在群里面公布 敬请关注!!
三、51单片机基础编程
1、编写正确的C程序。 2、C程序的编译 3、将生成的.hex文件下载进单片机
点亮发光二极管
让它亮起来!! #include <reg52.h> sbit led1=P0^0; void main() { led1=0; }
//52系列单片机头文件 //声明单片机P0口第一位
知识点
修饰符:signed(有符号)、unsigned(无符 号)
signed int
有符号整型
unsigned int 无符号整型
signed char
有符号字符型
unsigned char 无符号字符型
知识点
5、while()循环结构
知识点
6、for循环结构
换一种方式
知识点
7、C语言不带参子函数的书写
你的灯亮啦!!
让它闪起来!!
知识点
4、C语言中的数据类型 基本数据类型: short int、long int、char、float、 double…… char:字符型,占用一个字节,范围0~256 int:整型 ,keil中占用两个字节,范围0~65536 float:浮点型,占用四个字节,范围0~2^32
//主函数
//点亮第一个LED灯
知识点
1、reg52.h
在代码中引用头文件,其作用在于将这个头文件的 内容放在引用头文件的位置处,免去每次编写同类 程序都要将头文件中语句重复编写。
头文件的两种书写方法: #inclቤተ መጻሕፍቲ ባይዱde <reg52.h> #include "reg52.h"
知识点
2、C语言注释的写法 (1)//注释语句 两个斜杠后跟注释语句,
不能换行使用
(2)/*注释语句*/ 斜杠与星号之间加注释
语句,能够换行使用
知识点
3、main()主函数的写法
C程序的编译
1、设置生成.hex文件 2、点击keil的编译按钮,开始编译。 3、查看编译窗口是否有warning或error。 4、自动生成.hex文件
程序的下载
串口下载器:
串口下载器的使用和连接
具体焊接教程今晚会在群里面公布 敬请关注!!
五、datesheet的使用
datesheet是第一手宝贵的学习参 考资料,无论是设计硬件电路还是 编写程序代码,datesheet都具有宝 贵的参考价值!!
推荐资料
No Image
No Image
datesheet!!
处理器
一、认识51单片机
常见51单片机封装
一、认识51单片机
51单片机实验板
一、认识51单片机
一、认识51单片机
一、认识51单片机
引脚的简单介绍
1、电源和时钟引脚。如Vcc、GND、XTAL1、XTAL2… 2、编程控制引脚。如RST、PSEN、EA…… 3、I/0口引脚。如P0、P1、P2、P3……
相关文档
最新文档