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

相关推荐
u152109648497 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd8451015007 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼7 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
wohoo_wangzi7 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
科芯创展7 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
集芯微电科技有限公司7 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑7 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习
望眼欲穿的程序猿7 天前
读取芯片内部温度传感器
嵌入式硬件·rust
望眼欲穿的程序猿7 天前
ADC 模拟电压采集
嵌入式硬件·rust
IT方大同7 天前
(嵌入式操作系统)信号量
嵌入式硬件·c#