栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

51单片机动静态数码管

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

51单片机动静态数码管

静态,是将7/8段数码管接口单独分开接在单片引脚上,而动态则是将abcdefg各段接在一起,接到单片机引脚。

动态利用了人眼的视觉暂留,并且需要消音的操作,否则会有重影。

#include "reg52.h"
#define SMG	P0
char smg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
				0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极数码管字库0-f字库

void main()
{	
	SMG=smg_code[0];//将数组第1个数据赋值给数码管段选口,显示0,或者用别的数据以显示别的
	while(1)
	{
	   	
	}		
}
#include
#define SMG	 P0
sbit  LEA=P2^2;
sbit  LEB=P2^3;
sbit  LEC=P2^4;	
typedef unsigned int u16;
 u16 smg_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
				0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(char i)
{
	   while(i--);
}
void smg_display(void)
{
	   int a = 0;
	   for(a=0;a<8;a++)
	   {
	   switch(a)
	   {
	   case 7:LEC=0;LEB=0;LEA=0;break;
	   case 6:LEC=0;LEB=0;LEA=1;break;
	   case 5:LEC=0;LEB=1;LEA=0;break;
	   case 4:LEC=0;LEB=1;LEA=1;break;
	   case 3:LEC=1;LEB=0;LEA=0;break;
	   case 2:LEC=1;LEB=0;LEA=1;break;
	   case 1:LEC=1;LEB=1;LEA=0;break;
	   case 0:LEC=1;LEB=1;LEA=1;break;
	   }
	   SMG = smg_code[a];	//
	   delay(10);
	   SMG = 0x00; //消隐
	   }
}
void main()
{
while(1)
{
   smg_display();
}
}

其中74hc138为38译码器,进行选位,控制某一位数码管电平为低电平有效,其余为高电平。74hc245用以驱动数码管,因51主要是用于控制,驱动功率可能不足。

后续应该可以尝试用动态数码管添加相关内容进行计时的操作。后续再看

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955283.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号