基于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(tabi* x+j);
else if(right==0)
{
cs1=1,cs2=0;
WriteCom(addX0+row+i);
WriteCom(addY0+(col+j-64));
WriteDat(tabi* x+j);

}

}

}

}

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

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

{

uchar i;

for(i=0;si!=0;i++){

if(si<0x80){

showXY(row,col,8,2,zm8x16_TableenN(\&s\[i)]);

col+=8;

}else{

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

相关推荐
小向是个Der5 小时前
嵌入式进阶——MCU上电后的动作
c语言·单片机·mcu·学习·链接脚本
Kuakewei8885 小时前
PW6606快充协议诱骗芯片:纯硬件电阻配置五档电压方案
嵌入式硬件
车软学堂6 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
LCG米6 小时前
STM32 ADC多通道DMA定时器触发实测:TRGO触发链、采样率精确控制与乒乓缓冲落地
stm32·单片机·嵌入式·adc
iCxhust6 小时前
SEGGER 的 J-Scope
单片机·嵌入式硬件
路上有只喵8 小时前
认识元器件 · 单片机(MCU/MPU/SOC) · 实战篇2
单片机·嵌入式硬件
单片机仿真设计8 小时前
Proteus仿真51单片机的智能温控风扇调速系统设计(仿真图+程序)
单片机·嵌入式硬件·proteus
youcans_10 小时前
【嵌入式软件AI编程】22. STM32 基础实验:GPIO外部中断
stm32·单片机·嵌入式硬件·ai编程·claude
未来_攻城狮10 小时前
STM32F407VGT6 芯片详解:高性能 Cortex-M4 MCU 入门指南
stm32·单片机·嵌入式硬件
xcLeigh10 小时前
FreeRTOS实战:用STM32+SEGGER打造工业级实时嵌入式系统
人工智能·stm32·单片机·嵌入式硬件·ai