ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

51动态数码管

2022-02-02 13:32:03  阅读:160  来源: 互联网

标签:函数 -- void DIG 51 unsigned char 数码管 动态


不用译码器

 

 /**********************51单片机学习例程************************
*  平台:Keil U4 + STC89C52
*  名称: 静态数码管试验流动显示0-F
*  编写:Tony
*  日期:2022-2-2
*   QQ : 674749794
*  晶体:12MHZ
*	 变更记录:无
******************************************************************/

#include<reg51.h>

//--定义使用的IO口--//
#define GPIO_DIG   P0	//段选
#define GPIO_PLACE P1	//位选

//--定义全局变量--//
unsigned char code DIG_PLACE[8] = {
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制   查表的方法控制
unsigned char code DIG_CODE[17] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsigned char DisplayData[8];
//用来存放要显示的8位数的值

//--声明全局函数--//
void DigDisplay(); //动态显示函数

/*******************************************************************************
* 函 数 名         : main
* 函数功能		   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

void main(void)
{
	unsigned char i;

	for(i=0; i<8; i++)
	{
		DisplayData[i] = DIG_CODE[i];	
		//DisplayData[i] = 0xFF;
	}
	while(1)
	{
		DigDisplay();
	}				
}

/*******************************************************************************
* 函 数 名         : DigDisplay
* 函数功能		   : 使用数码管显示
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

void DigDisplay()
{
	unsigned char i;
	unsigned int j;

	for(i=0; i<8; i++)
	{
		GPIO_PLACE = DIG_PLACE[i];	 //发送位选
		GPIO_DIG = DisplayData[i];     //发送段码
		j = 10;						 //扫描间隔时间设定
		while(j--);	
		GPIO_DIG = 0x00;//消隐
	}
}

  

 

138译码器

 /**********************51单片机学习例程************************
*  平台:Keil U4 + STC89C52
*  名称: 静态数码管试验流动显示0-F
*  编写:Tony
*  日期:2022-2-2
*   QQ : 674749794
*  晶体:12MHZ
*	 变更记录:无
******************************************************************/

#include<reg51.h>

//--定义使用的IO--//
#define GPIO_DIG P0

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

//--定义全局变量--//
unsigned char code DIG_CODE[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsigned char DisplayData[8];
//用来存放要显示的8位数的值

//--声明全局函数--//
void DigDisplay(); //动态显示函数
/*******************************************************************************
* 函 数 名         : main
* 函数功能		   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void main(void)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		DisplayData[i]=DIG_CODE[i];	
	}
	while(1)
	{
		DigDisplay();
	}				
}
/*******************************************************************************
* 函 数 名         : DigDisplay
* 函数功能		   : 使用数码管显示
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void DigDisplay()
{
	unsigned char i;
	unsigned int j;
	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位	
		}
		GPIO_DIG=DisplayData[i];//发送段码
		j=10;						 //扫描间隔时间设定
		while(j--);	
		GPIO_DIG=0x00;//消隐
	}
}

  

 

标签:函数,--,void,DIG,51,unsigned,char,数码管,动态
来源: https://www.cnblogs.com/54programer/p/15860258.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有