基于arduino的校园作息时间控制系统本科学位论文

目录
内容 1. 系统总体方案设计……………………………………………… 2. 系统硬件设计…………………………………………………… 2.1. 按键输入电路…………………………………………………… 页码 2 3 3
2.2. 输出电路…………………………………………………………… 4 2.3. 显示电路…………………………………………………………… 5 3. 软件设计(包括流程图)……………………………………… 9
4. 软件仿真…………………………………………………………… 15 5. 系统的安装调试说明…………………………………………… 17
6. 总结………………………………………………………………… 18 7. 参考文献…………………………………………………………… 19 8. 附录………………………………………………………………… 19
第 1 页 共 24 页

第 2 页 共 24 页

姓名
学号
1. 系统总体方案设计
校园作息时间控制系统主要用于学校,对一些以 24 小时为周期的开关量进 行自动控制。如上下课打铃、教学音响的定时开与关等。 该控制系统是采用 Arduino_UNO 微控制器来实现对上述开关量的控制, 设有 四位数码管、可以实时显示时间、系统还设有按键,用以修改实时时钟,体现了 系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。 该时钟控制系统有 4 位数码显示器,具有实时显示时钟(显示当前时间的小 时、分钟)功能,可以实现多点、多电器设备的控制。该控制系统可广泛用于学 校、工厂和机关的自动打铃、音响及其他对象控制,也可用于家庭或学生寝室进 行时间指示及多点时间提醒。为方便仿真与测试,本系统以秒代分,日时间累计 误差≤1 分钟。系统设有的按键电路,方便定期进行时间校准。 根据设计要求画出系统框图,如图 1 所示,原理见附录 1。 该控制系统是由微处理器、 蜂鸣器、 数码显示部分以及按键输入部分所组成。 显示电路采用了 74LS48 芯片来完成驱动和译码的功能。
图 1 系统框图
根据实际情况对上下课打铃与教学音响的定时开关量在一天内的控制时间 列表如下: 时间 7:30 8:00 8:45 9:00 9:50 9:55 10:10 11:00 11:10 12:00 事件 播放歌曲 30 分钟 第一节课上课打铃 第一节课下课铃响 第二节课上课铃响 第二节课下课铃响 课间操开始,放音乐 10 分钟 第三节上课铃响 第三节下课铃响 第四节上课铃响 第四节下课铃响
表 1 作息时间控制表
动作 LED1 亮 30 分钟 Bee 响铃 1 分钟 Bee 响铃 1 分钟 Bee 响铃 1 分钟 Bee 响铃 1 分钟 LED2 亮 10 分钟 Bee 响铃 1 分钟 Bee 响铃 1 分钟 Bee 响铃 1 分钟 Bee 响铃 1 分钟
第 3 页 共 24 页

姓名
学号
2. 系统硬件设计
这个课程设计主要用到的硬件是 PC 机,Arduino 入门套件。 将复位和校时将设定时间覆盖现在时间(T)的按钮依次并列排列在面包板 上,并加上代表下课上课铃声的有源蜂鸣器和两个代表播放歌曲和课间操的 LED。将以上按照编程与四位数码管和 Arduino 板连接。 总体连接图如下图 2 所示:
图 2 总体连接图
这个电路图是由 Fritzing(面包板)软件绘制,软件库中不含有四位数码管。 图中用一个同是 12 管教的显示器代替了。 按系统框图分三个部分设计如下:
2.1. 按键输入电路
输入控制是由两个按键组成的,它是微型计算机最常用的输入设备,用户可 以通过按键向计算机输入复位和校时指令。本系统中采用独立式按键结构,如图 3所示,各按键相互独立地接通一条输入数据线,当任何一个键按下时,与之相 连的输入数据线即被置0,而平时该线置1。独立式按键电路配置灵活,软件结构 简单。当功能键不很多时,采用该种方式比较合适。
第 4 页 共 24 页

姓名
学号
图 3 按键连接图
第 5 页 共 24 页

姓名
学号
2.2. 输出电路
输出控制信号串口 LED 灯和蜂鸣器,串口各位所控制的对象见表 2,输出部 分原理图如图 5 所示。 串口的位控制,“LOW”控制截止、“HIGH”控制导通 串口 0 1 13 用电器 LED1 LED2 有源蜂鸣器
表 2 位控表
图 4 输出部分原理图
第 6 页 共 24 页

姓名
学号
2.3. 显示电路
4 位 LED 显示器进行设计。只有理解结构和内部接线图,读引脚图,以便正 确连接电路,得到正确的实验结果的。 4 位数码管:
图 5 4 位数码管俯视图
四位数码管有 12 个外部引脚,数码管的引脚标号为,左下角为 1,按逆时针 方向数,分别为 1-12。
图 6 4 位数码管立体视图
共阴极发光二极管的内部接线图:
第 7 页 共 24 页

