基于51单片机天大的滚动显示Protues仿真设计

一、设计背景

        数码管是一种常见的数字显示设备,它主要由发光二极管(LED)和控制电路组成。LED数码管可以分为共阳(公共阳极)和共阴(公共阴极)两种类型。在共阳数码管中,每个数码管的阳极(P端)都是连接在一起的,而每个数码管的阴极(N端)是独立的。控制电路根据需要将电流引入相应的阴极,使其发亮,从而显示特定的数字或字符。在共阴数码管中,每个数码管的阴极(N端)都是连接在一起的,而每个数码管的阳极(P端)是独立的。控制电路根据需要将电流引入相应的阳极,使其发亮,从而显示特定的数字或字符。

        无论是共阳还是共阴数码管,电流通过LED的发光使其显示。每个数码管的数字或字符通过在特定的时序下,点亮不同的LED组合来实现。数码管通常用于显示数字、字母、符号等,广泛应用于计时器、温度计、计数器、电子钟等各种电子设备中。由于其低功耗、可靠性高以及易于控制等特点,数码管在数字显示领域仍然是一种重要的显示技术。本文将使用51单片机芯片,结合14SEG-MP-CA-BULE数码管实现天大两个汉字的滚动显示。

二、实现功能

        本设计以51单片机为控制核心,利用14段数码管实现天大两个汉字的滚动显示,可具体实现以下功能:

     (1)利用14SEG-MP-CA-BULE数码管实现天大两个汉字的循环滚动显示;

     (2)图形滚动速度为每秒变换一次;

     (3)滚动顺序为:XXX天-XX天大-X天大X-天大XX-大XXX(X表示不显示);

三、仿真演示

数码管显示XXX天。

基于51单片机天大的滚动显示Protues仿真设计_第1张图片

数码管显示XX天大。

基于51单片机天大的滚动显示Protues仿真设计_第2张图片

数码管显示X天大X。

基于51单片机天大的滚动显示Protues仿真设计_第3张图片

数码管显示天大XX。

基于51单片机天大的滚动显示Protues仿真设计_第4张图片

数码管显示大XXX。

基于51单片机天大的滚动显示Protues仿真设计_第5张图片

四、源程序

#include   //51头文件

#define uchar unsigned char	 //0——255
#define uint unsigned int	 		//0——65535

uchar locCode[4] = {0x08,0x04,0x02,0x01};//位码 
uchar disCode[2] = {0x7e,0x7f};					//数码管段码(天,大)

uint smg_c = 0;     //定时器计时次数
uchar smg_s = 0;    //显示状态变化

void displayTime(void);	 //刷新显示
void disPlay(uchar dis,uchar loc);	//数码管段选及位选
void delay_us(unsigned int t);//毫秒延时
void Timer_Init(void);//定时器0初始化

void Timer_Init(void)
{
	TMOD=0x01; //方式一
	
	TH0= (65536-50000)/256;
	TL0= (65536-50000)%256;		// 50ms
	
	TR0=1;		//开启T0
	ET0=1;		//T0中断允许
	EA=1;	//总中断开启
}

void T0_INT0(void)  interrupt 1
{ 
	smg_c++;    //中断次数累加
	if(smg_c == 20)   //1s时间到
	{
		smg_c = 0;   //中断次数清零
		smg_s++;   //显示状态改变
		if(smg_s == 5)
		{
			smg_s = 0; //显示状态回到初始状态 
		}
	}
}

void main(void)
{
	Timer_Init();   //定时器0初始化
	while(1)
	{		
		displayTime();   //刷新显示
	}
}

void displayTime(void)	 //刷新显示函数
{
	 switch(smg_s)
	 {
		  case 0:disPlay(0,0);break;     // ** ** ** 天 //
	      case 1:disPlay(0,1);disPlay(1,0);break;  // ** ** 天 大 //
	      case 2:disPlay(0,2);disPlay(1,1);break;  // ** 天 大 ** //
		  case 3:disPlay(0,3);disPlay(1,2);break;  // 天 大 ** ** //
		  case 4:disPlay(1,3);break;     // 大 ** ** ** //
	 }
}

void disPlay(uchar dis,uchar loc)	 //数码管段选及位选
{
	P1 = locCode[loc];	//位码输出
	P0 = disCode[dis];	//段码输出
	P2 = 0xC9;	//段码输出
	delay_us(100);  //延时
}
 
void delay_us(unsigned int t) //毫秒延时
{
  while(t--);
}

仿真源文件及程序百度网盘链接:https://pan.baidu.com/s/11V14JkkISQ3hjamJIM2-eA 
提取码:6qau 
 

你可能感兴趣的:(51单片机,嵌入式硬件,单片机,Protues)