《单片机学习》

本文详细介绍了单片机学习中的蜂鸣器和静态、动态数码管显示实验。内容涵盖蜂鸣器的工作原理、无源与有源蜂鸣器的区别、在KEIL中编写控制程序并通过stc-isp进行传输。数码管部分讲解了静态和动态显示的工作原理,以及74HC573芯片的使用。

蜂鸣器实验

蜂鸣器简介

在这里插入图片描述
有绿色电路板的一种是无源蜂鸣器;
没有电路板而用黑胶封闭的一种是有源蜂鸣器
开发板上使用的是无源蜂鸣器
有源无源:根据里面是否含有振荡电路
电磁式蜂鸣器(有源蜂鸣器)由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器(无源蜂鸣器)主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。 有一定频率的脉冲才能控制蜂鸣器发声
自激蜂鸣器(无源蜂鸣器)是直流电压驱动的,不需要利用交流信号进行驱动,只需对驱动口输出驱动电平并通过放大电路放大驱动电流就能使蜂鸣器发出声音,非常简单。

蜂鸣器功能

在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。

蜂鸣器改变原理

1.改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
2.改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。

蜂鸣器原理图

无源蜂鸣器
在这里插入图片描述原理图中,电阻是用来限流的
BZ通过P15接口经过ULN2003D驱动芯片输出到蜂鸣器里面
ULN2003D起着电流放大的作用

ULN2003介绍

1.ULN2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。将电流放大
2.ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动蜂鸣器、继电器等负载 。

在KEIL中编写程序

1.复制在准备工作中创建的51单片机工程
可以将文件名改为:实验四:蜂鸣器
2.打开“实验四:蜂鸣器”的文件夹
从文件夹中打开KEIL
3.在KEIL中编写程序

#include "reg52.h"
typedef unsigned u8;
typedef unsigned u16;

sbit beep=P1^5;

void delay(u16 i)
{
     while(i--);
}
void main()
{
     
	 while(1)
	 {
	     beep=~beep;//~将电平进行取反,高低电平不断转化就形成一定的脉冲
		 delay(10);//只有延迟,才能产生周期变化的脉冲(通过改变周期,使蜂鸣器发出不同的声音)
	 }
} 

编译成功后,便可将单片机连接电脑

通过stc-isp传输

1.将单片机连接电脑,并确保单片机是开的状态
2.选择正确的串口号
3.打开程序文件
选择.hex文件,并打开
在这里插入图片描述
4.下载/编程
此次可能需要再次将单片机关机开机才能下载成功
在这里插入图片描述
5.操作成功后既蜂鸣器响起

静态数码管显示实验

静态数码管工作原理

显示器及其接口
单片机系统中常用的显示器有:
发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、TFT液晶显示器等。LED显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
LED数码管根据LED的不同接法可以分为2类:共阴和共阳。
在这里插入图片描述
(b)中左图为共阴,共阴,既LED阴极连在一起;共阳同理。
使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节(8位一个字节)。我们实验板用共阴LED显示器,根据电路连接图显示16进制数的编码已列在下表。

数码管如何显示出字符

共阴数码管码表
在这里插入图片描述
0x3f为0:0x表示16进制,0的时候a,b,c,d,e,f为亮,g,dp不亮。
高电平为1时亮,从上往下依次为0011 1111
0011在二进制中为三,1111在二进制中为15(用16进制表示为f)
在这里插入图片描述

数码管静态显示原理

LED显示器工作方式有两种:
静态显示方式和动态显示方式。
静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。

开发板数码管电路图

在这里插入图片描述

74HC573芯片的使用

74H573锁存器的使用

  1. OE为使能端,当他为低电平的时候, 锁存器开始工作
  2. VCC和GND为电源和地端
    静态数码管是共阳的
    LED1必须为低电平,因为数码管是共阴的
    让Y0输出为0,就是让P2 34都为0;其他的是高电平,不会显示
  3. LE为锁存端,当LE为高电平的时候,Q0Q7都跟D0D7状态一样,当LE为低电平的时候,Q0Q7都锁存数据,无论D0D7怎么变化,Q0~Q7都保持锁存之前的那个状态。

