1、信息与电气工程学院课程设计说明书(2010 /2011 学年第 2 学期)课程名称 :单片机原理与应用课程设计题 目 :基于单片机活动门控制系 统的设计与实现 专业班级 :电子信息工程 08 级 1 班 学生姓名 : 吕 泽 学 号 : 080070119 指导教师 : 吴 开 兴 设计周数 : 2 周 设计成绩 : 2011 年 6 月 23 日基于单片机活动门控制系统的设计与实现第 2 页 共 31 页目录1 课程设计主要任务与技术要求 31.1主要任务 31.2技术要求 32 系统分析与设计 32.1 系统分析 32.2 活动门总体设计方案 43 单片机简介 53.1 80C51单片机功
2、能与引绍 64 主要硬件电路 74.1电机驱动电路 74.2门限电路 94.3按键去抖电路 94.3.1 作用 94.3.2 技术方案 95 单片机与 PC 串口通信 106 单片机设计与验 106.1 单片机程序设计 106.1.1程序流程图 116.1.2源程序代码 126.2上位机程序设计 166.2.1控制界面 176.2.2程序代码 177 课程设计总结 21参考文献 21附录1 电路图 22附录2 PCB 板 24附录2 实物图 25基于单片机活动门控制系统的设计与实现第 3 页 共 31 页1.课设主要任务与技术要求1.1 主要任务(1)系统分析与设计:对系统进行调研,详细分析系
3、统,设计出基于单片机的活动门控制系统的技术方案;(2)设计实现系统的关系技术:电机驱动、门限电路、软件控制;(3)系统电路的设计与实现:器件选择、地址分配和硬件连接;(4)系统软件的设计与实现:单片机代码的实现,计算机控制代码的实现;(5)系统调试:调试串口、调试按键、调试驱动;(6)系统联调。1.2 技术要求(1)实现活动门的开关动作:在单片机的作用下,通过活动门上安装的控制按钮,控制外部电机实现活动门的开关动作(即用单片机控制电机的正反转);(2)实现上位机软件控制活动门:利用计算机的软件实现对活动门的开关动作(即单片机与上位机的通信,完成对活动门的正确控制);(3)使用单一供电电源,控制
4、电机使用直流电机,活动门必须安装限位开关,实现门的自动控制。2系统分析与设计2.1 系统分析5 单片机与 PC 机串口通讯51 单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是 RS232 电平的,而单片机的串口是 TTL 电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片 MAX232 进行转换,我们采用了三线制连接串口,也就是说和电脑的 9 针串口只连接其中的 3 根线:第 5脚的 GND、第 2 脚的 RXD、第 3 脚的 TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX
5、232 的第 10 脚和单片机的 11 脚连接,第 9 脚和单片机的10 脚连接,第 15 脚和单片机的 20 脚连接。全双工的串行通讯口原理图如图 4.1 所示:图 4.1 全双工的串行通讯口原理图基于单片机活动门控制系统的设计与实现第 4 页 共 31 页使发光二极 L1 和L2 管都灭设置串口工作方式设置定时器 T1 工作方式并赋值开串口中断并设置串口中断触发方式开 CPU 中断和外部中断零等待中断保护现场P2.0=1?NY 中断返回是否有键按下?Y电机正转L1 亮 L2灭N电机反转L1 灭 L2亮调用延时 4 秒程序电机停止L1 和 L2灭恢复现场中断返回开始 中断入口6. 程序设计与
6、实验活动门控制的程序包括两方面的内容;一个是单片机方面的编程,包括对活动门状态的监测和控制,以及微机指令的接收;另一方面是计算机软件编程,包括人机控制界面的编写和控制指令的发送。计算机软件编程方面的内容已在上一章作了详细介绍。下面主要介绍单片机的程序设计。6.1 单片机程序设计单片机的程序完成两个功能,首先是监测活动门开关状态,并以此为依据输出活动门的控制指令。6.1.1 程序流程图主程序 MAIN 的流程图: 外部中断零程序 INT 的流程图:基于单片机活动门控制系统的设计与实现第 5 页 共 31 页串口中断程序 D 流程图:中断入口保护现场和清RI从 SBUF 中读数送累加器 AA=10
7、?YNP3.2=0?把 01 写入SBUF 送到上位机NY电机正转 L1 亮P3.2=0?NY电机反转 L2亮把 10 写入SBUF 送到上位机调用 4 秒的延时程序电机停转灯灭清 RI 恢复现场中断返回6.1.2 源程序的代码基于单片机活动门控制系统的设计与实现第 6 页 共 31 页1系统分析与设计1.1 系统分析要 想 实 现 微 数 字 温 度 计 的 显 示 ,从 理 论 上 分 析 ,最 简 单 的 方 法 就 是 用 开 关 控 数 码 管的 亮 灭 来 控 制 温 度 的 显 示 与 否 , 也 可 以 直 接 将 温 度 显 示 在 液 晶 显 示 屏 上 。 也 就 是 说
8、 , 只要 用 单 片 机 直 接 控 制 数 码 管 的 显 示 温 度 就 可 以 了 。为 了 实 现 更 加 人 性 化 的 便 捷 操 作 , 通 过 PC 上 位 机 来 显 示 温 度 更 加 的 便 利 , PC 上位 机 的 显 示 界 面 可 以 同 时 显 示 多 个 温 度 值 , 极 大 地 提 高 了 需 要 严 格 控 制 温 度 时 的 场 合 ,便 于 工 作 人 员 及 时 的 调 整 需 要 , 也 提 高 了 工 作 人 员 的 工 作 效 率 , 实 现 了 现 代 工 业 的 自 动化 与 便 利 性 。1.2 数字温度计总体设计方案2.软件控制2.
9、1 作用利用单片机实现数字温度计一个优点是可以利用软件控制温度的显示与否,从而将计算机软件和硬件动作联系起来,通过上位机的界面显示温度更加方便用户对环境的温度的测定。采用串口通信的方式连接上位计算机和单片机有若干好处。首先,对于危机而言,控制外部设备的接口有多种多样,如并口、串口、PCI、ISA 等。从电路设计的简便性考虑,利用串口最为理想这是因为,一般的微机均带有 4 个以上的串行接口,而并口只有一个,机箱和微机的生产厂家不可能仅仅为了活动门而占用微机有限的并口资源。同样,使用 PCI、ISA 插槽不仅占用了主板资源,更是需要开发独立的驱动,开发成本较高;此外,从开发的成本和复杂性上考虑,采
10、用串口无疑是最为简便而低廉的设计方案。2.2 技术方案用户通过软件界面直接观测温度值。控制界面和单片机相当于是上、下位机的关系。控制界面通过串口通信接受来至下位机数据并且可以对数据进行保存。基于单片机活动门控制系统的设计与实现第 7 页 共 31 页2.3 RS232 通讯原理串行端口的本质功能是作为 CPU 和串行设备间的编码转换器。当数据从 CPU 经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线 Universal Serial Bus 或者 USB 混淆)。大多数计算机包含两个基于 RS
11、232 的串口。串口同时也是仪器仪表设备通用的通信协议;很多 GPIB 兼容的设备也带有 RS-232 口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如 IEEE488 定义并行通行状态时,规定设备线总常不得超过 20 米,并且任意两个设备间的长度不得超过 2 米;而对于串口而言,长度可达 1200 米。典型地,串口用于 ASCII 码字符的传输。通信使用 3 根线完成:a 地址线、b 发送、c接收
12、。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:(1)波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的 bit 的个数。(2)数据位:这是衡量通信中实际数据位的参数。(3)停止位:用于表示单个包的最后一位。典型的值为 1,1.5 和 2 位。(4)奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。2.4 单片机与 PC 机串口通讯51 单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通
13、讯。进行串行通讯时要满足一定的条件,比如电脑的串口是 RS232 电平的,而单片机的串口是 TTL 电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片 MAX232 进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的 9 针串口只连接其中的 3 根线:第 5 脚的 GND、第2 脚的 RXD、第 3 脚的 TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电基于单片机活动门控制系统的设计与实现第 8 页 共 31 页路如下图所示,MAX232 的第 10 脚和单片机的 11 脚连接,第 9 脚和单片机的 10
14、 脚连接,第 15 脚和单片机的 20 脚连接。全双工的串行通讯口原理图如图 4.1 所示:3.3 SCI 串行通信接口 DSP 控制器串行通信接口(SCI)是一个标准的通用异步接收/发送(UART)通信接口。它的接收器和发送器都是双缓冲的。DSP 控制器串行通信接口(SCI)有自已的使能和中断位,它们可以半双工或全双工方式工作。为了保证数据的完整性,串行通信接口对接收的数据进行间断检测、奇偶性、超时和帧错误的检查。位速率(波特率)可通过一个 16 位的比特率选择寄存器进行编程,因此,可以有超过 65000 种不同的速率。SCI 模块是一个 8 位片内外设,通过 DSP 的 16 位外部数据总
15、线的低 8 位与外部设备通信。SCI 的物理描述:(1)两个 I/O 引脚。*SCIRXD(SCI 接收数据输入)*SCITXD(SCI 发送数据输出)(2)通过一个 16 位波特率选择寄存器的编程,可得到超过 65000 种不同的可编程位速率。*波特率的数量:64K(3)18 的可编程数据字长。(4)长度为 1 位或 2 位的可编程停止位。(5)内部产生的串行时钟。(6)四个错误检测标志。*奇偶性错误*超限错误*帧错误*间断检验(7)两种唤醒多处理器模式,可与任意通信格式一起使用。*空闲线路唤醒*位寻址唤醒(8)半双工或全双工操作。(9)双缓冲接收和发送功能。基于单片机活动门控制系统的设计与
16、实现第 9 页 共 31 页(10)接收和发送操作均可通过中断或查询操作进行,相应的状态标志如下:发送器:TXRDY 标志(发送器缓冲寄存器准备好接收另一个字符)和 TXEMPTY 标志(发送移位寄存器空)。接收器:RXRDY 标志(准备从接收缓冲寄存器中读出一个新字符)、BRKDT 标志(间断条件发生)和 RXERROR,可用来监视四个中断条件。(11)发送器和接收器中断的分立的使能位(间断除外)。(12)SCI 数据,不管是接收的、还是发送的,都是 NRZ(非归零)格式的。3.3.1 串行通信的工作原理空闲位(某一位的扩展)SCIRXDSCITXDSCICLK起始位数据位校验位停止位1 2
17、 3 4 5 6 7 8低位 高位RS232DSP控制器PC机MC1489MC1488TXDTXDRXDRXDGND GND为了保证异步串行通信主、从机之间的同步,除了要有前面的通信数据格式外,还必须要求主、从机的发送和接收时钟具有相同的周期,既相同的波特率。为了保证同步,除基于单片机活动门控制系统的设计与实现第 10 页 共 31 页了格式与周期外,还需解决的一个基本问题是主、从机必须按照统一的电气和物理接口标准来连接,如信号电平、信号定义与电缆特性等都必须按照统一的标准。如果主从机之间的电气和物理接口标准不一致,一定要进行电气和物理接口的转换。最典型的是 DSP 控制器与 PC 机串口连接
18、时,前者是 TTL(5V)电平,后者是 RS232(15V)电平,必须进行电平转换,如图 3.23 所示。TTL 电平的“1”和“0”分别为 2.4 和 0.4V,因此需外接电路实现电平转换。传输线驱动器 MC1488 和传输线接收器 MC1489 可实现这种转换。RS-232输出MC1488TTL输入+12V12VRS232输入TTL输出MC1489+5V16 位的波特率数值用 BRR 表示。SCI 使用 16 位的波特率选择寄存器值来选择 64K 种不同的串行时钟频率中的一种。选择可以通过以下方法来确定:基于单片机活动门控制系统的设计与实现第 11 页 共 31 页当 BRR =16553
19、5 时(BRR=波特率选择寄存器中的 16 位值):波特率是按位计算的,而每位需要 8 个 SCICLK 周期。当 BRR = 0 时表 1 一般 SCI 位速度的波特率选择值理想的波特率 BRR 实际的波特率 误差(%)2400 2080(822H) 2400 04800 1040(411H) 4803 0.069600 520(208H) 9597 -0.0319200 259(103H) 19231 0.1638400 129(81H) 38462 0.16图 4.1 全双工的串行通讯口原理图上位机主要是对数字温度计的多个温度值的显示。RSYCLKSCI异 步 波 特 率 SYLSI异
20、步 波 特 率基于单片机活动门控制系统的设计与实现第 12 页 共 31 页(1) 控制界面如下(2) 上位机程序如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;基于单片机活动门控制系统的设计与实现第 13 页 共 31 页using System.IO;using System.IO.Ports;namespace WEU
21、DUCELIANGpublic partial class Form1 : Formpublic Form1()InitializeComponent();timer1.Interval = 1000;/设置timer控件时间间隔timer1.Enabled = false;serialPort1.DataBits = 8;serialPort1.StopBits = System.IO.Ports.StopBits.One;serialPort1.ReadBufferSize = 500000;serialPort1.RtsEnable = true; /如果是RS232转RS485,此句必
22、须要,否则不能通讯serialPort1.NewLine = “rn“;private void button1_Click(object sender, EventArgs e)if (!serialPort1.IsOpen) /如果串口是关闭的/设定串口信息和波特率serialPort1.PortName = boBox1.SelectedItem.ToString();serialPort1.BaudRate = 基于单片机活动门控制系统的设计与实现第 14 页 共 31 页Convert.ToInt32(boBox2.SelectedItem.ToString();serialPort
23、1.Parity = Parity.None;serialPort1.DataBits = Convert.ToInt16(boBox4.SelectedItem.ToString();serialPort1.StopBits = StopBits.One;tryserialPort1.Open(); /打开串口btnOpen.Text = “关闭串口“; /改变按钮上的字符comboBox1.Enabled = false;comboBox2.Enabled = false; comboBox3.Enabled = false;comboBox4.Enabled = false;comboB
24、ox5.Enabled = false;catchMessageBox.Show(“串口打开失败!n可能是串口已被占用!“);else /如果串口是打开的serialPort1.Close(); /关闭串口btnOpen.Text = “打开串口“; /改变按钮上的字符comboBox1.Enabled = true ;基于单片机活动门控制系统的设计与实现第 15 页 共 31 页comboBox2.Enabled = true; comboBox3.Enabled = true; comboBox4.Enabled = true; comboBox5.Enabled = true; priv
25、ate void btnCJ_Click(object sender, EventArgs e)tryif (serialPort1.IsOpen)serialPort1.Write(“rn“);if (Convert.ToInt32(serialPort1.ReadLine() != 1820)MessageBox.Show(“没有找到您要找的设备“);return;serialPort1.Write(“rn“);double k = Convert.ToDouble(serialPort1.ReadLine();double wendu = k * 0.0001;textBox1.Text
26、 = “温度:“ + wendu.ToString() + “;“ + “时间:“ + DateTime.Now.ToString();btnCJ.Text = “停止采集“;timer1.Start();elsetimer1.Stop();基于单片机活动门控制系统的设计与实现第 16 页 共 31 页MessageBox.Show(“串口未打开请先打开串口!“);catchMessageBox.Show(“没找到设备“);timer1.Stop();serialPort1.Close();serialPort1.Dispose();btnCJ.Text = “开始采集“;private vo
27、id button2_Click(object sender, EventArgs e) /清除listbox控件中的内容textBox1.Text = “;private void button3_Click(object sender, EventArgs e) /保存温度数据System.IO.FileStream objfile;saveFileDialog1.ShowDialog();objfile = System.IO.File.Create(saveFileDialog1.FileName);objfile.Close();objfile.Close();objfile.Dis
28、pose();System.IO.StreamWriter objfiles = new StreamWriter(saveFileDialog1.FileName);objfiles.Write(textBox1.Text);基于单片机活动门控制系统的设计与实现第 17 页 共 31 页objfiles.Close();objfiles.Dispose();private void timer1_Tick(object sender, EventArgs e) serialPort1.Write(“rn“);double k = Convert.ToDouble(serialPort1.Re
29、adLine();double wendu = k * 0.0001;textBox1.Text = “温度:“ + wendu.ToString() + “;“ + “时间:“ + DateTime.Now.ToString();btnCJ.Text = “停止采集“; private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)this.serialPort1.PortName = boBox1.SelectedItem.ToString();private void comboBox2_SelectedIn
30、dexChanged(object sender, EventArgs e)this.serialPort1.BaudRate = Convert.ToInt32(boBox2.SelectedItem);private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)switch (boBox3.SelectedItem.ToString()case “None“:this.serialPort1.Parity = Parity.None;break;case “Even“:this.serialPort1.Par
31、ity = Parity.Even;基于单片机活动门控制系统的设计与实现第 18 页 共 31 页break;case “Odd“:this.serialPort1.Parity = Parity.Odd;break;default: this.serialPort1.Parity = Parity.None;break;private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)this.serialPort1.DataBits = Convert.ToInt16(boBox4.SelectedItem);pr
32、ivate void comboBox5_SelectedIndexChanged(object sender, EventArgs e)switch (Convert.ToInt16(boBox5.SelectedItem)case 1:this.serialPort1.StopBits = StopBits.One;break;case 2:this.serialPort1.StopBits = StopBits.Two;break;default:this.serialPort1.StopBits = StopBits.One;break;private void Form1_Load(
33、object sender, EventArgs e)基于单片机活动门控制系统的设计与实现第 19 页 共 31 页#region -以下各赋值语句都会触发相应的SelectedIndexChanged事件,同时会对串口进行初始化设-boBox1.SelectedItem = boBox1.Items0; /“COM1“;boBox2.SelectedItem = boBox2.Items3; /9600;boBox3.SelectedItem = boBox3.Items0; /8; boBox4.SelectedItem = boBox4.Items0; /Parity.None;boBo
34、x5.SelectedItem = boBox5.Items0; /StopBits.One #endregion3.课程设计总结通过此次课程设计,使我更加扎实的掌握了有关高频电子线路方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,
35、最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!基于单片机活动门控制系统的设计与实现第 20 页 共 31 页课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了常用元
36、件的识别和测试;熟悉了常用仪器、仪表;了解了电路的连线方法;以及如何提高电路的性能等等,掌握了焊接的方法和技术,通过查询资料,也了解了收音机的构造及原理。我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。回顾起此课程设计
37、,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完
38、美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。4.参考文献1 曹克澄.单片机原理及应用. 机械工业出版社.2005.2 马俊编著.C#网络应用高级编程.2007.53 靳达编著.单片机应用系统开发实例导航.北京:人民邮电出版社,20034 南建辉、熊鸣、王军茹.MCS-51 单片机原理及应用实例.清华大学出版社,2004基于单片机活动门控制系统的设计与实现第 21 页 共 31 页课程设计评 语基于单片机活动门控制系统的设计与实现第 22 页 共 31 页课程设计成 绩指导教师(签字) 年
39、月 日END6.2 上位机程序设计软件控制活动门需要实现两个功能:一是人机控制界面的编写,二是活动门控制信号的传送和执行。第一个功能的主要内容是 Windows 环境下可视化程序的开发;第二个功能主要是微机与单片机之间的通信。6.2.1 控制界面6.2.2 程序代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;基于单片机活动门控制系统的设计与实现第 23 页 共 31 页using System.Drawing;using System.Text;usin
40、g System.Windows.Forms;using System.IO.Ports;namespace HDMKZpublic partial class Form1 : Formpublic Form1()InitializeComponent(); private void Form1_Load(object sender, EventArgs e)comboBox1.SelectedIndex = 0;byte Dout = new byte1;byte Din = new byte1;private void button1_Click(object sender, EventA
41、rgs e)if (serialPort1.IsOpen)serialPort1.Close();button1.Text = “关闭串口“;textBox1.Text = “串口未打开,不可以进行串口通信!“; listBox1.Items.Add(“初始化失败,禁止可以进行通信!“);else try基于单片机活动门控制系统的设计与实现第 24 页 共 31 页textBox3.Text = “9600bps“;textBox4.Text = “8“;textBox6.Text = “0“;serialPort1.PortName = (String)comboBox1.SelectedI
42、tem;serialPort1.BaudRate = 9600;serialPort1.DataBits = 8;serialPort1.StopBits = StopBits.One;serialPort1.Parity = Parity.None;serialPort1.RtsEnable = true;serialPort1.Open();button1.Text = “打开串口“;textBox1.Text = “串口已打开,可以进行串口通信!“;listBox1.Items.Add(“初始化成功,可以进行通信!“);catchMessageBox.Show(“串口未打开!“, “出错
43、啦!“, MessageBoxButtons.OK, MessageBoxIcon.Error); private void listBox1_SelectedIndexChanged(object sender, EventArgs e)private void button2_Click(object sender, EventArgs e)try基于单片机活动门控制系统的设计与实现第 25 页 共 31 页if ( serialPort1.IsOpen)Dout0 = 10;this.serialPort1.Write(Dout, 0, Dout.Length);listBox1.Ite
44、ms.Add(“已发送控制信号使电机正转!“);catchMessageBox.Show(“发送命令失败!“, “出错啦!“, MessageBoxButtons.OK, MessageBoxIcon.Error);private void button3_Click(object sender, EventArgs e)tryif ( serialPort1.IsOpen)Dout0 = 01;this.serialPort1.Write(Dout, 0, Dout.Length);listBox1.Items.Add(“已发送控制信号使电机正转!“);catchMessageBox.Sho
45、w(“发送命令失败!“, “出错啦!“, MessageBoxButtons.OK, MessageBoxIcon.Error);基于单片机活动门控制系统的设计与实现第 26 页 共 31 页private void serialPort1_DataReceived_1(object sender, SerialDataReceivedEventArgs e)Control.CheckForIllegalCrossThreadCalls = false;/不使用委托string str = “;str = serialPort1.ReadExisting();switch (str)case
46、“01“:listBox1.Items.Add(“电机反转,门为关闭状态!“);break;case “10“:listBox1.Items.Add(“电机正转,门为打开状态!“);break;default:listBox1.Items.Add(“接收数据失败,无法知道电机工作状态!“);break;7 课程设计总结通过做这次课程设计,学到很多东西,这次我做的主要是关于电路图的设计与绘制这方面内容。在绘制的过程中我也复习了以前学过的一些技能,巩固了电子线路绘制软件的应用,当然,做电路图的设计与绘制最主要的是细心还有耐心,要不然很容易出错,而每个错误都有可能是个大麻烦。对所涉及课题的基本原理的深入理解是绘制电路图的基础,保证电