基于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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
清风6666662 小时前
基于单片机的螺旋藻生长大棚PH智能控制设计
单片机·嵌入式硬件·毕业设计·课程设计
ting_zh3 小时前
微控制器(Micro Controller Unit, MCU)基础整理
单片机·嵌入式硬件
清风6666664 小时前
基于单片机的图书馆智能座位管理平台
数据库·单片机·嵌入式硬件·毕业设计·课程设计
得单片机的运5 小时前
STM32的以太网的搭建
stm32·单片机·嵌入式硬件·物联网·以太网·iot·w5500
酷飞飞6 小时前
RTC和看门狗基于GD32F407VE的天空星的配置
stm32·单片机·嵌入式硬件·mcu
WD137298015577 小时前
WD5030A,24V降5V,15A 大电流,应用于手机、平板、笔记本充电器
stm32·单片机·嵌入式硬件·智能手机·汽车·电脑·51单片机
日更嵌入式的打工仔7 小时前
GPIO 中断通用配置指南
stm32·单片机·嵌入式硬件
平凡灵感码头8 小时前
基于 STM32 的智能门锁系统,系统界面设计
stm32·单片机·嵌入式硬件
Truffle7电子9 小时前
STM32理论 —— 存储、中断
stm32·嵌入式硬件·嵌入式·存储·中断
报错小能手9 小时前
linux学习笔记(32)网络编程——UDP
单片机·嵌入式硬件