⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.c

📁 Keil 51和Proteus仿真LED,串口实例 6个共阴极LED,还可仿真串口通讯,自己项目中的代码,吐血共享 使用方法: 1、用proteus打开ddb_stc51.DSN 2、
💻 C
字号:
#include "STC89C51.H"
#include <led.h>        /* use _nop_() function */
#include "data_type.h"

extern Sys_stru Sys_Val;

/*
LED段码值
*/
#define LED_DOT 0x80
static char code led_num_chr[10]=
			{
				0x3f|LED_DOT,    // 0
				0x06|LED_DOT,    // 1
				0x5b|LED_DOT,		// 2
				0x4f|LED_DOT,		// 3
				0x66|LED_DOT,		// 4
				0x6d|LED_DOT,		// 5
				0x7d|LED_DOT,    // 6
				0x07|LED_DOT,		// 7
				0x7f|LED_DOT,		// 8
				0x6f|LED_DOT,    // 9
			};

/*
ms延时子程序

*/
void Delay_ms(uint timer_val)
{
	Sys_Val.Delay_start = Sys_Val.SysTimer;
	while(Sys_Val.SysTimer-Sys_Val.Delay_start<timer_val) ;
}

void Disp_Number(UINT32 Val)
{
	uchar cc,buf[6],j,i,bit_isdsp;

	Val&=0x0fffff;
	
	for (cc=0;cc<=5;cc++)  { buf[cc]=0; }  //速度优先
	
	while ( Val>=100000 )     { Val-=100000;  buf[0]++;}
	while ( Val>=10000 )      { Val-=10000;   buf[1]++;}
	while ( Val>=1000 )       { Val-=1000;    buf[2]++;}
	while ( Val>=100 )        { Val-=100;     buf[3]++;}
	while ( Val>=10 )         { Val-=10;      buf[4]++;  }
	buf[5]=Val;
	
	
	/*
	buf[0]=Val/0x186a0;
	buf[0]=(Val/0x2710);    //1 代码量优先
	buf[1]=(Val/0x3e8%0xa); //2
	buf[2]=(Val/0x64%0xa); //3
	buf[3]=(Val/0xa%0xa);  //4
	buf[4]=(Val%0xa);  	//5
	*/
	j=0;
	bit_isdsp=0;
	for(i=0;i<6;i++)
	{
		if(buf[i])
		{
			j=i;
			bit_isdsp=1<<(i+1);
			break;
		}		
	}

	for(i=bit_isdsp;i>0;i>>=1)
		{
			P0=0xff-i;
			P1=led_num_chr[buf[j]];
			j++;	
			Delay_ms(1);
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -