刀刀网
您的当前位置:首页基于单片机活动门控制系统的设计与实现

基于单片机活动门控制系统的设计与实现

来源:刀刀网


目录:

1.课设主要任务与技术要求 ......................................................................................... 2 1.1主要任务 .................................................................................................................. 2 1.2技术要求 .................................................................................................................. 2 2.系统分析与设计 ...................................................................................................... 2

2.1系统分析 .................................................................................................. 2 2.1活动门总体设计方案 ............................................................................................. 3 3 单片机简介 ................................................................................................................ 4 3.1 80C51单片机功能与引脚介绍 ......................................................................... 5 4.主要硬件电路 .......................................................................................................... 6 4.1电机驱动电路 ......................................................................................................... 6 4.2门限电路 ................................................................................................................. 7 4.3按键去抖电路 ......................................................................................................... 7 4.3.1作用 ....................................................................................................... 7 4.3.2技术方案 ............................................................................................... 8

5单片机与PC机串口通讯 ........................................................................................... 8 6. 程序设计与实验 ...................................................................................................... 9 6.1 单片机程序设计 .................................................................................................... 9

6.1.1程序流程图 ......................................................................................... 9

6.1.2源程序的代码 ................................................................................... 10

6.2 上位机程序设计 .................................................................................................. 15 6.2.1控制界面 ............................................................................................. 15 6.2.2程序代码: ......................................................................................... 15

参考文献 ...................................................................................................................... 19 附录一 电路图 ............................................................................................................ 19 附录二 PCB版图 ....................................................................................................... 20 附录三 实物图 ............................................................................................................ 21

基于单片机活动门控制系统的设计与实现

1.课设主要任务与技术要求 1.1主要任务

(1)系统分析与设计:对系统进行调研,详细分析系统,设计出基于单片机的活动门控制系统的技术方案;

(2)设计实现系统的关系技术:电机驱动、门限电路、软件控制; (3)系统电路的设计与实现:器件选择、地址分配和硬件连接;

(4)系统软件的设计与实现:单片机代码的实现,计算机控制代码的实现; (5)系统调试:调试串口、调试按键、调试驱动; (6)系统联调。 1.2技术要求

(1)实现活动门的开关动作:在单片机的作用下,通过活动门上安装的控制按钮,控制外部电机实现活动门的开关动作(即用单片机控制电机的正反转);

(2)实现上位机软件控制活动门:利用计算机的软件实现对活动门的开关动作(即单片机与上位机的通信,完成对活动门的正确控制);

(3)使用单一供电电源,控制电机使用直流电机,活动门必须安装限位开关,实现门的自动控制。 2.系统分析与设计 2.1系统分析

要想实现活动门的开关动作,从理论上分析,最简单的方法就是用开关控制电机的通断,带动开关门机构作相应的动作。也就是说,只要安装一个电机就可以了。

基本结构如下:

图1.1 活动门结构图

但是采用图1.1所示的控制方案,只能实现最为简单的开关工作。然而实际的工作情况要复杂得多,这样的工作方式还存在着如下的问题。

(1)如何控制电机的正反转

第 2 页 共 21 页

基于单片机活动门控制系统的设计与实现

由于电机的动作十分简单,只能是正转或者是反转。对与图1.1所示的方案,需要采用触点开关才能实现每一个活动门的开关动作。并且需要判断当前活动门的开关状态。这就的需要在活动门的操作机构之上加入逻辑控制模块。

(2)是否能用单一电源方案

图1.1所示的方案中,为了控制电机的正反转,采用了正、负双电源的供电方式。一般说来,这样的面板机构中,最好采用单电源供电的方式。采用单电源的方式控制电机的正反转就牵涉到电机的驱动电路的设计问题。

(3)能否利用软件控制活动门的开关

活动门操作结构中的电机一般都是小型的直流电机,通过按钮改变电机的正反转动作用。但是,对于某些特殊的要求或者是在某些程序中需要涉及到利用软件实现活动门的开关动作,这对于如图1.1所示的电路方案而言,是无法做到的,所以还需要对电路作进一步的改进,并在PC机软件中加入活动门的开关控制功能。 2.1活动门总体设计方案

机箱活动门控制原理框图如图1.2所示:

PC 机 单 片 机 驱动电路 小电机 发光二极管 发光二极管 接近传感器 触点开关

