电子技术部第四次培训总结

一、 74HC595芯片讲解

Ⅰ、芯片串口介绍

在这里插入图片描述
大家可以发现,有些功能引脚他的名字不同,比如DS对应SER,OE对应G等等,这只是设计者命名方式有点不同,其实他们的功能是一样的。看一个引脚,主要就是看他的功能。
在这里插入图片描述

Ⅱ、串行传输和并行传输

1.并行传输

字符编码的各位(比特)同时传输。

特点:
(1)传输速度快:一位(比特)时间内可传输一个字符,并行口传输8位数据一次送出.;

(2)通信成本高:每位传输要求一个单独的信道支持;因此如果一个字符包含8个二进制位,则并行传输要求8个独立的信道的支持;

(3)不支持长距离传输:由于信道之间的电容感应,远距离传输时,可靠性较低。

2.串行传输

将组成字符的各位串行地发往线路。

特点:
(1)传输速度较低,一次一位,串行口传输方式为数据排成一行、一位一位送出接收也一样;

(2)通信成本也较低,只需一个信道。

(3)支持长距离传输,目前计算机网络中所用的传输方式均为串行传输。

Ⅲ、74HC595功能介绍

74HC595具有8位的移位寄存器和一个存储器。SHCP和STCP分别是移位寄存器的时钟输入和存储寄存器的时钟输入。一般情况下,移位寄存器总该比存储寄存器早一个脉冲。移位寄存器有一个串行输入(DS),一个串行输出(Q7非)。存储寄存器有一个八位并行的三态总线输出。

在这里插入图片描述
在这里插入图片描述

Ⅳ、控制端介绍

在这里插入图片描述

74595的控制端说明:
SCLR(MR):低电平时移位存储器的数据清零,通常接VCC。
SCK(SHCP):上升沿时数据寄存器的数据移位。QA–>QB–>QC–>…–>QH; 下降沿时移位寄存器数据不变。
RCK(STCP):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时不变。

这是一个利用74HC595实现流水灯的代码
#include"reg51.h“
#include"intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
u8 led Num;

Sbit SRCLK=P3^6;
Sbit RCLK=P3^5;
Sbit SER=P3^4;
Sbit LED=P0^7;


Void delay(u16 i)
{
	while (i--);	
}

Void Hc595SendByte(u8 dat)
{
	u8 a;
	SRCLK=1;
	RCLK=1;
	for(a=0;a<8;a++)		//发送8位数
	{
		SER=dat>>7;		                     
	    dat<<=1;
		SRCLK=0;			
		_nop_();
		_nop_();代码会运行1US
		SRCLK=1;	
	}
	RCLK=0;
	_nop_();
	_nop_();
	RCLK=1;
}
Void main()
{	
	LED=0;
	ledNum=~0x01;	

	while(1)
	{
		Hc595SendByte(ledNum);
		
ledNum=_crol_(ledNum,1);
		
delay(50000);
	}		
}

其实就是通过移位来分别取得一组8个二进制数的首位,然后利用74HC595芯片并行输出。

二、进制转换

Ⅰ、二进制转八进制

在这里插入图片描述
在这里插入图片描述
规律:合三为一,不足在前面补零。

Ⅱ、二进制转十进制

在这里插入图片描述
在这里插入图片描述
注意:第一位应该是2的0次方

Ⅲ、二进制转十六进制

在这里插入图片描述
在这里插入图片描述
规律:合四为一,不足在前面补零

Ⅳ、十进制转二进制、八进制、十六进制

规律:
十进制转多少就除多少,直至剩下0为止,把余数从最晚到最早排列起来。

三、数码管讲解

Ⅰ、数码管简介

在这里插入图片描述
对于数码管,有称八段数码管的,也有称七段数码管的,其实无非就是多在一个小数点h,如上图所示,我们就拿带小数点的八段数码管来说,其实我们没必要说对数码管很陌生,因为数码管无非就是八块发光二极管集成在了一起,另外数码管有共阴极和共阳极数码管之分。

Ⅱ、数码管编码

在这里插入图片描述
二进制码从右到左代表数码管从A到Dp
在这里插入图片描述

Ⅲ、多位数码管介绍

在这里插入图片描述
多位数码管,即是两个或两个以上单个数码管并列集中在一起形成一体的数码管。当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”,有了这两个线后,通过单片机及外部驱动电路就可以控制任意的数码管显示任意的数字了。

Ⅳ、静态显示和动态显示

多位数码管依然可以静态显示,但是显示时要么只显示一位数码管,否则一体的多位同时显示必须时显示相同内容。

因为它们的段选是连接在一起的,所以送入所有数码管的段选信号都是相同的,那么它们显示的数字必定一样,数码管的这种显示方法叫做静态显示。

而动态显示,就是利用减少段选线,分开位选线,利用位选线不同时选择通断,改变段选数据来实现的。
比如在第一次选中第一位数码管时,给段选数据0,下一次位选中第二位数码管时显示1。为了在显示1的时候,0不会消失(当然实际上是消失了),必须在人肉眼观察不到的时间里再次点亮第一次点亮的0。而这时就需要记住,人的肉眼正常情况下只能分辨变化超过24ms间隔的运动。

Ⅴ、外部驱动和译码器芯片

外部驱动芯片

为了增强单片机的外部驱动能力,以带动多位数码管,我们可以采用外部驱动芯片,如74HC245

在这里插入图片描述
74HC245 是一种三态输出、八路信号收发器,主要应用于大屏显示
DIR 管脚为高电平传输方向是 A->B 输出,为低电平传输方向是 B->A,如果 OE 使能管脚为高电平, 不论 DIR 管脚是高还是低,输出是高组态。

译码器芯片

为了节省单片机串口,我们可以采用译码器芯片,如74HC138。
74HC138 是一种三通道输入、八通道输出译码器

在这里插入图片描述

/*
多位数码管每个显示不同的数字
*/
#include "reg52.h" 
typedef unsigned int u16; 
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
0~F 的值

void delay(u16 i)
{
while(i--);
}

void DigDisplay()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //位选,选择点亮的数码管,
{
case(0):
LSA=1;LSB=1;LSC=1; break;//显示第 0 位
case(1):
LSA=0;LSB=1;LSC=1; break;//显示第 1 位
case(2):
LSA=1;LSB=0;LSC=1; break;//显示第 2 位
case(3):
LSA=0;LSB=0;LSC=1; break;//显示第 3 位
case(4):
LSA=1;LSB=1;LSC=0; break;//显示第 4 位
case(5):
LSA=0;LSB=1;LSC=0; break;//显示第 5 位
case(6):
LSA=1;LSB=0;LSC=0; break;//显示第 6 位
case(7):
LSA=0;LSB=0;LSC=0; break;//显示第 7 位
}
P0=smgduan[i];//发送段码
delay(100); //间隔一段时间扫描
P0=0x00;//消隐
}
}

void main()
{
while(1)
{
DigDisplay(); //数码管显示函数
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值