基于51单片机篮球控制器12864显示仿真及源程序

一、系统方案

1、本设计采用51单片机作为主控器。

2、比分液晶12864显示。

3、主客队加减分、节数、24秒、复位等功能。

二、硬件设计

原理图如下:

三、单片机软件设计

1、首先是系统初始化

void Timer_0()interrupt 1

{

TL0 = 0x00;

TH0 = 0xDC;

Count++;

if(Count100)
{
Count=0;
Attack_Time--;
Time_sec--;
if(Attack_Time0)

{

if(BF_flag==0){BF();BF();BF();BF();BF();}

		Attack_Time=24;
		BF_flag=0;
	}
	if(Time_sec==0)
	{
		
		Time_sec=59;
		Time_min--;
		if(Time_min==0)
		{
			Time_min=11;
		}
	}
}

}

2、液晶显示程序

void busy12864()

{

lcdDat=0xff; //口线置1,防止干扰

rs=0; rw=1; //置"命令、读"模式

//en=1; while(lcdDat&0x80); en=0;//忙等待

}

/** 写命令 参数:comDat为要发送的命令 /
void WriteCom(uchar comDat)
{
busy12864(); //忙,则等待
rs=0;rw=0; //置"命令、写"模式
lcdDat=comDat;en=1;en=0;//送出命令,并使之有效
}
/
写数据 参数:dat为要发送的数据 **/

void WriteDat(uchar dat){

busy12864(); //忙,则等待

rs=1;rw=0; //置"数据、写"模式

lcdDat=dat;en=1;en=0; //送出数据,并使之有效

}

/******** 任意尺寸点阵显示函数 ***********|

|参数:显示位置:row页数,col列号, |

| 字符大小:x横向像素,y纵向页数 |

| 显示内容:tab字模表 *****/
void showXY(uchar row,uchar col,uchar x,uchar y,uchar tab){
uchar i,j;
bit right;
if(col<64){right=0;}
else {col-=64;right=1;}
for(i=0;i<y;i++){
if(right)cs1=1,cs2=0;
else cs1=0,cs2=1;
WriteCom(addX0+row+i);
WriteCom(addY0+col);
for(j=0;j<x;j++){
if(col+j<64)WriteDat(tab[i
x+j]);
else if(right==0)
{
cs1=1,cs2=0;
WriteCom(addX0+row+i);
WriteCom(addY0+(col+j-64));
WriteDat(tab[i
x+j]);

}

}

}

}

/* 返回一个8*16字符索引位置 /
uchar enN(uchar s){
uchar i;
for(i=0;zm8x16_index[i]!=0;i++)
if(zm8x16_index[i]==s[0])break;
return i;
}
/
返回一个16
16字符索引位置 /
uchar cnN(uchar s){
uchar i;
for(i=0;zm16x16_index[i]!=0;i+=2)
if(zm16x16_index[i]*s&&zm16x16_index[i+1]
(s+1))break ;
return i/2;
}
/
显示中英文字符串 */

void showStr(uchar row,uchar col,uchar *s)

{

uchar i;

for(i=0;s[i]!=0;i++){

if(s[i]<0x80){

showXY(row,col,8,2,zm8x16_Table[enN(&s[i])]);

col+=8;

}else{

showXY(row,col,16,2,zm16x16_Table[cnN(&s[i])]);

col+=16;i+=1;

}

if(col>120)

{

col=0;

row+=2;

}

}

}

3、按键程序

void Select()

{

if(K10)
{
delay_ms(5);
if(K10)

{

while(!K1);

BF_flag++;

A_Team++;

if(A_Team==999)

{

A_Team=0;

}

BF();

}

}

if(K2==0)
{
	delay_ms(5);
	if(K2==0)
	{
		while(!K2);
		
		A_Team--;
		if(A_Team==0)
		{
			A_Team=999;
		}
		BF();
	}
}

if(K3==0)
{
	delay_ms(5);
	if(K3==0)
	{
		while(!K3); 
		BF_flag++;
		B_Team++;	
		if(B_Team==999)
		{
			B_Team=0;
		}
		BF();
	}
}	

if(K4==0)
{
	delay_ms(5);
	if(K4==0)
	{
		while(!K4); 
		B_Team--;
		if(B_Team==0)
		{
			B_Team=999;
		}
		BF();
	}
}	

if(K5==0)
{
	delay_ms(5);
	if(K5==0)
	{
		while(!K5); 
		TR0=0;BF();
		A_Team=0,B_Team=0;BF_flag=0;
		Time_min=12,Time_sec=0;
		Screenings=1;
		Attack_Time=24;
		Display();
		
	}
}	

if(K6==0)
{
	delay_ms(5);
	if(K6==0)
	{
		while(!K6);	BF();
		Attack_Time=24;BF_flag=0;
	}
}	
if(K7==0)
{
	delay_ms(5);
	if(K7==0)
	{
		while(!K7); BF();
		Screenings++;
		Attack_Time=24;BF_flag=0;
		Time_min=11,Time_sec=59;
		if(Screenings==5)
		{
			Screenings=1;	
		}
	}
}		
if(K8==0)
{
	delay_ms(5);
	if(K8==0)
	{
		BF();
		while(!K8);
		BF_flag=0;
		T_Count++;
		if(T_Count==1)
		{
			Time_min=11;Attack_Time=23;
			Time_sec=59;			
			TR0=1;	
			T_Count=2;
		}
		if(T_Count==3)
		{
			TR0=0;	
		
		}
		if(T_Count==4)
		{
			TR0=1;	
			T_Count=2;
		}
	}
}

}

4、核心算法程序

void main()

{

Init12864();//初始化
EA=1;ET0=1;
Timer0Init();
while(1)
{
	
	Select();
	Display();
	if(Time_min==0&&Time_sec==0&&Screenings==4&&Attack_Time==0)//比赛打完
	{ 
		BF();BF();BF();BF();BF();BF();BF();BF();
	}
}

}

四、 proteus仿真设计

Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
m0_739312873 小时前
【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)
stm32·单片机·嵌入式硬件
嵌入式小章3 小时前
基于STM32的实时时钟(RTC)教学
stm32·嵌入式硬件·实时音视频
TeYiToKu3 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
基极向上的三极管4 小时前
【AD】3-4 在原理图中放置元件
嵌入式硬件
徐嵌4 小时前
STM32项目---水质水位检测
stm32·单片机·嵌入式硬件
徐嵌4 小时前
STM32项目---畜牧定位器
c语言·stm32·单片机·物联网·iot
lantiandianzi4 小时前
基于单片机的老人生活安全监测系统
单片机·嵌入式硬件·生活
东胜物联5 小时前
探寻5G工业网关市场,5G工业网关品牌解析
人工智能·嵌入式硬件·5g
stm32发烧友5 小时前
基于STM32的智能家居环境监测系统设计
stm32·嵌入式硬件·智能家居
hairenjing112313 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word