在KEIL中编写程序

1.复制在准备工作中创建的51单片机工程
可以将文件名改为:实验五:静态数码管显示
2.打开“实验五:静态数码管显示”的文件夹
从文件夹中打开KEIL
3.在KEIL中编写程序

#include "reg52.h"
typedef unsigned u8;
typedef unsigned u16;

sbit LSA=P2^2;//接在A上
sbit LSB=P2^3;//接在B上
sbit LSC=P2^4;//接在C上	,ABC都为0时,为低电平

u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
                    0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//将字码保存在这个数组里面
//code可以省略,code节省数据大小的作用
void main()
{
     LSA=0;
	 LSB=0;
	 LSC=0;//VO就会输出低电平,LED1为1数码管就会点亮
	 P0=smgduan[0];//数码管的第0个,就是0x3f
	 while(1);
}
//它实现的功能,就是让开发板上面八位一体的数码管最后一个数码管显示0

编译成功后,便可将单片机连接电脑

通过stc-isp传输

1.将单片机连接电脑,并确保单片机是开的状态
2.选择正确的串口号
3.打开程序文件
选择.hex文件,并打开
在这里插入图片描述
4.下载/编程
此次可能需要再次将单片机关机开机才能下载成功
5.操作成功后既开发板上面八位一体的数码管最后一个数码管显示0
在这里插入图片描述

动态数码管显示实验

数码管动态显示原理

动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

原理图

在这里插入图片描述
共阴一般是在阴极接地,要点亮数码管,给它一个高电平就可以点亮。

在KEIL中编写程序

1.复制在准备工作中创建的51单片机工程
可以将文件名改为:实验六:动态数码管显示
2.打开“实验六:动态数码管显示”的文件夹
从文件夹中打开KEIL
3.在KEIL中编写程序

#include "reg52.h"
typedef unsigned u8;
typedef unsigned u16;
//动态要使用138译码器,动态输入端,来控制8个输出端,控制123三个拐角,位选一个低电平的话,数码管就可以点亮
//8个全都是并联在一起的,当输入段给他一个断码数据,这8个断码是全部相同的

sbit LSA=P2^2;//接在A上
sbit LSB=P2^3;//接在B上
sbit LSC=P2^4;//接在C上	,ABC都为0时,为低电平

u8 code smgduan[]={0x7f,0x06,0x06,0x3f,0x3f,0x5b,
                    0x3f,0x5b,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//将字码保存在这个数组里面	共阴
//code可以省略,code节省数据大小的作用
void delay(u16 i)  //0~65535
{
     while(i--);
}

//动态数码管的驱动函数
void DigDisplay()
{
     u8 i;
	 for(i=0;i<8;i++)
	 {
	      switch(i)
		  {
		      case 0:
			       LSA=0;LSB=0;LSC=0;//全部为低电平的时候,Y0为低电平,数码管的第一个点亮
				   break;
			  case 1:
			       //让Y1为低电平,就是让C为低电平,B为低电平,A为高电平
				   LSA=1;LSB=0;LSC=0;
				   break;
			  case 2:
			       LSA=0;LSB=1;LSC=0;
				   break;
			   case 3:
			       LSA=1;LSB=1;LSC=0;
				   break;
			  case 4:			      
				   LSA=0;LSB=0;LSC=1;
				   break;
			  case 5:
			       LSA=1;LSB=0;LSC=1;
				   break;
			  case 6:
			       LSA=0;LSB=1;LSC=1;
				   break;
			  case 7:
				   LSA=1;LSB=1;LSC=1;
				   break;
		  }
	      P0=smgduan[i];
		  delay(100);
		  P0=0x00;//清空
	 }

}

void main()
{
     P0=~smgduan[0];
	 while(1)
	 {
	     DigDisplay();
	 }
}

根据真值表
在这里插入图片描述
编译成功后,便可将单片机连接电脑

通过stc-isp传输

1.将单片机连接电脑,并确保单片机是开的状态
2.选择正确的串口号
3.打开程序文件选择.hex文件,并打开
4.下载/编程
此次可能需要再次将单片机关机开机才能下载成功
5.操作成功后既可看到单片机上数码管的效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值