

免费预览已结束,剩余50页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘摘 要要 智能风扇控制技术,是目前在家电应用方面比较前沿的技术。电风扇是一种 比较普及的家电,它与智能控制器技术相结合,实现了智能控制,这类功能优化 更新对于智能控制技术发展特别有意义,为我们的日常生活提供了更多方便。风 扇的智能控制技术主要体现在这几方面 :利用按键来实现风扇工作时间及风速 的控制 ;周围温度来控制风扇的风速,实现实时自动调节风速,且可显示周围 的温度;语音控制风扇的工作与否,这样可以节约能源;以及基于红外技术来实 现对风扇的控制,它主要体现在较远距离的遥控控制;等等。新型传感器的应用 来实现对风扇的控制有着重大作用。从目前应用来看,以后智能控制技术将有更 大的发展前景。 此设计是以 at98s52 单片机为控制器,以两个按键为控制键(不包括复位 键) ,来实现风速和工作时间的调节。采用 4 位数码管来显示剩余的工作时间; 两个按键功能是:按键 1 实现风速的选择;按键 2 实现工作时间的设定。分别用 两个电机来分别模拟电风扇电机和模拟风扇摇头机构。 关键词关键词 :单片机、智能、pwm、按键。 本科毕业设计 abstractabstract intelligent fan control technology is more cutting-edge applications in appliance technology. electric fan is a relatively popular home appliances, which combined with the intelligent controller technology to realize intelligent control, optimization of these features updated intelligent control technology for the development of special meaning for our daily lives provides more convenience. intelligent fan control technology is mainly reflected in these aspects: the use of buttons to achieve the working time and the fan speed control; ambient temperature to control the fan speed, real-time automatic adjustment of wind speed, and can display the ambient temperature; voice control the work of the fan or not, this can save energy; and based on infrared technology to achieve control of the fan, which is mainly reflected in the more remote the remote control; and so on. the application of new sensors to achieve the control of the fan has a significant role. applications from the current point of view, the future intelligent control technology will have greater prospects for development. this design is based on at98s52 microcontroller as the controller, with two buttons to control the key (not including the reset button), to achieve the regulation of wind speed and working hours. 4-bit digital tube used to display the remaining hours of work; two key functions are: key to achieve a speed choice; buttons to achieve two hours of work settings. two motors were used to simulate electric fan motor respectively, and analog fans shaking their heads institutions. key words: microcontroller;smart;pwm; keys 本科毕业设计 目目 录录 1 智能风扇总体设计 1 1.1 引 言 1 1.2 智能风扇总体介绍 .1 1.3 本章小结 .2 2 驱动与电路设计 3 2.1 单片机简要介绍 .3 2.2 单片机内部电路简要介绍 .4 2.2.1 p0 口内部电路 4 2.2.2 p1 口内部电路 6 2.2.3 p2 口内部电路 6 2.2.4 p3 口内部电路 7 2.3 时钟电路与复位电路 .8 2.4 显示模块电路设计 .9 2.5 电机驱动模块设计 10 2.5.1 模拟调速电机设计10 2.5.2 模拟摇头电机设计11 2.6 时间报警设计 12 2.7 按键模块 12 2.8 本章小结 13 3 智能风扇软件设计 .14 3.1 软件设计思路 .14 3.1.1 程序前序14 3.1.2 主程序流程图14 3.1.3 延时子程序15 3.1.4 显示子程序15 3.1.5 按键子程序17 3.1.6 pwm 子程序 19 3.1.7 定时器子程序20 3.1.8 摇头子程序21 3.2 控制程序模块 .21 3.2.1 程序前序21 3.2.2 主程序22 3.2.3 延时程序24 3.2.4 显示程序24 3.2.5 按键程序27 3.2.6 pwm 子程序 28 3.2.7 定时子程序31 3.2.8 摇头程序32 3.3 软件调试 33 3.4 本章小结 33 4 测试软硬件性能 .34 4.1 工作电源 34 4.2 两种状态切换 34 4.3 pwm 脉宽设定 34 4.4 功能测试 34 4.5 本章小结 35 5 设计总结 .36 5.1 设计亮点 36 5.2 设计可改进的方面 36 参考文献 37 附录 38 致 谢 .48 大学毕业设计 1 智能风扇总体设计 1 1 1 智能风扇总体设计智能风扇总体设计 1.11.1 引引 言言 随着科技的发展与技术的进步,今天我们的周围多了许多的智能控制用品, 它们不仅功能强大、体积小、工作稳定、精度高、操作简单,价格低廉,更重要 的是它们采用的新工艺、新材料,功耗更低,符合时代节约能源的理念。 鉴于当前生产、生活中的很多设备逐渐小型化、迷你化、集成化,而且产品 的工作更加稳定、节能、安全,功能也日趋强大,更加人性化、智能化,所以此 设计也以此理念为出发点,设计一种以单片机为核心控制器的风扇控制系统。现 在仍有许多的电风扇采用传统的机械式器件来实现定时和调速,也经常遇到机械 式调节机构老化、调节失效,在这种情况下,如果再想在效果更好、更安全的使 用的话,就必须更换那些调节机构。这也就带来了很多的不便,以及安全隐患。 所以在这方面采用单片机这种以数字信号控制的控制器更理想,单片机的外围电 路简单,工作稳定,可以采用各种传感器来扩充功能,也可以采用继电器、光电 开关、光耦等,来实现不同电压等级隔离。在一点保证了它是安全的,且因为它 的工作电压只有 5v,所以功耗和低。它具有定时时间显示,显示时间准确,这一 点也是它优于传统控制器的。 1.21.2 智能风扇总体介绍智能风扇总体介绍 智能风扇采用两个按键来控制,另外还有一个单片机复位键,4 位数码管显 示系统的工作状态,两个电机来模拟风扇的控制机构,用蜂鸣器来模拟报警器。 采用 4 位数码管来显示剩余的工作时间;两个按键功能是:按键 1 实现风速 的选择;按键 2 实现工作时间的设定。其中,风类有“常风” 、 “自然风” 、 “睡眠 风” ,风类的调节以按键 1 每按一次当前风类调换一次,以“初始状态”“自 然风” “常风” “睡眠风”“初始状态”形式循环调节,并采用 pwm 实 现调速;而时间的调节以按键 2 每按一次,时间增加 10 秒钟,以“000” “- -”“010”“050”“100”“110” “450”“000”的形式循环调节。显示形式:用 4 位数码管实时显示风 扇的工作状态,最高位显示风类:“初始状态”显示“0” 、 “自然风”显示“1” 、 “常风”显示“2” 、 “睡眠风”显示“3” ;第 2 位显示分钟,第 3 和第 4 位显示 定时时间,以动态倒计时的形式显示剩余时间,无定时显示“000” 。其中, “- ”表示非定是状态,此状态可以没有时间限制的让风扇工作;而其它状态时是定 时状态,定时器会被启动。分别用两个电机来分别模拟电风扇电机和模拟风扇摇 头机构。系统的示意图如下: 图 1.2.1 系统示意图 1.31.3 本章小结本章小结 主要介绍智能风扇的设计理念与总体设计思路。智能风扇的工作方式,硬件 控制要求。 大学毕业设计 2 驱动与硬件设计 3 2 2 驱动与电路设计驱动与电路设计 2.12.1 单片机简要介绍单片机简要介绍 at98s52 单片机是 atmel 公司推出的一款在系统可编程单片机。通过相应的 isp 软件,用户可以对单片机 flash 程序存储器中的代码进行方便的修改。其技 术参数如下: (1)4kb 在系统可编程 flash 程序存储器,3 级安全保护; (2)128 字节的内部数据存储器; (3)32 个可编程 i/o 引脚; (4)2 个 16 位计数/定时器; (5)5 个中断源,可以在断电模式下响应中断; (6)1 个全双工的串行通信口; (7)最高工作频率为 33mhz; (8)工作电压为 4.05.5v; (9)双数字指针使得程序运行得更快。 引脚如图2.1.1所示: 图2.1.1 at98s52引脚图 大学毕业设计 2 驱动与硬件设计 引脚功能说明: (1)输入/输出引脚(i/o口线) p0.0p0.7:p0口8位双向i/o口,占3932脚; p1.0p1.7:p1口8位准双向i/o口,占18脚; p2.0p2.7:p2口8位准双向i/o口,占2128脚; p3.0p3.7:p3口8位准双向i/o口,占1017脚; (2)控制口线 (29脚):外部程序存储器读选通信号;ale/(30脚):地址锁存允psenprog 许/编程信号;/vpp(31脚):外部程序存储器地址允许/固化编程电压输入端;ea rst/vpd(9脚):rst是复位信号输入端,vpd是备用电源输入端; (3)电源及其它 vcc(40脚):电源端+5v;gnd(20脚):接地端;xtall、xtal2(1918脚): 时钟电路引脚。当使用内部时钟时,这两个引脚端外接石英晶体和微调电容;当 使用外部时钟时,用于外接外部时钟源。 2.22.2 单片机内部电路简要介绍单片机内部电路简要介绍 at89s52 共有 4 个 8 位的并行 i/o 口,分别计作 p0、p1 、p2、p3。每个口 都包含一个锁存器、一个输出驱动器和两个输入缓冲器。实际上,它们已被归入 专用寄存器之列,并且具有字节寻址和位寻址功能。 at89s52 单片机的 4 个 i/o 口都是 8 位双向口,这些口在结构和特性上是基 本相同的,但又各具特点,以下分别介绍。 2.2.12.2.1 p0p0 口口内部电路内部电路 由图 2.2.1 可见,电路中包括有一个数据输出锁存器、两个三态数据输入缓 冲器、一个数据输出驱动电路和一个输出控制电路。当对 p0 口进行写操作时, 由锁存器和驱动电路构成数据输出通路。由于通路中已有输出锁存器,因此数据 输出时可以与外设直接连接,而不需再加数据所存电路。 考虑到 p0 既可以作为通用的 i/o 口进行数据的输入/输出,也可以作为单片 机系统的地址/数据线使用,为此在 p0 口的电路中设有一个的多路转换电路 mux。在控制信号的控制下,多路转换电路可以分别接通锁存器输入或地址/数据 线。 大学毕业设计 2 驱动与硬件设计 当 p0 口作为通用的 i/o 口使用时,内部的控制信号为低电平,封锁与门,是输 出驱动电路的上拉场效应管(fet)截止,同时使用多路转换电路 mux 接通锁存 器端的输出通路。 _ q p0 口的口线逻辑电路如图 2.2.1 所示: 图 2.2.1 p0 口结构原理图 当 p0 口作为输出口使用时,内部的写脉冲加在 d 触发器的 cp 端,数据写入 锁存器,并向端口引脚输出。 当 p0 口作为输入口使用时,应区分读引脚和度端口两种情况,为此,在口 电路中有两个用于读入驱动的三态缓冲期。所谓读引脚,就是读芯片引脚的数据, 这是使用下方的数据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的 数据从缓冲器通过内部总线读进来。使用传送指令进行读口操作都是属于这种情 况。读端口是指通过上面的缓冲器读锁存器 q 端的状态。在端口已处于输出状态 的情况下,q 端与引脚的信号是一致的,这样安排的目的是为了适应对口进行 “读修改写”操作指令的需要。对于“读修改写”指令,不直 接读引脚而读锁存器是为了避开可能的错误。因为在端口已处于输出状态的情况 下,如果端口的负载恰是晶体管基极,则导通了的 pn 结会把端口引脚的高电平 拉低,这样直接读引脚就会把本来的“1”误读为“0” 。但若从锁存器 q 端读, 就能避免这样的错误,得到正确的数据。 注注:当 p0 口进行一般的 i/o 输出时,由于输出电路是漏极开路电路,因此 必须外接上拉电阻才能有高电平输出;当 p0 进行一般的 i/o 输出时,必须先向 电路中的锁存器写“1” ,是 fet 截止,以避免锁存器为“0”状态时对引脚读入 大学毕业设计 2 驱动与硬件设计 的干扰。 2.2.22.2.2 p1p1 口口内部电路内部电路 因为 p1 口通常是作为通用 i/o 口使用的,所以在电路结构上与 p0 口由一些 不同之处:首先它不再需要多路转换电路 mux;其次是电路的内部由上拉电阻, 与场效应筛共同组成输出驱动电路。为此,p1 口作为输出口使用时,已经能提供 推拉电流负载,因此无需再外接上拉电阻。当 p1 口作为输入使用时,同样也需 要先向器锁存器写“1” ,使输出驱动电路的 fet 截止。 p1 口结构原理图如下图所示 图 2.2.2 p1 口结构原理图 2.2.32.2.3 p2p2 口口内部电路内部电路 p2 口结构原理图如下图所示: 大学毕业设计 2 驱动与硬件设计 图 2.2.3 p2 口结构原理图 p2 的电路比 p1 口的电路多了一个多路转换电路 mux,这又正好与 p0 口一样。 p2 口可以作为通用 i/o 口使用,这时多路转换电路开关倒向锁存器 q 端。通常情 况下,p2 口是作为高位地址线使用的,此时多路转换电路开关应倒向相反方向。 2.2.42.2.4 p3p3 口口内部电路内部电路 p3 口的特点在于,应适应引脚信号第二功能的需要,增加了第二功能控制逻 辑。由于第二功能信号有输入和输出两类,因此分两种情况进行说明。 对于第二功能为输入的信号引脚,当 p3 口作为 i/o 使用时,第二功能信号 引脚应保持高电平,与非门开通,以维持从锁存器到输出端的数据输出通路的畅 通。当输出第二功能信号时,该位的锁存器应置“1” ,使与非门对第二功能信号 的输出是畅通的,从而实现第二功能信号的输出。 对于第二功能为输入的信号引脚,在口线的输入通路上增加了一个缓冲器, 输入的第二功能信号就从这个缓冲器的输入端取得。而作为 i/o 使用的数据输入, 仍取自三态缓冲器的输出端。不管是在 p3 口作为输入口使用时还是在第二功能 信号输入时,输入电路中的锁存器输出和第二功能输出信号线都应保持高电平。 p3p3 口结构原理图如下图所示: 图 2.2.4 p3 口结构原理图 p3 口各引脚名称及与第二功能如下表所示: 大学毕业设计 2 驱动与硬件设计 表 1 p3 口各引脚与第二功能表 引脚第二功能 p3.0 rxd(串行口输入端) p3.1 txd(串行口输出端) p3.2 int0(外部中断 0 请求输入端,低电平有效) p3.3 int1(外部中断 1 请求输入端,低电平有效) p3.4 t0(定时器/计数器 0 计数脉冲输入端) p3.5 t1(定时器/计数器 1 计数脉冲输入端) p3.6 wr(外部数据存储器写选通信号输出端,低电平有效) p3.7 rd(外部数据存储器读选通信号输出端,低电平有效) 2.32.3 时钟电路与复位电路时钟电路与复位电路 时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就如同一个复 杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控 制下严格地按照时序进行工作。在 at98s52 芯片内部有一个高增益反相放大器, 其输入端微芯片引脚 x1,其输出端为引脚 x2。而在芯片的外部,x1 和 x2 之间跨 接晶体振荡器和微调电容,从而构成一个稳定的自激震荡电路。一般,电容 c1 和 c2 取 30pf 左右,晶振的振荡频率范围是 1.212mhz。在这里取 12.00mhz。 其硬件电路如下图所示: 大学毕业设计 2 驱动与硬件设计 图 2.3.1 时钟电路与复位电路原理图 单片机复位使 cpu 和系统中的其它功能都处在一个确定的初始状态,并从这 个状态开始工作。复位条件是:必须使 rst/vpd 或 rst 引脚(9)加上两个机器 周期(即 24 个振荡周期)的高电平。当时钟频率为 12.00mhz 时,每个机器周期 为 1us,则只需 2us 以上时间的高电平。当 r=1k,c=10uf 由可以求得rc 104 us,时间满足要求。复位电路中 r1 取 1 k,r2 取 10 k,c3 是电解电 10 4 容,取 10uf。 2.42.4 显示模块电路设计显示模块电路设计 一般 led 的工作电流选在 510ma,但不允许超过最大值(通常为 50ma) 。 led 数码管又称为半导体数码管,它是由多个 led 按分段式封装制成的。led 数 码管有两种形式,即共阴和共阳。共阴型 led 数码管,是将内部所有 led 的阴极 连在一起引出来,作为公共阴极;共阳极 led 数码管是将内部所有 led 的阳极连 在一起引出来,作为公共阳极。 因为 led 工作电压较低,工作电流也不大,所以可以直接用七段显示译码器 驱动 led 数码管。但是,要正确选择驱动方式。对共阴型 led 数码管,应采用高 电平驱动方式;对共阳型 led 数码管,应采用低电平驱动。 在设计中采用共阴型数码管来显示,由两个锁存器(74hc573n)来充当七段 数码管选通开关,其中一个用于“段”选通开关,另一个用于“位”选通开关。 上拉电阻选用 600(流过发光二极管的电流为 5.5ma) 。图 2.4.1 是 led 的电路 连接示意图。 大学毕业设计 2 驱动与硬件设计 图 2.4.1 led 示意图 动态显示是指一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式 称为位扫描。通常,各位数码管的段选线相应并联在一起,由一个 8 位的 i/o 口 控制;各位的位选线(共阴极或共阳极)由另外的 i/o 口控制。以动态方式显示 时,各数码管分时轮流 选通。要使其稳定显示,必须采用扫描方式,即在某一 时刻只选通一位数码管,并送出相应的段码。依此规律循环,即可使各位数码管 显示将要显示的字符,虽然这些字符是在不同的时刻分别显示的,但由于人眼存 在视觉暂留效应,因此只要每一位显示时间足够短就可以同时显示的敢感觉。下 图为显示模块的电路原理图: 图 2.4.2 显示模块电路原理图 2.52.5 电机驱动模块设计电机驱动模块设计 2.5.12.5.1 模拟调速电机设计模拟调速电机设计 用单片机控制直流电机时,需要加驱动电路,为直流电机提供足够大的驱动 电流。使用不同的直流电机,其驱动电流不同,所以要根据实际需要选择合适的 驱动电路,通常有以下几种驱动电路:三极管电流放大驱动电路、电机专用驱动 大学毕业设计 2 驱动与硬件设计 模块(如 l298)和达林顿驱动器等。如果是驱动单个电机,并且电机的驱动电流 不大时,可以用三极管搭建驱动电路,不过这样要稍微麻烦些。如果电机所需的 驱动电流较大,可直接选用市场上现成的电机专用驱动模块,这种模块接口简单, 操作方便,并可为电机提供较大的驱动电流,不过它的价格要贵一些。再设计中 采用达林顿驱动器,它实际上是一个集成芯片,单块芯片同时可以驱动多个电机 (如:uln2803 可以驱动 8 路,uln2003 可以驱动 7 路,等等) ,每个电机由单片 机的一个 i/o 口控制,当需要调节直流电机转速时,使单片机的相应 i/o 输出不 同占空比的 pwm 波形即可。 图 2.5.1 为可以调速的电机驱动电路原理图: 图 2.5.1 调速电机驱动电路原理图 2.5.22.5.2 模拟摇头电机设计模拟摇头电机设计 由于模拟摇头电机要求的驱动电流不大,所以采用三极管来搭建驱动电路。 其中三极管全部采用 9014,续流二极管采用 in4007。当要求正转或反转时,标 zz 和 fz 的两个控制端接在单片机的两个 i/o 口,按照摇头的时序输出 pwm 脉宽 进行控制。它们同时接通,且电平状态相反。在电流反相时,电机的感应电流起 主导作用时,续流二极管会进行续流,同时反相的电源会接通,反相的电流会加 强,电机进行制动,当速度为 0 时,转动方向改变。即实现摇头控制。 图 2.5.2 为摇头电机驱动电路原理图: 大学毕业设计 2 驱动与硬件设计 图 2.5.2 摇头电机驱动电路原理图 2.62.6 时间报警设计时间报警设计 采用了蜂鸣器进行倒计时报警。在设置的时间小于等于 10 秒时进行报警提 醒。采用 8550 三极管进行控制,低电平触发方式。 图 2.6.1 为蜂鸣器控制电路原理图: 图 2.6.1 蜂鸣器控制电路图 2.72.7 按键模块按键模块 按键模块是使用者与单片机交互的通道。通过按键可以发出各种控制脉冲, 来控制单片机的运行,从而实现不同的控制效果。 图 2.7.1 为按键模块电路原理图: 大学毕业设计 2 驱动与硬件设计 图 2.7.1 按键模块电路原理图 2.82.8 本章小结本章小结 简要介绍单片机各管脚的功能,以及单片机各 i/o 内部电路的特点, 时钟 电路与复位电路的设计,显示电路模块的设计,调速电机驱动电路设计,摇头电 机驱动电路设计,蜂鸣器报警模块设计,按键电路设计。 大学毕业设计 3 智能风扇软件设计 14 3 3 智能风扇软件设计智能风扇软件设计 3.13.1 软件设计思路软件设计思路 软件采用模块化设计。分为:主程序、延时子程序、显示子程序、按键子程 序、pwm 子程序、定时器子程序、摇头子程序。 3.1.13.1.1 程序前序程序前序 程序在运行之前,必须先定义单片机的头文件,如:“#include” ; 时定义出现频率极高的数据变量,如:“#define uchar unsigned char” , “#define uint unsigned int”等;定义输入和输出 i/o 口,如:“sbit k1=p32;sbit k2=p33;”等等;以及要调用子程序的函数声明和使用的中间 变量。 3.1.23.1.2 主程序流程图主程序流程图 主程序在“程序前序”后,也可以灵活安排,位置并没有严格要求。下面是 主程序的流程图: 大学毕业设计 3 智能风扇软件设计 图 3.1.1 主程序流程图 3.1.33.1.3 延时子程序延时子程序 延时子程序主要用于使显示的效果能让人看得更好。程序在执行时时间太短, 如果时间太短,由于人眼反映时间长,就会使视觉上没有理想的显示效果。下面 是延时子程序流程图: 图 3.1.2 延时子程序流程图 3.1.43.1.4 显示子程序显示子程序 由于风扇要在两种状态下运行,其显示的内容不同,所以采用两种显示子程 序来完成显示效果。 显示方式显示方式 1 1 程序流程图程序流程图 这种状态下,要求同时显示“风类”和“倒计时时间” ,且以动态方式显示。 在编写程序时,由于整体程序较长,所以必须考虑调用程序的运行时间对显 大学毕业设计 3 智能风扇软件设计 示效果的影响。如果由于“受调用程序”占用的时间长而影响显示效果时, 可以考虑多次调用显示程序。即在“受调用程序”中间的合适位置调用显示 子程序。经验说明,此思路是正确的。 下图是显示方式 1 程序流程图: 图 3.1.3 显示方式 1 程序流程图 显示方式显示方式 2 2 程序流程图程序流程图 与前一种显示方式的区别在于:在这种状态下,风扇处于非定时状态运行, 要求显示“风类”和“- - -”这些内容,同样采用动态显示。在这种状态 大学毕业设计 3 智能风扇软件设计 下工作时,要求风扇在选择的状态下运转,如果定时未选择时,风扇的工作 状态不改变,一直运行;且在运行时可以任意改变风速状态,即选择不同的 “档位” 。其显示效果影响的解决方法与前面介绍的思路一样。 下图是显示方式 2 程序流程图: 图 3.1.4 显示方式 2 程序流程图 3.1.53.1.5 按键子程序按键子程序 按键子程序起着发出控制“命令”和控制“要求”的重要作用。其中它要完 成运行状态的选择,做出选择之后,还要按各个状态的要求进行控制。即当对运 行模式做出选择后,要使显示程序按要求调用,是“显示方式 1 子程序”还是 大学毕业设计 3 智能风扇软件设计 “显示方式 2 子程序”来进行显示。而且必须保证当设定值达到上限时,可以重 新设置。 下图是按键子程序流程图: 大学毕业设计 3 智能风扇软件设计 图 3.1.5 按键子程序流程图 3.1.63.1.6 pwmpwm 子程序子程序 pwm 子程序实现不同脉宽脉冲的输出,从而实现调速的目的。设计中采用软 件的方式来得到 pwm 控制信号。即对 i/o 口取高电平,再延时;高电平延时到时, 再对 i/o 口电平取反,如此反复就可得到 pwm 信号。下图是 pwm 子程序流程图: 大学毕业设计 3 智能风扇软件设计 图 3.1.6 pwm 子程序流程图 其中,pwm 还有其它的方法可以取得: 利用定时器。与软件控制方式相似,只是在这里利用单片机的定时器来 定时进行高、低电平的翻转,而不再是软件。 利用单片机自带的 pwm 控制器。stc12 系列单片机自身带有 pwm 控制器, stc89 系列单片机无此功能,其他型号的很多单片机也带有控制 器,如 pic 单片机、avr 单片机等。 3.1.73.1.7 定时器子程序定时器子程序 此程序主要用来实现倒计时和剩下 10s 时的报警。下图是其程序流程图: 大学毕业设计 3 智能风扇软件设计 图 3.1.7 定时子程序流程图 3.1.83.1.8 摇头子程序摇头子程序 摇头程序采用定时器中断的方式来实现,主要是为了使这个“死程序”不影 响主程序的运行,使整体的控制效果看起来更像是在独立运行一样,而互不干涉 彼此的运行效果。 下图是摇头子程序流程图: 图 3.1.8 摇头子程序流程图 3.23.2 控制程序模块控制程序模块 有了硬件之后,最重要就是控制程序了。它直接影响着风扇的控制运行效果 和功能。下面将程序的各个部分逐一介绍。 大学毕业设计 3 智能风扇软件设计 3.2.13.2.1 程序前序程序前序 程序前序主要是定义控制 i/o 口,调用子函数声明,全局变量的定义。 程序前序部分的 c 语言程序如下: #include /头文件 #define uchar unsigned char /定义数据类型 #define uint unsigned int /定义数据类型 sbit k1=p32; /按键 1 调节风速 sbit k2=p33; /按键 2 调节时间 sbit dell=p22; /蜂鸣器 sbit ts=p23; /调速控制端 sbit zz=p31; /摇头正转 sbit fz=p30; /摇头反转 sbit dula=p26; /段锁存端 sbit wela=p27; /位锁存端 uchar code table= /段码 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x40; void delay(uint x); /延时子程序声明 void display1(uchar,uchar,uchar,uchar); /显示子程序 1 声 明 void display2(uchar f,uchar t1,uchar t2,uchar t3); /显示子程序 2 声 明 void keyscan(); /键盘子程序声明 void pwm(uint number); /风速子程序声明 uchar number,fl,mh,ml; /定义变量:中间值:风类、分、秒 uint temp; /定义变量:时间基数 uchar num0,num1,num2,num3; /定义变量:定时器中间参数 uchar t1,t2,t3; /显示 2 子程序中间参数 3.2.23.2.2 主程序主程序 主程序是实现各个子程序调用的,使程序多次循环运行,实现在一定时间内 大学毕业设计 3 智能风扇软件设计 的连续效果。 主程序部分的 c 语言程序如下: void main() /主程序 tmod=0x11;/设定定时器 0 和定时器 1 工作方式 th0=(65535-50000)/256;/定时器 0 的初值 tl0=(65535-50000)%256; /定时器 0 的初值 th1=(65535-50000)/256; /定时器 1 的初值 tl1=(65535-50000)%256; /定时器 1 的初值 ea=1; /开总中断 et0=1; /开定时器 0 中断 et1=1; /开定时器 1 中断 zz=0; /摇头电机正转控制端初始置 0 fz=0; /摇头电机反转控制端初始置 0 ts=0; /调速电机控制端初始置 0 temp=0; /时间基值置 0 dell=1; /蜂鸣器初值置 1(低电平触发) t1=10; /显示 2 子程序后 3 位显示“-” t2=10; /显示 2 子程序后 3 位显示“-” t3=10; /显示 2 子程序后 3 位显示“-” num3=0; /定时状态与非定时状态切换中间变量 while(1) /主程序的循环程序 fl=temp/60; /“分钟”低位 mh=temp%60/10; /“秒”高位 ml=temp%60%10; /“秒”低位 keyscan(); /调用按键子程序 if(number!=0) /开定时器 1 大学毕业设计 3 智能风扇软件设计 tr0=1; /开定时器 0 else /条件不成立,关掉定时器 0 和定时器 2,及摇头电机控制端 tr1=0; tr0=0; zz=0; fz=0; if(num3=1) /为非定时状态时,按方式 2 显示 display2(number,t1,t2,t3); /调用显示方式 2 子程序 else display1(number,fl,mh,ml); /否则,调用显示方式 1 子程 序 pwm(number); /调用 pwm 子程序 3.2.33.2.3 延时程序延时程序 在程序运行时延时,程序中的每条语句都要花费时间,但是有时为了完成时 序上的特殊需要,如需要比较长时间的延时,来达到某种效果时,常采用调用延 时子程序来实现。如:在显示是,为了让数码管亮的时间可以使人眼感觉得到, 要使它亮的时间稍长一些,30ms 左右即可,这是就可以考虑调用延时时间合适的 延时程序。由于延时程序需要多次调用,所以将其单独列出以方便使用。 延时程序的 c 语言程序如下: void delay(uint x) /延时子程序 uint i,j; for(i=x;i0;i-) for(j=112;j0;j-); 大学毕业设计 3 智能风扇软件设计 3.2.43.2.4 显示程序显示程序 显示程序是一个用来显示单片机运行时内部参数的程序。它很方便的帮助使 用者知道单片机的运行状态,以便于对它的准确操控。鉴于风扇要在两种状态下 运行,为了彼此的显示不影响,采用两个显示程序。其中,显示程序 1 用来显示 定时状态时的参数;显示程序 2 用来显示非定时状态时的参数。 显示程序 1 的 c 语言程序如下: void display1(uchar f,uchar fl,uchar mh,uchar ml) /显示 1 子程序 /显示风的种类 dula=1; /打开段锁存器控制端 p0=tablef; /送段码 dula=0; /关段锁存器 p0=0xff; /消影 wela=1; /打开位锁存器控制端 p0=0xf7; /送位码 wela=0; /关位锁存器 delay(1); /调用延时子程序 dula=1; /显示分的低位 p0=tablefl; dula=0; p0=0xff; wela=1; p0=0xfb; wela=0; delay(1); dula=1; /显示秒的高位 p0=tablemh; dula=0; p0=0xff; 大学毕业设计 3 智能风扇软件设计 wela=1; p0=0xfd; wela=0; delay(1); dula=1; /显示秒的低位 p0=tableml; dula=0; p0=0xff; wela=1; p0=0xfe; wela=0; delay(1); 显示程序 2 的 c 语言程序如下: void display2(uchar f,uchar t1,uchar t2,uchar t3) /显示 2 子程序 dula=1; /显示风的种类 p0=tablef; dula=0; p0=0xff; wela=1; p0=0xf7; wela=0; delay(1); dula=1; /显示“-“ p0=tablet1; dula=0; p0=0xff; wela=1; 大学毕业设计 3 智能风扇软件设计 p0=0xfb; wela=0; delay(1); dula=1; /显示“-“ p0=tablet2; dula=0; p0=0xff; wela=1; p0=0xfd; wela=0; delay(1); dula=1; /显示“-“ p0=tablet3; dula=0; p0=0xff; wela=1; p0=0xfe; wela=0; delay(1); 3.2.53.2.5 按键程序按键程序 按键程序用于发出各个控制状态的程序。设计中保括两个功能键和一个复位 键。其中,按键 1 用来调节风类,按键按键 2 用来调节时间。 按键程序的 c 语言程序如下: void keyscan() /按键子程序 if(k1=0) /按键 1 调节风速 大学毕业设计 3 智能风扇软件设计 delay(10);/消抖动 if(k1=0)/确定是否按下 number+;/按下风类加“1” if(number=4)/判断是否到“4”次 number=0;/到“4”次重新置“0” while(!k1);/判断是否松开按键 if(k2=0) /按键 2 时间调节 delay(10); if(k2=0) num3+; /定时状态与非定时状态切换中间变量自加 “1” if(num3=1) /常规使用切换 tr0=0; /关掉定时器 0 else temp+=10; /定时时间初值每按一次加“10” if(num3=31) /判断是否到“31”次 num3=0; /如果到“31”次重新置“0” if(temp=300) /判断是否到时间最大上限值 temp=0; /如果到重新置“0” while(!k2); /判断是否松开按键 2 3.2.63.2.6 pwmpwm 子程序子程序 pwm 程序是用于控制电机转速的程序。pwm 控制是按一定规律改变驱动脉冲 序列的脉冲宽度,以调节输出量和波形的一种调制方式,它以矩形波呈现,控制 大学毕业设计 3 智能风扇软件设计 占空比来达到调节的目的。占空比越大,速度越大。 pwm 程序的 c 语言程序如下: void pwm(uchar number)/pwm 子程序 uchar i,j;/定义中间变量 if(temp!=0)/如果是打开定时器 1,即启动摇头程序 else tr1=0; /否则,关断定时器 1 if(number=1)i0;i- /脉宽周期为“4” ,前 1/4 为高电平 ts=1; /打开调速电机 keyscan(); /调用按键子程序 if(num3=1) /判断是否是非定时状态 display2(number,t1,t2,t3); /如果是按显示 2 方式显示 else display1(number,fl,mh,ml);/否则,按显示 1 方式显示 for(j=3;j0;j-) /后 3/4 为低电平 ts=0; keyscan(); /关掉调速电机 if(num3=1) display2(number,t1,t2,t3); else display1(number,fl,mh,ml); 大学毕业设计 3 智能风扇软件设计 if(number=2)i0;i-) keyscan(); if(num3=1) display2(number,t1,t2,t3); else display1(number,fl,mh,ml); ts=1; for(j=1;j0;j-) keyscan(); if(num3=1) display2(number,t1,t2,t3); else display1(number,fl,mh,ml); ts=0; if(number=3)i0;i-) 大学毕业设计 3 智能风扇软件设计 keyscan(); if(num3=1) display2(number,t1,t2,t3); else display1(number,fl,mh,ml); ts=1; for(j=5;j0;j-) keyscan(); if(num3=1) display2(number,t1,t2,t3); else display1(number,fl,mh,ml); ts=0; 3.2.73.2.7 定时子程序定时子程序 定时程序是用来实现时间计量功能的程序。它可以正向增加,也可反向增加, 即实现倒计时。 定时程序的 c 语言程序如下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国焊接机器人控制器行业市场前景预测及投资价值评估分析报告
- 2025至2030年中国自由石行业投资前景及策略咨询研究报告
- 2025至2030年中国米黄花花岗岩行业投资前景及策略咨询研究报告
- 2025至2030年中国摩托车制动器碟刹毛坯行业投资前景及策略咨询研究报告
- 服装生产服装厂建设项目可行性研究报告完整版
- 仁爱版九年级英语情境教学计划
- 家居行业节假日销售计划与安排
- 2025年广播电视设备项目立项申请报告
- 矿山废弃地生态修复技术与生态恢复效果研究报告
- 人教部编版小学五年级语文上册语言艺术提升计划
- 《生物医用陶瓷》课件
- 浙江宁波鄞州区市级名校2025届中考生物全真模拟试卷含解析
- 第2课 抗美援朝 课件(共13张)
- 国家电网十八项重大反事故措施
- 院感教学课件
- 【MOOC】温病学-河南中医药大学 中国大学慕课MOOC答案
- 《汽车用改性聚丙烯车门外板》
- 栏杆拆除及更换施工方案
- DB12-T 454.2-2023 公共交通信息导向标志系统设置要求 第2部分:城市轨道交通
- 公务员个人自传3000字【公务员个人自传格式】
- 腐蚀速率实时预测
评论
0/150
提交评论