图1.2

各部分功能:

PC机:使用C#.NET提供用户微机程序界面,并将用户对发光二极管的操作转化为控制指令发送到下位机上。

第 3 页 共 21 页

基于单片机活动门控制系统的设计与实现

单片机:监测和接收外部状态信号,控制发光二极管的亮和灭,并发送控制指令给驱动电路,控制小电机正转或反转。

驱动电路:驱动电机的动作,实现二极管的亮和灭。 接近传感器:将当前二极管的状态信息反馈给单片机。

触点开关:反映发光二极管的状态变化,并告知单片机发光二极管的状态。 PC机与单片机通信:用串口通信。 3 单片机简介

单片机是一种集成电路芯片。它采用超大规模技术将具有数据处理能力的微处理器(CPU)、存储器(含程序存储器ROM和数据存储器RAM)、输入、输出接口电路(I/O接口)集成在同一块芯片上,构成一个即小巧又很完善的计算机硬件系统,在单片机程序的控制下能准确、迅速、高效地完成程序设计者事先规定的任务。所以说,一片单片机芯片就具有了组成计算机的全部功能,从某种意义上来说,一块单片机就是一台微型计算机。

由此来看,单片机有着一般微处理器(CPU)芯片所不具备的功能,它可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。然而单片机又不同于单板机(一种将微处理器芯片、存储器芯片、输入输出接口芯片安装在同一块印制电路板上的微型计算机),单片机芯片在没有开发前,它只是具备功能极强的超大规模集成电路,如果对它进行应用开发,它便是一个小型的微型计算机控制系统,但它与单板机或个人电脑(PC机)有着本质的区别,与微型计算机相比单片机具有一下特点:

(1)体积小、结构简单、可靠性高

单片机把各功能不仅集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。

(2)控制功能强

单片机虽然结构简单,但是它“五脏俱全”,已经具备了足够的控制功能。单片机具有较多的I/O口,CPU可以直接对I/O进行I/O操作、算术操作、逻辑操作和位操作,指令简单而丰富。所以单片机也是“面向控制”的计算机。

(3)低电压、低功耗

第 4 页 共 21 页

基于单片机活动门控制系统的设计与实现

单片机已可在2.2V的电压下运行,有的已能在1.2V或0.9V下工作;功能降至为uA级,一颗纽扣电池供电就可以长期工作。

(4)优异的性能、价格比

由于单片机构成的控制系统硬件结构简单、开发期短、控制功能强、可靠性能高,因此,在达到同样功能的条件下,用单片机来发的控制系统比其他类型的微型计算机开发的控制系统价格更便宜。 3.1 80C51单片机功能与引脚介绍

本设计采用的单片机型号为80C51,80C51单片机系列源于MCS-51系列。把所有厂家以8051为基核推出的各种型号80C51兼容型单片机统称为80C51系列。8051是MCS-51系列中最基础的单片机型号,其供应状态有8051(MaskROM)、8751(EPROM)、8031(ROMless)。

51系列单片机的主要功能特点: 1、一个8位微处理器CPU;

2、片内振荡器,振荡频率范围为1.2~12MHZ; 3、4KB/8KB的片内ROM(8031、8032、80C31无); 4、128/256字节的片内RAM; 5、片外ROM的寻址范围为KB; 6、片外RAM的寻址范围为KB; 7、21个特殊功能寄存器(SFR);

8、四个8位并行I/O接口(P0~P3),32根I/O口线; 9、1个全双工UART串行口,可多级通信; 10、2/3个16位定时/计数器;

11、具有5/6个中断源,可编程为两个优先级; 12、有位寻址功能,适于布尔处理的位处理机; 13、111条指令;

14、片内采用单总线结构; 15、用单一+5V电源。

第 5 页 共 21 页

基于单片机活动门控制系统的设计与实现

4.主要硬件电路 4.1电机驱动电路

由于采用分立元件构成的直流电机的驱动电路原理上较为简单,但要考虑到器件的应用条件等一些因素,本次设计采用了专用的小功率直流电机驱动芯片。

设计中采用的是东芝公司的TA7267BP,改芯片在相应的逻辑电平的控制下,能够实现电机的正转,反转,停止,和刹车4种动作。其逻辑电平的工作电压为6V~18V,驱动电机的工作电压为0V~18V,是一款单电源供电的芯片。其封装如图3.3所示,各引脚功能定义如表3.1所示。

