×

家用风扇控制器的设计与实现

消耗积分:10 | 格式:rar | 大小:333 | 2009-05-03

自我清欢

分享资料个

家用风扇控制器的设计与实现
一、实验目的
 1.实现对步进电机的控制来模拟风扇控制器。
 2.掌握微机硬件和软件的综合设计方法。

二、实验内容与要求
设计并制作一个家用风扇控制器。
 1.用六个发光二极管,指示风速强、中、弱,类型为睡眠、自然和正常。
2.处于主菜单状态时,有下列选项:
(1) 直接默认状态运行,默认状态为:风速-“弱”,类型-“正常”。
(2) 进入风速子菜单界面,修改风速。
(3) 进入类型子菜单界面,修改风的类型。
4. 风速的弱、中、强对应于电扇的转动由慢到快。
5. 类型的不同选择,分别为:
(1) 正常 电扇连续运转;
(2) 自然 电扇模拟自然风,即转4s,停8s;
(3) 睡眠 电扇慢转,产生轻柔的微风,运转 8s,停转8s;
6. 按照风速与类型的设置输出相应的控制信号。

三、实验报告要求
 1.设计目的和内容
 2.总体设计
 3.硬件设计:原理图(接线图)及简要说明
 4.软件设计框图及程序清单
5.设计结果和体会(包括遇到的问题及解决的方法)

四、总体设计
 1.8253定时/计数器通道0定时控制步进速度,通道2和3定时电机的转停时间,8255的PA0控制步进电机的转停。
 2.8255 的C口输出控制脉冲,经74452威廉希尔官方网站 驱动威廉希尔官方网站 。B口输出控制LED显示风扇当前的状态。

五、硬件设计
 由于本设计主要是用步进电机的控制来模拟家用风扇控制器,所以威廉希尔官方网站 是在步进电机控制系统的威廉希尔官方网站 作了一些修改。除利用了PC机本身资源外(如中断资源),还利用了平台上的8253计数/定时器、8255并行接口单元,LED指示灯威廉希尔官方网站 等,再加上电机的驱动威廉希尔官方网站 ,便构成以风扇电机控制威廉希尔官方网站 。硬件原理图如图1:
 
                              图1 硬件原理图

六、软件设计
本设计通过软件编程使8253通道0输出定时信号申请中断,CPU发出命令由8255的下C口输出脉宽信号来控制步进电机的走步。8253的定时时间决定了电机转动的快慢。电机的转动和停止则是通过8255的PA0端子输出高低电平来继续或暂停8253通道0的计数从而控制中断申请来实现的。用8253的通道1和2一起来定时控制电机转动和停止时间的长短。
1.设计思路
控制系统分四个功能模块,分别是风速设置、类型设置、默认状态运行、退出系统,在前四个功能块中都设置了ESC键来取消或暂停执行当前操作。程序中同时提供三个操作界面,一个主菜单和两个子菜单界面,进行可视控制。
(1)风速设置
风速即为电机转速设置,风速分为强、中、弱三种,对应不同的电机转速。根据赋给计数器的计数初值,我们可以计算出步进电机各相脉宽信号的频率和电机转速,也可以反过来根据对电机转速要求,计算并调整计算初值。
这里采用的是8253的0号计数器和方波产生方式,输入时钟为f=46875hz,设计数初值为n,要求转速为0.25转/秒,对四相步进电机而言即为5步/秒,则有:
f / n = 5
n=f/5=46875/5=9375
反过来,当计数器初值确定时,决定了电机的转速,如计数初值为625时,有电机转速为1步每秒(本设计中的慢风速);当计数初值为125时,电机转速为375步每秒(本设计中的快快速)。具体设置初值及风速见表1。
表1
风速 步速 转速 计数初值
慢 75 3.75 625
中 125 6.25 375
快 375 18.75 125

(2)风的类型设置
风的类型有:正常、自然、睡眠三种。
风的类型的不同选择,用FLAG0来记录状态:
a) 正常  电扇连续运转。FLAG0=2
b) 自然  电扇模拟自然风,即转4s,停8s。FLAG0=0
c) 睡眠  电扇慢转,产生轻柔的微风,运转 8s,停转8s。FLAG0=1
电机的运转是通过让8255的A0口输出高电平到8253的GATE0使其0号计数器继续工作,并开放中断进入循环等待中断状态。A0口为低电平使8253的0号计数器暂停计数,则无法产生中断信号,电机停止转动。
电扇的运转和停转的时间是由8253的通道1和通道2两个计数器一起来定时的。通道1的输入时钟为f=46875hz,设计数初值为46875,则会产生1s的定时。通道1的OUT1作为通道2的输入脉冲,输入的计数初值为N,则定时的时间为N秒。我们需要的是定时4s和8s,定时中断到修改8255的A0口的输出的电平和下次计数的初值就可以实现风的不同类型。风的类型为正常时,不用启用计数器2产生中断,让计数器0一直运行。睡眠时,通道2的计数初值一直为8,不用修改。如果是自然就得修改了。
(3)中断子程序1
在由8253定时器通道0产生的中断子程序1中,将值为11001100B的NUM内存单元循环左移或右移一位,通过8255的下C口输出低四位,控制步进电机的相序变化,从而使电机连续转动。
(4)中断子程序2
8253定时器通道2产生的中断子程序2中,修改输入到8255的A0口的电平值,控制电机的转停,令NUM1=0,每次求反,输出到8255的A口。根据当前选择的风的类型FLAG0以及当前所处的状态,修改通道2的计数初值。
(5)菜单界面设置
利用DOS下的BIOS功能调用,设计出彩色的形象而又易于操作的界面,详细设计特点请参考课本上相关介绍。
使用类型10H中断,可以实现对屏幕的完整的控制。常用的彩色文本功能的参数设置见表2。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(1)
发评论
txws2011 2011-09-25
0 回复 举报
内容丰富,感谢分享~ 收起回复

下载排行榜

全部1条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//m.obk20.com/www/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'家用风扇控制器的设计与实现',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"https://www.elecfans.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);