资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机课程设计 一、设计名称 多功能电子钟 二、元件清单 元件名称 说明 元件名称 说明 AT89S52 单片机最小系统 LCD1602 液晶显示模块 ISD1820 语音录音模块 DS18B20 温度传感器 SW-1801P 高灵敏振动传感器 单片机开发板 1 块 基于 LM398 雨滴模块 雨滴传感器 杜邦线 若干 三、模块说明 语音录音模块(ISD1820) 右图为 ISD1820 语音录音模块的实际电路图: 下图为 ISD1820 语音录音模块的电路原理图: 可将话筒下端的偏置电阻和 220uF 电容的负端接到 RECLED 端(虚线) ,这样在平时由 于 RECLED 端为高电平,话筒没有电压电流,整个电路的耗电几乎为零。但这种方式下直通 模式不能工作 若需放大,可用 LM386、D2283、D2822、TA7368、MC34119 等功率放大器。信号由 SP+ 或 SP-通过电容耦合输入,SP+或 SP-不用的一端必须悬空, 不能接地。使用 LM386作放大器 的连线图如下 由于种种原因, 使用功放之后会有很大的噪音, 所以还需要一个滤波电路进行滤波降噪, 具体电路需要根据实际情况选择,再次将不在详细说明。 雨滴传感器 下图为雨滴传感器模块的实际电路图: 电源与开发板电源接通后电源灯亮,感应板上没有水滴时,DO 输出为高电平,开关指 示灯灭 ,滴上一滴水,DO 输出为低电平,开关指示灯亮,刷掉上面的水滴,又恢复到,输 出高电平状态。 AO 模拟输出,可以连接单片机的 AD 口检测滴在上面的雨量大小。 DO数字输出, 可以连接单片机检测是否有雨。 DO输出有效信号为低电平.驱动能力100MA 左右,可直接驱动继电器,蜂鸣器,小风扇等等,此次我们将作为一个输入信号使用。 下图为雨滴传感器主电路部分的电路原理图 高灵敏振动传感器 下图为语音录音模块的实际电路图: 模块不震动时,震动开关呈断开状态,DO 输出端输出高电平,绿色指示灯不亮;模块 震动时,震动开关瞬间导通,输出端输出低电平,绿色指示灯亮;DO 输出端可以与单片机 直接相连,通过单片机来检测高低电平,由此来检测环境是否有震动,起到报警作用。 其主电路部分与雨滴传感器相同,在此将不再赘述。 主电路部分实物图 四、设计思路 此次试验所拿到的传感器是随机的, 根据传感器设计的产品功能灵活多变, 而难度相对 较大, 我们得到的传感器为雨滴传感器、 高灵敏振动传感器和语音录音模块, 这三个传感器 并没有什么联系,所以我们添加了液晶显示模块, 将这三个传感器联系到一起,最终做出了 多功能电子钟。下图为多功能电子钟概念模型: 五、产品说明 这款多功能电子钟功能非常强大, 若加入温度传感器后它可以实时检测环境温度; 由雨 滴传感器可以实时检测室外是否有降雨, 而且有降雨时除了液晶显示屏会提示外, 产品周围 的流水灯也会随着雨滴的节拍闪烁;同时它还兼具闹钟、语音留言、防盗功能,甚至还可根 据需要扩展其他功能。 六、程序流程图 开始 初始化 按键扫描 工作模式扫描 时间扫描 蜂鸣器状态扫描 扫描模式变量 其值为 0 时仅有时钟、 留言和降雨显示; 其值为 1 时,在模式 0 的基础上加入了闹钟提 示功能; 其值为 2 时,在模式 0 的基础上加入了振动报 警功能,可以用于防盗 或留言提醒。 扫描按键状态以及 按键缓存区变量 判断按键动作,并 根据动作次数(存 储在按键缓存区变 量中) , 执行相应的 操作 扫描定时器进位变 量 根据进位变量的值 确定时间秒是否 加 1,继而判断时与 分,然后显示到液晶 显示屏 扫描蜂鸣器逻辑 变量的值, 并赋给 蜂鸣器直接变量, 让蜂鸣器动作。 多功能电子钟概念模型 88:88:88 00 88:88:88 00 雨滴传感器 高灵敏振动传感器 七、电路图 下图为实验中实际操作的电路图: 矩阵按键功能说明: 1,1 时钟暂停时钟暂停 1,2 时钟位选时钟位选 1,3 闹钟位选闹钟位选 1,4 关闭蜂鸣器关闭蜂鸣器 2,1 数值加数值加 2,2 数值减数值减 2,3 数值加数值加 2,4 数值减数值减 3,1 模式模式 0 0 3,2 模式模式 1 1 3,3 模式模式 2 2 3,4 播放播放语音留言语音留言 八、功能说明 这款多功能电子钟功能非常强大, 若加入温度传感器后它可以实时检测环境温度; 由雨 滴传感器可以实时检测室外是否有降雨, 而且有降雨时除了液晶显示屏会提示外, 产品周围 的流水灯也会随着雨滴的节拍闪烁; 高灵敏振动传感器可以提供报警功能, 当打开防盗模式, 如果触发高灵敏振动传感器则蜂鸣器会立刻报警, 直至手动过解除警报; 语音录音模块可以 提供语音留言功能, 当有家庭成员需要留言的时候,只需要按下留言按钮,之后打开防盗模 式,当其他家庭成员回到家中触发报警,即可知晓有语音留言等待收听;时钟方面,出于节 约成本考虑, 时钟方面并没有另外使用高精度时钟芯片, 而是采用单片机内部的定时器功能 实现高精度时钟功能,计时误差为 1 秒/20 分钟;另外,此电子钟还支持闹钟功能,由于技 术所限,只能使用一个闹钟,闹钟不会自动关闭,必须手动解除。 2 时钟暂停时钟暂停 3 时钟位选时钟位选 4 时钟数值加时钟数值加 5 时钟数值减时钟数值减 6 闹钟位选闹钟位选 7 闹钟数值加闹钟数值加 8 闹钟数值减闹钟数值减 9 点按播放留言点按播放留言 10 长按留言长按留言 11 模式模式 0 0 12 模式模式 1 1 13 模式模式 2 2 九、分析讨论 本次设计我们抽到的是雨滴传感器、高灵敏振动传感器和语音录音模块这三个传感器。 通过查询我们了解了三个传感器的工作原理, 但是本次设计实验中遇到的最大的问题是这三 个传感器之间并没有什么联系,所以我们加入了液晶显示模块, 将这它们联系到一起, 最终 做出了多功能电子钟,其主要有数字时钟、定时闹钟、雨滴检测、语音留言和防盗报警等功 能;设计的过程中最大的困难是编写程序,三个传感器分开写其实还好, 但是将它们联系在 一起编写程序就是一项比较大的工程。 在大家的共同努力下, 将近用了一周的时间完成了设 计。虽然还是存在很多不足,但我们会在以后的实验中更加努力,做到最好。 十、实验心得 我觉得在这次单片机的课程设计的过程中获益良多, 通过这次课程设计我发现, 只有理 论水平提高了; 才能够将课本知识与实践相整合, 理论知识服务于教学实践, 从而辅助动手 能力, 通过这次课程设计, 我们知道了理论和实际的距离, 也知道了理论和实际想结合的重 要性, ,也从中得知了很多书本上无法得知的知识。 我们的学习不但要立足于书本, 以解决理论和实际教学中的实际问题为目的, 还要以实 践相结合, 通过自己的手来解决问题比用脑子解决问题更加深刻。 学习就应该采取理论与实 践结合的方式, 理论的问题, 也就是实践性的课题。 这种做法既有助于完成理论知识的巩固, 又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。 88:88:88 00 88:88:88 00 雨滴传感器 高灵敏振动传感器 雨滴闪烁灯 按住留言 留言播放 闹钟设置 时钟设置 关闭报警 模式选择 闹钟时间 时钟时间 模式显示 降水显示 1 2 3 4 5 6 7 8 9 10 11 12 13 十一、 程序源代码 / / 程序名称:多功能数字闹钟 / / 功能说明: / / 数字时钟(误差:1 秒/20 分钟) / / 定时闹钟 / / 雨滴检测 / / 电子便签原声留言 / / 防盗报警 / / 日 期:2016.12.10 / / #include #define uchar unsigned char #define uint unsigned int uchar flag11=0,flag12=0,flag13=0,flag14=0; bit flag21=0,flag22=0,flag23=0,flag24=0; bit flag31=0,flag32=0,flag33=0,flag34=0; bit num0=0; sbit yudi=P31; /雨滴传感器 sbit men=P32; /振动传感 sbit lcdrs=P33; /数据/命令选择端(h/l) sbit lcdrw=P34; /读/写选择端(h/l) sbit lcden=P35; /使能端 sbit yuyin=P36; /语音播放 sbit beep=P37; /蜂鸣器 sbit led=P27; /LED uchar k1,k2,k3,k4,mode,bep,i,tt; int miao,fen,shi,miao1=0,fen1=0,shi1=0; void workmode(); void shijian(); uchar code a=“ 23:59:50 “; /定义液晶第一行 uchar code b=“ 00:00:00 “; /定义液晶第二行 / void delay(uchar z) /延时子函数 uchar x,y; for(x=125;x1;x-) for(y=z;y1;y-); / void init() /初始化子函数 yuyin=1; mode=0; bep=1; / void write_com(uchar com) /向液晶写入命令 delay(5); lcdrs=0; lcdrw=0; P0=com; delay(1); lcden=1; delay(1); lcden=0; / void write_date(uchar date) /写入数据函数 delay(5); lcdrs=1; lcdrw=0; P0=date; delay(1); lcden=1; delay(1); lcden=0; / void init_lcd() /液晶初始化 lcden=0; lcdrw=0; write_com(0x38); /显示模式设置; write_com(0x01); /清除屏幕; write_com(0x0c); /开显示; write_com(0x06); /显示光标移动设置 write_com(0x80); /设置数据地址指针 for(i=0;i0
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号