51单片机的篮球计分器液晶LCD1602显示
- 📑1.主要功能:
- 📑讲解视频:
- 📑2.仿真
- 📑3. 程序代码
- 📑4. 原理图
- 📑5. PCB图
- 📑6. 设计报告
- 📑7. 设计资料内容清单&&下载链接
- 资料下载链接:
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液晶初始化子函数:
//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; //开定时器1TR1=0; //定时器1不工作EX0=1; //开中断0EX1=1; //开中断1IT0=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]);}
}
⚓️ 按键处理函数
//按键扫描子函数
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);}}
}
⚓️ 比赛计时部分函数
//比赛倒计时/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