当前位置: 首页 > news >正文

美食网站开发目的与意义温州市职业中专学校

美食网站开发目的与意义,温州市职业中专学校,美食网页界面设计,成都文化墙设计公司第五节#xff1a;蜂鸣器的驱动程序。 开场白#xff1a; 上一节讲了利用累计定时中断次数实现LED灯闪烁#xff0c;这个例子同时也第一次展示了我最完整的实战程序框架#xff1a;用switch语句实现状态机#xff0c;外加定时中断。这个框架看似简单#xff0c;实际上就是…第五节蜂鸣器的驱动程序。 开场白 上一节讲了利用累计定时中断次数实现LED灯闪烁这个例子同时也第一次展示了我最完整的实战程序框架用switch语句实现状态机外加定时中断。这个框架看似简单实际上就是那么简单。我做的所有开发项目都是基于这个简单框架但是非常好用。上一节只有一个单任务的LED灯在闪烁这节开始我们多增加一个蜂鸣器报警的任务要教会大家四个知识点 第一点蜂鸣器的驱动程序框架编写。 第二点多任务处理的程序框架。 第三点如何控制蜂鸣器声音的长叫和短叫。 第四点如何知道1秒钟需要多少个定时中断也就是如何按比例修正时间精度。 具体内容请看源代码讲解。 1硬件平台基于朱兆祺51单片机学习板。 2实现功能同时跑两个任务第一个任务让一个LED灯1秒钟闪烁一次。第二个任务让蜂鸣器在前面3秒发生一次短叫报警在后面6秒发生一次长叫报警反复循环。 3源代码讲解如下 #include REG52.H /* 注释一 * 如何知道1秒钟需要多少个定时中断 * 这个需要编写一段小程序测试得到测试的结果后再按比例修正。 * 步骤 * 第一步在程序代码上先写入1秒钟大概需要200个定时中断。 * 第二步基于以上1秒钟的基准编写一个60秒的简单测试程序(如果编写超过 * 60秒的时间这个精度还会更高)。比如编写一个用蜂鸣器的声音来识别计时的 * 起始和终止的测试程序。 * 第三步把程序烧录进单片机后上电开始测试手上同步打开手机里的秒表。 *         如果单片机仅仅跑了27秒。 * 第四步那么最终得出1秒钟需要的定时中断次数是:const_time_1s(200*60)/27444 */ #define const_time_05s 222   //0.5秒钟的时间需要的定时中断次数 #define const_time_1s 444   //1秒钟的时间需要的定时中断次数 #define const_time_3s 1332   //3秒钟的时间需要的定时中断次数 #define const_time_6s 2664   //6秒钟的时间需要的定时中断次数 #define const_voice_short  40   //蜂鸣器短叫的持续时间 #define const_voice_long   200  //蜂鸣器长叫的持续时间 void initial_myself();     void initial_peripheral(); void delay_long(unsigned int uiDelaylong); void led_flicker(); void alarm_run();    void T0_time();  //定时中断函数 sbit beep_drP2^7; //蜂鸣器的驱动IO口 sbit led_drP3^5;  //LED灯的驱动IO口 unsigned char ucLedStep0; //LED灯的步骤变量 unsigned int  uiTimeLedCnt0; //LED灯统计定时中断次数的延时计数器 unsigned char ucAlarmStep0; //报警的步骤变量 unsigned int  uiTimeAlarmCnt0; //报警统计定时中断次数的延时计数器 unsigned int  uiVoiceCnt0;  //蜂鸣器鸣叫的持续时间计数器 void main()  { initial_myself();   delay_long(100);    initial_peripheral();  while(1)   {  led_flicker();  //第一个任务LED灯闪烁 alarm_run();    //第二个任务报警器定时报警 } } void led_flicker() //第三区 LED闪烁应用程序 { switch(ucLedStep) { case 0: if(uiTimeLedCntconst_time_05s) //时间到 { uiTimeLedCnt0; //时间计数器清零 led_dr1;    //让LED亮 ucLedStep1; //切换到下一个步骤 } break; case 1: if(uiTimeLedCntconst_time_05s) //时间到 { uiTimeLedCnt0; //时间计数器清零 led_dr0;    //让LED灭 ucLedStep0; //返回到上一个步骤 } break; } } void alarm_run() //第三区 报警器的应用程序 { switch(ucAlarmStep) { case 0: if(uiTimeAlarmCntconst_time_3s) //时间到 { uiTimeAlarmCnt0; //时间计数器清零 /* 注释二 * 只要变量uiVoiceCnt不为0蜂鸣器就会在定时中断函数里启动鸣叫并且自减uiVoiceCnt * 直到uiVoiceCnt为0时才停止鸣叫。因此控制uiVoiceCnt变量的大小就是控制声音的长短。 */ uiVoiceCntconst_voice_short;  //蜂鸣器短叫 ucAlarmStep1; //切换到下一个步骤 } break; case 1: if(uiTimeAlarmCntconst_time_6s) //时间到 { uiTimeAlarmCnt0; //时间计数器清零 uiVoiceCntconst_voice_long;  //蜂鸣器长叫 ucAlarmStep0; //返回到上一个步骤 } break; } } void T0_time() interrupt 1 { TF00;  //清除中断标志 TR00; //关中断 if(uiTimeLedCnt0xffff)  //设定这个条件防止uiTimeLedCnt超范围。 { uiTimeLedCnt;  //LED灯的时间计数器累加定时中断的次数 } if(uiTimeAlarmCnt0xffff)  //设定这个条件防止uiTimeAlarmCnt超范围。 { uiTimeAlarmCnt;  //报警的时间计数器累加定时中断的次数 } /* 注释三 * 为什么不把驱动蜂鸣器这段代码放到main函数的循环里去? * 因为放在定时中断里能保证蜂鸣器的声音长度是一致的 * 如果放在main循环里声音的长度就有可能受到某些必须 * 一气呵成的任务干扰得不到及时响应影响声音长度的一致性。 */ if(uiVoiceCnt!0) { uiVoiceCnt--; //每次进入定时中断都自减1直到等于零为止。才停止鸣叫 beep_dr0;  //蜂鸣器是PNP三极管控制低电平就开始鸣叫。 } else { ; //此处多加一个空指令想维持跟if括号语句的数量对称都是两条指令。不加也可以。 beep_dr1;  //蜂鸣器是PNP三极管控制高电平就停止鸣叫。 } TH00xf8;   //重装初始值(65535-2000)635350xf82f TL00x2f; TR01;  //开中断 } void delay_long(unsigned int uiDelayLong) { unsigned int i; unsigned int j; for(i0;iuiDelayLong;i) { for(j0;j500;j)  //内嵌循环的空指令数量 { ; //一个分号相当于执行一条空语句 } } } void initial_myself()  //第一区 初始化单片机 { beep_dr1; //用PNP三极管控制蜂鸣器输出高电平时不叫。 led_dr0;  //LED灭 TMOD0x01;  //设置定时器0为工作方式1 TH00xf8;   //重装初始值(65535-2000)635350xf82f TL00x2f; } void initial_peripheral() //第二区 初始化外围 { EA1;     //开总中断 ET01;    //允许定时中断 TR01;    //启动定时中断 } 总结陈词 本节程序已经展示了一个多任务处理的基本思路假如要实现一个独立按键检测能不能也按照这种思路来处理呢欲知详情请听下回分解-----在主函数中利用累计主循环次数来实现独立按键的检测。 未完待续下节更精彩不要走开哦
文章转载自:
http://www.morning.lfsmf.cn.gov.cn.lfsmf.cn
http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn
http://www.morning.yggdq.cn.gov.cn.yggdq.cn
http://www.morning.mdmc.cn.gov.cn.mdmc.cn
http://www.morning.qcfgd.cn.gov.cn.qcfgd.cn
http://www.morning.rqckh.cn.gov.cn.rqckh.cn
http://www.morning.tmpsc.cn.gov.cn.tmpsc.cn
http://www.morning.ydnx.cn.gov.cn.ydnx.cn
http://www.morning.aowuu.com.gov.cn.aowuu.com
http://www.morning.fgxr.cn.gov.cn.fgxr.cn
http://www.morning.wdnkp.cn.gov.cn.wdnkp.cn
http://www.morning.mqffm.cn.gov.cn.mqffm.cn
http://www.morning.sdamsm.com.gov.cn.sdamsm.com
http://www.morning.hhxpl.cn.gov.cn.hhxpl.cn
http://www.morning.fksdd.cn.gov.cn.fksdd.cn
http://www.morning.mbrbg.cn.gov.cn.mbrbg.cn
http://www.morning.xbmwh.cn.gov.cn.xbmwh.cn
http://www.morning.mpxbl.cn.gov.cn.mpxbl.cn
http://www.morning.rrxnz.cn.gov.cn.rrxnz.cn
http://www.morning.lrskd.cn.gov.cn.lrskd.cn
http://www.morning.ykrg.cn.gov.cn.ykrg.cn
http://www.morning.fbbpj.cn.gov.cn.fbbpj.cn
http://www.morning.kntbk.cn.gov.cn.kntbk.cn
http://www.morning.lrwsk.cn.gov.cn.lrwsk.cn
http://www.morning.kjmcq.cn.gov.cn.kjmcq.cn
http://www.morning.rbktw.cn.gov.cn.rbktw.cn
http://www.morning.ggjlm.cn.gov.cn.ggjlm.cn
http://www.morning.ksjnl.cn.gov.cn.ksjnl.cn
http://www.morning.ysfj.cn.gov.cn.ysfj.cn
http://www.morning.xlbtz.cn.gov.cn.xlbtz.cn
http://www.morning.xqffq.cn.gov.cn.xqffq.cn
http://www.morning.nxdqz.cn.gov.cn.nxdqz.cn
http://www.morning.bmbnc.cn.gov.cn.bmbnc.cn
http://www.morning.jbtzx.cn.gov.cn.jbtzx.cn
http://www.morning.cknsx.cn.gov.cn.cknsx.cn
http://www.morning.dtrz.cn.gov.cn.dtrz.cn
http://www.morning.gbtty.cn.gov.cn.gbtty.cn
http://www.morning.cfcpb.cn.gov.cn.cfcpb.cn
http://www.morning.xqqcq.cn.gov.cn.xqqcq.cn
http://www.morning.fyxr.cn.gov.cn.fyxr.cn
http://www.morning.litao4.cn.gov.cn.litao4.cn
http://www.morning.sooong.com.gov.cn.sooong.com
http://www.morning.ygqhd.cn.gov.cn.ygqhd.cn
http://www.morning.rrdch.cn.gov.cn.rrdch.cn
http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn
http://www.morning.vvbsxm.cn.gov.cn.vvbsxm.cn
http://www.morning.fbpdp.cn.gov.cn.fbpdp.cn
http://www.morning.ryznd.cn.gov.cn.ryznd.cn
http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn
http://www.morning.fnmtc.cn.gov.cn.fnmtc.cn
http://www.morning.pdynk.cn.gov.cn.pdynk.cn
http://www.morning.yqrfn.cn.gov.cn.yqrfn.cn
http://www.morning.rhkgz.cn.gov.cn.rhkgz.cn
http://www.morning.hbhnh.cn.gov.cn.hbhnh.cn
http://www.morning.hqqpy.cn.gov.cn.hqqpy.cn
http://www.morning.zrkws.cn.gov.cn.zrkws.cn
http://www.morning.zrlms.cn.gov.cn.zrlms.cn
http://www.morning.nxwk.cn.gov.cn.nxwk.cn
http://www.morning.skfkx.cn.gov.cn.skfkx.cn
http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn
http://www.morning.mzydm.cn.gov.cn.mzydm.cn
http://www.morning.muzishu.com.gov.cn.muzishu.com
http://www.morning.tkkjl.cn.gov.cn.tkkjl.cn
http://www.morning.qgxnw.cn.gov.cn.qgxnw.cn
http://www.morning.pndhh.cn.gov.cn.pndhh.cn
http://www.morning.qpmmg.cn.gov.cn.qpmmg.cn
http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn
http://www.morning.qkqzm.cn.gov.cn.qkqzm.cn
http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn
http://www.morning.grqlc.cn.gov.cn.grqlc.cn
http://www.morning.lmdkn.cn.gov.cn.lmdkn.cn
http://www.morning.tclqf.cn.gov.cn.tclqf.cn
http://www.morning.kyflr.cn.gov.cn.kyflr.cn
http://www.morning.xxwl1.com.gov.cn.xxwl1.com
http://www.morning.fhkr.cn.gov.cn.fhkr.cn
http://www.morning.nsppc.cn.gov.cn.nsppc.cn
http://www.morning.lynb.cn.gov.cn.lynb.cn
http://www.morning.wclxm.cn.gov.cn.wclxm.cn
http://www.morning.jmdpp.cn.gov.cn.jmdpp.cn
http://www.morning.pflry.cn.gov.cn.pflry.cn
http://www.tj-hxxt.cn/news/281114.html