图3.3 TA7267BP封装图 表3.1 TA7267BP引脚功能定义

引脚号 1 2 3 1 4 5 2 6 7 VS VCC 驱动级电源 逻辑电路电源 GND OUT地信号 电机驱动输出2 IN1 IN2 OUT控制指令输入1 控制指令输入2 电机驱动输出1 名称 作用 根据TA7267BP引脚功能定义,只要将单片机的控制信号接到TA7267BP的1、2两个引脚上,并把其驱动输出连接到被控制电机的输入端,就可以实现电机的正反转控制了。表3.2给出了TA7267BP的输入控制信号与驱动输出和电机的状态变化情况。

第 6 页 共 21 页

基于单片机活动门控制系统的设计与实现

表3.2 TA7267BP输入控制信号与输出和电机的状态 IN1 1 0 1 0 4.2门限电路

一般情况下,活动门的启停位置上都会安装限位开关。当活动门到达开或关的停止位置上时,限位开关被合上,从而发出一个电平变化的信号,提供给单片机,从而实现门的自动控制功能。

本设计使用触点开关代替常用的限位开关,当活动门合上时,触点开关被闭合;当活动门打开时,触点开关打开,从而反映活动门开关状态变化所造成的电平变化。

因而门限电路所起的作用就是告知单片机活动门状态的电路。当需要对活动门操作时,首先应根据门限电路的电平状态判断出活动门所处的状态,然后根据门的状态决定电机的正反转;最后,用单片机发出相应的开门、关门的指令电平,控制电机实现开门和关门的指令电平,表3.3显示了门限和活动门的对应关系。

表3.3 门限电路和活动门开关的对应关系

门限电平 低 高 4.3按键去抖电路 4.3.1作用

当活动门的按键被按下时,首先应当进行去抖动处理。这是因为按键本身是一个机械开关,由于机械触点的弹性以及电压突跳等原因,在触点闭合或者是断开的瞬间会出现电压抖动的情况。在发生抖动时,单片机很难判别此时键是否按下,为此就要进行按键去抖处理。

门开关 按下 按下 电机状态 关门 开门 IN2 1 1 0 高阻0 抗 抗 OUT1 L L H OUT2 L H L 高阻停止 电机状态 刹车 正传 反转 第 7 页 共 21 页

基于单片机活动门控制系统的设计与实现

4.3.2技术方案

按键去抖动处理的方法一般有两种,一种是采用硬件电路去抖,例如,加入R-S触发器;另一种方法是采用软件去抖,利用软件的时间延迟程序以躲过抖动时间,待信号稳定后再进行按键扫描。本实验主要利用了软件去抖动的方法。

软件去抖动的程序: DL:MOV R0,#0AH DL2:MOV R1,#250 DL1:NOP NOP DJNZ R1,DL1 DJNZ R0,DL2 RET

5单片机与PC机串口通讯

51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。全双工的串行通讯口原理图如图4.1所示:

图4.1全双工的串行通讯口原理图

第 8 页 共 21 页

基于单片机活动门控制系统的设计与实现

6. 程序设计与实验

活动门控制的程序包括两方面的内容;一个是单片机方面的编程,包括对活动门状态的监测和控制,以及微机指令的接收;另一方面是计算机软件编程,包括人机控制界面的编写和控制指令的发送。计算机软件编程方面的内容已在上一章作了详细介绍。下面主要介绍单片机的程序设计。 6.1 单片机程序设计

单片机的程序完成两个功能,首先是监测活动门开关状态,并以此为依据输出活动门的控制指令。 6.1.1程序流程图

主程序MAIN的流程图: 外部中断零程序INT的流程图:

使发光二极L1和保护现场 N 设置串口工作方式 是否有键按下 Y 设置定时器T1工作方式并赋值 P2.0=1? Y 电机反转 电机正转 L1亮L2灭 L1灭L2亮 中断返回 N 开始 中断入口

L2管都灭 开串口中断并设置串口中断触发方式 开CPU中断和外部中断零 等待中断 调用延时4秒程序 电机停止 L1和L2灭 恢复现场 中断返回 第 9 页 共 21 页

基于单片机活动门控制系统的设计与实现

串口中断程序D流程图:

