内蒙古工业大学单片机实训蜂鸣器按键数码管显示_第1页
内蒙古工业大学单片机实训蜂鸣器按键数码管显示_第2页
内蒙古工业大学单片机实训蜂鸣器按键数码管显示_第3页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、韵参兴孚单片机项目实践好好学习不准抄袭! !题 目:仪表参数设定 <任务二)组长:指导教师:刘伟、裴岩、斯日古楞、杨传颖、 韩海波、高鹏、郭慧 <研)、胡元元 <研)设计时间:2018年6月17日2018年6月29日一、设计目的:通过一个以8位单片机为核心的模拟量数字表的硬件调试过程,掌握具有七段LED显示、蜂鸣器自检、键盘自检的单片机应用系统的设计思想和方法。同时用单片 机实现一个模拟的乒乓球游戏机。学习应用系统软件的模块化设计方法,通过源程序的编辑、汇编或编译、链接、仿真调试,完成给定的任务。通过上述过程提高学生项目实践能力和素质。二、设计任务:要求明确设计任务内容及任务

2、分工等; < 内容小四号宋体字)1、基本任务:完成蜂鸣器、键盘、七段 LED显示器、AD7109的自检程序设计。<1)蜂鸣器自检要求:利用程序实现两种以上声音。<2)键盘自检要求:确定键盘正确。<3) 七段LED显示器自检要求:确定LED显示器每一段均正确。主任务:题目10:乒乓球游戏机难度系数:9功能:1、用5个LED显示器作为乒乓球台,用LED显示器的中间横线 一”代表乒乓球2、用两个按键代表球拍。3、比赛规则:当 一”到了最左侧LED时,左侧要及时击球,右侧同理。4、 输赢判断:当乒乓球到达某一侧时,若提前或滞后按键< 击球),则为输,用 声音和显示来表示。

3、5、球速要随着比赛回合的增加而加快,击球判断时间逐渐减小。6*、可以显示比分。硬件环境:键盘、LED显示器、喇叭等2.任务分工:组长:张勤伟负责主程序的编写以及定时计数器有关控制反应时间以及 球速的编写及调用组员:武松负责编写键盘米集程序编写组员:张子阳负责编写各程序所用延时子程序和蜂鸣器的程序的编写三、框图:要求包括自检任务和主任务的框图1、硬件编程框图及相关说明喇叭自检硬件框图:P2.3P2.3置0后,喇叭会发声,P2.3置1后,喇叭不响 键盘自检硬件框图:P1P2.5P2.610Kx;jU474HC245LDIRGNDLEDVCCEBOBlB2B3B4B5B6B70-了 -1- 1-4K

4、1,K2,K3,K4的开关值对应P1 口的低4位,而自检开关由高4位控制。然而,此程序 要求保护自检开关,检验 K1,K2,K3,K4的正确性。调用SEL8可以打开74HC245L的三 态门。然后将最终表现结果巧妙的利用 LED或喇叭表现出来。七段LED显示器自检硬件框图:po.oP0P0.7P2P2P2P0.0P0bL_COMP2P2.P2.P0.7Y0Y1Y2SEQP0 口负责字型口,P2 口负责字位口,实验中的数码管都是共阳极的。通过中断控制模数转换,采集模拟的电压量,转换为用LED显示出来的数字信号量2、主程序框图、子程序框图及相关说明1 )乒乓球主程序框图:2)子程序框图判断发球权框

5、图Stb faqiu开始Clr faqiu从右向左发 球从左向右发 球乒乓球做一程序 右移同理)接球过程框图:显示分数框图:符频率延时喇叭自检的程序框图:注释:每次循环给 得到。LED自检程序框图开始送字型显示子程序11r送01H<小数点亮)位选第一个LED各段码分别显示及数字并延时送 FFH<8.亮)返回结束此模块键盘自检程序框图开始四、程序清单:乒乓球游戏机程序score_left equ 30h定义左侧分数缓存区 uint_left equ 31h。左侧得分的个位缓存区 decade_left equ 32h左侧得分的十位缓存区 score_right equ 33h定义右侧

6、分数缓存区 uint_right equ 34h。定义右侧的分缓存区 decade_right equ 35h定义右侧分数十位缓存区 speed equ 36h 定义球移动速度缓存区 speed2 equ 37hscore equ 38h 为发球的次数开辟缓存区 beep bit p2.3 定义蜂鸣器端口 k1 bit p1.0 定义 k1 位 k2 bit p1.1 定义 k2 位 k3 bit p1.2 定义 k3 位k4 bit p1.3。定义 k4 位org 00h ajmp main org 0bh ajmp time。time为定时器0子程序 org 30h。错开中断入口地址 ma

7、in:init:MOV p1,#0ffhMOV p0,#00hSETB p2.3。关闭蜂鸣器mov score_left,#0h 初始化分数mov uint_left,#0h=初始化左侧分数个位mov decade_left,#0hmov score_right,#0h初始化右侧分数 mov uint_right,#0h。初始化右侧个位分数 mov decade_right,#0h初始化右侧分数十位 mov speed,#60初始化球的移动速度 mov TMOD,#01h 。设置定时计数器方式 1 mov TH0,#0b1hmov TL0,#0e0h。定时 20msmov n,#50mov I