姓名
学号
图 7 共阴极 4 位数码管内部接线图
发光二极管的引脚图:
图 8 共阴极 4 位数码管引脚图
以下是发光二极管的接线图:
图 9 共阴极 4 位数码管接线图
显然,连接 LED 需要占用 Arduino 的 12 个引脚(大部分的)。所以添加一 个显示系统 74LS48 芯片来减少引脚数的使用。 74LS48 芯片是一种常用的七段数码管译码驱动,常用于各种数字电路和微 控制器系统的显示系统,下面是一些参数的组件和应用技术及其他信息。 BCD-74LS48 引脚图:
第 8 页 共 24 页

姓名
学号
图 10 BCD-74LS48 芯片引脚图
表 3 功能表-七段译码器 74LS48 驱动函数表 十进制数 或函数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 BI RBI LT BI/R RBI D C B A BO H x x x x x x x x x x x x x x x x L x 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 x x x x 0 0 0 0 x x x x H H H H H H H H H H H H H H H H L L H 输入 输出 备注 a 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 1 b 1 1 1 1 1 0 0 1 1 1 0 0 1 0 0 0 0 0 1 c 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 d 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0 1 e 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 f 1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 g 0 0 1 1 1 1 1 0 1 H H H H H H H H x H L 1 1 1 1 1 1 1 0 0 0 1 2 3 4
LT H H H H H H H H
第 9 页 共 24 页

姓名
学号
连接 74LS48 与 LED 显示器:
图 11 BCD-74LS48 芯片与 4 位显示器连接图
在 Proteus 绘制的连接图:
图 12 BCD-74LS48 芯片与 4 位显示器仿真连接图
第 10 页 共 24 页

姓名
学号
3. 软件设计(包括流程图)
软件设计以时钟显示、输出控制为主程序。在设计中利用中断,中断子程序 有时间复位,和时间校准。下面是流程图:
图 13 编程流程图
第 11 页 共 24 页

姓名
学号
设计程序: 首先定义显示器和译码器各个管脚,LED 灯,蜂鸣器按钮在 Arduino 板上的对 应管脚。 其次设置相应的管脚为输出管脚并设置 2 个按钮为输入管脚并加上内部 change 模式。设置 2 个中断,设置中断引脚数为 2 和 3,此部分程序如下图 2 所示。
第 12 页 共 24 页

姓名
学号
接下来,定义需要在显示器上显示的字母和不同时期的数字,并用 然后运用 if 语句定义不同时间断的蜂鸣器运行与 LED 灯的亮灭。中 断程序设置 2 个按钮不同的功能。 以下是完整的 4 位显示器显示程序:
程序 注释
第 13 页 共 24 页

姓名
学号
/*seg_a:(11) seg_b:(7) seg_c:(4) seg_d:(2) seg_e:(1) seg_f:(10) seg_g:(5) */
->74ls48p(13) ->74ls48p(12) ->74ls48p(11) ->74ls48p(10) ->74ls48p(9) ->74ls48p(15) ->74ls48p(14)
#define A 4 #define B 5 #define C 6 #define D 7 #define COM1 9 #define COM2 10 #define COM3 11 #define COM4 12 unsigned char table[10][4] = { {0,0,0,0}, {1,0,0,0}, {0,1,0,0}, {1,1,0,0}, {0,0,1,0}, {1,0,1,0}, {0,1,1,0}, {1,1,1,0}, {0,0,0,1}, {1,0,0,1} }; void setup() { pinMode(A,OUTPUT); pinMode(B,OUTPUT); pinMode(C,OUTPUT); pinMode(D,OUTPUT); pinMode(COM1,OUTPUT); pinMode(COM2,OUTPUT); pinMode(COM3,OUTPUT); pinMode(COM4,OUTPUT); }
第 14 页 共 24 页
//arduino:(4) ->74ls48p(7) //arduino:(5) ->74ls48p(1) //arduino:(6) ->74ls48p(2) //arduino:(7) ->74ls48p(6) //arduino:(9) ->74ls48p(6) //arduino:(10) ->74ls48p(8) //arduino:(11) ->74ls48p(9) //arduino:(12) ->74ls48p(12) //对应{ hgfedcba } //0 //1 //2 //3 //4 //5 //6 //7 //8 //9
//设置为输出引脚

姓名
学号
void loop() { Display(1,0); delay(500); Display(2,1); delay(500); Display(3,2); delay(500); Display(4,3); delay(500); }
//第一位显示0 //二位显示1 //第三位显示2 //第四位显示3
void Display(unsigned char com,unsigned char num) { //去除的余辉 digitalWrite(A,LOW); digitalWrite(B,LOW); digitalWrite(C,LOW); digitalWrite(D,LOW); //选通 switch(com) { //选择1位 case 1: digitalWrite(COM1,LOW); digitalWrite(COM2,HIGH); digitalWrite(COM3,HIGH); digitalWrite(COM4,HIGH); //选择 2 位 break; case 2: digitalWrite(COM1,HIGH); digitalWrite(COM2,LOW); digitalWrite(COM3,HIGH); digitalWrite(COM4,HIGH); break; / /选择位3 case 3: digitalWrite(COM1,HIGH); digitalWrite(COM2,HIGH); digitalWrite(COM3,LOW); digitalWrite(COM4,HIGH); / /选择位4 break; case 4: digitalWrite(COM1,HIGH); digitalWrite(COM2,HIGH);
第 15 页 共 24 页

相关文档
最新文档