毕业论文-基于stc12c5a60s2单片机的小型智能家居系统的设计与实现内容摘要:

电压随温度变化的关系了。 数字式电阻温度计设计工作的主要内容就是把热敏电阻两端的电压值经 A/D(模拟量转化为数字量)转换 为数字量,然后通过软件方法计算得到温度值,再进行显示等处理。 图 26 热敏 amp。 光敏传感器电路原理图 如图 26所示为开发板上的原理图, R39 为热敏电阻 ,AD 转换器采集 RT 处的电压值,再 15 通过软件处理得到温度值。  光敏敏传感器 光敏电阻又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料 [8]。 这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。 这是由于光照产生的载流子都参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速 下降。 光敏电阻器是利 用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器, 入射光强,电阻减小,入射光弱,电阻增大。 光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。 常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。 光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达 1~10M 欧 ,在强光条件( 100LX)下,它阻值(亮阻)仅有几百至数千欧姆。 光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光( m ~ m) 的响应很 接近,只要 是 人眼可感受的光,都会引起它的阻值变化。 由此可以看出,通过光敏电阻测量光强的原理基本和热敏电阻测量温度一致。 上面图26中的 R38 即为光敏电阻, AD 转换器采集 DT 处的电压值,再通过软件处理得到光强度。 4 软件系统设计 keil uVision2 简介 keil uVision2 是 德国 Keil Software 公司出品的 51 系列兼容 单片机 C 语言软件开发系统,使用接近于传统 C 语言 的语法来开发。 与 汇编 相比, C 语言 在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用 ,而且大大的提高了工作效率和项目开发周期。 它 还能嵌入 汇编 ,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。 KEILC51标准 C编译器 为 8051 微控制器的 软件开发 提供了 C语言环境 ,同时保留了 汇编 代码高效 ,快速的特点。 C51 编译器 的功 能不断增强, 使 用户 可以更加贴近 CPU 本身,及其它的衍生产品。 C51 已被完全集成到 uVision2 的 集成开发环境 中,这个集成开发环境包含: 编译器 、汇编器 、 实时操作系统 、 项目管理器 和 调试器 , uVision2 IDE 可为它们提供单一而灵活的开发 环境。 keil uVision2 新建项目、编辑、编译以及调试运行 ( 1) 安装好 Keil 软件以后,打开它。 打开以后界面如下: 图 27 Keil 软件打开界面 ( 2) 先新建一个工程文件。 点击“ ProjectNew Project„”菜单,如下图 : 16 图 28 新建工程页面 ( 3) 选择工程文件要存放的路径 , 输入工程文件名 ,如 LED, 最后单击保存 : 图 29 保存工程页面 ( 4) 在弹出的对话框中选择 CPU 厂商及型号 : 图 30 CPU 型号选择页面 ( 5) 选择好 选择 CPU 厂商及型号 ,如 Atmel 公司的 89c51,之 后 , 单击确定 : 17 图 31 选定 CPU 型号 ( 6) 接着 弹除一个 对话框 ,问“将 标准 的 8051 启动代码复制到项目文件夹 并将 文件添加到项目中。 ”,选择“是”: 图 32 询问页面 ( 7) 新建一个 C51 文件。 点击 file 菜单下的 NEW,或单击左上角的 New File 快捷键 ,如下图: 图 33 新建 C51 文件页面 ( 8) 保存新建的文件。 单击 SAVE, 如下图 : 18 图 34 点击保存 C51 文件 ( 9) 在出现的对话框中输入保存文件名 (注意 : 后缀名必须为 .C) ,如 , 再单击“保存”,如下图 : 图 35 保存 C51 文件页面 ( 10) 保存好此文件后 ,将其 加入到工程中方法如下 : 在 Source Group1 上 鼠标右击,然后再单击 Add Files to Group ‘ Source Group 139。 如下图 : 图 36 将 C51 文件添加到工程 ( 11) 选择要加入的文件。 找到 后缀名 .C 的文件 后 , 单击 Add, 然后单击 Close: 19 图 37 添加到工程中的事 .c 文件 ( 12) 在编辑框里输入 所需 代码 ,至此 完成了工程项目的建立以及文件加入工程 ,现在开始编译工程。 单击快捷键或单击 ProjectRebuild all the files, 如果在错误与警告栏 看到 “ 0 Error(s)” 表示编译 通过 : 图 38 添加代码后编译 ( 13) 生成 .hex 烧写文件。 先单击 Options for Target,在弹出的窗口中 单击 Output, 选中 Create HEX Fi, 再单击“确定”,然后再次编译才能产生 HEX 文件 : 图 39 项目选项 20 图 40 设置文件输出格式为 HEX 编译 完成 后 , 打开工程存放 目录, 可以看到增加了“ ”文件 : 图 41 编译完成后的文件 程序烧写 使用烧写软件 STC_ISP_V483 进行程序烧写。 打开烧写软件 , 界面如下 : 21 图 42 烧写软件 界面 烧写、 下载程序过程分 为 以下几个步骤: 步骤 ( 1) 选择单片机 的 型号。 本系统所用 的单片机型号是 STC12C5A60S2。 步骤 ( 2) 打开后缀为 .HEX 的文件,即为 程序文件。 在相应工程下找到 需要 下载的 .HEX文件,点击打开。 步骤 ( 3) 选择串 口 号、 设置最高波特率。 打开 PC 机的 设备管理器,确定生成的 串 口号 ( 若 为 COM2, 则 在上图 COM 下拉中选择 COM2)。 步骤 ( 4) 用 USB 线 将 PC 机 和主板连接 起来 ,检查核心板上的 J1 口是否用跳帽短接( TXD与 P30 短接, RXD 与 P31 短接),将 开发板上 的 电源都关闭,点击“ Download/下载”,打开核心板上的电源开关(注意不是主板上的电源开关),等待下载完成。 图 43 烧写控制接口 22 5 系统平台搭建 系统组成 本系统是由一台 PC 机,一块 51 单片机开发板及一条 USB 转串口线组成。 其中, PC 机负责系统程序的编写以及显示通信界面, 51 单片机通过其自带的外围设备将系统所要求的各个模块模拟表现出来,而 USB 转串口线 则负责将 PC 机与单片机连接起来,实现 PC 机与单片机之间的串口通信。 系统硬件连接 PC 机与单片机的连接 通过 USB 转 串口线将 PC 机的 USB 接口与单片机板上的串口 1 连接起来即可。 单片机开发板上的硬件连接 ( 1) 串口模块的硬件连接 用 2 位杜邦线分别将 J9_0 与 J5_R1 及 J9_1 与 J5_D1 连接 (下载完程序后 ),用串口线将 PC和开发板上的串口 1 连接。 (接收 PC 机发来的数据,并向 PC机返回接收到的数据)。 ( 2) 花样灯模块的硬件连接 用 8 位杜邦线将 J9 与 J6 连接,用 8位排线将 J8 与 J13 连接。 ( 3) 音乐播放模块的硬件连接 用 1 位杜邦线将 J10_0 与 J18_bz 连接。 ( 4) 窗帘模块的硬件连接 用 4 位杜邦线将 J11_0, J11_1, J11_2, J11_3 和 J18_A,J18_B,J18_C,J18_D 连接 ,将步进电机连接到 JP8。 ( 5) 火灾报警模块的硬件连接 用 8 位杜邦线将 J8 与 J12 连接, 2 位杜邦线分别将 J11_0 与 J15_DS J11_1 与J15_DS2 连接 ,1 位杜邦线将 J19_AIN0 与 J15_RT 连接 ,2 位杜邦线分别将 J11_7与 J17_SDA、J11_6 与 J17_SCL 连接。 6 系统 功能介绍 整体功能介绍 将整个单片机开发板按照系统要求连接起来,如图 44 所示, 再 将单片机通过 USB 转串口线与 PC 机相连,这样,硬件连接完成。 打开 串口通信 控制 界面, 如图 45 所示, 通过 串口通信 控制 界面 , 向单片机发送指令。 当发送数字 13 时,花样灯据不同数字,运行出不同效果,同时将数字 13 返回在界面上显示出来。 当发送数字 4 时,蜂鸣器运行,播放音乐,同时将数字 4 返回在界面上显示出来。 当发送数字 59 时,步进电机运行,据不同的数字,改变转动的方向与转速,同时将数字 59返回在界面上显示出来。 而火灾报警模块,通过热敏 amp。 光敏传感器,实时采集周围的温度、光强,一旦超过预先设计好的限制,则触发蜂鸣器报 警。 23 图 44 硬件系统实物图 图 45 串口通信 控制 界面 24 详细功能介绍 音乐播放 图 46 单片机上的电路实物图 如图所示,蜂鸣器的正极接到 VCC 电源上面,蜂鸣器的负极接到上面 图 16 ULN2020 等效电路 的 OUTPUT 端,单片机 IO 通过控制 图 16 电路的 INPUT 端,当 IO 输出低电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当 IO 输出高电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。 因此,我们可以通过程序控制 INPUT 的电平来使蜂鸣器发出声音和关闭。 程序 中改变单片机的输出波形的频率,就可以调整控制蜂鸣器音调。 另外,改变 IO 口输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。 表 1 蜂鸣器模拟歌曲原理 音调 改变 IO 输出频率来实现 节拍(音长) 单片机延时实现 音量 输出波形占空比 通过控制蜂鸣器震动频率的大小、震动时间的长短,模拟出不同的音调。 将一首歌相对应的震动频率的大小、震动时间的长短数字化,再分别存放在两个数组中,当控制芯片接收到播放音乐的指令后,已经设计好的程序,便会将两数组中的值按照一定的规律赋给蜂鸣器的输出端口,这样,我们便会听 到美妙的歌曲了。 本系统中,采用上述方法,用蜂鸣器模拟音箱, 通过控制蜂鸣器震动频率的大小、震动时间的长短,模拟出不同的音调。 将一首歌相对应的震动频率的大小、震动时间的长短数字化 ,以这种方式等价成两个数组,再将数组赋给相应的歌曲处理函数,当主板接收到相应指令后,调用歌曲处理函数,将歌曲演奏出来,主要代码容下: void Play_music() { uint Tone,Long。 //定义音调变量 uint i,j,k。 //定义 变量 for(i=0。 i25。 i++) //生日快乐 的 25 种音调 { Tone=SOUNDTONE[i]。 //读取音调 Long=30*SOUNDLONG[i]。 //读取节拍 for(j=0。 jLong。 j++) //输出不同节拍 { BZ=0。 //关闭蜂鸣器 for(k=0。 kTone。 k++)。 //利用 Tone 的不同来区分 7种音调 BZ=1。 //打开蜂鸣器 25 for(k=0。 kTone。 k++)。 //利用 Tone 的不同来区分 7种音调 } } } void Music() //音乐播放函数 { Play_music()。 //播放音乐 BZ=0。 //关闭蜂鸣器 delay(10000)。 //延时 } 只要将不同歌曲的曲谱,以 SOUNDTONE[i]、 SOUNDLONG[i]数组表示出来,再赋值给 Tone、Long,这样当调用 Music 函数时,便会播放不同的歌曲。 由于将曲谱转换成数组比较麻烦,故在此只给出了一首歌曲作为范例。 花样灯 图 47 单片机上的 LED 实物图 通过控制 LED 灯亮灭的时间,及多个 LED 灯规律性的移动、跳跃,来达到一定视觉观 赏关性。 还可以通过 PWM 控制 LED 灯逐渐变亮、变暗来模拟智能家居中, 人为控制灯的亮度。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。