51单片机的篮球计分器液晶LCD1602显示( proteus仿真+程序+原理图+PCB+设计报告+讲解视频)

51单片机的篮球计分器液晶LCD1602显示

51单片机的篮球计分器液晶LCD1602显示

( proteus仿真+程序+原理图+PCB+设计报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0058

📑1.主要功能:

基于51单片机AT89C51/52(与AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机通用)

基于51单片机的篮球计分器液晶LCD1602显示

设计内容:

1、设计LCD显示篮球比赛计时计分牌。

2、通过加分按钮可以给A队或B队加分。

3、设计对调功能,A队和B队分数互换,意味着中场交换场地。

4、显示比赛倒计时功能。

5、创新内容:

如显示第几小节。

单节比赛或全场比赛结束后有蜂鸣器提醒。

可以通过按键完成+1、+2、+3操作。

篮球比赛24秒进攻倒计时功能

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

📑讲解视频:

仿真讲解+代码讲解

51单片机篮球计分器LCD1602液晶(仿真+代码+报告+原理图+PCB+讲解)

📑2.仿真

开始仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

📑3. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

⚓️LCD1602液晶初始化子函数:

cpp 复制代码
//LCD1602液晶初始化子函数
void LCD1602_init()
{
	uchar i;
	bb=0;    //H.T分数初始化
	cc=0;    //R.T分数初始化
	time=0;
	TMOD=0x10;    //定时器1初始化 
	TL1=0x00;
	TH1=0x4c;  //设置定时器初值 定时器50ms一次中断
	EA=1;     //开总中断
	ET1=1;     //开定时器1
	TR1=0;     //定时器1不工作
	EX0=1;     //开中断0
	EX1=1;     //开中断1
	IT0=1;     //中断0为边沿触发
	IT1=1;     //中断1为边沿触发
	E=0; 
	beep=0;
	miao=0;
	fen=12;//默认单节比赛时间(单位分钟)
	num=1;
	aa=24;
	change_flag = 0;
	write_com(0x38);  //LCD设置初始化
	write_com(0x0c);
	write_com(0x06);
	write_com(0x01);
	write_com(0x80);  //LCD显示初始化
	for(i=0;i<16;i++)
	{
	  	write_date(table1[i]);
	}
	write_com(0x80+0x40);
	for(i=0;i<16;i++)
	{
	  	write_date(table2[i]);
	}
}

⚓️ 按键处理函数

c 复制代码
//按键扫描子函数
void keyscan()
{
	if(K3==0)     //K3按下A分数加一
	{
  		while(K3==0);
		bb++;
  		point_lcd(0x04,bb);  
		
  		if(K3==0)    //松手检测
  		{
   			while(K3==0);
   			delay(20);
  		}
	}
	else if(K4==0)    //S4按下A分数加二
	{
  		while(K4==0);
		bb=bb+2;
  		point_lcd(0x04,bb);
  		if(K4==0)
  		{
   			while(K4==0);
   			delay(20);
  		}
	}
	else if(K7==0)    //S4按下A分数加二
	{
  		while(K7==0);
		bb=bb+3;
  		point_lcd(0x04,bb);
  		if(K7==0)
  		{
   			while(K7==0);
   			delay(20);
  		}
	}
	else if(K5==0)    //S5按下B分数加一
	{
  		while(K5==0);
		cc++;
  		point_lcd(0x0A,cc);
  		if(K5==0)
  		{
   			while(K5==0);
   			delay(20);
  		}
	}
	else if(K6==0)    //S6按下B分数加2
	{
  		while(K6==0);
		cc=cc+2;
  		point_lcd(0x0A,cc);
  		if(K6==0)
  		{
   			while(K6==0);
   			delay(20);
  		}
	}
	else if(K8==0)    //S6按下B分数加2
	{
  		while(K8==0);
		cc=cc+3;
  		point_lcd(0x0A,cc);
  		if(K8==0)
  		{
   			while(K8==0);
   			delay(20);
  		}
	}
	else if(K9==0)    //S6按下B分数加2
	{
  		while(K9==0);
		if(change_flag){
			change_flag = 0;
		}else{
			change_flag = 1;
		}
		point_lcd(0x04,bb);
		point_lcd(0x0A,cc);		
  		if(K9==0)
  		{
   			while(K9==0);
   			delay(20);
  		}
	}	
}

⚓️ 比赛计时部分函数

c 复制代码
//比赛倒计时/24s倒计时
void counter_down()
{
	uchar i;
	if(time>=20)     //每1s倒计时做减一操作
	{
  		miao--;
  		aa--;
  		write_com(0x80+0x4e);  //24s倒计时显示
  		write_date(0x30+aa/10);
  		write_date(0x30+aa%10);
		write_com(0x80+0x4e);
  		if(aa==0)    //24s结束发出报警
  		{
   			beep=1;
  		 	delay(3000);
   			beep=0;
   			aa=24;
			TR1=0;     //定时器1暂停
  		}
  		if((miao==0)&&(fen==0))  //检测一节比赛是否结束
  		{
   			TR1=0;     //定时器1暂停
   			write_com(0x80+0x44);
   			write_date(0x30);
   			num++;
   			aa=24;    //24s计时复位
   			write_com(0x80+0x4e);  //24s倒计时显示
   			write_date(0x30+aa/10);
   			write_date(0x30+aa%10);
			write_com(0x80+0x4e);
   			if(num<5)    //每节结束蜂鸣器发出4s的间断报警
   			{
    			for(i=40;i>0;i--)
    			{
     				beep=1;
     				delay(500);
     				beep=0;
     				delay(500);
    			}
   			}
   			if(num==5)    //终场结束,蜂鸣器发出10s的连续警报声
   			{
     			beep=1;
     			delay(10000);
     			num=0;
   			}	
   			beep=0;     //蜂鸣器关闭
			write_com(0x80+0x4b); //更新"SEC-?"
			write_date(0x30+num);
			write_com(0x80+0x4b);
			miao=0;     //倒计时复位
			fen=12;
  		}
  		if(miao==-1)
  		{
   			miao=59;
   			fen--;
  		}
  		write_com(0x80+0x40);  //更新倒计时显示
  		write_date(0x30+fen/10);
  		write_date(0x30+fen%10);
  		write_com(0x80+0x43);
  		write_date(0x30+miao/10);
  		write_date(0x30+miao%10);
		write_com(0x80+0x43);
  		time=0;
	}
}

📑4. 原理图

原理图使用AD绘制,可供实物参考。

Proteus仿真和实物作品的区别:

1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。

2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。

电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。

3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。

4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。

📑5. PCB图

📑6. 设计报告

10112字设计报告,内容包括摘要,硬件设计、软件设计、软硬件框图、调试、结论等

📑7. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

资料下载链接:

0、常见使用问题及解决方法--必读!!!!

1、仿真图

2、程序源码

3、开题报告

3、原理图

5、功能要求

6、元器件清单

7、设计报告

8、软硬件流程框图

9、讲解视频

Altium Designer 软件资料

KEIL软件资料

Proteus软件资料

单片机学习资料

答辩技巧

设计报告常用描述

鼠标双击打开查找更多51 STM32单片机课程毕业设计.url

相关推荐
西城微科方案开发7 分钟前
LED汽车打气泵PCBA方案
单片机·嵌入式硬件
Purple Coder28 分钟前
51单片机(1)
单片机·嵌入式硬件·51单片机
华普微HOPERF40 分钟前
LoRa模块,如何通过卫星通信补齐地面网络的覆盖盲区?
网络·嵌入式硬件·模块·卫星通信
我先去打把游戏先41 分钟前
Ubuntu虚拟机(服务器版本)Git卸载完全教程——彻底移除与清理配置
服务器·git·单片机·嵌入式硬件·物联网·ubuntu·51单片机
踏着七彩祥云的小丑2 小时前
嵌入式测试学习第 25 天:I2C通信协议基础、拓扑、读写逻辑
单片机·嵌入式硬件
zlinear数据采集卡2 小时前
SPI通信电路深度解析:从协议原理到ZLinear数据采集卡的实战设计
单片机·嵌入式硬件
智者知已应修善业2 小时前
【51单片机8个LED的花样12亮34熄56间隔78闪烁3秒3闪烁】2023-11-4
c++·经验分享·笔记·算法·51单片机
一口一口吃成大V2 小时前
APB信号总线
单片机·嵌入式硬件
思茂信息2 小时前
CST对一种用于中型无人机 433MHz 通信的宽带共形贴片天线
开发语言·单片机·嵌入式硬件·平面·无人机·cst
崇山峻岭之间3 小时前
单片机触摸屏实验
单片机·嵌入式硬件