电风扇模拟控制系统设计_第1页
电风扇模拟控制系统设计_第2页
电风扇模拟控制系统设计_第3页
电风扇模拟控制系统设计_第4页
电风扇模拟控制系统设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、 目目 录录 第第 1 章章总体设计方案总体设计方案.错误!未定义书签。错误!未定义书签。 1.1 设计原理.错误!未定义书签。错误!未定义书签。 1.2 设计思路.错误!未定义书签。错误!未定义书签。 1.3 实验环境.错误!未定义书签。错误!未定义书签。 第第 2 章章 详细设计方案详细设计方案.错误!未定义书签。错误!未定义书签。 2.1 主程序设计.错误!未定义书签。错误!未定义书签。 2.2 功能模块的设计与实现.错误!未定义书签。错误!未定义书签。 第第 3 章章 结果测试及分析结果测试及分析.错误!未定义书签。错误!未定义书签。 3.1 结果测试.错误!未定义书签。错误!未定义书

2、签。 3.2 结果分析.错误!未定义书签。错误!未定义书签。 参考文献参考文献.错误!未定义书签。错误!未定义书签。 附录 1:元件清单.错误!未定义书签。错误!未定义书签。 附录 2: 总电路图.错误!未定义书签。错误!未定义书签。 附录 3: 程序代码.错误!未定义书签。错误!未定义书签。 第一章 总体设计方案: 1.1.设计原理:设计原理: 用 4 位数码管实时显示电风扇的工作状态,最高位显示风类:“自然风”显 示“1” 、 “正常风”显示“2” 、 “睡眠风”显示“3” 。后 3 位显示定时时间:动态 倒计时显示剩余的定时时间,无定时显示“000” 。 设计“自然风”,“正常风”和“睡

3、眠风”三个风类键用于设置风类;设计一 个“定时”键,用于定时时间长短设置;设计一个“摇头”键用于控制电机摇头 在整个定时状态下,电路具有允许用户随时自行选择使用“自然风”状态,也可 选择使用“常风”和“睡眠风”状态。 设计过热检测与保护电路,若电风扇电机过热,则电机停止转动,电机冷却 后电机又恢复转动。 2.设计思路:设计思路: 电风扇模拟控制系统设计就是使用单片机来控制电机和一些 LED 、按键,模 拟真实的电风扇的使用,通过设计使电风扇使用便捷更人性化。风类,定时,摇 头都是针对使用者不同需求的设计。过热保护是对安全性要求的设计。 硬件方案: 根据设计的要求可知,系统的硬件原理框图如图 1

4、.1 所示。 档位及定时显示 电机控制模块 按键输入 单片机系统过热检测模块 图 1.1 系统的硬件原理框图 本系统由五个模块组成,分别是输入模块、显示模块、电机控制模块、过热 保护模块以及单片机控制系统。其中单片机控制系统是核心,它通过处理输入的 各种数据信息来对其它模块发出指令,进行相应的操作。输入模块由 5 个按键组 成,分别控制电机的风速、正反转和定时时间。显示模块由 8 位共阴数码管组成, 显示定时时间和风速。过热保护模块由 ADC0809 和外围电路组成,通过设定电 压初始值使电机超值停转并且相应二极管发光报警。电机控制模块由 L298 和其 它的元器件组成,它主要是放大输入信号的

5、倍数,用来驱动电机。 保护电路的选择:选用 ADC0809 作为过热保护电路的核心部件,假设先设 定一个标准电压值,通过 0-5V 模拟电压输入进行模数转换,如果数据超过标准 值则单片机对电机进行相应操作,使电机启停。 控制核心的选择:采用单片机作为控制核心,以软件编程的方式进行风速判 断,并在端口输出控制信号。 显示电路的选择:采用八位共阴数码管显示电机状态,动态扫描显示方式 3.实验环境:实验环境: 本实验用的单片机为 MCS-51 单片机,其硬件原理图如下: 本实验中用到的引脚有 p1 口的八个引脚,分别与八个开关相连,其中 p1.0 是用来控制电 风扇的自动挡,p1.1 用来控制电风扇

6、的手动挡。P1.2 置于高电平是启动定时装置。P1.3 与 p1.4 是用来控制风速的类型(常风,睡眠风,自然风) 。P1.5 与 p1.6 是用来控制定时的。本 实验的定时采用单脉冲的方式进行定时设置。P1.7 是用来进行复位操作。 本实验采用内驱的方式,通过数模转换的放大电路来驱动电风扇的转动,p3.4 口接脉冲输 入信号,p3.3 口接入单脉冲。 第二章第二章 详细设计方案:详细设计方案: 2.1 主程序的设计:主程序的设计: 软件所要实现的功能有:按键响应,对模数转换的控制,对数据的处理和传 送显示的数据。主程序包含初始化、调用A/D转换子程序和调用显示程序,其流 程图如图所示: 摇头