中断入口 保护现场和清从SBUF中读数送累加器A Y A=10? N N P2.0=0? 把01写入SBUF送到上位机 Y 电机正转L1亮 Y 电机反转L2亮 把10写入SBUF送到上位机 P2.0=1? N 调用4秒的延时电机停转灯灭 清RI恢复现中断返回

6.1.2源程序的代码

ORG 0000H LJMP MAIN ORG 0003H LJMP INT

第 10 页 共 21 页

基于单片机活动门控制系统的设计与实现

ORG 0023H LJMP D ORG 0030 MAIN: SETB P1.1 SETB P1.4

MOV SCON,#50H;串口工作方式1 MOV TMOD,#20H;T1为定时方式2 MOV TH1,#0FDH MOV TL1,#0FDH;置初值 SETB EX0 ;开外部中断零 CLR IT0 ;电平触发方式 SETB ES ;开串口中断 SETB EA ;开CPU中断 SETB TR1;启动定时器T1 JMP $ ;等待中断 /*串口中断程序*/ D:CLR EA CLR RI PUSH PSW PUSH ACC

/*读上位机发送的控制指令*/ MOV A,SBUF

CJNE A,#01H,B1;不等于01H转 JNB P2.0,B2;p2.0=0,转B2 SJMP B5;p2.0=0,转B5 B2:SETB P1.3

CLR P1.2;执行关门动作 CLR P1.4

ACALL DLL;调用延时程序 SETB P1.2

第 11 页 共 21 页

基于单片机活动门控制系统的设计与实现

SETB P1.3 SETB P1.4

SETB P1.1;电机停转,灯灭 B5: MOV A,#01H MOV SBUF,A JNB TI,$

CLR TI ;向上位机发01H AJMP B3

B1: JB P2.0,B4;p2.0=1,转B4 SJMP B6;p2.0=0,转B6 B4:SETB P1.2

CLR P1.3;执行开门动作 CLR P1.1

ACALL DLL;调用延时程序 SETB P1.2 SETB P1.3 SETB P1.4

SETB P1.1;电机停转,灯灭 B6:MOV A,#10H MOV SBUF,A JNB TI,$

CLR TI ;向上位机发10H /*恢复现场*/ B3:CLR RI POP ACC POP PSW SETB EA RETI

第 12 页 共 21 页

基于单片机活动门控制系统的设计与实现

/*外部中断零程序 */ INT:CLR EA PUSH PSW PUSH ACC

/*判断是否有按键按下,并进行按键去抖*/ A2 BIT 21H A3 BIT 23H

MOV C,P3.2;暂存按键现状 MOV A3,C

ACALL DL ;再取按键状态 MOV C,P3.2 JNB P3.2,L1 ANL C,A3 JNB P3.2,Q SJMP T2 L1: ORL C,A3

JB P3.2,Q;比较两次状态的异同

/*有键按下是判断接近触发器的状态,给驱动电路相应的控制信号,控制相应的灯亮和灭*/

T2:JNB P2.0,T5;p2.0=0,转T5 CLR P1.2

SETB P1.3;执行关门动作 CLR P1.4 SETB P1.1 SJMP T4 T5:CLR P1.3

SETB P1.2;执行开门动作 CLR P1.1 SETB P1.4

T4:ACALL DLL;调用延时程序

第 13 页 共 21 页

基于单片机活动门控制系统的设计与实现

SETB P1.2 SETB P1.3 SETB P1.1

SETB P1.4;电机正转,灯灭 T6:POP ACC POP PSW

SETB EA ;恢复现场 Q:RETI

