智能电扇-课程设计报告_第1页
智能电扇-课程设计报告_第2页
智能电扇-课程设计报告_第3页
智能电扇-课程设计报告_第4页
智能电扇-课程设计报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目编号:2015-2016学年第一学期微机原理(单片机)课程设计总结报告项目名称: 智能电扇 班级: 姓名: 学号:微机原理(单片机)课程设计任务书项目名称:智能电扇内容与要求: 上位机:完成界面设计与通讯程序(1)能够显示并设定当前电扇运行状态(高速、中速、低速、停止)(2)能够定时控制电扇运行(3)能够将电扇运行状态的改变保存至文档(4)可以对串口进行设置下位机:完成电路设计与控制程序(1)完成电扇的控制设计(2)通过串口与上位机通讯(3)可通过按键设置电扇的运行状态,并显示在LED数码管上(4)当定时控制时可显示倒计时项目组任务分担评价表姓名分担任务组内评价张雷LED显示模块设计与编程,下位机串口通讯程序,单片机设计与编程,电路的搭建与焊接5刘思源上位机转速显示及设定程序、串口通讯程序、文件保存程序、倒计时显示程序5课程设计报告评分表内容总体方案硬件设计软件设计结果分析明细清单问题分析心得体会参考文献程序代码格式规范总分张雷得分刘思源得分 微机原理(单片机)课程设计报告目录一、总体方案1二、硬件设计1三、软件设计2四、结果分析或项目所实现的功能、指标5五、明细清单7六、设计调试中遇到的疑难问题及解决方法7七、心得体会与建议8参考文献9附录A.下位机程序9附录B.上位机程序图1616微机原理(单片机)课程设计报告一、总体方案智能电扇总体框图如图1-1所示。单 片 机LED显示模块ULN2003USB电扇按键调速及定时模块上位机图1-1 智能电扇总体功能模块示意图图中,单片机通过驱动芯片ULN2003控制USB电扇转动,通过PWM方式调节输入USB电扇的电压来调节转速。按键模块共有6个键,Key14用于调速和调节定时时间,Key56用于开始设置定时和确定定时设置。LED模块可以显示电扇当前的转速和定时时间。上位机可以对电扇的转速和定时进行设置,并能将转速变化信息存储到指定的txt文件中。二、硬件设计本项目下位机采用STC89C52RC型号单片机。该芯片具有8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口,是一种低功耗、高性能CMOS8位微控制器,符合设计中对经济、环保指标的要求。电扇驱动芯片采用ULN2003。该芯片是高耐压、大电流达林顿晶体管阵列,由七个硅NPN 达林顿体管组成。每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。电扇采用网上常用的USB电扇,通过USB转串口器件转化为4个接头(1个电源端、2个数据传送端、1个地端),供电时只需连接电源端和地端,并可通过改变电源端电压来控制电扇转速。显示模块采用实验室配备的6位数码管LED板,使用时只需把其RXD和TXD端连接到单片机的预设管脚即可,使用方便,成本低廉,显示效果好。硬件电路连接图如图2-1所示图2-1 硬件电路连接图LED板1号2号引脚接VCC,3号引脚接单片机P27,4号引脚接单片机P26,5号引脚接地。驱动芯片ULN2003的1号引脚接P20,同时通过一个10K的上拉电阻接到9号引脚,8号引脚接地,9号引脚接VCC和USB接头的4号引脚,16号引脚接USB接头的1号引脚,其余引脚悬空。USB电扇只需把USB插头插到USB接头上即可。三、软件设计3.1 设计思路3.1.1 下位机:USB电扇的驱动方式非常简单,只需改变其VCC端的电压即可改变转速。设计中使用PWM方式控制电扇VCC端的电压,通过Key14调节其占空比。在默认状态下Key1Key4分别对应电扇的停止、低速、中速、高速状态。Key5为启动定时设置按键。当按下Key5后,系统进入电扇定时设置状态,共有4位数字可以设置,可把电扇的定时时间设置在09999秒之间。此时,Key14不再用于调节转速,Key1用于左移位选,Key2用于右移位选,Key3用于使被选中的位数值+1,Key4用于被选中的位数值-1,并且,被选中的位会不停闪烁。按下Key5默认的定时设置是从0000秒开始的,且最低位默认被选中。如果按下Key5后进入定时设置状态后10秒内没有其他按键操作,系统会自动退出定时设置状态,之前的定时信息不保存。如果按下Key5后进入定时设置状态后再次按下Key5,则会重新进入定时设置状态,之前的定时设置不保存。Key6为确定定时设置。按下Key5进入定时设置状态,通过Key14设置定时时间后,按下Key6即可保存本次定时设置,系统退出定时设置状态,电扇按照设定的定时转动,当倒计时结束后自动停止。3.1.2 上位机:上位机通过LABVIEW仿真单片机的按键设置,与下位机进行串口通讯,调速功能与下位机的原理相同,定时模块只需把需要设定的数字输入到文本框中,再按下发送键即可把定时时间传递到下位机中。每次转速发生变化后,转速变化信息会自动存储到预先设定的txt文件中。3.2 主程序流程图如3-1所示。开始初始化是否按下KEY5是KEY14用于设置定时时间上位机否KEY14用于调速上位机LED板USB电扇保存速度变化信息到txt文件图3-1 主程序流程图设计中串行通信采用的波特率为9600,串口采用方式2的工作方式,其计算公式如下:波特率=(2SMOD/32)*(T1溢出率)考虑电源管理寄存器PCON,取PCON为0x80,所以波特率加倍,令TH1=0xFD,最终得到波特率为9600.四、结果分析或项目所实现的功能、指标4.1 上位机:如图4-1所示,上位机显示界面共有5个部分:成员信息、串口设置、电机状态、定时时间发送和文件保存。串口设置部分中COM口选择单片机连接到电脑时的COM口,波特率选择下位机初始化时设置的波特率,其他使用默认值即可。电机状态部分中以LED小灯显示电机当前处于何种状态(图4-1中处于高速状态),使用鼠标单击其他速度按钮,即可改变电扇的运行状态。定时时间发送部分现在“时间”文本框中输入一个09999之间的整数,然后单击“发送时间”下方的确定按钮,即可使电扇按照预设的时间转动,倒计时结束后自动停止转动。在文件保存路径中可以指定一个txt文件,每当转速变化时,转速变化信息会自动存储到指定的txt文件中。图4-1 上位机显示结果4.2 下位机: 图4-2为系统的初始状态。LED板左边第一位数字代表转速,0、1、2、3分别对应停止、低速、中速、高速状态。LED板右边4位代表电扇的定时时间,单位为秒,0000代表不进行定时。图4-2 智能电扇系统初始状态 图4-3为高速运行状态图4-3 高速运行状态 图4-4为进行定时设置后的状态,从图中可以看出,再经过1214秒电扇会自动停止。图4-4 设置定时后的系统五、明细清单明细及价格清单如表5-1所示序号名称型号/规格数量价格(元)1单片机最小系统板STC89C52RC1602温度传感器DS18B20113LED板16 4USB电扇 齐心(COMIX)L602 USB小风扇 129表5-1 明细及价格清单价格总计约96元。六、设计调试中遇到的疑难问题及解决方法张雷:本次试验使用的最小系统板上有6个按键,我们的课程设计要求能使电扇在高速、中速、低速、停止共4状态间切换,并能定时。我们小组最初设计是2个按键用于调速(加速、减速)剩下4个按键用于定时(开始设置定时、确定定时的时间、增加时间、减少时间),但发现这样时间只能一秒一秒的增加和减少,很不方便。后来经过我们小组讨论,最终决定使用一键两功能的方案,即一个按键在不同的状态下是不同的功能。这样的设计就需要一个状态切换键,比如设置Key5为状态切换键,当不按Key5时,Key14用于调速,按下Key5时,Key14用于设置定时。这个状态切换的设计给我的编程带来很大困难。由于Key5的按下只是一瞬间,我并不知道该如何保存这个状态。后来经过查阅资料,我在按键检测的函数中增加了一个检测上一次按键的功能,通过上一次按键和这一次按键的对比来判断是否按下了某个键,最终解决了这个问题。刘思源: 1、设计中要求上位机和下位机进行串口通讯,我按照网上的Labview教程搭建完串口后发现程序并不能和单片机进行连接,后来经过询问同学后才知道是没有安装Visa驱动模块,在安装后解决了问题。 2、设计中要求把转速变化信息保存到txt文件中,如果之前没有设定保存的路径,在转速变化时会自动弹出一个保存窗口,如果此时不保存,而是关掉窗口,Labview就会崩溃。这个问题应该是Labview文件保存模块的本身的特性导致的,只要在文件保存路径中指定一个txt文件就能解决问题。七、心得体会与建议张雷:本次课程设计是我第一次完成的一个完整的单片机项目。之前我也上过一些单片机的实验选修课,不过做的都是一些比较基础的东西,上学期的微机硬件实验综合性较强,但使用的是汇编语言。所以这次课程设计对我来说是一个全新的,很有挑战性的任务。一开始我拿到题目时是毫无头绪的,根本不知道程序从何写起。但通过班里同学的帮助,我渐渐地有了整个程序的设计思路,并通过查阅资料逐步完成了单片机初始化、按键控制、LED显示等模块的实现。对于课程的建议是在微机原理的课时里留出更多的时间给单片机,因为班里的许多同学和我一样对于单片机的整体设计是非常缺乏经验的,课设最初的时候会遭遇很大的困难。希望老师在平时上课时增加单片机部分的内容和硬件设计。刘思源:本次课程设计上位机使用的Labview软件是我之前从未接触过的。面对这个全新的软件,我从网上查阅教程,并听从其他会使用Labview同学的指导,逐步学会了使用Labview制作一个上位机程序。Labview的功能非常强大,使用图形搭建程序比VCC+方便了许多。对于课程的建议是应该把所有的课程设计题目进行难度分级,并根据难度给不同的得分,比如难的题目完成的话给分从80分起,简单的题目完成了从60分起等等。这样可以让同学根据自己的水平进行选题,量力而行。参考文献1楚现知,吴吉祥,李锦忠.基于LabVIEW的监控界面设计与单片机的串行通信J工业控制计算机2005,18(7)2陈诚,李言武,葛立峰.基于LabVIEW的单片机串口通信设计J 现代计算机(专业版)2009,013焦玉朋.基于51单片机的PWM直流电机调速系统D内蒙古:内蒙古大学,2013附录A.下位机程序#include #define TSETH 0x4C/50mssbit fan=P20;sbit dispc=P26;sbit dispd=P27;bit key5=0;unsigned int mcnt=0;unsigned char speed=0,scnt=19,tbsize,srem,sdig; /tbsize为发送数据位数,srem为闪烁时间,sdig计时功能的时间,speed为当前速度unsigned char txbuf4,inset4;unsigned char code duties4=0x00,0x80,0xc0,0xff;void display (void);void disp_send (unsigned char);void speed_regulation (unsigned char);void init() /初始化函数TMOD=0x21; /T1方式2,T0方式1TH0=TSETH; /T0为50msTL0=0x00;TR0=1;TH1=0xfd;TL1=0xfd;/baud rate: 9600TR1=1;SCON=0x50; /串口工作方式1speed_regulation(1);ET0=1; /开T0中断ES=1; /开串口中断EA=1; /开所有中断void main (void)unsigned char i,j;display();init();/根据电压生成PWM波for(;)for(i=dutiesspeed;i0xff;i+)fan=0;for(j=0;j0x00;i-)fan=1;for(j=0;j32;j+);void speed_regulation (unsigned char newg)/调速if(speed!=newg)speed=newg;display();txbuf0=0xff;txbuf1=speed;tbsize=2;SBUF=txbuf0;void display (void) /LED显示函数,数码管共6位,从右往左计数。前4位显示计时时间,第6位显示速度。unsigned char code digit10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/09编码unsigned char i;unsigned int mcc;if(key5)for(i=0;i4) disp_send(0x00);else disp_send(digitinseti);else /如果没按下key5,则当前显示速度信息mcc=mcnt;for(i=1;i=4;i+)disp_send(digitmcc%10);mcc/=10; disp_send(0x00); /数码管第5位不亮disp_send(digitspeed); /第6位显示速度void disp_send (unsigned char c) /显示传递函数,用于把已编码的要显示信息发送到LEDunsigned char i;for(i=1;i=8;i+)dispc=0;dispd=c&0x80;c=1;dispc=1;void key () interrupt 1/按键判断static unsigned char keylast=0xff,keypast=0xff;unsigned char keynow,i;TH0=TSETH;keynow=P3|0x03;if(keynow=keylast) /判断两次按键是否相同,若不同,则把本次按键的值(keynow)赋给上次按键的值(keylast)if(key5)/是否按下key5switch(keynow)&keypast)/如果按下key5,进入计时设置功能,并检测下一个按了哪个键case 0x80:/按key1则左移位选if(sdig=3) sdig=0;else sdig+;srem=100;break;case 0x40:/按key2则右移位选if(sdig=0) sdig=3;else sdig-;srem=100;break;case 0x20:/按key3则数值+1if(insetsdig=9) insetsdig=0;else insetsdig+;srem=95;break;case 0x10:/按key4则数值-1if(insetsdig=0) insetsdig=9;else insetsdig-;srem=95;break;case 0x08:key5=0;display();break; /按key5则退出计时设置功能case 0x04: /按key6则确定计时设置mcnt=0;scnt=19;for(i=1;i=4;i+) mcnt=mcnt*10+inset4-i;key5=0;display();else /如果没按下key5,则为调速功能switch(keynow)&keypast) /key1key4分别对应停止、低速、中速、高速,在LED屏幕上分别以0、1、2、3显示case 0x80:speed_regulation(0);break;case 0x40:speed_regulation(1);break;case 0x20:speed_regulation(2);break;case 0x10:speed_regulation(3);break;case 0x08:key5=1;srem=100;sdig=0;for(i=0;i=3;i+) inseti=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论