版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖 南 大 学课设题目: 振动传感警报装置 学生姓名: 邹 雄 专业班级: 信 息 安 全 一 班 学号: 201208060128 学院: 信息科学与工程学院 “振动传感警报装置”设计报告说明(1) :设计思路和方法“警报器”是利用流水灯、振动传感器、无源蜂鸣器组成的一种装置,当振动传感器受到振动时,流水灯和蜂鸣器会同时工作,以此来提醒客户;而客户可通过按钮Key1能够停止其工作或等待歌曲播放完为止,而按下复位键后再次振动其又会工作。(2) :“警报器”电路原理图(3) :电路工作原理振动传感器是一种简单的器件,管内有一跟固定的导线,在这根导线的周围有另一根较细的导线以螺旋状环绕它。可以想象
2、为一个弹簧中间有一跟导线。在不震动时,两根导线不会相碰,一旦振动发生,两根导线就会短接。所以我们只需判断导线是否短接了,就可以知道振动是否发生。P0口的8位输出分别控制8个发光二极管L0L7的阳极;而P2.3经反相器U4C控制8个发光管阴极E3;电阻R15R22为限流电阻。当振动传感器短接时,对应的二极管将会发光。只需改变Beep端口的电平,产生一个周期性的方波即可使蜂鸣器发生声音,不同的频率发出的声音不同。其中,ULN2003是一个功放,用于放大电流。电阻R14和电容C21是用来保护电路的。若人为将Beep端口的电平一直置为高电平,在没有保护电路的情况下,容易烧毁电路,但即使有保护电路也应该
3、注意不要讲Beep端口长时间之余高电平,这对器件也是有一定损害的。每一个音符的发声频率是不同的,我们需要用计时器来精确计时,用以产生方波,这样才能发出不用的音符声音。C调各音符频率与计数值如下图所示,以下的简谱码是在晶振为12MHz的情况下计算的,换算为16进制的简谱码如程序中quzi数组所示。本程序中,数组music即是要播放的音乐,格式为音符,节拍,音符,节拍,如此循环下去。音符为要发出的音调,而节拍则是声音的持续时间。如图,在数组music中,音符表示的格式为:十位代表是低八度,中八度还是高八度,1代表高八度,2代表中八度,3代表高八度,个位代表简谱的音符,例如,0x15代表低八度的S0
4、,如图即是低5 S0,0x21代表中八度的DO,如图即是中1 D0。音符中,0x00代表结束符,表示整首歌曲演唱完毕,而0xff代表休止符,表示要休止100ms。遇到这两种情况,都应该重新执行循环中的第一步。其余情况则是正常播放。程序烧入单片机后,需要振动传感器振动才会进行演奏。(4) :程序总框图设计流程(5) :相关寄存器及IO引脚的配置1.P0(8位)和P2.3需要设置成推挽输出,以驱动电路正常发光。涉及寄存器及配置值如下:P2M1=0x00;P2M0=0xff;P0M1=0x00;P0M0=0xff; 2.蜂鸣器引脚:sbit beep=P34; /蜂鸣器 3.按键1引脚:sbit k
5、ey1=P32; /定义按键1 4.振动传感器引脚:sbit vibrate=P24; /振动传感器(六):详细设计参见后续工程代码 (七):测试方法 1.用STC ISP默认设置,打开工程中的HEX并下载; 2. 敲动一下振动传感器,流水灯随着蜂鸣器的歌曲节奏从右至左依次闪动; 3. 按下Key1键,蜂鸣器及流水灯均都停下工作。源代码:#include #define uint unsigned int#define uchar unsigned charsbit beep=P34; /蜂鸣器sbit Key1=P32; /Key1对应触发外部中断0sbit vibrate=P24; /振动
6、传感器/*引脚别名定义*/sbit Led_sel=P23;/*变量定义*/uchar G_value;uchar timeh,timel,zanting=0; /定义定时器的重装值uchar code music = /音乐代码,歌曲为同一首歌,格式为: 音符, 节拍, 音符, 节拍, 0x16,0x05,0x17,0x05,0x21,0x15,0x17,0x05,0x21,0x10,0x23,0x10,0x17,0x30,0x23,0x10,0x16,0x15,0x15,0x05,0x16,0x10,0x21,0x10,0x15,0x30,0x13,0x10,0x14,0x15,0x13,
7、0x05,0x14,0x05,0x21,0x05,0x21,0x10,0x13,0x30,0x21,0x10,0x17,0x10,0x14,0x05,0x14,0x10,0x17,0x10,0x17,0x20,0xff,0x16,0x05,0x17,0x05,0x21,0x15,0x17,0x05,0x21,0x10,0x23,0x10,0x17,0x30,0x13,0x05,0x13,0x05,0x16,0x15,0x15,0x05,0x16,0x10,0x21,0x10,0x15,0x30,0x13,0x10,0x14,0x10,0x21,0x05,0x17,0x05,0x17,0x10,
8、0x21,0x10,0x22,0x10,0x23,0x05,0x21,0x20,0xff,0x21,0x05,0x17,0x05,0x16,0x10,0x17,0x10,0x15,0x10,0x16,0x20,0xff,0x21,0x05,0x22,0x05,0x23,0x15,0x22,0x10,0x23,0x10,0x24,0x10,0x25,0x05,0x22,0x30,0x15,0x10,0x22,0x03,0x21,0x03,0x17,0x03,0x21,0x03,0x21,0x10,0x21,0x05,0x22,0x10,0x23,0x05,0x23,0x40,0x16,0x05,
9、0x17,0x05,0x21,0x10,0x17,0x05,0x21,0x05,0x22,0x10,0x21,0x15,0x15,0x05,0x15,0x20,0x24,0x10,0x23,0x10,0x22,0x10,0x21,0x10,0x23,0x30,0x16,0x05,0x17,0x05,0x21,0x15,0x17,0x05,0x21,0x10,0x23,0x10,0x17,0x30,0x13,0x10,0x16,0x15,0x15,0x05,0x16,0x10,0x21,0x10,0x15,0x30,0x13,0x10,0x14,0x10,0x21,0x05,0x17,0x05,
10、0x17,0x10,0x21,0x10,0x22,0x10,0x23,0x05,0x21,0x05,0x21,0x20,0x21,0x05,0x17,0x05,0x16,0x10,0x17,0x10,0x15,0x10,0x16,0x40,0x00,0x00;uchar code quzi = /此数组数据为各个音符在定时器中的重装值,第一列是高位,第二列是低位0xf8,0x8c, /低八度,低10xf9,0x5b, 0xfa,0x15, /低30xfa,0x67,0xfb,0x04, /低50xfb,0x90,0xfc,0x0c, /低70xfc,0x44, /中央C调0xfc,0xac,
11、/中20xfd,0x09,0xfd,0x34, /中40xfd,0x82,0xfd,0xc8, /中60xfe,0x06,0xfe,0x22, /高八度,高10xfe,0x56,0xfe,0x6e, /高30xfe,0x9a,0xfe,0xc1, /高50xfe,0xe4,0xff,0x03 /高7;/*函数名称:void delay(unsigned int xms)功能描述:延时入口参数:xms:输入需要延时的毫秒值出口参数:无备注:*/void delay(unsigned int xms)uint i,j; for(i=xms;i0;i-) for(j=124;j0;j-);/*函数名
12、称: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数组中基址为0qudiao=0;else if(qudiao=2) /当曲
13、调值为2时,即是中八度,中八度在quzi数组中基址为14qudiao=14;else if(qudiao=3) /当曲调值为3时,即是高八度,高八度在quzi数组中,基址为28qudiao=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)
14、beep=0;p=musici; /如果碰到结束符,延时1秒,回到开始再来一遍 if(p=0x00)i=0;delay(100);break; else if(p=0xff) /若碰到休止符,延时100ms,继续取下一音符i=i+1;delay(100);TR0=0; else /正常情况下取音符和节拍 tem=quyin(musici);/取出当前音符在quzi数组中的位置值timeh=quzitem;/把音符相应的计时器重装载值赋予timeh和timeltimel=quzitem+1;i+;TH0=timeh;/把timeh和timel赋予计时器TL0=timel;m=musici; /取
15、得节拍i+; TR0=1; /开定时器1 delay(m*180); /等待节拍完成, 通过P34口输出音频 TR0=0; /关定时器1 P0=G_value;delay(100);G_value=G_value1;if(G_value=0x00)P0=G_value;delay(100);G_value=0x01; 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=0xff;P0M1=0x00;P2M0=0x08;P2M1=0x00;P3M0=0x10;P3M1=0x00;P4M0=0x00;P4M1=0x00;P5M0=0x00;P5M1=0x00;/*函数名称:void init()功能描述:定时器的初始化入口参数:无出口参数:无备注:*/void init() TMOD=0x01;TH0=0xD8;TL0=0xEF;EA=1;ET0=1;TR0=0;/设置推挽输出/P2M1=0x00;P2M0=0xff;P0M1=0x00;P0M0=0xff;Led_se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职企业管理(企业管理基础)试题及答案
- 2025年大学临床医学(耳鼻喉科学)试题及答案
- 2025年大学一年级(食品工程)食品机械基础试题及答案
- 2025年中职(新能源汽车运用与维修)电池维护阶段测试题及答案
- 2025年高职公共关系学(公关策划)试题及答案
- 2025年大学大四(化学工程与工艺)化工系统工程试题及答案
- 2025年高职(酿酒技术)果酒酿造综合测试题及答案
- 2025年高职餐饮管理(管理实务)试题及答案
- 2025年高职安全健康与环保(安全环保管理)试题及答案
- 2025年大学大四(资源循环科学与工程)资源循环利用综合试题及答案
- 铸造行业技术研发管理制度
- 中频治疗仪的操作流程
- 《弱电知识培训》课件
- 托儿所幼儿园卫生保健工作规范
- 137案例黑色三分钟生死一瞬间事故案例文字版
- 《同步备课:太阳能小台灯》参考课件
- 直肠阴道瘘诊疗指南的更新
- 五年级数学上册人教版第六单元《多边形的面积》(单元解读)
- 日立HGP电梯调试
- 病案管理考核标准表格2022版
- 微型消防站应急器材点检维护记录
评论
0/150
提交评论