- 6
- 0
- 约1.1千字
- 约 6页
- 2017-08-11 发布于重庆
- 举报
基于AVR单片机的电梯控制系统
基于AVR Atmega128 设计的小型电梯控制系统
一 实验目的
本实验是一个综合性的实验,用到了实验箱上的大多数资源,能很好的检验学习的情况,对熟悉实验箱的应用和操作有很大的好处。
二 实验内容
本实验是基于AVR ATmegal128开发的电梯控制系统,由于本系统的硬件主要是依靠实验箱,所以所实现的功能没有实际的客运电梯的强大,但是本系统可以应用于运行条件不是特别严格的环境下,如小型货运电梯。
三 硬件原理
为了加强自己对硬件部分的了解,提高自己的编程水平,尽可能多的使用现有实验箱资源,在这个系统中,加入了以下硬件:1、4*4键盘 2、8*8 LED点阵(LDM) 3、TEXT LCD 4、7段led数码管 5、外部中断 6、音频输出 7、步进电机
下面是各部分的硬件PCB:
ATmegal128
2、8*8 LED点阵(LDM)
3、TEXT LCD
4、外部中断
5、音频输出
7、步进电机
8、4*4键盘和7段led数码管
四 程序流程图
TEXT LCD初始化,其上显示欢迎字幕,并要求用户进行楼层选择
调用键扫描函数key_scan();
通过扫描出来的键值来确定用户所要到的楼层数
将上次运行的楼层数保存到参数d中
并判断当前所选楼层bin与上次楼层之间的大小情况
If(bind)
If(bin=1)
If(bind)
调用print_message();TEXT LCD显示“THE LIFT IS RUNNING!”
调用initializemotor();初始化电机,电机开始正转
调用matrix(font_A);进行LDM显示,楼层数每变化一次,参数f自动加一(f用来存放当前电梯运行处的楼层数)
判断当前楼层数是否与目标楼层数相等
是
调用function();电机停转,TEXT LCD显示,提醒语音响起,点阵
静态现实当前已到楼层数
否ou
调用键扫描函数key_scan();扫描到关门键(数字'f')
(bind)
调用initializemotor();初始化电机,电机开始反转
调用matrix(font_A);进行LDM显示,楼层数每变化一次,参数f自动减一(f用来存放当前电梯运行处的楼层数)
(bin=1)
判断当前楼层数是否为1
否ou
调用function();电机停转,TEXT LCD显示,提醒语音响起,点阵
静态现实当前已到1层
是
系统主函数流程图
电机中断流程图
中断初始化
给定中断初值
内部计数器控制,中断初值自动加1,达到溢出值时触发中断
给电机送入相序,使电机旋转
原创力文档

文档评论(0)