2019-03-03 23:21:38 moofoogoo 阅读数 1446
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4004 人正在学习 去看看 朱有鹏

一、流水灯实验
1、设计要求
P1口接8个发光二极管,烧录程序后发光二极管依次点亮
2、硬件要求
利用proteus Isis仿真,选择器件,AT89C51、LED-BLUE、RES
3、软件设计
源程序:

/*********************必要变量定义******************/
#include<reg51.h>
#include<intrns.h>
typedef  unsigned  char  u8;
typedef  unsigned  int  u16;
#define  led  P1
/****************延时程序**************/
void  delay(u16  k)
{
  u16  i ,j;
  for(i = 7; i < k; i++)
      for(j = 0;j < 124; j++);
 }
/**********************主函数*******************/
void  main()
{
  u8 i;
  led = 0x01;
  delay(500);
 while (1)
{
   /* for(i = 0;i < 8; i++)
    { 
     led = (0x01<<i);
     delay(500);
    }*/
   for(i = 0;i < 7; i++)
  {
     led = _crol_(led , 1); 
     delay(500);
   }
   for(i = 0;i < 7; i++)
  {
    led = _cror_(led , 1);
    delay(500);
   }
    }
 }
 
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019030323184025.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21vb2Zvb2dvbw==,size_16,color_FFFFFF,t_70)
如有任何错误或者不足之处,欢迎指正 ^ - ^.
2019-12-15 22:53:17 qq_42689352 阅读数 7
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4004 人正在学习 去看看 朱有鹏

#如何点亮单片机上的流水灯

1.首先我们需要查看该单片机上的led灯原理图
在这里插入图片描述
因为LED灯接的是VCC,所以我们只要把相对应的口定义之后赋值为0,就可以使得电源流通,从而点亮它。
2.编程烧录
在这里插入图片描述

2015-11-04 09:39:13 rl529014 阅读数 14305
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4004 人正在学习 去看看 朱有鹏

(1)首先当然是要购买“51单片机最小系统的散件”,淘宝上面卖的比较多,散件的话一般二、三十元左右,其次还需要购买一个电烙铁,一般30瓦的就足够了,这里我就讲一讲51单片机散件的焊接方法和注意事项。

(2)51单片机散件如下:

注意:购买到散件后第一步不是马上焊接,而是仔细看看卖家有没有少件,由于散件很多,少发元器件的情况也是存在的。

(3)如果元器件和电烙铁都备好了,下面就可以开始焊接了。

焊接的时候注意一下两点:

A.一定要注意正负极性,像LED灯,蜂鸣器等元器件是分正负极的,不注意的话就会烧毁元器件。

B.焊接时的顺序是从小到大,按元器件的大小顺序焊接。本人在焊接的时候就没有注意到这点,所以在焊接的时候很受伤。

C.关于电烙铁使用的方法我就不说了,用起来很简单的,特别注意提锡的时候垂直往上提,尽量别让飞溅的锡污染板子。

(4)焊接完成后如下图;

http://my.csdn.net/my/album/show/319161   ,这是我的相册链接,相册是高清图。

(实在抱歉,CSDN上传图片的大小是2M,图片太大了,显示不了)

(5)焊接完成后,接下来就是通电了,看看焊接是否成功。

如下图,如果灯亮了,说明焊接阶段没有出现问题,也就是焊接步骤OK啦。


(6)下面是向单片机烧录程序,需要以下工具:串口通讯线,电源线,电脑需要安装Keil编译器,烧录软件,

          没有串口驱动的还需要下载安装一下串口驱动。

