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

📄 led8.c

📁 控制单片机做发光二极管实验
💻 C
字号:

/*01数码管的显示*/

#include <reg51.h>
#include <intrins.h>

void display(unsigned char *lp,unsigned char lc);//数字的显示函数;lp为指向数组的地址,lc为显示的个数
void displaystr(unsigned char *lp,unsigned char lc);//字符的显示函数,同上

void delay();//延时子函数,5个空指令

code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};
			//共阴数码管 0-9 - 空 表

unsigned char l_tmpdate[8]={1,2,3,4,5,6,7,8};//定义数组变量,并赋值1,2,3,4,5,6,7,8,就是本程序显示的八个数

code unsigned char l_24C02[5]={0x5b,0x66,0x39,0x3f,0x5b};//定义数组常量,前面加"code"表示常量在程序代码中存放,
														//不占用RAM,在数码管上显示24C02

void main(void)  
{
	unsigned char i=0;
	while(1){
		display(l_tmpdate,8);	//用数字显示函数显示八个数字
		//displaystr(l_24C02,5);	//或者用这个函数显示5个字符
		
		
	}
}
void display(unsigned char *lp,unsigned char lc)//显示
{
	unsigned char i;		//定义变量
	P2=0;					//端口2为输出
	P1=P1&0xF8;				//将P1口的前3位输出0,对应138译门输入脚,全0为第一位数码管
	for(i=0;i<lc;i++){		//循环显示
	P2=table[lp[i]];		//查表法得到要显示数字的数码段
	delay();				//延时5个空指令	
	if(i==7)				//检测显示完8位否,完成直接退出,不让P1口再加1,否则进位影响到第四位数据
		break;
	P2=0;					//清0端口,准备显示下位
	P1++;					//下一位数码管
	}
}
void displaystr(unsigned char *lp,unsigned char lc)//显示
{
	unsigned char i;
	P2=0;
	P1=P1&0xF8;
	for(i=0;i<lc;i++){
	P2=lp[i];				//本函数跟上面函数一样,不同的是它不用查表,
							//直接输出显示已设定好的数值到数码段
	delay();
	P2=0;
	if(i==7)
		break;
	P1++;
	}
}
void delay(void)								//空5个指令
{
	_nop_();_nop_();_nop_();_nop_();_nop_();
}

⌨️ 快捷键说明

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