已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硬件实训设计报告硬件实训设计报告 湖湖 南南 大大 学学 课设题目 课设题目 振动传感警报装置振动传感警报装置 学生姓名 学生姓名 邹邹 雄雄 专业班级 专业班级 信信 息息 安安 全全 一一 班班 学号 学号 201208060128 学院 学院 信息科学与工程学院信息科学与工程学院 硬件实训设计报告硬件实训设计报告 振动传感警报装置振动传感警报装置 设计报告说明设计报告说明 1 设计思路和方法 设计思路和方法 警报器 是利用流水灯 振动传感器 无源蜂鸣器组成的一种装置 当 振动传感器受到振动时 流水灯和蜂鸣器会同时工作 以此来提醒客户 而客 户可通过按钮 Key1 能够停止其工作或等待歌曲播放完为止 而按下复位键后 再次振动其又会工作 2 警报器警报器 电路原理图电路原理图 硬件实训设计报告硬件实训设计报告 3 电路工作原理 电路工作原理 振动传感器是一种简单的器件 管内有一跟固定的导线 在这根导线的周 围有另一根较细的导线以螺旋状环绕它 可以想象为一个弹簧中间有一跟导线 在不震动时 两根导线不会相碰 一旦振动发生 两根导线就会短接 所以我 们只需判断导线是否短接了 就可以知道振动是否发生 P0 口的 8 位输出分别控制 8 个发光二极管 L0 L7 的阳极 而 P2 3 经反相 器 U4C 控制 8 个发光管阴极 E3 电阻 R15 R22 为限流电阻 当振动传感器短 接时 对应的二极管将会发光 只需改变 Beep 端口的电平 产生一个周期性的方波即可使蜂鸣器发生声音 不同的频率发出的声音不同 其中 ULN2003 是一个功放 用于放大电流 电 阻 R14 和电容 C21 是用来保护电路的 若人为将 Beep 端口的电平一直置为高 电平 在没有保护电路的情况下 容易烧毁电路 但即使有保护电路也应该注 意不要讲 Beep 端口长时间之余高电平 这对器件也是有一定损害的 每一个音符的发声频率是不同的 我们需要用计时器来精确计时 用以产 生方波 这样才能发出不用的音符声音 C 调各音符频率与计数值如下图所示 以下的简谱码是在晶振为 12MHz 的情况下计算的 换算为 16 进制的简谱码如 程序中 quzi 数组所示 硬件实训设计报告硬件实训设计报告 本程序中 数组 music 即是要播放的音乐 格式为音符 节拍 音符 节 拍 如此循环下去 音符为要发出的音调 而节拍则是声音的持续时间 如图 在数组 music 中 音符表示的格式为 十位代表是低八度 中八度还是高八度 1 代表高八度 2 代表中八度 3 代表高八度 个位代表简谱的音符 例如 0 x15 代表低八度的 S0 如图即是低 5 S0 0 x21 代表中八度的 DO 如图即是中 1 D0 音符中 0 x00 代表结束符 表示整首歌曲演唱完毕 而 0 xff 代表休止符 表示要休止 100ms 遇到这两种情况 都应该重新执行循环中的第一步 其余 情况则是正常播放 程序烧入单片机后 需要振动传感器振动才会进行演奏 4 程序总框图设计流程 程序总框图设计流程 硬件实训设计报告硬件实训设计报告 5 相关寄存器及 相关寄存器及 IO 引脚的配置引脚的配置 1 P0 8 位 和 P2 3 需要设置成推挽输出 以驱动电路正常发光 涉及 寄存器及配置值如下 P2M1 0 x00 P2M0 0 xff P0M1 0 x00 P0M0 0 xff 2 蜂鸣器引脚 sbit beep P3 4 蜂鸣器 3 按键 1 引脚 sbit key1 P3 2 定义按键 1 4 振动传感器引脚 sbit vibrate P2 4 振动传感器 六 详细设计参见后续工程代码 六 详细设计参见后续工程代码 七 测试方法 七 测试方法 1 用 STC ISP 默认设置 打开工程中的 HEX 并下载 2 敲动一下振动传感器 流水灯随着蜂鸣器的歌曲节奏从右至左依次 硬件实训设计报告硬件实训设计报告 闪动 3 按下 Key1 键 蜂鸣器及流水灯均都停下工作 源代码 源代码 include define uint unsigned int define uchar unsigned char sbit beep P3 4 蜂鸣器 sbit Key1 P3 2 Key1 对应触发外部中断 0 sbit vibrate P2 4 振动传感器 引脚别名定义 sbit Led sel P2 3 变量定义 uchar G value uchar timeh timel zanting 0 定义定时器的重装值 uchar code music 音乐代码 歌曲为 同一首歌 格式为 音符 节拍 音符 节拍 0 x16 0 x05 0 x17 0 x05 0 x21 0 x15 0 x17 0 x05 0 x21 0 x10 0 x23 0 x10 0 x17 0 x30 0 x23 0 x10 0 x16 0 x15 0 x15 0 x05 0 x16 0 x10 0 x21 0 x10 0 x15 0 x30 0 x13 0 x10 0 x14 0 x15 0 x13 0 x05 0 x14 0 x05 0 x21 0 x05 0 x21 0 x10 0 x13 0 x30 0 x21 0 x10 0 x17 0 x10 0 x14 0 x05 0 x14 0 x10 0 x17 0 x10 0 x17 0 x20 0 xff 0 x16 0 x05 0 x17 0 x05 0 x21 0 x15 0 x17 0 x05 硬件实训设计报告硬件实训设计报告 0 x21 0 x10 0 x23 0 x10 0 x17 0 x30 0 x13 0 x05 0 x13 0 x05 0 x16 0 x15 0 x15 0 x05 0 x16 0 x10 0 x21 0 x10 0 x15 0 x30 0 x13 0 x10 0 x14 0 x10 0 x21 0 x05 0 x17 0 x05 0 x17 0 x10 0 x21 0 x10 0 x22 0 x10 0 x23 0 x05 0 x21 0 x20 0 xff 0 x21 0 x05 0 x17 0 x05 0 x16 0 x10 0 x17 0 x10 0 x15 0 x10 0 x16 0 x20 0 xff 0 x21 0 x05 0 x22 0 x05 0 x23 0 x15 0 x22 0 x10 0 x23 0 x10 0 x24 0 x10 0 x25 0 x05 0 x22 0 x30 0 x15 0 x10 0 x22 0 x03 0 x21 0 x03 0 x17 0 x03 0 x21 0 x03 0 x21 0 x10 0 x21 0 x05 0 x22 0 x10 0 x23 0 x05 0 x23 0 x40 0 x16 0 x05 0 x17 0 x05 0 x21 0 x10 0 x17 0 x05 0 x21 0 x05 0 x22 0 x10 0 x21 0 x15 0 x15 0 x05 0 x15 0 x20 0 x24 0 x10 0 x23 0 x10 0 x22 0 x10 0 x21 0 x10 0 x23 0 x30 0 x16 0 x05 0 x17 0 x05 0 x21 0 x15 0 x17 0 x05 0 x21 0 x10 0 x23 0 x10 0 x17 0 x30 0 x13 0 x10 0 x16 0 x15 0 x15 0 x05 0 x16 0 x10 0 x21 0 x10 0 x15 0 x30 0 x13 0 x10 0 x14 0 x10 0 x21 0 x05 0 x17 0 x05 0 x17 0 x10 0 x21 0 x10 0 x22 0 x10 0 x23 0 x05 0 x21 0 x05 0 x21 0 x20 0 x21 0 x05 0 x17 0 x05 0 x16 0 x10 0 x17 0 x10 0 x15 0 x10 硬件实训设计报告硬件实训设计报告 0 x16 0 x40 0 x00 0 x00 uchar code quzi 此数组数据为各个音符在定时器中的重装值 第一列是 高位 第二列是低位 0 xf8 0 x8c 低八度 低 1 0 xf9 0 x5b 0 xfa 0 x15 低 3 0 xfa 0 x67 0 xfb 0 x04 低 5 0 xfb 0 x90 0 xfc 0 x0c 低 7 0 xfc 0 x44 中央 C 调 0 xfc 0 xac 中 2 0 xfd 0 x09 0 xfd 0 x34 中 4 0 xfd 0 x82 0 xfd 0 xc8 中 6 0 xfe 0 x06 0 xfe 0 x22 高八度 高 1 0 xfe 0 x56 0 xfe 0 x6e 高 3 0 xfe 0 x9a 0 xfe 0 xc1 高 5 0 xfe 0 xe4 0 xff 0 x03 高 7 函数名称 void delay unsigned int xms 功能描述 延时 入口参数 xms 输入需要延时的毫秒值 出口参数 无 备注 void delay unsigned int xms uint i j for i xms i 0 i for j 124 j 0 j 函数名称 uchar quyin uchar tem 功能描述 在 quzi 数组中 找到 music 数组定义的简谱音符的重装值 并返回 其在 quzi 数组中的位置 硬件实训设计报告硬件实训设计报告 入口参数 tem music 数组中定义的简谱音符 出口参数 返回的是 tem 音符在 quzi 数组中的位置值 备注 uchar quyin uchar tem uchar qudiao jp weizhi 定义曲调 音符和位置 qudiao tem 16 高 4 位是曲调值 jp tem 16 低 4 位是音符 if qudiao 1 当曲调值为 1 时 即是低八度 低八度在 quzi 数组中基址为 0 qudiao 0 else if qudiao 2 当曲调值为 2 时 即是中八度 中八度在 quzi 数组中基址为 14 qudiao 14 else if qudiao 3 当曲调值为 3 时 即是高八度 高八度在 quzi 数组中 基址为 28 qudiao 28 weizhi qudiao jp 1 2 通过基址加上音符作为偏移量 即可定位此 音符在 quzi 数组中的位置 return weizhi 返回这一个位置值 函数名称 void playmusic 功能描述 播放音乐 入口参数 无 出口参数 无 备注 void playmusic uchar p m tem m 为节拍 uchar i 0 while 1 while zanting beep 0 p music i 如果碰到结束符 延时 1 秒 回到开始再来一遍 if p 0 x00 i 0 delay 100 break 硬件实训设计报告硬件实训设计报告 else if p 0 xff 若碰到休止符 延时 100ms 继续取下一音符 i i 1 delay 100 TR0 0 else 正常情况下取音符和节拍 tem quyin music i 取出当前音符在 quzi 数组中的位置值 timeh quzi tem 把音符相应的计时器重装载值赋予 timeh 和 timel timel quzi tem 1 i TH0 timeh 把 timeh 和 timel 赋予计时器 TL0 timel m music i 取得节拍 i TR0 1 开定时器 1 delay m 180 等待节拍完成 通过 P3 4 口输出音频 TR0 0 关定时器 1 P0 G value delay 100 G value G value 1 if G value 0 x00 P0 G value delay 100 G value 0 x01 if Key1 0 if Key1 0 delay 10 延时消抖 if Key1 0 zanting zanting zanting 1 暂停播放 vibrate 1 函数名称 void init sys 硬件实训设计报告硬件实训设计报告 功能描述 系统初始化 功能是配置 IO 口 入口参数 无 出口参数 无 备注 void init sys P0M0 0 xff P0M1 0 x00 P2M0 0 x08 P2M1 0 x00 P3M0 0 x10 P3M1 0 x00 P4M0 0 x00 P4M1 0 x00 P5M0 0 x00 P5M1 0 x00 函数名称 void init 功能描述 定时器的初始化 入口参数 无 出口参数 无 备注 void init TMOD 0 x01 TH0 0 xD8 TL0 0 xEF EA 1 ET0 1 TR0 0 设置推挽输出 P2M1 0 x00 P2M0 0 xff P0M1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论