A.首先在Keil编译器里面输入流水灯的代码:

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint z);
main()
{  
uchar aa;   
while(1)
{
aa=0xfe;
P1=aa;
delay(100);
while(1)
{
aa=_crol_(aa,1);
P0=aa;
P1=aa;
P2=aa;
delay(100);
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

然后连接、编译源程序,主要目的是生成流水灯的HEX文件。如何生成Hex文件可以百度,一搜一大把。

B.连接单片机最小系统的电源线和串口下载线。

如下图:




C.接下来是打开烧录程序,我使用的是STC-ISP4.80版本,界面如下:



单击“打开程序按钮”,找到刚刚生成的HEX文件,然后点击“DownLOad/下载”按钮,将程序烧录到单片机里面去,

接下来再断电,重启,就可以看到单片机流水灯效果了。


D:流水灯效果图:




到此51单片机最小系统的焊接,程序烧录就讲解完成了。


注:烧录程序在CSDN里面就能下载到,输入STC-ISP就可以搜索到,我也就不上传了,

我上传一个51单片机串口驱动程序:http://download.csdn.net/detail/rl529014/9239627

2019-09-26 22:45:20 qq_27061049 阅读数 232
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4004 人正在学习 去看看 朱有鹏

1、简介

网上购买的单片机开发板,实物训练一下

2、了解开发板电路图

要想点亮 LED 就要了解开发板上 LED 和 单片机怎么连接的
在这里插入图片描述

我们可以看到则个开发板总共有 八个 LED ,分别和单片机上的 P1.0 ~ P1.8 相连。我们想让哪个LED 灯亮 ,只需要用代码 让 对应的 引脚 至低电平。

2、代码编写 ,点亮 LED1

在这里插入图片描述
编译代码,生成 .hex 文件,前文已有,这里就不再提示怎么生成。

3.将编写的程序烧录 单片机

在这里插入图片描述

4. 实物观测

我们可以看到图中 LED1已经点亮
在这里插入图片描述

5、流水灯代码编写

#include <reg52.h>	 //引入51头文件
#include <intrins.h>
char temp;

//毫秒延时函数
void delay(int time){
int x,y;
for(x = time;x > 0;x--)
	for(y = 114;y>0;y--);

}
void main()
{
     temp =  0xfe; //
	 P1 = temp; //1111 1110 P1 引脚电平示意
	 delay(100); // 延时 0.1s

	 while(1) {
	 temp = _crol_(temp,1); //temp 左移一位 如 1111 1101
	 P1 = temp;
	 delay(100); 
	 }
}

在这里插入图片描述

2018-11-11 20:24:53 add991004 阅读数 4815
  • 单片机控制第一个外设-LED-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4004 人正在学习 去看看 朱有鹏

其实这是个51单片机串口通信的小例子,课堂上老师说你们可以去尝试弄一下,于是就去网上找一下资料,就做了这个实验。

先把一个作为主机,用来发送数据;另一个作为从机,用来接收数据。将两个程序各自烧录到对应的板子上去,并将主机的TX(P3.0)接到从机的RX(P3.1),主机的RX(P3.1)接到从机的TX(P3.1),便可以实现将主机的数据发送到从机上去,并在从机上实现功能,这时可以看到从机上流水灯的现象

主机发送代码

#include<reg51.h>
unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};           //流水灯控制码
void send(unsigned char dat)            //数据发送程序
{
   	SBUF=dat;                           //将要发送的数据存入发送缓冲器中
	while(TI==0);                       //若发送中断标志位没有置1(正在发送数据),就等待
	TI=0;                               //若发送完成,TI自动置1,这里把它清零
}
void delay(void)                        //延时函数
{
	unsigned char m,n;
	for(m=0;m<200;m++)                  //延时约50ms
	for(n=0;n<250;n++);
}
void main(void)
{
	unsigned char i;
	TMOD=0x20;                         //定时器T1工作于方式2(可自动重装的8位定时器)
	SCON=0x40;                         //串口工作方式1,不允许接收
	PCON=0x00;                         //波特率不倍增
	TH1=0xf4;                          //波特率为2400b/s
	TL1=0xf4;
	TR1=1;                             //启动定时器T1(T1作波特率的发生器)
	while(1)
	{
		for(i=0;i<8;i++)               //一共8位的流水灯控制码
		{
			send(tab[i]);              //发送数据
			delay();                   //每50ms发送一次数据
		}
	}
}

从机接收代码

#include<reg51.h>
unsigned char receive(void)         //数据接收函数
{
	unsigned char dat;
	
	while(RI==0);                   //数据没有接收完毕时等待接收
	RI=0;                           //接收完毕时清零
	dat=SBUF;                       //将接收缓冲器中的数据存入dat
	return dat;                     //将接收到的数据返回
}
void main(void)
{
	TMOD=0x20;                     //设置定时器T1工作于方式2
	SCON=0x50;                     //串口工作方式1,允许接收数据
	PCON=0x00;                     //波特率不倍增
	TH1=0xf4;                      //波特率为2400b/s
	TL1=0xf4;
	TR1=1;                         //启动定时器T1
	REN=1;                         //允许接收数据
	while(1)
	{
		P2=receive();              //将接收到的数据送到P1口显示	
	}
}

主机硬件连接如图

从机硬件连接如图

 

蓝桥杯——流水灯

阅读数 253

在群的一些有趣答问集合2 3

博文 来自: xianfajushi

程序人生

阅读数 389

没有更多推荐了,返回首页