内蒙古工业大学单片机实训蜂鸣器按键数码管显示

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

好好学习不准抄袭!!!

题目:仪表参数设定<任务二)

组长:指导教师:刘伟、裴岩、斯日古楞、杨传颖、韩海波、高鹏、郭慧<研)、胡元元<研)

设计时间:2018年6月17日~2018年6月29日

一、设计目的:

通过一个以8 位单片机为核心的模拟量数字表的硬件调试过程,掌握具有七段LED 显示、蜂鸣器自检、键盘自检的单片机应用系统的设计思想和方法。同时用单片机实现一个模拟的乒乓球游戏机。

学习应用系统软件的模块化设计方法,通过源程序的编辑、汇编或编译、链接、仿真调试,完成给定的任务。通过上述过程提高学生项目实践能力和素质。

二、设计任务:

要求明确设计任务内容及任务分工等;<内容小四号宋体字)

1、基本任务:

完成蜂鸣器、键盘、七段LED 显示器、AD7109的自检程序设计。

<1)蜂鸣器自检

要求:利用程序实现两种以上声音。

<2)键盘自检

要求:确定键盘正确。

<3)七段LED 显示器自检

要求:确定LED 显示器每一段均正确。。

主任务:题目10:乒乓球游戏机

难度系数:9

功能:1、用5个LED显示器作为乒乓球台,用LED显示器的中间横线“一”代表乒乓球

2、用两个按键代表球拍。

3、比赛规则:当“一”到了最左侧LED时,左侧要及时击球,右侧同理。

4、输赢判断:当乒乓球到达某一侧时,若提前或滞后按键<击球),则为输,用声音和显示来表示。

5、球速要随着比赛回合的增加而加快,击球判断时间逐渐减小。

6*、可以显示比分。

硬件环境:键盘、LED显示器、喇叭等

2.任务分工:组长:张勤伟负责主程序的编写以及定时计数器有关控制反应时间以及

球速的编写及调用

组员:武松负责编写键盘采集程序编写

组员:张子阳负责编写各程序所用延时子程序和蜂鸣器的程序的编写三、框图:

要求包括自检任务和主任务的框图

1、硬件编程框图及相关说明

喇叭自检硬件框图:

P2.3

P2.3置0后,喇叭会发声,P2.3置1后,喇叭不响。

键盘自检硬件框图:

K1,K2,K3,K4的开关值对应P1口的低4位,而自检开关由高4位控制。然而,此程序要求保护自检开关,检验K1,K2,K3,K4的正确性。调用SEL8可以打开74HC245L 的三态门。然后将最终表现结果巧妙的利用LED 或喇叭表现出来。七段LED 显示器自检硬件框图:

P1

P2.6

P 0.7

P 0.0

P0

P2P2P2

P0

P2

P0口负责字型口,P2口负责字位口,实验中的数码管都是共阳极的。

通过中断控制模数转换,采集模拟的电压量,转换为用LED显示出来的数字信号量。

2、主程序框图、子程序框图及相关说明

1)乒乓球主程序框图:

2)子程序框图

判断发球权框图

乒乓球做一程序<右移同理)

接球过程框图:

显示分数框图:

延时

注释:每次循环给,延时1,延时2,延时3根据标准音符频率

得到。

LED自检程序框图

键盘自检程序框图

四、程序清单:乒乓球游戏机程序

score_left equ 30h。定义左侧分数缓存区

uint_left equ 31h。左侧得分的个位缓存区

decade_left equ 32h。左侧得分的十位缓存区

score_right equ 33h。定义右侧分数缓存区

uint_right equ 34h。定义右侧的分缓存区

decade_right equ 35h。定义右侧分数十位缓存区speed equ 36h。定义球移动速度缓存区

speed2 equ 37h

score 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。错开中断入口地址

main:

init:MOV p1,#0ffh

MOV p0,#00h

SETB p2.3。关闭蜂鸣器

mov score_left,#0h。初始化分数

mov uint_left,#0h。初始化左侧分数个位

mov decade_left,#0h

mov score_right,#0h。初始化右侧分数

mov uint_right,#0h。初始化右侧个位分数

mov decade_right,#0h。初始化右侧分数十位 mov speed,#60。初始化球的移动速度

mov TMOD,#01h。设置定时计数器方式1

mov TH0,#0b1h

mov TL0,#0e0h。定时20ms

mov n,#50

mov IE,#82h。开总中断和定时计数器0中断

mov R7,#0h。初始化R7

start: jb p1.2,start。启动判断开关

lcall delay2。延时去抖动

jb p1.2,start。如果k3键按下则继续执行,否则返回 jb jufaq ,clr faqiu。判断谁的发球权

setb faqiu

jb faqiu, yd_left:判断A,B谁发球

yd_right

yd_left:mov p0,#80h 。送入“一”

cjne a,#11,led_left1

相关文档
最新文档