数码管循环显示数字的教程

电子说

1.3w人已加入

描述

目录

一、前言

二、芯片使用

1、74hc245

2、74ls138译码器

三、硬件连接

四、软件代码

五、效果展示

六、代码链接

一、前言

数码管进行显示成果后,可根据自己的想法进行改进。本设计采用八位数码管进行循环显示0~f,其中涉及到段码及位码的调用,可更深一步的理解数码管的使用。

二、芯片使用

1、74hc245

数码管驱动

本设计中数码管的段选使用74hc245进行驱动。可以为数码管提供足够且稳定的电压,数码管与74hc245芯片之间需加电阻进行分压以保护数码管不会因为电压过大而烧毁。

芯片引脚功能:

第1脚DIR,为输入输出端口转换用, DIR=“1”高电平时信号由“A”端输入“B”端输出, DIR=“0”低电平时信号由“B”端输入“A”端输出。

第2~9脚“A”信号输入输出端,A1=B1﹑﹑﹑﹑﹑﹑A8=B8,A1与B1是一组,如果DIR=“1”OE=“0”则A1输入B1输出,其它类同。如果DIR=“0”OE=“0”则B1输入A1输出,其它类同。 第11~18脚“B”信号输入输出端,功能与“A”端一样,不在描述。

第19脚G,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用

第10脚GND,电源地。

第20脚VCC,电源正极。

序号 名称 功能
1 DIR 输入输出转换端口,高电平A到B,低电平B到A。
2~9 A0~A7 输入输出端口
10 GND 电源负极
11~18 B7~B0 输入输出端口
19 OE 使能端,高电平信号不导通,低电平导通
20 VCC 电源正极

 

2、74ls138译码器

数码管驱动

本设计中数码管的位选使用138译码器进行驱动,使用的数码管为共阴极数码管。

芯片引脚功能:

A0~A2对应Y0——Y7;A0,A1,A2以二进制形式输入,然后转换成[十进制,对应相应Y的序号输出低电平,其他均为高电平;

序号 名称 功能
1~3 A0、A1、A2 地址输入端
4、5 E3、E2 选通端(低电平有效)
6 E1 选通端(高电平有效)
8 GND 电源负极
7、9~15 Y7~Y0 输出端
16 VCC 电源正极

三、硬件连接

实物图

数码管驱动

原理图

数码管驱动

最小单片机系统

数码管驱动

 

驱动电路

数码管驱动

位码控制电路

数码管驱动

 

四、软件代码

数码管驱动

main主函数

主函数较为简单,对数码管显示函数的调用,以及定时器函数的初始化。

void main()
{	
	Timer0Init();  //定时器0初始化
	while(1)
	{	
		DigDisplay();  //数码管显示函数	
	}		
}

void Timer0() interrupt 1

定时器函数,用于调整循环的快慢以及显示数字的变化

TH0=(65536-6000)/256;	//给定时器赋初值,定时10ms
	TL0=(65536-6000)%256;
	a--;
	  if(a==0)
	    {
				j++;
			  a=100;
			  if(j==16)
	       {
		       j=0;
	       }
		   }	 

大致讲解:在进行位选后,相对应的段码就会选出来。程序中i用于位选。对应的段码是m。m=j+i是由于0~f有16位

数码管段码、位码显示函数。

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

五、代码链接

关注公众号“小小创客者”回复“数码管循环显示数字”获得代码及仿真,如有错误欢迎指正。

审核编辑 黄昊宇

 

 

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分