《基于arduino校园作息时间控制系统课程设计》由会员分享,可在线阅读,更多相关《基于arduino校园作息时间控制系统课程设计(26页珍藏版)》请在金锄头文库上搜索。
1、目录内容页码1. 系统总体方案设计22. 系统硬件设计3 2.1. 按键输入电路3 2.2. 输出电路4 2.3. 显示电路53. 软件设计(包括流程图)94. 软件仿真155. 系统的安装调试说明176. 总结187. 参考文献198. 附录191. 系统总体方案设计 校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。如上下课打铃、教学音响的定时开与关等。该控制系统是采用Arduino_UNO微控制器来实现对上述开关量的控制,设有四位数码管、可以实时显示时间、系统还设有按键,用以修改实时时钟,体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。该时
2、钟控制系统有4位数码显示器,具有实时显示时钟(显示当前时间的小时、分钟)功能,可以实现多点、多电器设备的控制。该控制系统可广泛用于学校、工厂和机关的自动打铃、音响及其他对象控制,也可用于家庭或学生寝室进行时间指示及多点时间提醒。为方便仿真与测试,本系统以秒代分,日时间累计误差1分钟。系统设有的按键电路,方便定期进行时间校准。根据设计要求画出系统框图,如图1所示,原理见附录1。该控制系统是由微处理器、蜂鸣器、数码显示部分以及按键输入部分所组成。显示电路采用了74LS48芯片来完成驱动和译码的功能。图1 系统框图根据实际情况对上下课打铃与教学音响的定时开关量在一天内的控制时间列表如下:时间事件动作
3、7:30播放歌曲30分钟LED1亮30分钟8:00第一节课上课打铃Bee响铃1分钟8:45第一节课下课铃响Bee响铃1分钟9:00第二节课上课铃响Bee响铃1分钟9:50第二节课下课铃响Bee响铃1分钟9:55课间操开始,放音乐10分钟LED2亮10分钟10:10第三节上课铃响Bee响铃1分钟11:00第三节下课铃响Bee响铃1分钟11:10第四节上课铃响Bee响铃1分钟12:00第四节下课铃响Bee响铃1分钟表1 作息时间控制表2. 系统硬件设计 这个课程设计主要用到的硬件是PC机,Arduino入门套件。将复位和校时将设定时间覆盖现在时间(T)的按钮依次并列排列在面包板上,并加上代表下课上
4、课铃声的有源蜂鸣器和两个代表播放歌曲和课间操的LED。将以上按照编程与四位数码管和Arduino板连接。 总体连接图如下图2所示:图2 总体连接图 这个电路图是由Fritzing(面包板)软件绘制,软件库中不含有四位数码管。图中用一个同是12管教的显示器代替了。按系统框图分三个部分设计如下:2.1. 按键输入电路窗体底端输入控制是由两个按键组成的,它是微型计算机最常用的输入设备,用户可以通过按键向计算机输入复位和校时指令。本系统中采用独立式按键结构,如图3所示,各按键相互独立地接通一条输入数据线,当任何一个键按下时,与之相连的输入数据线即被置0,而平时该线置1。独立式按键电路配置灵活,软件结构
5、简单。当功能键不很多时,采用该种方式比较合适。图3 按键连接图2.2. 输出电路输出控制信号串口LED灯和蜂鸣器,串口各位所控制的对象见表2,输出部分原理图如图5所示。串口的位控制,“LOW”控制截止、“HIGH”控制导通串口0113用电器LED1LED2有源蜂鸣器表2 位控表图4输出部分原理图2.3. 显示电路 4位LED显示器进行设计。只有理解结构和内部接线图,读引脚图,以便正确连接电路,得到正确的实验结果的。 4位数码管:图5 4位数码管俯视图 四位数码管有12个外部引脚,数码管的引脚标号为,左下角为1,按逆时针方向数,分别为1-12。图6 4位数码管立体视图 共阴极发光二极管的内部接线
6、图:图7 共阴极4位数码管内部接线图 发光二极管的引脚图:图8 共阴极4位数码管引脚图 以下是发光二极管的接线图:图9 共阴极4位数码管接线图显然,连接LED需要占用Arduino的12个引脚(大部分的)。所以添加一个显示系统74LS48芯片来减少引脚数的使用。 74LS48芯片是一种常用的七段数码管译码驱动,常用于各种数字电路和微控制器系统的显示系统,下面是一些参数的组件和应用技术及其他信息。BCD-74LS48引脚图:图10 BCD-74LS48芯片引脚图表3 功能表-七段译码器74LS48驱动函数表十进制数或函数输入BI/RBO输出备注LTRBID C B Aabcdefg0HH0 0
7、0 0H111111011Hx0 0 0 1H01100002Hx0 0 1 0H11011013Hx0 0 1 1H11110014Hx0 1 0 0H01100115Hx0 1 0 1H10110116Hx0 1 1 0H00111117Hx0 1 1 1H11100008Hx1 0 0 0H11111119Hx1 0 0 1H111001110Hx1 0 1 0H000110111Hx1 0 1 1H001100112Hx1 1 0 0H010001113Hx1 1 0 1H100101114Hx1 1 1 0H000111115Hx1 1 1 1H0000000BIxxx x x xL
8、00000002RBIHL0 0 0 0L00000003LTLxx x x xH11111114连接 74LS48 与LED显示器:图11 BCD-74LS48芯片与4位显示器连接图在Proteus绘制的连接图:图12 BCD-74LS48芯片与4位显示器仿真连接图3. 软件设计(包括流程图)软件设计以时钟显示、输出控制为主程序。在设计中利用中断,中断子程序有时间复位,和时间校准。下面是流程图:图13 编程流程图设计程序:首先定义显示器和译码器各个管脚,LED灯,蜂鸣器按钮在Arduino板上的对应管脚。其次设置相应的管脚为输出管脚并设置2个按钮为输入管脚并加上内部change模式。设置2个
9、中断,设置中断引脚数为2和3,此部分程序如下图2所示。接下来,定义需要在显示器上显示的字母和不同时期的数字,并用然后运用if语句定义不同时间断的蜂鸣器运行与LED灯的亮灭。中断程序设置2个按钮不同的功能。以下是完整的4位显示器显示程序:程序注释/*seg_a:(11) -74ls48p(13) seg_b:(7) -74ls48p(12) seg_c:(4) -74ls48p(11) seg_d:(2) -74ls48p(10) seg_e:(1) -74ls48p(9) seg_f:(10) -74ls48p(15) seg_g:(5) -74ls48p(14) */ #define A 4
10、 #define B 5 #define C 6 #define D 7 #define COM1 9 #define COM2 10 #define COM3 11 #define COM4 12 unsigned char table104 = 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(CO
11、M1,OUTPUT);pinMode(COM2,OUTPUT);pinMode(COM3,OUTPUT);pinMode(COM4,OUTPUT);void loop()Display(1,0);delay(500);Display(2,1);delay(500);Display(3,2);delay(500);Display(4,3);delay(500);void Display(unsigned char com,unsigned char num)digitalWrite(A,LOW);digitalWrite(B,LOW);digitalWrite(C,LOW);digitalWrite(D,LOW);switch(com)case 1:digitalWrite(COM1,LOW);digitalWrite(COM2,HIGH);digitalWrite(COM3,HIGH);digitalWrite(COM4,HIGH);break;case 2:digitalWrite(COM1,HIGH);digitalWrite(COM2,LOW);digitalWrite(COM3,HIGH);digitalWrite(COM4,HIGH);break;case 3:digitalWrite(COM1,HIGH);