0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

王子变青蛙_35400519 来源: 王子变青蛙_35400519 作者: 王子变青蛙_3540 2022-07-09 16:54 次阅读

目录

一、前言

二、芯片使用

1、74hc245

2、74ls138译码器

三、硬件连接

四、软件代码

五、效果展示

六、代码链接

一、前言

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

二、芯片使用

1、74hc245

poYBAGLJQaSAMmaqAACloIAsNNU953.png

本设计中数码管的段选使用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译码器

pYYBAGLJQb2ADxEYAAB235Kl8gw368.png

本设计中数码管的位选使用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 电源正极

三、硬件连接

实物图

pYYBAGLJQcWAA-w-AANceRovvuU800.png

原理图

pYYBAGLJQc-AIE5dAAB7FAnh7nk822.png

最小单片机系统

pYYBAGK9V16AYE5CAABLgft5QfU993.png

驱动电路

poYBAGLJQeGABHm-AAAmR6dO3MM230.png

位码控制电路

poYBAGLJQeeAC3fDAAAb27PFs5Q403.png

四、软件代码

pYYBAGLJQe-Ad2x0AACo-2yFlqc260.png

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;//消隐
	}
}

五、代码链接

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

审核编辑 黄昊宇

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

    关注

    6002

    文章

    43982

    浏览量

    620934
  • 数码管
    +关注

    关注

    31

    文章

    1827

    浏览量

    89951
  • 数码管驱动
    +关注

    关注

    1

    文章

    16

    浏览量

    4536
收藏 人收藏

    评论

    相关推荐

    基于单片机的数码管电路设计

    前面一课通过流水灯实验,学会了流水灯电路模型设计,掌握了循环移位和时间延迟算法的程序编写。本次实验完成数码管显示电路模型设计和编程,在实验过程中,学习数码管
    的头像 发表于 10-31 14:57 667次阅读
    基于单片机的<b class='flag-5'>数码管</b>电路设计

    51单片机数码管显示数字分离)

    /10 结果12345 再12345%10 结果是5就把第二位分离出来了3、进行这样的循环 这个数是6位就循环6次,把结果存放在一组变量中,这样就把这个数的各位都进行分离出来了4、数字首位为0,
    发表于 02-20 21:02

    基于labview的数码管显示

    自己用labview做的一个小程序,用数码管循环显示数字0-9,有需要的朋友可以下载。
    发表于 06-03 12:42

    哪位大神帮我看看代码出了什么问题

    想做一个按键控制四位数码管按键按一下 数码管循环显示数字 再按一下数码管归零 哪位大神帮我看看
    发表于 06-06 20:07

    LED数码管循环移位显示如何去完成呢

    单片机系统基础实验——LED数码管循环移位显示第一部分 前言第二部分 数码管的原理构成LED数码管的结构LED
    发表于 11-18 06:38

    4个数码管循环显示数字有几个需要注意的点

    单片机–4个数码管循环显示数字同时LED灯循环左移显示这里有几个需要注意的点:1.如果让8个
    发表于 11-29 07:50

    如何利用89C51数码管循环显示数字0~15

    89C51数码管循环显示数字0~15,使用Proteus经行仿真。需要材料:  数码管、AT89C51、最小系统电路、代码如下://----
    发表于 12-08 08:28

    掌握定时器的使用和编程方法

    六位数码管均为共阴极,其中LED1~LED6为公共端,进行位选时需将其接入低电平;LEDA~LEDG、LED-DP为8段数码管,分别将其接入高电平时,可点亮各段。说明:使用时,去掉电路板上数码管右侧的跳线。三、实验内容(1)利用
    发表于 01-17 06:05

    数码管循环显示实验

    数码管循环显示实验 数码管循环显示实验一、实验目的在实际系统中,
    发表于 03-23 10:42 2234次阅读

    使用51单片机让数码管循环显示数字的电路图和程序免费下载

    本文档的主要内容详细介绍的是使用51单片机让数码管循环显示数字的程序免费下载。
    发表于 08-16 17:32 5次下载
    使用51单片机让<b class='flag-5'>数码管</b><b class='flag-5'>循环</b><b class='flag-5'>显示</b><b class='flag-5'>数字</b>的电路图和程序免费下载

    51单片机攻略—外部中断、定时器

    一、程序实战(四)中断相关基础概念:1、中断发生,中断响应,中断返回的定义2、中断可嵌套执行3、中断有优先级,排序如下:三个原则,有点意思:1、外部中断主程序:数码管循环显示数字中断子
    发表于 11-17 11:06 9次下载
    51单片机攻略—外部中断、定时器

    单片机--4个数码管循环显示数字

    单片机–4个数码管循环显示数字同时LED灯循环左移显示这里有几个需要注意的点:1.如果让8个
    发表于 11-20 10:36 2次下载
    单片机--4个<b class='flag-5'>数码管</b><b class='flag-5'>循环</b><b class='flag-5'>显示</b><b class='flag-5'>数字</b>

    89C51数码管循环显示数字0~15

    89C51数码管循环显示数字0~15,使用Proteus经行仿真。需要材料:  数码管、AT89C51、最小系统电路、代码如下://----
    发表于 11-25 13:06 25次下载
    89C51<b class='flag-5'>数码管</b><b class='flag-5'>循环</b><b class='flag-5'>显示</b><b class='flag-5'>数字</b>0~15

    《单片机》实验——实验5 定时器及数码显示实验

    六位数码管均为共阴极,其中LED1~LED6为公共端,进行位选时需将其接入低电平;LEDA~LEDG、LED-DP为8段数码管,分别将其接入高电平时,可点亮各段。说明:使用时,去掉电路板上数码管右侧的跳线。三、实验内容(1)利用
    发表于 01-18 10:13 3次下载
    《单片机》实验——实验5 定时器及<b class='flag-5'>数码</b><b class='flag-5'>显示</b>实验

    8个数码管循环显示数字

    8个数码管循环显示数字
    发表于 10-20 10:15 4次下载