8、E,#82h。开总中断和定时计数器 0中断 mov R7,#0h。初始化 R7start: jb p1.2,starto 启动判断开关lcall delay2。延时去抖动jb p1.2,start。如果k3键按下则继续执行,否则返回 jb jufaq ,clr faqiu。判断谁的发球权setb faqiujb faqiu, yd_left:判断 A,B 谁发球 yd_rightydeft:mov p0,#80h。送入一”cjne a,#11,led_left1lcall score_display_leftled_left1:acall sel5acall delayacall sel8yd

9、_left2:jb k1,yd_left3。如果 k1 不按下则lcall delay2 jb k1,yd_left2 lcall yd_left_fail yd_left3:acall sel4 acall delay acall sel8 yd_left4:jb k1,yd_left5 lcall delay2 jb k1,yd_left4 Icall yd_left_fail。如果在此时按下k1键则跳入输判断子程序 yd_left5:acall sel3acall delayacall sel8yd_left6:jb k1,yd_left7lcall delay2jb k1,yd_lef

10、t6lcall yd_left_fail。yd_left7:acall sel2acall delayacall sel8yd_left8:jb k1,yd_left9lcall delay2jb k1,yd_left8lcall led_left_failyd_left9:acall sel1acall delayacall sel8ydeft10:jb p1.0,yd_left11。如果没有按下键则重新从左发球 lcall delay2 jb p1.0,yd_left10lcall time。如果接住球启动定时器加速球的速度ljmp yd_rightyd_left11:inc score_

11、rightlcall fail_buzzerclr TR0ljmp led_left*。 *。此程序实现乒乓球右移动程序*。 *yd_right:mov p0,#80h 。送入“一”cjne a,#11,led_right1lcall score_display_leftyd_right1:acall sel1acall delayacall sel8 yd_right2:jb k4,yd_right3lcall delay2 jb k4,yd_right2 lcall yd_right_fail yd_right3:acall sel2acall delayacall sel8 yd_rig

12、ht4:jb k4,yd_right5lcall delay2 jb k4,yd_right4 lcall yd_right_fail yd_right5:acall sel3acall delayacall sel8 yd_right6:jb k4,yd_right7lcall delay2jb k4,yd_right6 lcall yd_right_fail yd_right7:acall sel4acall delayacall sel8 yd_right8:jb k4,yd_right9 lcall delay2 jb k4,yd_right8 lcall yd_right_fail

13、yd_right9:acall sel5acall delayacall sel8nopyd_right10: jb p1.3,ydight。如果没有按下则重新从有发球 lcall delay2jb p1.3,yd_right10 nopIcall time。如果接住球则启动定时计数器 ljmp led_leftyd_right11:inc score_left lcall fail_buzzer clr TR0 ljmp yd_right*。 * 。功能 : 对输球进行处理的子程序 。返回值 :右侧分数* yd_left_fail:lcall fail_buzzerinc score_rig

14、ht clr TR0 ajmp yd_left yd_right_fail:lcall fail_buzzer inc score_left clr TR0 ajmp yd_right*。 * 。下面为所有用到的的子程序*。 * sel5: setb p2.5clr p2.6clr p2.7retsel4: clr p2.5 setb p2.6 setb p2.7 retsel3: clr p2.5 setb p2.6 clr p2.7 retsel2: clr p2.5clr p2.6setb p2.7retsel1: clr p2.5clr p2.6clr p2.7retsei8:setb

15、 p2.5 开三态门 74hc245 setb p2.6setb p2.7ret*。 * 。分数显示程序 。本段程序用来将采集的分数显示到数码管上*。 * 。接住球的蜂鸣器程序 win_buzzer:mov r4,#60mov p0,#0ch在蜂鸣器响的同时让"1"也亮 win_buzzer1:cpi beep acaii deiay1djnz r4,win_buzzer1ret 。未接住蜂鸣器的程序 fail_buzzer:mov r4,#60 fail_buzzer1:cpl beep acall delay2 djnz r4,fail_buzzer1 ret*。 *。

16、分数显示程序 。本段程序用来将采集的左侧击球分数显示到数码管上*。 *score_display_left: mov a,score_leftmov b,#10div abmov uint_left,bb将分数的个位送入相应的缓冲区 mov decade_left,a将十位送入相应的缓冲区 mov DPTR,#tabmov a,uint_left将个位数送入到 a中 movc a,a+DPTRacall sel3开个位显示 mov p0,a显示个位数 lcall delay1mov p0,#00h关显示以去除虚亮mov a,decade_leftmovc a,a+DPTR acall sel2