/*用于按键去抖的延时程序*、 DL:MOV R0,#0AH DL2:MOV R1,#250 DL1:NOP NOP DJNZ R1,DL1 DJNZ R0,DL2 RET

;用于控制电机正反转时间的程序 DLL:MOV R2,#20 DDL3:MOV R0,#200 DLL2:MOV R1,#250 DLL1:NOP NOP

DJNZ R1,DLL1 DJNZ R0,DLL2 DJNZ R2,DDL3 RET

END

第 14 页 共 21 页

基于单片机活动门控制系统的设计与实现

6.2 上位机程序设计

软件控制活动门需要实现两个功能:一是人机控制界面的编写,二是活动门控制信号的传送和执行。第一个功能的主要内容是Windows环境下可视化程序的开发;第二个功能主要是微机与单片机之间的通信。 6.2.1控制界面

6.2.2程序代码:

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;

using System.Windows.Forms; using System.IO.Ports; namespace HDMKZ {

public partial class Form1 : Form

第 15 页 共 21 页

基于单片机活动门控制系统的设计与实现

{

public Form1() {

InitializeComponent(); }

private void Form1_Load(object sender, EventArgs e) {

comboBox1.SelectedIndex = 0; }

byte[] Dout = new byte[1]; byte[] Din = new byte[1];

private void button1_Click(object sender, EventArgs e) {

if (serialPort1.IsOpen) {

serialPort1.Close(); button1.Text = \"关闭串口\";

textBox1.Text = \"串口未打开,不可以进行串口通信!\"; listBox1.Items.Add(\"初始化失败,禁止可以进行通信!\"); } else { try {

textBox3.Text = \"9600bps\"; textBox4.Text = \"8\"; textBox6.Text = \"0\";

serialPort1.PortName = (String)comboBox1.SelectedItem; serialPort1.BaudRate = 9600; serialPort1.DataBits = 8;

第 16 页 共 21 页

基于单片机活动门控制系统的设计与实现

serialPort1.StopBits = StopBits.One; serialPort1.Parity = Parity.None; serialPort1.RtsEnable = true; serialPort1.Open(); button1.Text = \"打开串口\";

textBox1.Text = \"串口已打开,可以进行串口通信!\"; listBox1.Items.Add(\"初始化成功,可以进行通信!\"); } catch {

MessageBox.Show(\"串口未打开!\", \"出错啦!\", MessageBoxButtons.OK, MessageBoxIcon.Error);

} } }

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

{ }

private void button2_Click(object sender, EventArgs e) { try {

if ( serialPort1.IsOpen) {

Dout[0] = 10;

this.serialPort1.Write(Dout, 0, Dout.Length); listBox1.Items.Add(\"已发送控制信号使电机正转!\"); } }

第 17 页 共 21 页

基于单片机活动门控制系统的设计与实现

catch {

MessageBox.Show(\"发送命令失败!\", \"出错啦!\", MessageBoxButtons.OK, MessageBoxIcon.Error);

} }

private void button3_Click(object sender, EventArgs e) { try {

if ( serialPort1.IsOpen) {

Dout[0] = 01;

this.serialPort1.Write(Dout, 0, Dout.Length); listBox1.Items.Add(\"已发送控制信号使电机正转!\"); } } catch {

MessageBox.Show(\"发送命令失败!\", \"出错啦!\", MessageBoxButtons.OK, MessageBoxIcon.Error);

} }

private void serialPort1_DataReceived_1(object sender, SerialDataReceivedEventArgs e)

{

Control.CheckForIllegalCrossThreadCalls = false;//不使用委托 string str = \"\";

str = serialPort1.ReadExisting(); switch (str)

第 18 页 共 21 页

基于单片机活动门控制系统的设计与实现

{

case \"01\":

listBox1.Items.Add(\"电机反转,门为关闭状态!\"); break; case \"10\":

listBox1.Items.Add(\"电机正转,门为打开状态!\"); break; default:

listBox1.Items.Add(\"接收数据失败,无法知道电机工作状态!\");

break; } } } }

参考文献

[1] 周元一.电机与电气控制.机械工业出版社.2006.8 [2] 汤天浩.电机与拖动基础. 机械工业出版社.2004.7 [3] 曹克澄.单片机原理及应用. 机械工业出版社.2005.

[4] 孙家启等编著.Visual Basic程序设计教程.合肥:安徽大学出版社,2005 [5] 靳达编著.单片机应用系统开发实例导航.北京:人民邮电出版社,2003 [6] 南建辉、熊鸣、王军茹.MCS-51单片机原理及应用实例.清华大学出版社,2004 [7] 万福君.单片微机原理系统设计与开发应用.中国科学出版社,1995

[8] 张友德、赵志英等.单片机原理应用与实验.上海复旦大学出版社,1992

附录一 电路图

第 19 页 共 21 页

基于单片机活动门控制系统的设计与实现

附录二 PCB版图

第 20 页 共 21 页

基于单片机活动门控制系统的设计与实现

附录三 实物图

第 21 页 共 21 页

因篇幅问题不能全部显示,请点此查看更多更全内容