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

📄 动态显示v1.1.c

📁 51系列单片机 动态数码管显示试验 带proteus 仿真
💻 C
字号:
/*********************************************
 *  Emusic WorkRoom			     		     *
 *  					     				 *
 *					     					 *
 *	模块名:  数码管动态显示演示				 *
 *  文件名:动态显示V1.1.C		     		 *
 *  作者:	LJZ								 *
 *  日期:  2007-1-27日						 *
 *  功能描述:  数码管动态显示1-255			 *
 *  版本:V1.1							   	 *
 *********************************************/

#define uchar unsigned char  /*方便以后定义*/
#define uint unsigned int
#define ulong unsigned long

#include <reg51.h>  /*51头文件*/

void delay(void);  /*函数说明*/
void display(uchar a_bit[]);

main()
{
	uchar data sum_bit[3] = {0,0,0};
	uchar data i,sum = 0,mid;

	SP = 0x30;
	P1 = 0x00;
	P2 = 0x00;

	while (1)
	{
		display (sum_bit);

		sum =  sum + 1 ;
		mid = sum;
		
		for (i=2; i>0; i--)
		{
			sum_bit[i] = mid % 10;
			mid	= mid/10;
		}
		sum_bit[0] = mid; 
	}
}

/*********************************************
 *	函数名:  延时函数						 *
 *  函数说明:	使用定时器定时延时  	     *
 *  作者:	LJZ								 *
 *  日期:  2007-1-27日						 *
 *  版本:V1.0							   	 *
 *********************************************/

void delay(void)	/*延时程序*/
{
	uchar j;	/*循环变量*/
	
	for (j=0; j<5; j++)
	{
		TMOD = 0x01;
		TH0 = 0x03C;
		TL0 = 0x0B0;
		TR0 = 1;
		
		while (!TF0)	/*等待溢出*/
		{
			;
		}
		
		TR0 = 0;
		TF0 = 0;
	}
	
}
/*********************************************/
/*	函数名:  显示程序						 */
/*  函数说明:	把数据输出到数码管  	     */
/*  作者:	LJZ								 */
/*  日期:  2007-1-27日						 */
/*  版本:V1.0							   	 */
/*********************************************/

void display(uchar a_bit[3])
{
	uchar i;

	if (a_bit[0] == 0x00)
	{
		a_bit[0] = 10;
		
		if (a_bit[1] == 0x00)
		{
			a_bit[1] = 10;
			
			if (a_bit[2] == 0x00)
			{
				a_bit[2] = 10;
			}
		}
	}

	P2 = 0x04;
	
	for (i=0; i<3; i++)
	{
		switch (a_bit[i])
		{
			case 0: P1 = 0x03F;
					break;
			case 1: P1 = 0x06;
					break;
			case 2: P1 = 0x05B;
					break;
			case 3:	P1 = 0x04F;
					break;
			case 4:	P1 = 0x066;
					break;	
			case 5:	P1 = 0x06D;
					break;	
			case 6:	P1 = 0x07D;
					break;	
			case 7:	P1 = 0x07;
					break;	
			case 8:	P1 = 0x07F;
					break;	
			case 9:	P1 = 0x06F;
					break;	
			case 10:P1 = 0x00;
					break;						    
		}
		
		delay();

		P2 = P2 << 1;
	}	
}

⌨️ 快捷键说明

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