17、开十位显示mov p0,a 显示十位数lcall delay1mov p0,#00h 关显示以去除虚亮 sore_display_right:mov a,score_rightmov b,#10div abmov uint_right,b 将分数的个位送入相应的缓冲区 mov decade_right,a 将十位送入相应的缓冲区 mov DPTR,#tabmov a,uint_right 将个位数送入到 a 中 movc a,a+DPTR acall sel5 开个位显示 mov p0,a 显示个位数 lcall delay1mov p0,#00h 关显示以去除虚亮mov a,decade_r

18、ight movc a,a+DPTR acall sel4 开十位显示 mov p0,a 显示十位数 lcall delay1mov p0,#00h关显示以去除虚亮ajmp score_display_left ret*。 * 。定时计数程序中断子程序。为球移动速度进行定时,控制反应时间*。 *time:push ACCpush PSWinc r7cjne r7,#11,exitdjnz n ,timeexitdec ndec speedmov r7,#00hexit: mov TH0,#0b1h。重装初值mov TL0,#0e0h。pop PSWpop ACCretidelay:mov r6

19、,speedd1:mov r5,#100d2:mov r4,#60djnz r4,$djnz r5,d2djnz r6,d1retdelay1:mov r0,#20d3:mov r1,#20djnz r1,$djnz r0,d3retdelay2:mov r2,#50d4:mov r3,#20djnz r3,$djnz r2,d4rettab: db 7eh,0ch,0b6h,9eh,0cch,0dah,0fah,0eh,0feh,0deh数码管显示 0,1,2,3,4,5,6,7,8, 9 end喇叭自检程序清单:BEEP:MOV R0,#0DFHMOV R1,#0DFHMOV R2,#0D

20、FHLOOP1:SETB P2.3ACALL DELAY1CLR P2.3ACALL DELAY1DJNZ R0,LOOP1LOOP2:SETB P2.3ACALL DELAY2CLR P2.3ACALL DELAY2DJNZ R1,LOOP2LOOP3:SETB P2.3ACALL DELAY3CLR P2.3ACALL DELAY3DJNZ R2, LOOP3SJMP BEEPDELAY1:MOV R6,#02HN1:MOV R7,#07BHN2:DJNZ R7,N2DJNZ R6,N1RETDELAY2:MOV R4,#02H N3:MOV R5,#0AFH N4:DJNZ R5,N4D

21、JNZ R4,N3RETDELAY3:MOV R3,#02H N5:MOV R4,#0DFH N6:DJNZ R4,N6DJNZ R3,N5RETLED自检程序清单:键盘自检程序清单:KR245: MOV P0,#0LCALL SEL8MOV P1,#0FFHMOV A,P1ANL A,#0FHCJNE A,#0FH,ZWZ1SJMP KR245ZWZ1: LCALL DELAY10 MOV P1,#0FFH MOV A,P1 ANL A,#0FH CJNE A,#0FH,ZW1SJMP KR245ZW1: LCALL SEL7CJNE A,#0DH,ZW2 SJMP Z2ZW2: JC ZW

22、3SJMP Z1ZW3: CJNE A,#07H,Z3 SJMP Z4Z1:LCALL W1 LCALL LED SJMP KR245W1:LCALL SEL1 MOV P0,#0CH LCALL BEEP RETZ2: LCALL W2 LCALL LED SJMP KR245W2:LCALL SEL2 MOV P0,#0B6H LCALL BEEP LCALL BEEP RETZ3:LCALL W3 LCALL LED SJMP KR245W3:LCALL SEL3 MOV P0,#9EH LCALL BEEP LCALL BEEP LCALL BEEP RETZ4:LCALL W4 LC

23、ALL LED LJMP KR245W4:LCALL SEL4 MOV P0,#0CCH LCALL BEEP LCALL BEEP LCALL BEEP LCALL BEEP RET BEEP: CLR P2.3 LCALL DELAY1 SETB P2.3 LCALL DELAY1RETLED: MOV R0,#07HLOOP1: LCALL DELAYDJNZ R0,LOOP1RETDELAY:MOV R6,#0DEHLOOP3:DJNZ R7,LOOP3RETDELAY10:MOV R6,#14HLOOP4:MOV R7,#0F8HLOOP5:DJNZ R7,LOOP5DJNZ R6,

24、LOOP4RETDELAY1:MOV R6,#0A9HLOOP6:MOV R7,#0B0HLOOP7:DJNZ R7,LOOP7DJNZ R6,LOOP6RETSEL1: CLR P2.7CLR P2.6CLR P2.5RETSEL2: SETB P2.7CLR P2.6CLR P2.5RETSEL3: CLR P2.7SETB P2.6CLR P2.5RETSEL4: SETB P2.7SETB P2.6CLR P2.5RETSEL7: CLR P2.7SETB P2.6SETB P2.5RETSEL8: SETB P2.7SETB P2.6SETB P2.5RET 要求有明确的程序注解、程序清单可分两栏打印五、 设计体会要求每个人根据自己的不同情况分别写出本人的设计体会,不得少于 300 字。 顺序装订体会: 1 实践和想象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论