使用一些与微控制器相关的硬件设备来设计篮球计时和得分手对。 最重要的设计部分有两个部分:一是数码管显示的显示部分,二是按钮处理的判断。 在此输入中文摘要(一般不少于300字)。 摘要必须反映全文的中心内容,内容应包括目的、过程、方法和结论。 讨论要求简洁、逻辑性强,尽量使用短句。 用第三人称写作,用过去时态描述作者的工作,用现在时态描述作者的结论。 【关键词】Word 1单片机; 字2数码管; 字3定时器; 正文 技术背景 单片机是现代电子技术的一个新兴领域。 它的出现极大地促进了电子工业的发展,并成为电子系统设计中最常见的。 应用手段。 近年来,单片机技术突飞猛进,各种单片机开发工具层出不穷。 虚拟仿真是近年来兴起的一项新兴应用技术。 利用虚拟仿真技术,可以在原理图设计阶段对微控制器应用设计进行评估,验证设计的电路是否满足要求的技术指标。 它还可用于更改元件参数以优化整体电路性能。 这样就无需多次购买元件和生产印刷电路板,节省了设计时间和金钱,提高了设计效率和质量。 设计意义 通过篮球计分计时器的制作,可以熟悉和了解单片机开发设计实例的过程,使读者加深对单片机的理解和应用,掌握一些方法和技巧单片机及其外围接口。 这主要体现在以下几个方面: (1)篮球得分计时器包含了该系列单片机的最小应用系统构成,同时在此基础上扩展了一些实用的外围接口。
(2)掌握键盘接口原理,能够在单片机系统中正确使用键盘,了解该类显示器的结构、工作原理和接口实例。 (3)学习调试电路,分析电路故障,积累电路调试经验。 设计目标:设计制作一款球场上使用的篮球比赛计时记分器,实现以下基本功能:(1)可以记录整个赛程的比赛时间,并可以修改比赛时间和暂停比赛时间。 (2)整个赛程中A、B队的成绩可以随时刷新。 (3)中场更换场地时,A、B队的比分可以互换。 (4)当比赛时间结束时,可以发出报警命令。 硬件电路设计电路主要包括CPU部分、电源部分、按键部分、LED显示部分。 1、CPU部分51单片机是单片机。 常见的封装形式是40脚双列直插塑料封装DIP-40。 其引脚标识为:正面面向使用者,缺口向上,左上方第一个引脚为1脚,逆时针方向依次为2脚至40脚。 通常第一只脚有一个字形。 51单片机的引脚图如图2所示,它是一款低电压、高性能的CMOS 8位微处理器,带有4K字节闪存可编程可擦写只读存储器(-ry),俗称单片机。单片机。 AT89C 微控制器为许多嵌入式控制系统提供了高度灵活且廉价的解决方案。
图2 单片机引脚 图2. 引脚说明: VCC:电源电压。 GND:接地。 P0 口:P0 口是一个 8 位开漏双向 I/O 口,每个引脚可吸收 8TTL 栅极电流。 当第一次向P1端口引脚写入1时,定义为高阻输入。 P0可用于外部程序数据存储器,可定义为数据/地址的第八位。 FIASH编程时,P0口作为原始代码输入口。 当FIASH进行验证时,P0输出原始代码。 此时P0外部必须拉高。 P1 端口:P1 端口是一个 8 位双向 I/O 端口,内部带有上拉电阻。 P1端口缓冲器可以接收和输出4TTL栅极电流。 P1口引脚写1后,内部拉高,可作为输入使用。 当P1端口被外部下拉至低电平时,将输出电流。 这是由于内部上拉所致。 在 FLASH 编程和验证期间,P1 端口作为第八个地址被接收。 P2 端口:P2 端口是一个 8 位双向 I/O 端口,内部带有上拉电阻。 P2端口缓冲器可以接收和输出4路TTL栅极电流。 当“1”写入P2端口时,其引脚被内部上拉。 上拉电阻拉高,作为输入。 因此,当用作输入时篮球计时计分器设计,P2端口引脚被外部拉低,输出电流。 这是由于内部上拉所致。 当端口P2用于访问外部程序存储器或16位地址外部数据存储器时,端口P2输出地址的高八位。 当给出地址“1”时,它利用内部上拉。 当读写外部八位地址数据存储器时,P2口输出其特殊功能寄存器的内容。
P2口接收FLASH编程和验证时的高八位地址信号和控制信号。 P3端口:P3端口引脚是8个双向I/O端口,内部有上拉电阻,可以接收和输出4路TTL栅极电流。 当向P3端口写入“1”时,它们被内部上拉至高电平并用作输入。 作为输入时,由于外部下拉为低电平,端口 P3 将因上拉而输出电流(ILL)。 端口 P3 还可以用作一些特殊功能端口,如下表所示: 端口引脚替代功能 P3.0RXD(串行输入端口) P3.1TXD(串行输出端口) P3.2/INT0(外部中断 0) P3 .3/INT1(外部中断1) P3.4T0(定时器0外部输入) P3.5T1(定时器1外部输入) P3.6/WR(外部数据存储器写选通) P3.7/RD(外部数据存储器读选通) )P3口同时接收一些用于flash编程和编程验证的控制信号。 RST:复位输入。 当振荡器复位器件时,RST 引脚必须保持高电平两个机器周期。 ALE/PROG:访问外部存储器时,地址锁存器允许使用输出电平来锁存地址的状态字节。 在FLASH编程时,该引脚用于输入编程脉冲。 正常情况下,ALE端输出一个频率周期恒定的正脉冲信号,该频率为振荡器频率的1/6。 因此,它可以用作外部输出的脉冲或用于计时目的。 然而,请注意篮球计时计分器设计,每当用作外部数据存储器时,ALE 脉冲都会被跳过。
如果要禁用 ALE 的输出,请在地址上设置 0。 此时,ALE仅在MOVX和MOVC指令为ALE时才起作用。 此外,该引脚被稍微拉高。 如果微处理器处于外部执行状态 ALE 禁用,则设置该位无效。 /PSEN:外部程序存储器的选通信号。 在从外部程序存储器获取指令期间,/PSEN 在每个机器周期被置位两次。 但当访问外部数据存储器时,这两个有效的/PSEN信号将不会出现。 /EA/VPP:当/EA保持低电平时,在此期间使用外部程序存储器(0000H-FFFFH),无论是否有内部程序存储器。 注意,在加密模式1下,/EA内部锁定为RESET; 当/EA端保持高电平时,内部程序存储器被锁定。 在 FLASH 编程期间,该引脚还用于施加 12V 编程电源(VPP)。 XTAL1:反向振荡放大器的输入和内部时钟运算电路的输入。 XTAL2:反相振荡器的输出。 3. 振荡器特性:XTAL1和XTAL2分别是反相放大器的输入和输出。 反相放大器可配置为片上振荡器。 石晶振和陶瓷振都可以使用。 如果使用外部时钟源来驱动器件,则 XTAL2 应悬空。 其余输入到内部时钟信号必须经过二分频触发器,因此对外部时钟信号的脉冲宽度没有要求,但脉冲的高低电平所需的宽度必须得到保证。
微控制器是微控制器的一种。 任何控制器正常工作的最基本条件是有正确的电源、时钟电路和复位信号。 三者缺一不可。 单片机正常工作最基本的条件是:正确的电源、时钟信号、复位信号。 51系列单片机的第40脚接电源+5V,第20脚接地。 如果电压过高或过低,都会导致单片机的CPU部分无法工作。 微控制器的指令是在时钟脉冲的控制下执行的。 时钟脉冲信号由单片机内部时钟电路和18、19脚外部晶振和电容组成的时钟电路产生。时钟电路异常也会导致单片机的CPU部分工作。 通过测量30脚(ALE)是否有时钟脉冲六分频信号输出,可以判断振荡电路是否开始振荡。 复位电路时,CPU上电后,给复位端的9脚(RST)一个复位脉冲,使CPU内部进入初始工作状态。 51系列单片机是高电平复位。 正确复位(工作状态)后,引脚 9 应保持低电平。 如果复位电路出现故障,CPU将无法工作。 由于CPU的复位电路仅在上电瞬间产生复位脉冲,周期一般为几毫秒,因此用万用表无法识别是否正常。 对于只有上电复位的复位电路,可以通过强制复位来快速判断CPU是否有故障。 立即将复位连接到电源的正极端子。 如果此时CPU恢复工作,则说明CPU的复位电路出现故障。 对于采用按钮复位的复位电路,按下复位按钮,测量复位端是否产生高电平,即可判断复位电路是否正常工作。
图3 CPU控制电路 2、电源部分 图4 电源部分 4、按键部分 ADD1、DEC1、、ADD2、DEC2、RUN/STOP 其中:ADD1 A队得分加1键,(暂停时调整时间分钟加1) DEC1 A 球队成绩减1(暂停期间,时间和分钟调整为减1)。 场地变更按钮用于在中场休息期间更换场地。 ADD2:B 队得分加 1,(暂停时间调整为秒数加 1) DEC2 B 队得分减 1,(暂停时间减 1 调整为秒数)RUN/STOP 开始暂停按钮,游戏开始时按下它启动计时器,游戏开始。 比赛开始后,按下暂停计时器,比赛将暂停。 A队和B队默认得分为000,此时按ADD1按钮,比赛时间加1分钟。 按 DEC1 按钮,游戏时间减 1 分钟。 按 ADD2 按钮将游戏时间加 1 秒。 按DEC2键可以减少游戏时间1秒。 图6是关键部分系统总体电路图。 图7是系统整体电路仿真图。 图 单片机部分 图 8 电阻消除部分 图 9 蜂鸣器部分 图 10 按钮部分 图 11 时间显示部分 图 12 分数显示部分 图 13 仿真全图 软件设计代码程序由主程序执行。 在主程序中可以调用子程序,调用完成后返回主程序继续执行。 我们在主程序中初始化各个模块,并使用while循环不断执行各个子程序。 例如,按键扫描程序可以对按键进行多次扫描,简单且易于实现。
延时子程序 在本程序中,单独设置了一个带有参数传输的延时子程序,供其他程序块调用。 通过参数可以方便地控制延时,使程序更加简洁。 :中断服务子程序:当T0中断发生时,执行中断服务子程序。 本程序主要是用来提供准确的时钟来实现计时。 另外,采用数码管循环扫描显示,每次中断时数码管扫描一次,从而提供稳定的显示输出,不受其他程序延迟的影响。 数码管显示子程序采用动态显示方式,占用I/O口资源少,易于实现。 显示的分数和时间可以在操作过程中随时修改。 按键处理模块的按键识别处理程序主要由键盘识别和键值处理两部分组成。 其中,键盘识别子程序不断判断键盘是否有按键按下。 当按下某个按键时,就会到对应的按键进行相应的处理,可以实现A、B队总成绩的计算和处理以及比赛时间的相应操作。 源程序代码##//从P0口输出定时数码管的段值 ode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// tube 0-- 9的编码,,count,;//分、秒、计数器 t=12,=0;=P1^0;//A队加分,每按一次加1分/加1分比赛前时间=P1^1;//A队会失分,每按一次,就失1分/比赛前时间减少1分=P1^2;//交换场地=P1^3;//B队获得积分,每按一次,增加1分 积分/比赛前时间加1秒=P1^4;//B队减分,减去每按1分/减少1秒到比赛前时间=P0^7;//第二闪点//-- --数码管的位选控制引脚,一共有10个数码管-- -=P2^7;=P2^6;=P2^5;=P2^4;=P2^3;=P2^2;=P2^1;=P2^0;=P3^7;= P3^6;=P1^7;//闹钟=0;//游戏进度标志,当为1时篮球计时计分器设计,表示游戏已经开始,计时开启=0 ;//游戏结束标志,当为1,表示游戏结束=0; //A、B队交换位置 flag = 0; //半秒标志; //A队得分; //B队得分//== ==================延迟==================(void){ ;for(i=100;i >0;i--);}(void){//------------显示时间(分钟)------------ --=[minit/10 ];//显示分钟的十位 led1=0;//打开位选择();//延迟,以便足以点亮数码管。
led1=1;//关闭位数选择=[minit];//显示分钟个位 led2=0;();led2=1;//-------------第二闪光移动------------if(==1)=0x80;=0x00;led2=0;();led2=1;=0;//-------- - --显示时间(秒)----------=[/10];//显示秒的十位数 led3=0;();led3=1;=[];/ /显示秒个位 led4=0;();led4=1;//-----------显示1组分数和百位--------if(AorB= =0)=[/100];=[/100];led5=0;();led5=1;//---------------显示一组的十位分数 --------------if(AorB==0)=[()/10];=[()/10];led6=0;();led6=1;//- -- ------------显示1组分数的个位------------if(AorB==0)=[];=[];led7 =0;( );led7=1;//----------显示2组分数的百位-----if(AorB==1)=[/100] ;=[/100 ];led8=0;();led8=1;//------------显示2组分数的十位----------- if(AorB==1 )=[()/10];=[()/10];led9=0;();led9=1;//---------显示个位2组分数-- ---------if(AorB==1)=[];=[];led10=0;();led10=1;}//===== ===============按键检测程序================================== ========== =========(void){if(==0)//当游戏还没有开始时{if(add1==0)//当add1按钮被按下{();//调用显示,同时进行延迟去抖 if(add1==0);//延迟去抖后,仍然检测到按键按下 {if()minit-- ;=0;}();while(dec1= =0);}if(add2==0)//调整秒数,原理同上{();if(add2==0);{if ()--;=0;}();while(dec2== 0);}if(==0)//更改键{();if(==0);{TR1=0;//关闭T1计数器 alam=1;//关闭闹钟 AorB=~AorB;//启用交换 minit=;//并预设时间为12:=0;}();while(==0);}}else/ /游戏开始。
{if(add1==0)//Add1键被按下{();//同时调用显示和延迟抖动消除 if(add1==0);{if(AorB==0)//当场地标记=0, {if()--;=0;}else{if(>0)--;=0;}}();while(dec1==0);}if(add2== 0)//原理同上{();if(add2==0);{if(AorB==1){if()--;=0;}else{if(>0)- -;=0;}}( );while(dec2==0);}}}//**************************** ***main (void) {TMOD=0x11;//TMOD设置 TL0=0xb0;//定时器0,初始值为,固定时间0.=0x3c; TL1=0xb0;//定时器1,初始值为,固定时间0.=0x3c ;minit=;//初始值为12:=0;EA=1;//使能总中断 ET0=1;//使能T0中断 ET1=1;//使能 T1 中断 TR0=0;TR1=0;EX0 =1;//使能外部中断 0IT0=1;IT1=1;//EX1=1;PX0=1;//PX1=1 ;PT0=0;P1=0xFF;P3=0xFF;while(1){( );//按键检查();//显示程序}}//============外部中断0中断程序================ =(void){();EX0=0;//关闭中断使能alam=1;//关闭蜂鸣器TR1=0; //关闭定时器0if(==1)//当比较时间结束时,结束标志位=1{=0;//清除标志位}if(==0)//当游戏结束或is暂停{=1;//开始标志位TR0=1;//开始计时} else{=0;//开始标志位清零,表示暂停 TR0=0;//暂停计时}EX0=1 ;//重新启动中断}//============== =====定时器0中断服务函数================= =====(void){TL0=0xb0;//重新赋值初始值 TH0=0x3c ;TR0=1;//开始计时count++;//软件计数器加1if(count==10)//0.05s *10=0.5s,即{=0 at 0.5秒;//清除半秒标志}if(count==20)//0.05s*20=1s,即1秒{count=0 ;//清除计数器=1;//设置半秒标记为1if(==0)//倒计时,每计时1秒,时间减1。当秒=0时,秒=59分减1{if(minit>0){=59;minit--;}else//当分、秒都为0时,表示倒计时时间到,{=1;//时间标记位置=0 ;//比赛标记清为0,表示第一节结束 TR0=0;//关闭定时器 0TR1=1;//打开定时器1,使蜂鸣器响起定时器闹钟}}-- ;}}//==============定时器1中断服务函数========================== =(void){TL1=0xb0;//重新赋值初始值 TH1=0x3c;TR1=1;//开始计时++;//软件计数器增加1if(==10)//0.05s*10=0.5s,其中是半秒 {alam=0;//打开蜂鸣器}if(==20)//0.05s*20=1s,即1秒 {=0;//清除软件计数器,alam=1; //关闭蜂鸣器,即蜂鸣器会以1秒的频率发出声音}}结论通过这次工程设计实验,我们可以结合所学的一些理论知识,让我们更好的理解。 通过实践,我们可以进一步理解所学的理论,巩固和加深印象,让我们从抽象的理论知识走向生动的身体感受,更有利于学习和掌握新知识。
这个设计中最困难的部分就是调试,最有收获的部分就是调试。 无论是硬件图还是软件编程,我都学到了实用的知识和技能。 本次单片机的设计和仿真基本满足了设计的功能要求。 在今后的实践中,我将继续努力学习设计方面的理论知识,理论联系实际,努力提高自己的电路设计水平。 参考文献 [1]、《单片机原理与应用》张一坤、陈善九主编,西安电子科技大学出版社 [2]、《微机接口技术与应用》刘乐山主编,华中科技大学出版社科技大学出版社[3]、《计算机《硬件技术基础实验教程》邹风兴主编,高等教育出版社[4]、《16位微机原理、接口与应用》周佩玲主编,科技大学中国科学技术出版社[5]、《微机原理与接口技术》吴秀清主编中国科学技术出版社[6]、《微机接口技术》邓亚平主编、清华大学出版社[7]、《单片机原理与接口技术》 《单片机应用设计技术》周航慈主编,北京航空航天大学出版社[8],《单片机实用技术问答》》谢伊人主编人民邮电出版社..