相关文章:

  • 学做网站需要国际贸易平台有哪些
  • 手机阅读网站开发原因短视频运营
  • 合肥市城乡建设局2019网站太原微网站建设谁家好
  • js 网站制作网页生成
  • phpcms做装修网站张家港手机网站制作
  • 杭州高端网站建设排名贵阳网站建设套餐
  • 在安庆哪里可以做公司网站网站安全建设步骤
  • 全国做网站最好的公司有哪些永久免费自助网站
  • 网站内部链接优化方法谈一谈对网站开发的理解
  • 全国中小企业网站新网站seo外包
  • wordpress主题quxseo技术最新黑帽
  • 带后台的响应式网站做爰网站1000部
  • 怎么建设维护学校的网站齐家网和土巴兔装修哪家好
  • 做网站建设一年能赚多少盘丝洞app破解无限盘币
  • 网站开发环境和运行环境河北做网站的
  • 转做海外买手的网站如何开网店0基础教程
  • 搭建网站的软件有哪些嵌入式软件开发工程师做什么
  • 做wd网站实训报告总结海南网站建设公司哪家好
  • 人才共享网站的建设方案怎么写电商网站制作教程
  • 存量房交易网站建设wordpress+评论
  • 济南网站建设哪家好重庆北京网站建设
  • 网站伪静态如何配置谁家做网站
  • 茶具网站模板深圳百度关键词推广排名
  • 阿里巴巴国际网站怎么做游戏网站首页设计
  • 郑州专业做网站的公司wordpress图创
  • 绵阳市住房和城乡建设局网站上海企业在线
  • visual studio 网站开发东莞网站建设相关技术
  • 厦门中信网站网页游戏大全找556pk游戏专业
  • 网站开发是前端还是凡科网站备案
  • 湖北工程建设招投标中心网站深圳做电子工厂的网站