单片机课程设计 电风扇模拟控制.docx
《单片机课程设计 电风扇模拟控制.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 电风扇模拟控制.docx(10页珍藏版)》请在冰点文库上搜索。
单片机课程设计电风扇模拟控制
单片机课程设计电风扇模拟控制
信息工程学院
课程设计报告
设计题目:
电风扇模拟控制系统
名称:
电子信息专业基础课程设计
班级:
电子1101班姓名:
王强刘绘明
学号设计时间:
2013.12.23至2014.01.05指导教师:
徐明鹃
评语
评阅成绩:
评阅教师:
一、课程设计的性质和目的......................................................................................3
二、课程设计的要求..................................................................................................3
三、主要仪器设备及软件...........................................................................................3
1、Keil软件简介.................................................................................................3
2、Proteus绘图软件简介....................................................................................3
四、课程设计题目及要求...........................................................................................3
五、课题分析及设计思路...........................................................................................4
1、设计主要内容.................................................................................................4
2、AT89C51单片机简介......................................................................................4
3、ULN2003简介................................................................................................5
4、直流电机简介..................................................................................................6
5、数码管简介......................................................................................................6
6、硬件设计框图..................................................................................................7
7、硬件设计电路图..............................................................................................7
8、单片机控制直流电机流程图..........................................................................8
9、软件仿真..........................................................................................................8
六、程序主要代码与分析............................................................................................9
七、实验结果截图......................................................................................................12
八、心得体会..............................................................................................................13
2
一、课程设计的性质和目的
通过课程设计,进行硬件设计和程序设计的方法和技能训练,巩固在课堂上学到的有关软件程序设计和硬件电路设计的基本知识和基本方法,通过具体课题的训练,进一步熟悉汇编语言的结构和使用方法,掌握软硬结合的控制程序设计,达到能独立阅读、查阅资料、编制和调试完善特定功能的目的。
二、课程设计的要求
1、遵循硬件设计模块化。
2、要求程序设计结构化。
3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。
4、要求程序结构合理,语句使用得当。
5、适当追求编程技巧和程序运行效率。
三、主要仪器设备及软件
PC机、Keil软件、Proteus绘图软件及仿真等。
1、Keil软件简介KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑理解。
在开发大型软件时更能体现高级语言的优势。
与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
2、Proteus绘图软件简介Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
四、课程设计题目及要求
3
课程设计题目是电风扇模拟控制系统,设计要求是:
1、设计3个按键分别控制“自然风”“常风”,“睡眠风”(用直流电机的不同转速进行模拟);
2、在数码管上显示按键的区别;
3、设计风扇的过热保护,即风扇运行一段时间后,暂停5s。
五、课题分析及设计思路
1、设计主要内容
本设计以AT89C51单片机为核心,从而建立一个控制系统,实现通过3个按键控制直流电机的不同转速,以达到模拟风扇的“自然风”、“常风”和“睡眠风”三种状态,并在数码管上显示三个数字表示三种状态,同时设计风扇过热保护,运行一段时间后,暂停5S。
2、AT89C51单片机简介
AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案.AT89C51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器,32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。
此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
AT89C51单片机的基本结构和外部引脚如下图所示。
4
图2.1
3、ULN2003简介
在自动化密集的的场合会有很多被控元件如继电器,微型电机,风机,电磁阀,空调,水处理等元件及设备,这些设备通常由CPU所集中控制,由于控制系统不能直接驱动被控元件,这需要由功率电路来扩展输出电流以满足被控元件的电流,电压。
ULN2XXXX高压大电流达林顿晶体管阵列系列产品就属于这类可控大功率器件,由于这类器件功能强、应用范围语广。
因此,许多公司都生产高压大电流达林顿晶体管阵列产品,从而形成了各种系列产品。
原理:
ULN2003也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平,继电器得电吸合。
如下图所示
图3.1
ULN2003A在各种控制电路中常用它作为驱动继电器的芯片,其芯片内部5
做了一个消线圈反电动势的二极管。
ULN2003的输出端允许通过IC电流200mA,饱和压降VCE约1V左右,耐压BVCEO约为36V。
输出电流大,故可以直接驱动继电器或固体继电器(SSR)等外接控制器件,也可直接驱动低压灯泡。
本实验中,ULN2003A用于驱动直流电机。
4、直流电机简介
直流马达指能将直流电能和机械能相互转换的电机。
应用:
电动自行车,电脑风扇、抽水机、吹风机、甩干机和压缩机、跑步机、电动车、汽车方向盘驱动、电梯、DVD的驱动、大型轧钢设备、大型精密机床、矿井卷扬机、市内电车、电缆设备、测速电机等。
直流马达可分为机壳、定子和转子组成。
直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽(电枢)。
5、数码管显示
数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。
常见数码管有10根管脚。
管脚排列如下图所示。
其中COM为公共端,根据内部发光二极管的接线形式可分为共阴极和共阳极两种。
使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。
每段发光二极管需5~10mA的驱动电流才能正常发光,一般需加限流电阻控制电流的大小。
LED数码管的a~g七个发光二极管。
加正电压的发光,加零电光,不同亮暗组合就能形成不同的字形,这种组合称为字形码。
图5.1
6
6、硬件设计框图
图6.1
7、硬件设计电路图
本电路由AT89C51和ULN2003A为核心。
图7.17
8、单片机控制直流电机流程图
主程序定位
图8.1
9、软件仿真
(1)、把程序在KeiluVision3中调试,成功无错误后生成Hex文件。
(2)、根据电路图在proteus软件中回去电路图,检查无错误。
8
(3)、双击89C51导入生成Hex文件。
(4)、点击proteus软件左下方的开始键,进行仿真,观察高低电平情况。
六、程序主要代码与分析
#include<reg51.h>//包含reg51.h的头文件
#defineOUTPUTP1//定义输出端口P1
#defineSEGP0//定义SEG位置
sbitBUTTON1=P2^0;//声明开关1
sbitBUTTON2=P2^1;//声明开关2
sbitBUTTON3=P2^2;//声明开关3
unsignedcharsteps=20;//定义20步
unsignedinttimes1=50;//声明开关1的延时时间(×5ms)unsignedinttimes2=100;
unsignedinttimes3=150;
/*1相激励信号数组*/
charcodeexcite[]={0x01,0x02,0x04,0x08};
charcodeTAB[3]={0xf9,0xa4,0xb0};//声明数码管的值
voidstep_rst(void);//声明定位函数
voiddelay5ms(int);//声明延迟函数
voiddebouncer(void);//声明去抖函数
//=====主程序========================================main()//主程序
{unsignedchari;//声明无符号变量i
OUTPUT=0;//输出
step_rst();P2=0xff;//设置输入口while
(1)//while循环开始{if(BUTTON1==0)//如果开关1按下{debouncer();//去抖SEG=TAB[0];//数码管显示1(正常风)9
for(i=0;i<steps;i++)//20步{OUTPUT=excite[3-i%4];delay5ms(times1);if(i==19){OUTPUT=0;//输出为0,开始延时delay5ms(1000);
}//延时5000ms
}}elseif(BUTTON2==0)//若开关2被按下{debouncer();//去抖SEG=TAB[1];//数码管显示2for(i=0;i<steps;i++){OUTPUT=excite[3-i%4];//控制正转delay5ms(times2);//延时if(i==19){OUTPUT=0;delay5ms(1000);
}}
}
elseif(BUTTON3==0)//若按下开关3{debouncer();//去抖SEG=TAB[2];//数码管显示3for(i=0;i<steps;i++){OUTPUT=excite[3-i%4];delay5ms(times3);if(i==19){OUTPUT=0;delay5ms(1000);}10
}}}}
//====延迟函数==============================================voiddelay5ms(intx)//延时函数开始
{inti,j;//声明整型变量i,j
for(i=0;i<x;i++)//计数x次,延迟约x×5ms
}
//========去抖函数==========================================voiddebouncer(void)//声明去抖函数
{delay5ms(4);//延时20ms
}
//======定位函数============================================voidstep_rst(void)//声明定位函数
{chari;//声明变量i
for(i=0;i<4;i++)
{OUTPUT=excite[i];
delay5ms(100);//延时500ms
}
}
11for(j=0;j<600;j++);//计数约600次,延迟约5ms
七、实验结果截图
(1)、按键1按下,数码管显示1,自然风。
i
图7.1.1
(2)按键2按下,数码管显示2,常风。
图7.1.2
(3)、按键3按下,数码管显示3,睡眠风。
12
图7.1.3
八、心得体会
通过本次设计,使我们学到了许多书本上无法学到的知识,也使我深刻体会到单片机技术应用领域的广泛。
不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生更大的兴趣。
在本次设计过程中,我学会了在网络上查找有关设计的个硬件的资源,其中包括:
直流电机速度控制、AT89C51的脚图的资料、ULN2003A引脚和驱动的原理以及数码管的显示原理。
本系统是以单片机AT89C51芯片为核心部件,实现了电风扇系统控制功能,在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于电风扇的知识。
通过这次设计,使我们得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步。
在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。
全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。
不但加深我对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔前景,并且通过知识与应用于实践的结合更加丰富了自己的知识。
扩展了知识面,不但掌握了本专业的相关知识,而且对其他专业的知识也有所了解,而且较系统的掌握单片机应用系统的开发过程,因而自身的综合素质有了全面的提高。
经过这次一个较完整的产品设计和制
13
作过程,对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的,为将来的的就业提前打了下坚实的基础。
的初期阶段,难度很大,没有头绪。
通过求助老师,理清思路。
同时,在图书馆里、网上查阅资料,攻克设计中的道道难题。
在克服困难的过程中,我们学到了许多,特别是在课堂上学不到的东西。
总的感受有以下几方面:
1、通过本次设计,我们不但对单片机有了更深的了解,对一个课题如何画流程图,编程序等有了一定的认识。
2、进一步加强了我们的动手能力和运用专业知识的奴隶,从学习到如何去思考和解决问题,以及如何灵活地改变方法实现设计方案。
3、让我们了解到单片机技术对当今人们生活的重要性。
同时这次设计的经历也使我受益匪浅,让我知道做任何事情都应脚踏实地,刻苦努力地去做,只有这样,才能做好。
14