基于蓝牙模块的电子宠物制作研究

2015-06-03 17:24段奕竹
科技创新导报 2015年9期

段奕竹

摘 要:该文主要介绍了一个运用单片机技术实现电子宠物的制作,这一系统是对于市场上已有的PC机上运行的电子宠物系统在单片机为开发平台上的实现。在这个游戏中,用户可已根据电子宠物当前的各种生命状态来决定给宠物何种操作,而这些操作可以改变宠物的当前的各种生命状态,使得宠物不会随着时间的流逝而饿死或者死于其他原因。LED显示宠物当前的状态,独立键盘对宠物进行各种操作,蜂鸣器辅助游戏的进行。从本系统的构架,设计,实施,调试,最终得到一个智能化的界面和人性化的接口,真正地体现了把单片机这样一门实用性课程放到实际中去的意义,也让我们组内成员在过程中学习到了团队合作和明确分工,还有将比较庞大的目标拆分成小型的模块各个击破的道理。本产品可以用于智能化玩具中,配合以更加逼真的音效,更加绚丽的色彩,将有希望占领一定份额的市场。

关键词:智能化电子宠物 生命状态检测与控制 LED显示 键盘控制操作

中图分类号:TN914 文献标识码:A 文章编号:1674-098X(2015)03(c)-0016-01

此系统旨在设计一个基于单片机的“电子宠物”情感游戏系统,其主要功能是:用户使用键盘选择性地对电子宠物进行五种活动操作,从而改变和控制其三种状态值,以使宠物的生命状态值维持在一定的水平上;若不对宠物进行操作,其生命状态值将随着时间而减少;若状态值减少到一定程度,将对用户进行提醒;在宠物接收到用户的某种操作时,则出现相应的图像和并发出鼓励信号;当宠物的生命值耗尽时,宠物死亡,游戏结束。以上是该系统所能完成的功能,是基于传统的电子宠物产品的基本功能设计的,构成了电子宠物系统的基本框架,但仍有很大的自主设计和扩展空间。

1 设计要求

1.1 基本要求

(1)电子宠物能按设定时间吃飯、睡觉、洗澡等(吃饭最少两次,一次最少吃5个食物)。(2)当某一设定没有满足时,电子宠物发出提示报警或哭泣。(3)该电子宠物要有声、光或动作(死活之分)。(4)当某一设定长期没有满足或到寿命时,电子宠物会死去。(5)当所有要求(设定)满足时,电子宠物会高兴。

1.2 发挥部分

(1)电子宠物会有生病,生病时要看医生。(2)电子宠物知恩图报。(3)所有功能全部由动作实现。

2 总体结构设计

合理的C语言设计和多个硬件模块的配合应用是完成该系统预期目标的两个重要部分。软件结构设计方面,为了实现电子宠物的基本游戏功能,我们设计了软件程序框图。硬件模块设计方面根据设计内容的要求,我们使用了六个硬件模块,分别是:二极管,数码管,LED点阵,时钟,蜂鸣器,独立式按键。

3 主要硬件设计

3.1 LED点阵

LED显示区由一块8*8LED点阵构成,整个显示模块大小是8列*8行。要通过LED的静态显示一张图案,必须采用循环控制。第一个8位寄存器存储一个字节,通过该字节的8位二进制码信息控制当前操作的LED小灯所处的行数,例如#80H表示当前将对第八行LED进行操作。LED点阵是通过单片机的PO口和P2口以及74HC138芯片相连。

3.2 键盘

使用独立式键盘,输入到单片机的P2口。每个键的功能如表1所示。

3.3 时钟

本程序采用的时钟是T0和T1,其中T0时钟采用中断,在中断子程序中采用查询是否有按键按下的方法,而T1时钟为了配合声音产生特定频率的方波,采用查询方法定时。其中时钟0采用第2种工作方式,而时钟1采用第1种工作方式,所以在一开始初始化的时候就有MOV TMOD,#12H。

3.4 蜂鸣器

本程序中所使用的声音是蜂鸣器发出的,通过一根一位口线(P3.3)连接。辅助以计时器T1的帮助,产生特定频率的方波,产生相应的音符。要做到这一点,给T1设定正确的初始值尤为重要。例如频率为523 Hz,其周期T=1/523=1912μs,因此只要令计数器计1912/2=956次,后将I/O反相,就可以得到523Hz的音符,中音“DO”。

定时/计数器选择8分频CTC模式,下表中每格内上行为频率,下行为OCR的值,没有写出的说明需要改变分频。第一列列出了4个八度区。

曲目选择功能使用switch语句,通过改变整型j的值改变曲目序号,从而选择不同的play函数进行调用。歌曲的暂停使用扫描按键程序,每播放一个音符都会扫描一下暂停键,如果被按下则跳出play函数的循环。在曲目选择时,根据不同的j值,使用数组选择不同字符元素驱动LCD点阵,显示所要播放的曲目。

在本实验中,有三种情况下会发出声音:(1)饥饿的情况下会发出报警的声音;(2)生病的时候会发出报警的声音;(3)高兴的时候会唱歌,歌曲为祝你平安的纯音乐。

4 结语

这个电子宠物的竞赛设计通过点阵显示设计出一个比较智能化和人性化的电子宠物游戏,于是构架出这个游戏的大框架和模块,但是从开始着手做系统设计到在电路设计中遇到了很多问题。windows的画图软件设计好图像,将画布设定为128*64像素大小,只用黑色笔在画布上作画。每一张图都是我们亲笔在画图软件上设计的,让我们在紧张的编程时间之余体验一下艺术带来的快乐。对应的I/O口线始终等电位。这个问题本身并不复杂,但通过这个小问题我们更体会到运用课本知识的过程中一定要结合实际情况。虽然在整个程序的编写过程中,虽然内容不断地丰富,问题也不断地出现,但我们的思路还是非常清晰的,这一方面得益于最初开题时我们对整系统的结构,各个模块的功能和实现方案的细致研究,这也让我们认识到项目前期规划的重要性。

通过这一次的单片机自主训练,关于这门课程的学习我们最深的体会是:硬件功能模块在使用时最好不要照搬例程,而是应该理解硬件工作的原理,明白每一句软件控制程序对应的具体硬件操作, 这一点对于之后程序调试和故障排除都将大有裨益。同时,对于工科生来说掌握一定的硬件知识也是非常必要的。除了具体的课程学习体会,我们通过这八周来的训练,自身自主学习的精神 得到了很大的激发,自主学习能力也得到了很大的提高,也一次次地感受到了学习带来我们的快乐和成就感。