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

📄 smg_on.c

📁 EasyStudy51-II单片机开发系统的库函数源代码.包含了EasyStudy51-II硬件的全部驱动.
💻 C
字号:



#include "AT89X52.h"
#include "ES51_II.h"
#include "ES51_II_LIB.h"

//	不带小数点							0    1    2    3    4    5    6    7    8    9    a    b    c    d    e    f
unsigned char code SMG_TABLE[16]	={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

//	带小数点							0    1    2    3    4    5    6    7    8    9    a    b    c    d    e    f
unsigned char code SMG_TABLE_DP[16]	={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};

//	数码管显示缓冲区;
unsigned char SMG_BUFF[4];

//	开启数码管显示;
//		用定时器定时刷新实现数码管的动态显示,所以必须使总中断允许(EA = 1);
//		此函数中并没有使EA=1,需在其他地方加上此条语句,否则数码管不会显示;
void SMGDisplayON(void)
{
	TMOD &= 0x0f;			//	保持T0状态不变
	TMOD |= 0x10;			//	定时器1方式1
	TH1 = 0xEC;				//	定时初值
	TL1 = 0x78;				//	一次定时5ms
	ET1 = 1;				//	开定时器1溢出中断
	//EA = 1;				//	开总中断
	TR1 = 1;				//	启动定时器1	
}

//	定时器1刷新数码管显示;5ms秒刷新一次;一秒钟,每个数码管被刷新50次;
//	假定时钟为12MHZ
void T1RefurbishSMG(void) interrupt 3 //using 1
{	
	//	进入溢出中断时,变量值代表当前应刷新那个数码管
	//static unsigned char SMGENNUB = 0;
	static unsigned char SMG_Nub = 0;

	TH1=0xEC;								//	重装定时初值
	TL1=0x78;

	SMGEN |= 0xf0;							//	数码管片选全部禁止
	SEGPORT = SMG_BUFF[SMG_Nub];			//	放置数据
	SMGEN &= ~( bmSMGEN1 << SMG_Nub );		//	选择一个数码管 
	if( ++SMG_Nub > 3)
		SMG_Nub = 0;
}

⌨️ 快捷键说明

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