7、? Y 开始 显示 初始化 Y 占空比 1:3 自然风? N 常风? N Y 占空比 3:1 Y 占空比 1:5 睡眠风? N Y 进入定时 程序 定时? 开摇头 N N 电机过热? 关电机 关中断 显示过热 N 图2.1 主程序流程框图 主程序经初始化后,开始四位数码管显示的是“0000”电机停转。然后进入 按键扫描程序,依次对自然风、常风、睡眠风进行扫描,单片机I/O口输出相应 的占空比方波,当为自然风时,数码管最高位显示“1” ,当为常风时,数码管最 高位显示“2” ,当为睡眠风时,数码管最高位显示为“3” 。当有定时键按下时, 转到定时器T0中断程序进行。当有摇头键按下时,高低电平翻转

8、,电机开始反转。 2.1 模数转换原理介绍:模数转换原理介绍: 模数转换工作原理是:首先输入 3 位地址,并使 ALE=1,将地址存入地址锁 存器中。此地址经译码选通 8 路模拟输入之一到比较器。START 上升沿将逐次逼 近寄存器复位。下降沿启动 A/D 转换,之后 EOC 输出信号变低,指示转换正在 进行。直到 A/D 转换完成,EOC 变为高电平,指示 A/D 转换结束,结果数据已 存入锁存器,这个信号可用作中断申请。当 OE 输入高电平时,输出三态门打开。 转换数据的传送 A/D 转换后得到的数据应及时传送给单片机进行处理。数据 传送的关键问题是如何确认 A/D 转换的完成,因为只有确

9、认完成后,才能进行传 送。为此可采用下述三种方式4。 (1)定时传送方式 对于一种 A/D 转换器来说,转换时间作为一项技术指标是已知的和固定的。 例如 ADC0809 转换时间为 128s,相当于 6MHz 的 MCS-51 单片机共 64 个机器 周期。可据此设计一个延时子程序,A/D 转换启动后即调用此子程序,延迟时间 一到,转换已经完成了,接着就可进行数据传送。 (2)查询方式 A/D 转换芯片由表明转换完成的状态信号,例如 ADC0809 的 EOC 端。因此 可以用查询方式,测试 EOC 的状态,即可确认转换是否完成,并接着进行数据 传送。 (3)中断方式 把表明转换完成的状态信号

10、(EOC)作为中断请求信号,以中断方式进行数 据传送. 2.2 电机调速与控制模块设计电机调速与控制模块设计 本次实验的电机转速的控制并没有按照传统上采用 pwm 来调速,而是采用了 中断的控制方式。通过不同的时间区间来实现一次中断控制来实现电风扇的调速 功能,p3,3 口与单脉冲口相连,用于产生脉冲,p3.2 口与脉冲输出相连,用来驱 动电风扇,使电风扇转动。如何实现他的不同转速,通过不同的中断时间产生脉冲而实 现的。 本实验无论是对电风扇的风速控制,还是对电风扇的定时控制,都是通过开 关来实现的 2.3 显示与控制模块设计显示与控制模块设计 本系统设计采用 4 位共阴数码管显示电路,在设计

11、 4 位 LED 显示时,为了 简化电路,降低成本,采用动态显示的方式,4 个 LED 显示共用一个 8 位的 I/O 而将其相应的段选线并联在一起,由一个 8 位的 I/O 口控制。 采用内驱的控制方式,译码显示电路将档位和定时时间的输出状态经显示译 码器译码,通过 4 位 LED 七段显示器显示出来。到达定时时间电机停止转动同 时定时时间变为 0。P2.5 口接一个发光二极管,当电压值超压时二极管灯亮实现 报警,此状态下,无论定时时间和风速键是否按下,电机都处于停止状态。 2.4 A/D 转换测量子程序流程图设计转换测量子程序流程图设计 由于 ADC0809 在进行 A/D 转换时要用到

12、CLK 信号,而此时的 ADC0809 的 CLK 是接在 AT89C52 单片机的 P2.4 端口上,也就是要求从 P2.4 输出 CLK 信号 供 ADC0809 使用。因此产生 CLK 信号的方法就的使用软件来产生了;由于 ADC0809 的参考电压 VREF=VCC,所以转换之后的数据要经过数据处理。然后 和设定的参考值比较,而实际显示的电压值的关系为。其流程图如图 2.4 所示。 Y 地址数小于 8? N A/D 转换结束? 结束 N 开始 ADC0809 地址加一 取数据 Y 启动测试(TESTART) 图 2.2 A/D 转换测量子程序流程图 2.4 定时器定时器 T0 中断程序

