基于AT89C51单片机篮球计时计分器的设计(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机篮球计时计分器的设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。

目录

绪论

原理图

​编辑

仿真图

系统总体设计图

代码实现

系统论文

资源下载


绪论

本次设计用由AT89C51编程控制LCD1602作显示的球赛计时计分系统。该系统具有赛程定时设置、赛程时间暂停、及时刷新甲乙双方的成绩等功能。它具有价格低廉、性能稳定、操作方便并且易于携带等特点,广泛适合各类学校或者小型团体作为赛程计时计分。

原理图


仿真图


 系统总体设计图


代码实现(部分)


include<reg51.h>//51单片机头文件
typedef unsigned char uchar;
typedef unsigned int  uint;
sbit K1=P3^2;//比赛倒计时开始/暂停
sbit K2=P3^3;//24s倒计时重新开始
sbit K3=P1^3;//乙队+1按键
sbit K4=P1^2;//乙队+2按键
sbit K5=P1^1;//甲队+1按键
sbit K6=P1^0;//甲队+2按键
sbit K7=P1^4;//甲队+3按键
sbit K8=P1^5;//乙队+3按键
sbit beep=P2^0;//蜂鸣器接口  
sbit RS=P2^7;
sbit E=P2^5;
char miao,fen,num,time,aa;
uchar bb,cc;
uchar code table1[]={"H.T 000:000 R.T "};
uchar code table2[]={"12:00  SEC-1  24"};
//延时子函数
void delay(uint z)  
{uint x;uchar y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}
//LCD1602液晶写指令子函数
void write_com(uchar com)
{RS=0;P0=com;delay(5);E=1;delay(5);E=0;
}
//LCD1602液晶写数据子函数
void write_date(uchar date)
{RS=1;P0=date;delay(5);E=1;delay(5);E=0;
}
//LCD1602液晶初始化子函数
void LCD1602_init()
{uchar i;bb=0;    //H.T分数初始化cc=0;    //R.T分数初始化time=0;TMOD=0x10;    //定时器1初始化TL1=0x00;TH1=0x4c;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;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 point_lcd(uchar add,uchar dat)
{write_com(0x80+add);write_date(0x30+dat/100);write_date(0x30+(dat%100)/10);write_date(0x30+dat%10);write_com(0x80+add);
}
//按键扫描子函数
void keyscan()
{if(K3==0)     //K3按下H.T分数加一{while(K3==0);bb++;point_lcd(0x04,bb);  //分数显示更新if(K3==0)    //松手检测{while(K3==0);delay(20);}}else if(K4==0)    //S4按下H.T分数加二{while(K4==0);bb=bb+2;point_lcd(0x04,bb);if(K4==0){while(K4==0);delay(20);}}else if(K7==0)    //S4按下H.T分数加二{while(K7==0);bb=bb+3;point_lcd(0x04,bb);if(K7==0){while(K7==0);delay(20);}}else if(K5==0)    //S5按下R.T分数加一{while(K5==0);cc++;point_lcd(0x08,cc);if(K5==0){while(K5==0);delay(20);}}else if(K6==0)    //S6按下R.T分数加2{while(K6==0);cc=cc+2;point_lcd(0x08,cc);if(K6==0){while(K6==0);delay(20);}}else if(K8==0)    //S6按下R.T分数加2{while(K8==0);cc=cc+3;point_lcd(0x08,cc);if(K8==0){while(K8==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结束发出3s连续报警{beep=1;delay(3000);beep=0;aa=24;}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)    //每节结束蜂鸣器发出8s的间断报警{for(i=80;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;}
}
//主函数

系统论文(在这里只介绍部分)


3 系统调试

3.1初始状态显示

3.2甲队加分显示

3.3 乙队加分显示

3.4 倒计时显示

4  总结

本设计报告介绍了一种基于AT89S51单片机的交通灯的设计方法,本论文完成了系统的硬件设计与制作,详细介绍了系统硬件设计的过程,并结合软件系统完成了整个系统的软、硬件联调,系统工作良好,实现了基本功能。

这次课设是我们遇到过的较大的设计,所以遇到的问题也比较的多,尤其是以前没有接触过如此复杂的硬件电路以及软件编程,在软、硬件设计和调试中遇到了不少的困难,在同学的帮助以及经过自己在图书馆和网上查资料才逐一克服了难题,学习到了不少的专业知识。在整个设计过程之前,我已经在网上找了相关方面的资料,在图书馆也借了许多书,万事开始难,在这次课设中,我掌握了很多单片机及其接口应用的知识,让我对我所学过的知识有所巩固和提高,并且让我对当今单片机的最新发展技术有所了解。在整个过程中,我学到了新知识,增长了见识。在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。

5 参考文献

[1] 徐惠民, 安德宁. 单片微型计算机原理接口及应用. (第二版) 北京:北京邮电大学出版社. 2000:23-38

[2] 唐俊翟. 单片机原理与应用. 北京:冶金工业出版社, 2003. 8

[3] 丁明亮, 唐前辉.  51单片机应用设计与仿真-基于Keil C和Proteus .  北京: 北京航空航天大学出版社,  2009

[4 ]彭为. 黄科, 雷道仲. 单片机典型系统设计实例精讲. 北京:电子工业出版社. 2006:247-273

[5] 潘永雄. 新编单片机原理与应用.  西安:西安电子科技大学出版社. 2003 [6] 求是科技. 单片机典型模块设计实例导航.  北京:人民邮电出版社, 2004

[7] 李广弟. 单片机基础. 北京:北京航空航天大学出版社, 2001. 7:63-65

[8] 余发山. 单片机原理及应用技术. 徐州:中国矿业大学出版社, 2003.

[9] 马家辰, 孙玉德, 张颖等. MCS-51单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社, 1997:178-179

[10] 崔华, 蔡炎光 . 单片机实用技术. 北京:清华大学出版社, 2001.

[11] 周润景,张丽娜. 基于PROTEUS的电路及单片机系统设计及仿真. 北京:北京航空航天大学出版社,2006. 5:3-19

[12] 宋凤娟, 廉文利, 付云强. 单片机89C51在调速系统中的应用. 微计算机信息, 2007, 12(6):113-114

[13] 求是科技. 单片机应用系统开发实例导航. 北京:人民邮电出版社, 2004

[14] 何立民.  单片机应用技术选编.  北京:北京航空航天大学出版社, 2002

[15] 电子世界.  2005年9月刊. 国内邮发代号:2-892

[16] 蒋辉平, 周国雄. 基于PROTEUS 的单片机系统设计与仿真实例. 北京: 机械工业出版社,  2009

[17] 李东生. Protel99 SE电路设计技术入门与应用. 第一版. 北京:电子工业出版社. 2002

[18] 罗伯特森. PCB设计基础. 北京:机械工业出版社.2007.5:15-20

[19] 金素华, 张尉. 单片机调试方法的讨论. 电子世界, 2004, 25(4):34-65


资源下载


如果有需要这个系统的源码、仿真、论文等资源的可以私信我获取。感谢你的阅读~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postgresql创建只读权限的用户

在PostgreSQL中&#xff0c;创建具有只读权限的用户是一个常见的安全需求&#xff0c;以确保某些用户只能查询数据库中的数据&#xff0c;而不能修改或删除数据。以下是如何在PostgreSQL中创建只读用户的方法&#xff1a; 以下是创建PostgreSQL只读用户的步骤&#xff1a; 使…

cf957---D. Test of Love

恩科尔愿意为朱伦做任何事&#xff0c;甚至愿意游过鳄鱼出没的沼泽。我们决定测试一下这份爱。恩科尔必须游过一条宽 11 米、长 &#x1d45b;&#x1d45b; 米的河流。 河水非常冷。因此&#xff0c;***(即从 00 游到 &#x1d45b;1&#x1d45b;1 的整个过程)恩科尔在水里游…

通用详情页的打造

背景介绍 大家都知道&#xff0c;详情页承载了站内的核心流量。它的量级到底有多大呢&#xff1f; 我们来看一下&#xff0c;日均播放次数数亿次&#xff0c;这么大的流量&#xff0c;其重要程度可想而知。 在这样一个页面&#xff0c;每一个功能都是大量业务的汇总点。 作为…

【Web开发手礼】探索Web开发的魅力(三)-html基础标签(3)

上述主要是对html标签的介绍和一些基本练习可以当作日常笔记收藏一下&#xff01;&#xff01;&#xff01; 目录 前言 html基础标签 前言 上述主要是对html标签的介绍和一些基本练习可以当作日常笔记收藏一下&#xff01;&#xff01;&#xff01; 提示&#xff1a;以下是本…

克隆某个特定的分支而不是默认分支(master)

当你克隆一个远程仓库时&#xff0c;默认情况下 Git 会克隆整个仓库并将 master&#xff08;或 main&#xff0c;取决于默认分支的名称&#xff09;分支检出为当前分支。如果你想直接克隆某个特定的分支而不是默认分支&#xff0c;可以使用 --branch 或 -b 选项来指定分支。 克…

PostgreSQL 怎样处理数据仓库中维度表和事实表的关联性能?

文章目录 PostgreSQL 中维度表和事实表关联性能的处理 PostgreSQL 中维度表和事实表关联性能的处理 在数据仓库的领域中&#xff0c;PostgreSQL 作为一款强大的关系型数据库管理系统&#xff0c;对于处理维度表和事实表的关联性能是一个关键的问题。维度表和事实表的关联是数据…

【手写数据库内核组件】0301 动态内存池,频繁malloc/free让系统不堪重负,动态内存池让应用自由使用动态内存

动态内存管理 ​专栏内容&#xff1a; postgresql使用入门基础手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 文章目录 动态内存管…

RSA算法详解:万字文章详解RSA的加密与解密

本文目录 文章前言一、RSA的诞生1、加密算法的前世今生① 《六韬龙韬》中的阴符与阴书② 古罗马&#xff1a;凯撒密码③ 斯巴达&#xff1a;塞塔式密码&#xff08;Scytale&#xff09; 2、对称加密的脆弱性3、非对称加密算法的出现 二、RSA中的数学概念与定理1、质数理论2、关…

韩国裸机云大宽带服务器主要特点和优势

韩国裸机云大宽带服务器是一种高性能的服务器解决方案&#xff0c;它专为需要大量数据处理和快速互联网连接的应用而设计**。这种服务器通常由第三方服务提供商提供&#xff0c;主要特点是没有预装操作系统和软件&#xff0c;用户可以根据自身需求进行个性化配置。以下将根据您…

使用Qt和mitmproxy开发一个抓取网页短视频的万能工具

目录 实现原理 mitmproxy介绍 功能简介 安装 脚本示例 如何使用 解释 注意事项 QT工具实现 其他资源 实现原理 使用WebView组件造一工具,工具可输入网页地址并显示网页内容及播放视频。把工具的代理设置指向mitmproxy的端口服务。配合使用mitmproxy的MITM技术,监…

7.8~7.10练习

目录 1.扑克牌游戏 2.链表基本功能的实现&#xff08;单项链表&#xff09; 3.移除链表元素力扣 4.反转链表力扣 5.链表的中间结点 5.返回倒数第k个节点​编辑 6.合并两个有序链表 7.链表基本功能的实现&#xff08;双向链表&#xff09; 8.链表分割 1.扑克牌游戏 public…

LightRAG:高效构建和优化大型语言模型应用的 PyTorch 框架

一、前言 随着大语言模型 (LLM) 的蓬勃发展&#xff0c;检索增强生成 (RAG) 技术作为一种将 LLM 与外部知识库结合的有效途径&#xff0c;受到了越来越多的关注。 然而&#xff0c;构建 LLM 应用的真正挑战在于开发者需要根据具体需求进行高度定制化&#xff0c;而现有的 RAG …

Vscode ssh远程连接Linux服务器登录时密码password无法输入

问题 最近在用Vscode远程连接Linux服务器时&#xff0c;在终端提示输入密码password的时候用键盘输入没有反应。 以为是键盘坏了&#xff0c;然后尝试复制粘贴没有用。 后来找到了原因以及解决方法&#xff0c;感谢原帖作者&#xff08;原贴链接粘在下面&#xff09; 原因 …

flutter 列表下拉框加搜索

1.使用控件搜索加下拉框dropdown_search: ^0.4.9和获取中文拼音lpinyin: ^1.1.1 2.加入中文查询和首字查询 在当中找到相应的packages&#xff0c;再在SelectDialog.dart当中加入引入拼音搜索 import package:lpinyin/lpinyin.dart; 更改匹配方法manageItemsByFilter使其可…

有必要把共享服务器升级到VPS吗?

根据自己的需求来选择是否升级&#xff0c;虚拟专用服务器 (VPS) 是一种托管解决方案&#xff0c;它以低得多的成本提供专用服务器的大部分功能。使用 VPS&#xff0c;您的虚拟服务器将与在其上运行的其他虚拟服务器共享硬件服务器的资源。但是&#xff0c;与传统的共享托管&am…

Oracle数据库加密与安全

Wallet简介&#xff1a; Oracle Wallet(即内部加密技术TDE( Transparent DataEncryption&#xff09; TDE是 Oracle10gR2中推出的一个新功能,使用时要保证Oracle版本是在10gR2或者以上 Wallet配置&#xff1a; 1.创建一个新目录&#xff0c;并指定为Wallet目录 /home/oracle…

Python爬虫技术从去哪儿网获取旅游数据,对攻略进行可视化分析,提供全面的旅游攻略和个性化的出行建议

背景 随着信息技术的快速发展和互联网的普及&#xff0c;旅游行业也迎来了数字化和智能化的变革。去哪儿网作为中国领先的在线旅游平台之一&#xff0c;提供了丰富的旅游产品和服务&#xff0c;涵盖了机票、酒店、旅游度假等各个方面。用户通过去哪儿网可以方便地查询、预订和…

C# Path

Path.CombinePath.GetDirectoryNamePath.GetFileNamePath.GetFullPathPath.GetExtensionPath.GetFileNameWithoutExtensionPath.HasExtensionPath.ChangeExtensionPath.GetPathRootPath.IsPathRooted C# 中的 Path 是 System.IO 命名空间中的一个类&#xff0c;提供了用于操作…

el-input-number计数器change事件校验数据,改变绑定数据值后change方法失效问题的原因及解决方法

在change事件中如果对el-input-number绑定的数据进行更改&#xff0c;会出现change事件失效的问题 试过&#xff1a;this.$set()及赋值等方法&#xff0c;都无法解决 解决方法&#xff1a;用$nextTick函数对绑定值进行更改&#xff08; this.$nextTick(() > { this.绑定…

Java:构造函数与对象

第一章&#xff1a;构造函数揭秘 —— 创造者的第一次触碰 构造函数&#xff0c;顾名思义&#xff0c;是用于创建和初始化对象的特殊方法。它没有返回类型&#xff0c;名字与类名一致。构造函数是对象诞生的第一步&#xff0c;也是最至关重要的一步。让我们通过一个生动的例子…