第二讲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单片机流水灯程序
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单片机
引脚的简单介绍
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程序
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单片机点亮流水灯
硬件连接
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
#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语言程序
目录流水灯最原始 (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单片机制作爱心流水灯的原理及制作过程。
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单片机爱心流水灯的原理及制作过程。
通过硬件连接和软件编程,我们可以制作出一个具有特殊效果的流水灯。
完整word版,C51单片机实行流水灯程序
#include<reg51.h>#define LEDPort P1unsigned char LED01_[9]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,};//方式0,方式1灯开关数组。
unsigned char LED23_[5]={0xFF,0x7E,0xBD,0xDB,0xE7};// 方式2,方式3灯开关数组。
unsigned char LED4_[16]={0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00,0X01,0X03,0X07,0X0f,0X1 f,0X3f,0X7f}; //方式4unsigned char LED56_[8]={0XFF,0X3F,0X9F,0XCF,0XE7,0XF3,0XF9,0XFC};unsigned char LED7_[]={0X0F,0XF0,0X33,0XCC,0X3C,0XC3,0XFF};unsigned char TAB[9]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};//定义断码表。
unsigned char i=0,j=9; //数据选择计数。
unsigned char Mode=0; //模式选择,默认为模式0。
unsigned char Count=1; //定时器中断计数。
unsigned char Delay=1; //延迟计数,通过改变改数值改变灯状态延迟时间。
//灯延迟时间=uc_Dalay*定时器溢出时间。
void main(){ P2=0X3F;TMOD=0x01; //定时器0模式一。
TH0=0x3C;TL0=0xB0; //溢出时间:50ms。
TR0=1; //定时器0开启。
IT0=1; //外部中断0下降沿触发。
IT1=1; //外部中断1下降沿触发。
单片机控制流水灯程序汇编语言
单片机控制流水灯程序汇编语言随着科技的发展和微电子技术的迅猛进步,单片机逐渐成为智能系统与设备中不可或缺的组成部分。
而流水灯作为最基础的应用之一,不仅在学习过程中具有重要意义,同时也在实际工程中发挥着重要作用。
本文将介绍如何使用汇编语言编写单片机控制流水灯程序,并详细讲解其运行原理和实现方法。
一、流水灯原理流水灯是一种由多个LED组成的灯条或灯链,在按照一定次序依次点亮和熄灭的灯光效果。
其原理基于单片机通过控制输出口的电平高低来控制LED的亮灭状态,实现灯光的变化和移动效果。
二、程序设计方法1. 初始化设置在编写流水灯程序之前,我们首先要了解单片机的相应接口和寄存器的使用方法。
在程序开始时,需要进行相应的初始化设置,包括将数据方向寄存器和端口寄存器设置为输出,并将初始值赋予输出口电平。
例如,对于51单片机,可以使用以下汇编语言代码进行初始化设置:MOV P1, #00H ;将P1端口的输出电平置为低电平MOV P1M1, #FFH ;将P1端口的数据方向设置为输出MOV P1M0, #00H2. 主程序在流水灯程序中,需要编写主程序来实现流水灯的效果。
主程序中使用循环结构控制LED的亮灭状态和移动效果。
例如,以下是一个简单的汇编语言代码,实现了由4个LED组成的流水灯的效果:MOV R0, #F0H ;初始亮灭状态MOV R1, #00H ;初始LED位置LOOP: ;循环MOV P1, R0 ;将亮灭状态赋予P1端口的输出电平ACALL DELAY ;延时,形成流水灯效果MOV A, R1SUBB A, #01H ;将LED位置减一MOV R1, AJZ CHANGE ;当LED位置为零时,改变亮灭状态MOV R0, R0SJMP LOOP ;继续循环CHANGE: ;改变亮灭状态CPL R0 ;对亮灭状态进行取反操作SJMP LOOP ;继续循环3. 延时函数为了实现流水灯的移动效果,需要设置一个合适的延时时间来控制LED的亮灭速度。
单片机-流水灯的程序
#include<reg51.h> sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit led5=P2^4; sbit led6=P2^5; sbit led7=P2^6; sbit led8=P2^7; void delay (unsigned char x);
其中void表示这 个函数执行完后 不返回任何数据。 ()内无任何东西, 所以这是个无参 数的函数。 Delayms是函数名。
1
2
3
4
5
6
2)带参数函数的用位定义实现流水灯(8位二极管循环点亮)
编程思路: a) 先点亮第一盏灯,延时点亮第二盏, 依次延时8盏灯全部点亮。 b) 当8盏灯全部点亮时,熄灭8盏灯。 c) 进入循环。
循环移动
循环左移 最高位移入最低位,其它依次向左移动一位。C语言中 没有专门的指令,通过移位指令和简单逻辑运算来实现循环左移,或直接利用C51库中自带的函数-crol-实现。
循环右移 最低位移入最高位,其它位依次向右移一位,C语言中没有专门的指令,通过移位指令与简单的逻辑运算可以实现循环右移,或专门利用C51库中自带函数-cror-实现
方法二:利用总线控制实现流水灯(8位二极管循环点亮)
相关知识 二进制和十六进制之间的相互转换
二进制
十六进制
二进制
十六进制
0000
0
0100
4
0001
1
0101
5
0010
2
0110
6
0011
3
0111
7
二进制
十六进制
二进制
51单片机经典流水灯程序
单片机流水灯汇编程序设计开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。
程序A:;用最直接的方式实现流水灯ORG 0000HSTART:MOV P1,#B ;最下面的LED点亮LCALL DELAY;延时1秒MOV P1,#B ;最下面第二个的LED点亮LCALL DELAY;延时1秒MOV P1,#B ;最下面第三个的LED点亮(以下省略)LCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#BLCALL DELAYMOV P1,#B ;完成第一次循环点亮,延时约0.25秒AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2DJNZ R2 ,L1DJNZ R4 ,L3RETEND程序B:;用移位方式实现流水灯ajmp main ;跳转到主程序org 0030h ;主程序起始地址main:mov a,#0feh ;给A赋值成loop:mov p1,a ;将A送到P1口,发光二极管低电平点亮lcall delay ;调用延时子程序rl a ;累加器A循环左移一位ajmp loop ;重新送P1显示delay:mov r3,#20 ;最外层循环二十次d1:mov r4,#80 ;次外层循环八十次d2:mov r5,#250 ;最内层循环250次djnz r5,$ ;总共延时2us*250*80*20=0.8Sdjnz r4,d2djnz r3,d1retend51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。
ORG 0;程序从0地址开始START: MOV A,#0FEH ;让ACC的内容为LOOP: MOV P2,A ;让P2口输出ACC的内容RR A;让ACC的内容左移CALL DELAY ;调用延时子程序LJMP LOOP ;跳到LOOP处执行;0.1秒延时子程序(12MHz晶振)===================DELAY: MOV R7,#200 ;R7寄存器加载200次数D1: MOV R6,#250 ;R6寄存器加载250次数DJNZ R6,$ ;本行执RET;返回主程序END;结束程序开关控制的单片机流水灯汇编在单片机控制下,用一个拨动开关K1,控制8个发光二极管L1-L8,发光的时间间隔为0.5秒。
《单片机原理及应用》项目二 MCS–51单片机入门——流水灯模拟系统设计
MOV PSW,#00010000B
则RS1、RS0两位的值为10B,工作寄存器切换到2组, 当前工作寄存器的物理地址为10~17H。
单片机复位后,PSW=00000000B,CPU选择第0组为 当前工作寄存器。
—19—
项目二 MCS–51单片机入门——流水灯模拟系统设计
任务一 MCS-51系列单片机的基本结构
提示
LSTTL器件(Low-power Schottky TransistorTransistor Logic):低功耗晶体管逻辑电路。
—6—
项目二 MCS–51单片机入门——流水灯模拟系统设计
任务一 MCS-51系列单片机的基本结构
PSEN(Program Store Enable,29脚):外部程序存储允许输出端,片外程序存储器读选通信号,低 电平有效。CPU访问外部程序存储器期间,PSEN端在每个机器周期中两次有效。负载驱动能力为8个 LSTTL器件。 EA/VPP(Enable Address/Voltage Pulse of Programming,31脚):外部程序存储器地址允许输入端。 当EA为高电平时,CPU执行片内存储器指令,当程序计数器PC(Program Counter)的值超过0FFFH时, 将自动转向执行片外程序存储器指令。当EA为低电平时,CPU只执行片外存储器指令。对于片内RAM 编程时,VPP作为编程电压的输入端。 RST/VPD(9脚):复位信号输入端。晶振工作时,在此引脚上保持两个机器周期的高电平将使单片 机复位。第二功能为备用电源的输入端,当主电源Vcc掉电,VPD将为片内RAM供电,以确保RAM中的 信息不丢失。
0
0
0
00~07H
0
1
1
stc89c51单片机流水灯程序
51单片机流水灯程序程序一(用C语言编的最基础的程序)#include<reg52.h>#include<stdio.h>sbit D0=P1^0;//位定义,把P1口的第一个管脚定义为D0 sbit D1=P1^1;// 位定义,把P1口的第二个管脚定义为D1 sbit D2=P1^2;// 位定义,把P1口的第3个管脚定义为D2 sbit D3=P1^3;// 位定义,把P1口的第4个管脚定义为D3 sbit D4=P1^4;// 位定义,把P1口的第5个管脚定义为D4 sbit D5=P1^5;// 位定义,把P1口的第6个管脚定义为D5 sbit D6=P1^6;// 位定义,把P1口的第7个管脚定义为D6 sbit D7=P1^7;// 位定义,把P1口的第8个管脚定义为D7 void main(){while(1)//建立大的死循环。
{unsigned int i,j;D0=0,D7=1;//亮灯1,关灯8for(i=50;i>0;i--)for(j=200;j>0;j--);//两个FOR组成的延时D0=1,D1=0;// 亮灯2,关灯1for(i=50;i>0;i--)for(j=200;j>0;j--);D1=1,D2=0;for(i=50;i>0;i--)for(j=200;j>0;j--);D2=1,D3=0;for(i=50;i>0;i--)for(j=200;j>0;j--);D3=1,D4=0;for(i=50;i>0;i--)for(j=200;j>0;j--);D4=1,D5=0;for(i=50;i>0;i--)for(j=200;j>0;j--);D5=1,D6=0;for(i=50;i>0;i--)for(j=200;j>0;j--);D6=1,D7=0;for(i=50;i>0;i--)for(j=200;j>0;j--);}}程序二(用swich case语句编的)#include<reg52.h>//51单片机的头文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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……