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

📄 51

📁 51单片机应用系统典型模块开发大全
💻
字号:
#include <reg51.h>			    // 引用标准库的头文件
#define uchar unsigned char 
#define uint unsigned int 
#define DIGPORT	  P2	        // 定义字位口
#define WORDPORT  P0	        // 定义字型口
#define fosc	12			    // 晶振频率 
#define time0	2000			// 定时2000us
uchar digbit;					// 字位
uchar buf[4];			    	// 字型码缓冲区
uint idata time0_0; 			// 临时变量,用于计算定时
void disp(void);				// 显示函数
const uchar tab[]={             /* 根据共阳极字型编码表获取0~9,A~B字型代码 */
	0xc0,0xf9,0x24,0x30,//0~3
	0x19,0x12,0x02,0x78,//4~7
	0x00,0x18,0x08,0x03,//8~b
	0x46,0x21,0x06,0x0e,//c~f
	0xff//mie
};
/* 4位8段数码管分别动态显示“0123”, */

void main()
{
	uchar k;
	DIGPORT=0xff;					// 关闭显示	
	TMOD=0x01;				     	// T0工作方式1
	/* 2ms 定时设置 */
	time0_0 = 65536-time0*fosc/12;
	TH0=(time0_0/256);
	TL0=(time0_0%256);	
	TR0=1;
	ET0=1;
	EA=1;	
	digbit=0xfe;					// 从第一位数码管开始
	for(k=0;k<=3;k++)
	{
		buf[k]=k;
	}
	for(;;);	
}

/* 定时器0中断服务子程序,定时动态扫描显示 */
void time0_int(void) interrupt 1
{
	TH0=(time0_0/256);
	TL0=(time0_0%256);
	disp();
}

/* 显示函数 */
void disp(void)
{
	uchar i;
	switch (digbit)
	{
		case 0xfe:	i=0;break;
		case 0xfd:	i=1;break;
		case 0xfb:	i=2;break;
		case 0xf7:	i=3;break;
		default: 	break;
	}
	DIGPORT=0xff;					// 关闭显示
	WORDPORT=tab[buf[i]]|0x80;		// 送字型码
	DIGPORT=digbit;					// 送字位码	
	if (digbit>0xf7)
		digbit=(digbit<<1)|0x01;
	else
	    digbit=0xfe;
}

⌨️ 快捷键说明

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