摘要
本设计是基于单片机的遥控电动窗帘的设计,根据设计要求和现有器件,设计采用ATS52作为主控制器,使用PT2262与PT2272通用编码解码电路作为遥控发射和接受装置,单片机通过检测PT2272解码的信号,做出开关窗帘等动作,采用霍尔传感器44E1103作为位置检测设备,以检测窗帘的运行位置,实现放过卷。同时本控制器还有手动控制,通过两个微动开关实现窗帘的开关控制。窗帘的开关通过一个直流电动机和对应的机械装置来实现,直流电机采用L298N控制,通过控制L298N实现电机的正反转,达到开关窗帘的目的。
本设计使用51单片机作为主控制器,ATS52有32个I/O口,控制电路只使用部分I/O口,由于P0口没有内置上拉电阻,当需要高电平输出电流时需加上拉电阻,手动按钮采用三个微动开关,使用低电平输入,一个开窗,一个关窗一个停止;PT2272接收模块采用4路点动型号,输出信号为高电平,这里使用ABC三路,
分别用作开窗、关窗和停止,通过停止按钮可实现窗帘的开关程度;窗帘的防过卷使用霍尔传感器US1881,根据穿过US1881磁场方向的不同,霍尔传感器可反馈回高电平或低电平,这里使用低电平反馈。
软件设计使用C语言编程,对输入信号采用软件防抖,对电机的运行使用一
个发光二极管指示,采用C编程,程序易读易移植,整个程序的设计采用子程序调用方式,程序易于调试。
关键字:单片机、遥控、C语言
河南理工大学课程设计报告
目录
1 概述 ........................................................................................................................................ - 2 -
1.1总体设计思路 ........................................................................................................... - 1 - 1.2遥控电路的设计 ....................................................................................................... - 1 - 1.3手动控制电路 ........................................................................................................... - 1 - 1.4直流电机驱动电路 .................................................................................................. - 1 - 1.5防过卷限位电路 ....................................................................................................... - 2 -
1.6指示灯电路……………………………………………………………………………..-2 -
1.7程序设计..................................................................................................................... - 2 - 2 系统整体方案及硬件设计 ............................................................................................... - 3 -
2.1 系统总体方案 .......................................................................................................... - 3 - 2.2 单片机最小系统 ...................................................................................................... - 3 - 2.3 PT2272遥控解码模块 ............................................................................................ - 6 - 2.4 按键电路 ................................................................................................................... - 8 - 2.5 44E霍尔传感器限位电路 ..................................................................................... - 8 - 2.6 主控制器 ................................................................................................................... - 9 - 2.7 直流电机驱动电路 ............................................................................................... - 10 - 2.8 工作指示电路 .......................................................................................................... - 9 - 3 软件设计 ............................................................................................................................. - 14 -
3.1 系统个输入输出端口的宏定义 ........................................................................ - 14 - 3.2初始化程序设计 ..................................................................................................... - 15 - 3.3 系统功能子程序设计 ........................................................................................... - 15 - 3.4 系统主程序设计 .................................................................................................... - 17 - 4课程设计体会 ..................................................................................................................... - 19 - 参考文献 ................................................................................................................................. - 20 - 附录1:源程序代码 ............................................................................................................ - 21 - 附录2:系统原理图 ............................................................................................................ - 21 -
河南理工大学课程设计报告
1 概述
1.1总体设计思路
遥控窗帘设计使用51单片机作为主控制器,使用PT2262遥控编码模块作为发射模块,使用PT2272解码模块作为接收模块,将遥控信号解码后转换为TTL电平,供单片机读取;手动控制采用微动开关,低电平输入;输出控制直流电机使用步进电机专用芯片L298N,耦TLP521-4,通过光电隔离窗帘的防过卷使用两个霍尔传感器AE44 938,通过放在窗帘上的强磁感应窗帘的位置,实现窗帘的防过卷。系统的程序设计使用C编程,对按键采用软件防抖处理。 1.2遥控电路的设计
遥控部分电路使用PT2262和PT2272遥控模块,PT2262/2272是普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。 这里使用做好的遥控发射接收模块,直接将遥控解码,转化为相应的TTL电平信号,供单片机读取。 1.3手动控制电路
手动控制使用两个6*6*5微动开关,采用单片机检测低电平输入,当按下按钮时,对单片机输入低电平信号。 1.4直流电机驱动电路
对直流电机的驱动这里使用直流电机专用驱动芯片L298N,L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。本设计中使用5V直流电机,电流较小,并且只是用一路输出;单片机对L298N的控制通过光耦隔离控制,以减少干扰或实现不同的控制电平的耦合,这里控制和驱动信号均使用5V。
- 1 -
河南理工大学课程设计报告
1.5防过卷限位电路
为了防止窗帘开或关到位后电机仍没有停止,需要加防过卷限位电路路这里选用霍尔传感器,该器件集成了电压调节器,动态偏差补偿系统的霍尔传感器,施密特触发器和开漏输出驱动于一个封装内。由于它宽的工作电压范围和扩展的温度范围,使其非常适合于汽车电子,工业和消费电子的应用范畴。这里使用44E作为限位传感器,当窗帘运行到上限或下限时,固定在窗帘上的强磁达到传感器位置,发出限位信号,主控制器停止电机,实现防过卷。 1.6指示灯电路
分别用发光二极管绿,黄,红表示正转,反转,立停。 1.7程序设计
对单片机的程序设计使用汇编或C语言,汇编编程程序代码编译效率高,但程序的易读性差,不易移植;C语言的代码效率较差,但程序易读易写,且程序的可移植性好,可以借鉴其他例程或一边写好的程序模块。本设计采用C语言编程。
- 2 -
河南理工大学课程设计报告
2 系统整体方案及硬件设计
2.1 系统总体方案
遥控窗帘的硬件设计共分为三大部分:信号采集转换电路、单片机主控电路和直流电机驱动电路。其中信号采集电路由遥控解码电路和手动按钮两部分组成。系统框图如图1, PT2272
解码模块 主控制器 ATS52 电机驱动电路L298 按 键 直流电机 44E霍尔传感器 图1 系统框图
如图1,主控制器检测来自PT2272解码模块、按键和44E霍尔传感器的信号,根据输入端的信号控制驱动电路,驱动电路控制直流电动机带动窗帘运动。遥控器或按键发出开、关、停窗帘的信号后,经单片机处理后,控制L298N输出控制电机正、反转,电机通过机械装置带动窗帘运动,当窗帘运动到上限或下限时,固定在窗帘上的强磁促发相应的霍尔传感器,霍尔传感器发出信号给单片机,单片机将电机停止。窗帘在开关过程中按下遥控的停止按钮,则电机停止运行,实现窗帘的半开。
2.2单片机最小系统
- 3 -
河南理工大学课程设计报告
图2 单片机最小系统仿真图
ATS52与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得ATS52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 ATS52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路另外,ATS52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。[1]
VCC: 电源电压 GND: 接地
P0 口: P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1 口: P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。
引脚第二功能:
P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出
- 4 -
河南理工大学课程设计报告
P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用)
P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用)
P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为ATS52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时/计数器0) P3.5 T1(定时/计数器1)
P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST: 复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当ATS52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被
- 5 -
河南理工大学课程设计报告
编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。[2]
2.3 PT2272遥控解码模块
PT2262/2272是普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。
PT 2262每次发射时至少发射4组字码,PT2272只有在连续两次检测到相同的地址码加数据码才会把数据码中的“1”驱动相应的数据输出端为高电平和驱动VT端同步为高电平。因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以程序可以丢弃处理。 PT2272解码芯片有不同的后缀,表示不同的功能,有L4/M4/L6/M6之分,其中L表示锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变。M表示非锁存输出,数据脚输出的电平是瞬时的而且和发射端是否发射相对应,可以用于类似点动的控制。后缀的6和4表示有几路并行的控制通道,当采用4路并行数据时(PT2272-M4),对应的地址编码应该是8位,如果采用6路的并行数据时(PT2272-M6),对应的地址编码应该是6位。 PT2262和PT2272芯片如下图2,
- 6 -
河南理工大学课程设计报告
图3 PT2262/2272引脚 表1 PT2262引脚功能 名称 A0-A11 D0-D5 Vcc Vss TE OSC1 OSC2 Dout 名称 A0-A11 表2 PT2272引脚功能 管脚 说 明 地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬1-8、10-13 空),必须与2262一致,否则不解码 地址或数据管脚,当做为数据管脚时,只有在地址码与2262一致,数据管脚才能输出与2262数据端对应7-8、10-13 的高电平,否则输出为低电平,锁存型只有在接收到下一数据才能转换 18 电源正端(+) 9 14 管脚 1-8、10-13 7-8、10-13 18 9 14 16 15 17 说 明 地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空), 数据输入端,有一个为“1”即有编码发出,内部下拉 电源正端(+) 电源负端(-) 编码启动端,用于多数据的编码发射,低电平有效; 振荡电阻输入端,与OSC2所接电阻决定振荡频率; 振荡电阻振荡器输出端; 编码输出端(正常时为低电平) D0-D5 Vcc Vss DIN 电源负端(-) 数据信号输入端,来自接收模块输出端 - 7 -
河南理工大学课程设计报告
OSC1 OSC2 VT 16 15 17 振荡电阻输入端,与OSC2所接电阻决定振荡频率; 振荡电阻振荡器输出端; 解码有效确认 输出端(常低)解码有效变成高电平(瞬态) 遥控模块是已做好的,使用315MHz的频率,遥控模块接收解码模块共有四个输出,当没有信号时,对应的引脚为低电平,当收到对应的通道德遥控信号时,如通道D2与输入信号,则PT2272的D2引脚输出高电平。并根据芯片类型的不同D2口的电平自锁或点动,单片机读取接收解码模块的信号做出动作。 2.4 按键电路 按键是单片机的常用输入设备,电路简单且成本低,这里对按键的防抖采用软件延时处理。按键使用常用的6*6*5按钮式微动开关,按键电路如下图4 P0.4/AD4 34P0.5/AD533P0.6/AD632P0.7/AD7正转21P2.0/A8反转手动控制22P2.1/A923P2.2/A10停24P2.3/A1125P2.4/A1226P2.5/A1327P2.6/A1428P2.7/A15P3.0/RXD1011 2.5 44E霍尔传感器限位电路 限位开关用于检测窗帘运行到上、下限位置时动作发出信号给控制器,以防止窗帘过卷损坏机械设备或电机。常用的限位装置使用行程开关、光电开关或接近开关,这里选用霍尔传感器44E1103作为限位传感器。 44E1103是低功耗CMOS工艺的霍尔传感器,TO-92封装的如下图5,其内部结构如图6:
- 8 -
河南理工大学课程设计报告 TO-90封装的引脚定义同TO-92封装,引脚1为电源正极VDD,引脚2为GND,44E的工作电压为3.5-28V,引脚3为信号输出引脚OUT。从44E内部结构原理图中可以看到,霍尔元件产生的霍尔电动势加到运放的同相和反向输入端,当霍尔元件受到不同方向的磁场时,传感器会输出不同的电平, 44E感应到强磁铁的磁场后,发出信号给单片机 仿真的霍尔传感器图: P2.2/A1024P2.3/A1125P2.4/A1226P2.5/A1327P2.6/A1428P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD1011121314151617霍尔反转停霍尔正转停
2.6主控制器
遥控窗帘的主控制器选用MCS51系列单片机,MCS51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用51来称呼MCS51系列单片机。这里选用ATMEL公司的ATS52单片机,ATS52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得ATS52在众多嵌入式控制应用系统中得到广泛应用。ATS52的引脚如图9,
- 9 -
河南理工大学课程设计报告
ATS52引脚图
对ATS52的各引脚定义和作用这里不再赘述。 2.7 直流电机驱动电路
遥控窗帘的执行部件为一个5v的直流电动机,窗帘的开关通过控制直流电机的正反转实现,驱动电路的作用是接受单片机输出地控制信号并根据控制信号驱动电机正反转或停止。
要实现直流电机的正反转,只需改变加在直流电机转自线圈两端的电压极性。实现电机的正反转控制可通过多种方法来实现,如使用两个继电器,或使用可控电力电子器件做成逆变桥(H桥),对于小功率直流电机使用小功率开关三极管如13002即可,或使用集成的直流电机控制芯片,如集成有桥式电路的电机专用驱动芯片,如L298、LMD18200、MC33886,ML4428,性能比较稳定可靠。这里选用L298N。
L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。
其引脚如下图所示:
- 10 -
河南理工大学课程设计报告
L298N引脚图
L298N内部结构原理图
如图7为L298N的内部原理图,L298有两路电源分别为逻辑电源和动力电源,上图中6V为动力电源输入端VSS。SENSEA和SENSEB分别为A路和B路的驱动电源的输入端。ENA、ENB为电机控制A路和B路的是能端,高电平有效;IN1、IN2、IN3、IN4为电机的正反转控制信号端。其控制逻辑如表3:
L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V可以直接通过电, 来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7 V电压。4脚VS
接电源电压,VS电压范围VIH为+2.5~46 V。输出电流可达2.5 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制能端,控制电机的停转。表1是L298N功能逻辑图。
- 11 -
河南理工大学课程设计报告
表3 L298N控制逻辑 IN1 IN2 ENA 电机状态 X X 0 停止 1 0 1 顺时针 0 1 1 逆时针 0 0 0 停止 1 1 0 停止 表2 L298N管脚功能表 引脚 符号 功能 1 SENSING A 此两端与地连接电流检测电阻,并向驱动芯片反15 SENSING B 馈检测到的信号 2 OUT1 此两脚是全桥式驱动器A的两个输出端,用来连3 OUT2 接负载 4 Vs 电机驱动电源输入端 5 IN1 输入标准的TTL逻辑电平信号,用来控制全桥式7 IN2 驱动器A的开关 6 ENABLE A 使能控制端.输入标准TTL逻辑电平信号;低电平11 ENABLE B 时全桥式驱动器禁止工作。 8 GND 接地端,芯片本身的散热片与8脚相通 9 Vss 逻辑控制部分的电源输人端口 10 IN3 输入标准的TTL逻辑电平信号,用来控制全桥式12 IN4 驱动器B的开关 13 OUT3 此两脚是全桥式驱动器B的两个输出端,用来连14 OUT4 接负载
- 12 -
河南理工大学课程设计报告
直流电机驱动部分如下图
本次设计中只使用一个电机。由B路驱动。4、9 接高电平,ENB接高电平,使L298N的OUT3,OUT4输出使能。IN3,IN4从单片机的P0.0,P0.1口引线作为控制电机正反转以及立停的控制端。输出端13、14引脚接直流电机。 1、8、15引脚接地。 2.8 工作指示电路
我们用P1.1口、P1.2口和P1.3口的输出来控制LED工作指示灯。当电机正转时,P1.1口输出高电平,发光二级D1亮。同理,当电机反转时,P1.2口输出低电平,发光二级D2亮。当电机立停时,P1.3口输出高电平,发光二级D3亮。
- 13 -
河南理工大学课程设计报告
3 软件设计
硬件系统搭建完成后,就要根据系统的控制要求和现有的硬件资源,编写合理的系统程序。程序的编写要根据控制要求,充分运用系统的硬件资源,编写简单无漏洞的系统程序,为保证系统的可靠长时间运行,还可使用ATS52的软件看门狗,这里程序较为简单,就不再使用。
遥控窗帘的系统软件的主要任务是检测来自键盘、遥控解码模块和限位传感器的信号,通过信号判断做出的动作,输出控制信号控制控制直流电机驱动模块驱动电机运行,实现窗帘的开关控制。
对系统程序的编写使用keil软件并使用C语言编程,在系统主函数中单片机对输入信号进行不停的扫描,当检测到输入信号时,调用相应的子函数执行动作,各子函数完成不同的动作。 3.1 系统输入输出端口的宏定义
C语言中可以对变量采用宏定义,以方便在程序中读懂和使用变量,在这里对输入输出口定义如下,
#define uint unsigned int #define uchar unsigned char
char a3=0;
char a4=0; char a5=0;
uint i=0,j=0,n;
sbit hand1=P2^0; //手动控制端 sbit hand2=P2^1; sbit hand3=P2^2;
sbit wireless1=P0^4; //无线控制端 sbit wireless2=P0^3;
sbit wireless3=P0^2;
sbit light1=P0^0; //电机控制端口 sbit light2=P0^1;
sbit huo1=P2^3; //霍尔传感器 sbit huo2=P2^4;
- 14 -
河南理工大学课程设计报告
sbit point1=P1^1; //指示灯 sbit point2=P1^2; sbit point3=P1^3;
3.2初始化程序设计
为控制器在每次启动或重启后要进行初始化,以使内部个寄存器的值被清零或置位或对程序中间变量赋予相应的值,本设计的初始化程序主要完成输入端口的置位和输出端口的置位,如下 char handon();
char handoff(); char handstop(); void delay(uchar); P0=0x00; P1=0x00; P2=0x18;
3.3 系统功能子程序设计
系统功能的实现不同的控制功能,如窗帘的开关等,本程序用到以下几
个子函数:char handon(); char handoff(); char handstop(); void delay(uchar); 各子函数如下:
vvoid delay(uchar a) //延时函数 {
uchar c,d;
for(c=a;c>0;c--)
for(d=110;d>0;d--);
}
char handon(void) //手动和无线正转 {
if(hand1==1||wireless1==1)
{
delay(5);
if(hand1==1||wireless1==1)
- 15 -
河南理工大学课程设计报告
{
a3=1; } else a3=0; }
return a3;
}开窗帘子函数,当被执行时,控制电机正转并打开工作状态指示灯;
char handoff(void) //手动和无线反转 {
if(hand2==1||wireless2==1) {
delay(5);
if(hand2==1||wireless2==1) {
a4=1; } else
a4=0; }
return a4; }
关窗帘子函数,当被执行时,控制电机反转并打开工作状态指示灯; char handstop(void) //手动和无线停 {
if(hand3==1||wireless3==1) {
delay(5);
if(hand3==1||wireless3==1) {
a5=1; } else
a5=0; }
return a5;
- 16 -
河南理工大学课程设计报告
}
停止子函数,当被执行时停止电机,并关闭系统运行指示灯。
3.4 系统主程序设计
每一个C函数都必须有一个并且只有一个主函数,系统开始执行程序是从主函数开始。本设计没有使用中断,以键盘的扫描为主,主函数内主要完成输入口状态的扫描,并调用相应子函数完成相应功能,主程序流程图如下图
主程序流程图
- 17 -
河南理工大学课程设计报告
主函数中完成系统初始化后,变进如死循环while(1)不停地对输入端口进行检测,当对应的输入端口有使能信号时执行相应的操作,操作完成后又接着检测输入口;
到此系统的软件设计完成,还需对软件的运行情况做进一步仿真并下载到硬件测试,有漏洞及时修正。
- 18 -
河南理工大学课程设计报告
4课程设计体会
通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,与此同时在proteus的仿真中遇到好多原件在库中找不到,但通过别的办法像按键来代替它的功能。Proteus仿真只是理想化的,在实物制作后依然遇到想不到的问题。在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免只会纸上谈兵。
课程设计中又让我体会到了合作和团结的力量当遇到不会或设计不了出来的地方,我们会一起相互讨论相互帮助,这次设计进一步认识了只有团结互助,才能更好的完成设计任务。
同时我们获得的最大收获是自己的动手能力和解决问题都得到了提高,
- 19 -
河南理工大学课程设计报告
参考文献
[1] 余发山,王福忠等编著.单片机原理及应用技术,江苏,中国矿业大学 [2] 谭浩强. C程序设计(第三版).北京:清华大学出版社,2005 [3] 李朝青.单片机原理及接口技术(简明修订版).北京:北京航空航天大学出版社1999 [4] 何立民.单片机高级教程.北京:北京航空航天大学出版社,1999 [5] 李群芳.单片微型计算机与接口技术.北京:电子工业出版社,2001 [6] 朱定华.单片微机原理与应用.北京:清华大学出版社,2003
[7] 马淑华,王凤文,张美金编著. 单片机原理与接口技术(第二版).北京:北京邮电大学出版社,2007
[8] 李维祥.单片机原理与应用.天津:天津大学出版设,2001 [9] 钱逸秋.单片机原理与应用.北京:电子工业出版社,2002
[10] 戴佳.51单片机C语言应用程序设计实例精讲(第2版).北京,2008 [11] 赵亮.单片机C语言编程与实例. 人民邮电出版社: 北京,2003
[12] 边海龙. 单片机开发与典型工程项目实例详解.北京电子工业出版社,2008
- 20 -
河南理工大学课程设计报告
附录1:源程序代码
#include #define uint unsigned int #define uchar unsigned char char a3=0; char a4=0; char a5=0; uint i=0,j=0,n; sbit hand1=P2^0; //手动控制端 sbit hand2=P2^1; sbit hand3=P2^2; sbit wireless1=P0^4; //无线控制端 sbit wireless2=P0^3; sbit wireless3=P0^2; sbit light1=P0^0; //电机控制端口 sbit light2=P0^1; sbit huo1=P2^3; //霍尔传感器 sbit huo2=P2^4; sbit point1=P1^1; //指示灯 sbit point2=P1^2; sbit point3=P1^3; void obverse() //电机正转 { for(i=500;i>0;i--) { light1=1; light2=0; } for(i=200;i>0;i--) { light1=0; light2=0; } } - 21 - 河南理工大学课程设计报告 void reverse() //电机反转 { for(i=500;i>0;i--) { light2=1; light1=0; } for(i=200;i>0;i--) { light2=0; light1=0; } } void stop() //电机停止 { light1=0; light2=0; } void main() { char handon(); char handoff(); char handstop(); void delay(uchar); P0=0x00; P1=0x00; P2=0x18; while(1) { handon(); handoff(); handstop(); if(wireless1||a3==1) //如果正转信号发出(按键按下) { light1=0; // while(huo1==1&&wireless3==0&&a5==0)//检查霍尔状态,防过卷 { obverse(); handstop(); - 22 - 河南理工大学课程设计报告 point1=1; point2=0; point3=0; } a3=0; } else if(wireless2||a4==1)//如果反转信号发出(按键按下) { light2=0; while(huo2==1&&wireless3==0&&a5==0)//检查霍尔状态,防过卷 { reverse(); handstop(); point1=0; point2=1; point3=0; } a4=0; } if((a5==1)||huo1==0||huo2==0) //停止 { while((a3==0&&a4==0)||huo1==0||huo2==0) { stop(); handon(); handoff(); point1=0; point2=0; point3=1; } a5=0; } } } void delay(uchar a) //延时函数 { uchar c,d; for(c=a;c>0;c--) for(d=110;d>0;d--); } char handon(void) //手动和无线正转 { if(hand1==1||wireless1==1) { - 23 - 河南理工大学课程设计报告 delay(5); if(hand1==1||wireless1==1) { a3=1; } else a3=0; } return a3; } char handoff(void) //手动和无线反转 { if(hand2==1||wireless2==1) { delay(5); if(hand2==1||wireless2==1) { a4=1; } else a4=0; } return a4; } char handstop(void) //手动和无线停 { if(hand3==1||wireless3==1) { delay(5); if(hand3==1||wireless3==1) { a5=1; } else a5=0; } return a5; } - 24 - 河南理工大学课程设计报告 附录2:系统原理图 9571012611IN1IN2IN3IN4ENAENBVCC4VSOUT1OUT2OUT3OUT4GND8U2231314RP1RESPACK-7115SENSASENSBL2981U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373635343332212223242526272810111213141516172345678停正转无线控制反转正转反转停手动控制18XTAL29RST293031PSENALEEAR11kR21kR31kD1LED-REDD2LED-REDD3LED-GREEN12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7ATC52霍尔反转停霍尔正转停 - 25 -
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务