13、流程图设计中断程序流程图设计 定时器T0是用来对定时时间进行控制的,结合数码管动态显示,首先给T0设 置工作方式和初始值,由于它不可重装,所以在主程序中必须再次定义它的初始 值。其流程图如图2.3所示: Y 定时时间减一秒 定时到了吗? Y 置初值 置初值 中断返回 数码显示 电机停 关中断 N 1s 到了吗? N 开中断 图 2.3 T0 的中断流程示意图 第三章第三章 结果测试及分析:结果测试及分析: 图 3.1 是强风键按下时状态,数码管显示为 1,无定时时间。ADC0809 显示 电压值为 1.95V,电机不发热,正常转动。 图 3.1 强风仿真时电路示意图 图 3.2 是正常风键按下

14、时状态,数码管第一位显示为 2,无定时时间。ADC0809 显示电压值为 1.95V,电机不发热,正常转动。 图 3.2 正常风仿真时电路示意图 图 3.3 是睡眠风键按键按下时状态,数码管第一位显示为 3,无定时时间。 图 3.3 睡眠风仿真示意图 图 3.4 是强风按键按下时状态,数码管第一位显示为 1,定时时间为 15ms。ADC0809 显示电压值为 1.95V,电机不发热,正常转动。 图 5.5 是自然风按键按下时状态,数码管第一位显示为 3,定时时 间为 15ms。ADC0809 显示电压值为 1.95V,电机不发热,正常转动。 图 3.4 强风状态下定时示意图 参考文献参考文献

15、1谢维成.单片机原理与应用及 C51 程序设计M.清华大学出版社,2009.7 2谢自美.电子线路设计.实验.测试M.华中科技大学出版社,2002.6 3马忠梅等.单片机的 C 语言应用程序设计M.北京航空航天大学出版社,2003.11 4楼然苗等.单片机课程设计指导M.北京航空航天大学出版社,2007.7 5张永枫.单片机应用实训教程M.西安电子科技大学出版社,2005.2 附录附录 1 1 元件清单:元件清单: 本实验需要用到的器件有:lab8000 电路板,电风扇,加上导线若 干。 附录附录 2 2 总电路图:总电路图: 附录附录 3 3 程序代码:程序代码: #include #inc

16、lude #include #define uchar unsigned char #define uint unsigned int #define DA0832 XBYTE0 x8000 #define DXLED XBYTE0 x9004 #define WXLED XBYTE0 x9002 sbit Mode1=P10; sbit Mode2=P11;/模式控制,00 关闭,01 手动,10 自动,11 待定 sbit TimerMode=P12;/计时模式 sbit VMode1=P13; sbit VMode2=P14;/档位控制,00 为 0,01 为 0 xb4,10 为 0

17、xd4,11 为 0 xff sbit CountTime1=P15;/+1min sbit CountTime2=P16;/+10min sbit TimeCLR=P17;/CLR uchar code DTable=0 x3F,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x76,0 x79,0 x38,0 x3e,0 x00; uchar code WTable=0 x20,0 x10,0 x08,0 x04,0 x02,0 x01; uint vel=10,11,12,12,0,13; uint time=0;/设置时间

18、 uint Ntime=0;/实际过去时间 uint calsp;/10 毫秒计时中间量 uint counter=0;/速度计次 uint speed;/速度 uint msec;/50 毫秒中间量 uint AutoMode=0;/自动标志 uint changeV=0; void delay(uint t); void display(); void SpeedC(); void TimerSet(); void InitLED(); void Auto(); void main(void) DA0832=0 xa0; TMOD=0 x11; TH0=0 x0D8; TL0=0 x0F0

19、; TH1=0 x3C; TL1=0 x0B0; EA=1; EX0=1; IT0=1; ET0=1; TR0=1; ET1=1; EX1=1; IT1=1; TR1=1; InitLED(); time=0; Ntime=0; counter=0; AutoMode=0; changeV=0; while(1) display(); void InitLED() vel0=10; vel1=11; vel2=12; vel3=12; vel4=0; vel5=13; void display() WXLED=WTable0; DXLED=DTablevel0; delay(2); WXLED

20、=WTable1; DXLED=DTablevel1; delay(2); WXLED=WTable2; DXLED=DTablevel2; delay(2); WXLED=WTable3; DXLED=DTablevel3; delay(2); WXLED=WTable4; DXLED=DTablevel4; delay(2); WXLED=WTable5; DXLED=DTablevel5; delay(2); void SpeedC() if(VMode1) if(VMode2) vel3=3; DA0832=0 xff; if(!VMode2) vel3=2; DA0832=0 xd4; if(!VMode1) if(VMode2) vel3=1; DA0832=0 xb4; if(!VMode2) vel3=0; DA0832=0 xa0; void delay(uint t) uint i,j; for(i=0;it;i+) for(j=1;j=100) speed=counter; counter=0; calsp=0; vel5=speed%10; vel4=speed/10; void Timer1() inte

温馨提示

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

评论

0/150

提交评论