C语言循环语句实现单片机延时函数
徐雷;孙长智
【摘 要】延时是单片机教学中最常用的概念之一,因此延时函数是单片机控制程序中的一个重要函数。分别利用while循环语句、do-while循环语句、for循环语句以及while和for循环语句组合实现t ms延时点亮一个按照一定频率闪烁的LED灯,以此为例,总结了C语言循环语句实现单片机延时函数的方法,帮助学生在掌握C语言知识的基础上,增强了对单片机延时概念的理解,提高了教学效果。
【期刊名称】《安庆师范学院学报(自然科学版)》 【年(卷),期】2013(000)004 【总页数】4页(P117-120)
【关键词】单片机;C语言;延时函数;循环语句 【作 者】徐雷;孙长智
【作者单位】亳州师范高等专科学校 理化系,安徽 亳州 236800;亳州师范高等专科学校 理化系,安徽 亳州 236800 【正文语种】中 文 【中图分类】基础科学
20131:辛 11 月 第 19 卷第 4 期 安庆师范学院学报(自然科学版)
Nov.2013Vol.19 No.4Journal of Anqing Teachers College( Natural Science Edition) 网络出版时间:20日- 12-19 20:16网络出版地址:
http ://www.cnki.neνkcms/detaiν34.1150.N.20131219.2016.030.html C语言循环语句实现单片机延时函数徐雷,孙长智(毫州师范高等专科学校理化系,安徽毫州 236800)摘要:延时是单片机教学中最常用的概念之一 .因此延时函数是单片机控制程序中的一个重要函数。 分别利用 while 循环语句、do-while 循环语句、“r 循环语句以及 while 和 for 循环语句组合实现 t ms 延时点亮一个按照一定频率闪 烁的 LED 灯,以此为例,总结了 C 语言循环语句实现唯片机延时函数的方法,帮助学生在掌握 C 语言知识的基础上,增强 了对单片机延时概念的理解,提高了数学效果。关键词: 单片机;C 语言 ;延时函数;循环语句中图分类号: TP312文献标识码: A单片机具有体积小可靠性高、功耗低、控制功 能强、扩展灵活、微型化和使用方便、容易产品化 等优点 [ I ] ,因此,在当今社会中被广泛应用于生 产自动化、智能仪器仪表、家用电器、实时监控、医 用设备、计算机网络和通信、航空航天、国防现代 化等领域[ 川 。 在这些应用设备中,延时函数是 控制程序中必不可少的程序之一 。 单片机延时就 是让单片机在一段时间内 做一些空操作,使其在 这段时间内输出端口的信号不发生任何的变化。 单片机课程为了让学生了解单片机最小系统 而设置了一个点亮 LED 灯的学习任务,使其按照 一定的频率闪烁[ 3]。 该任务中闪烁的要求是 LED 灯亮一段时间,接着灭一段时间,接着再亮 一段时间,接着再灭一段时间, 如此循环下去 。 此 任务牵涉到延时的问题,在该任务中延时函数通 常是采用 C 语言中的循环语句实现。 按照 C 语 言程序设计教材中循环语句的分类 ,延时函数分 成四大类,分别为 while 循环语句实现延时、 do - while 循环语句实现延时、for 循环语句实现延时、 for语句和 while 语句配合使用实现延时,其中第 四类中又分成了两类 。 点亮一个 LED 灯,使其按 任务要求的频率闪烁,其电路如图 1 所示:*收稿日期: 2013 -07 -10 文章编号: 1007 -4260(2013)04-0117 -04 图 I LED 灯控制电路图while 循环语旬实现 t ms 延时 while 循环语句的一般格式如下 [4,5 ] :while (表达式)
循环体语句 其执行过程如下: l )求出 while 后括号内表达式的值,若值为“真”(非 0 ),执行 2 );若值为“假”( 0 ),执行 4);2)执行循环体内语句,如果循环体由一个以 上的语句组成,则应用“||”将循环体括起来形成 复合语句;3)转向执行 l ) ; 基金项目:高职 lT 专业校内实训基地建设研究( JDlOIOI ),物电实验实训中心项目和安徽省优秀青年人才基金项目(2012SQRL274 ) 资助。作者简介: 徐霄,男,安徽毫州人,毫州师范高等专科学校理化系教师,专业方向为单片机及 EDA 应用技术。20131:辛 11 月第19卷第 4 期安庆师范学院学报(自然科学版)Nov.2013 Vol.19 No.4 Journal of Anqing Teachers
College( Natural Science Edition) 网络出版时间:20日- 12-19 20:16网络出版地址:
http ://www.cnki.neνkcms/detaiν34.1150.N.20131219.2016.030.html 要:延时是单片机教学中最常用的概念之一 .因此延时函数是单片机控制程序中的一个重要函数。 分别利用while 循环语句、do-while 循环语句、“r 循环语句以及 while 和 for 循环语句组合实现 t ms 延时点亮一个按照一定频率闪烁的 LED 灯,以此为例,总结了 C 语言循环语句实现唯片机延时函数的方法,帮助学生在掌握 C 语言知识的基础上,增强了对单片机延时概念的理解,提高了数学效果。单片机具有体积小可靠性高、功耗低、控制功能强、扩展灵活、微型化和使用方便、容易产品化等优点 [ I ] ,因此,在当今社会中被广泛应用于生产自动化、智能仪器仪表、家用电器、实时监控、医用设备、计算机网络和通信、航空航天、国防现代化等领域[ 川 。 在这些应用设备中,延时函数是控制程序中必不可少的程序之一 。 单片机延时就是让单片机在一段时间内 做一些空操作,使其在这段时间内输出端口的信号不发生任何的变化。单片机课程为了让学生了解单片机最小系统而设置了一个点亮 LED 灯的学习任务,使其按照一定的频率闪烁[ 3]。 该任务中闪烁的要求是LED 灯亮一段时间,接着灭一段时间,接着再亮一段时间,接着再灭
一段时间, 如此循环下去 。 此任务牵涉到延时的问题,在该任务中延时函数通常是采用 C 语言中的循环语句实现。 按照 C 语言程序设计教材中循环语句的分类 ,延时函数分成四大类,分别为 while 循环语句实现延时、 do -while 循环语句实现延时、for 循环语句实现延时、for语句和 while 语句配合使用实现延时,其中第四类中又分成了两类 。 点亮一个 LED 灯,使其按任务要求的频率闪烁,其电路如图 1 所示:图ILED 灯控制电路图while 循环语旬实现 t ms 延时while 循环语句的一般格式如下 [4,5 ] : while (表达式)循环体语句其执行过程如下:l )求出 while 后括号内表达式的值,若值为)执行循环体内语句,如果循环体由一个以上的语句组成,则应用“||”将循环体括起来形成复合语句;•118 •安庆师范学院学报(自然科学版)2013 年4)结束 while 循环,去执行 while 语句后的其)求出 while 后括号内表达式的值,若值为他语句。“真”(非 O ),则重复执行 1) ; 整个电路控制程序如下,其中延时函数延时)若值为“假”( O ),则结束循环,去执行 do量为 0.5 s ,即 LED 灯亮的持续时间为 0.5 s ,灭的 - while 循环语句后的其他语句 。持续时间也为 0.5 s ,其执行流程图如图 2 所示:其执行流程图如图 3 所示:图 2 while 循环语句程序流程图#include< reg5 l.h >shit pOρ = PO吼: voiddelay_tms( unsignedint t) while( t -一) unsi伊1ed int x =120;wbile(x - - ) ;main()while( 1)PO_O=0;delay_tms( 500) ;pO_O= l;delay_tms( 500) ; 2 do -while 循环语旬实现 t ms 延时 do -while 循环语句的一般形式为 [4,5] :do 循环体语句 Iwhile (表达式);I )先执行 do -while 之间的循环体语句:循环语句图 3 do -while 循环语句程序流程图把电路的控制程序中延时函数换成由 do - while 循环语句实现内容如下,同样可以实现任务 的要求。
voiddelay_tms( unsignedint t) do unsignedintx = 120 ;while( x - - ) ;I
while( t 一一);do -while 循环语句的执行过程是先执行循 环体之间的循环语句,
后判断 while ()后括号内的 表达式,导致上面延时函数中数值的设置会略大 于t ms。 3for 循环语旬实现 t m 延时循环语句的一般格式[4.5] : for( 循环初值设定表达式 E 循环终止条件表达式:循环变量更新表达式)循环体 for 循环语句中的 三个表达式之间用“:”隔开,其执行过程为:I )计算循环初值设定表达式 1 的值;)计算循环终止条件表示式的值,若值为 “真”(非的,执行 3 );若值为“假”( O ),执行 6); 3)执行循环体中的语句; 的计算循环变量更新表达式的值; 5)转回 2 )继续执行;6)结束循环,执行 for 循环语句后的其他语• 118 • while 循环语句程序流程图#include< reg5 l.h > shit pOρ = PO吼:voiddelay_tms( unsignedint t) while( t -一)unsi伊1ed int x =120; wbile(x - - ) ; main() while( 1) PO_O=0; delay_tms( 500) ; pO_O= l; delay_tms( 500) ; do -while 循环语旬实现 t ms 延时do -while 循环语句的一般形式为 [4,5] : while (表达式);do -while 循环语句程序流程图把电路的控制程序中延时函数换成由 do -while 循环语句实现内容如下,同样可以实现任务的要求。
voiddelay_tms( unsignedint t) unsignedintx = 120 ; while( x - - ) ; do -while 循环语句的执行过程是先执行循环体之间的循环语句,后判断 while ()后括号内的表达式,导致上面延时函数中数值的设置会略大于tms。3 循环语旬实现 t m 延时循环体循环语句中的 三个表达式之间用“:”隔)计算循环终止条件表示式的值,若值为“真”(非的,执行 3 );若值为“假”( O ),执行 6);)执行循环体中的语句;的计算循环变量更新表达式的值;5第 4 期 句。徐雷,孙长智: C 语言循环语句实现单片机延时函数·119· 其执行流程图如图 4 所示:循环语句 青草草疆环变量 更新表达式的值图 4 for 循环语句程序流程图把电路的控制程序中延时函数换成由 for 循 环语句实现,内容如下,同样可以实现任务的要 求 。voiddelay_tms( unsignedint t) for(; t> 0;t 一-) unsignedintx;for(x =120;x >O;x 一-)4for 语旬和 while 语旬配合使用实现 t ms 延时 利用 for 循
环语句和 while 循环语句配合使用实现延时。 既然两种循环语句配合使用,那么 就要分谁作用于外循环,谁作用于内循环的情况, 即要分两种情况讨论:一种是 for 循环语句为外循 环函数, while 循环语句为内循环函数实现的延 时;另外一种是 for 循环语句为内循环函数, while 循环语句为外循环函数实现的延时。 下面分别来 介绍两种延时函数的实现。4.Ifor 语句为外循环函数, while 语句为内循环函数实现 t ms 延时 voiddelay_tms( unsignedintt) for(; t > 0;t - - )unsignedintx =120;while ( x-- ); 4.2for 循环语句为内循环函数, while 循环语句为外循环函数实现 t ms 延时 voiddelay_tms ( unsignedint t) while( t 一-) unsignedint x =120;for(;x>O;x- -); 5 总结本文根据学生 C 语言程序设计课程中掌握 的知识点,分别用 while 循环语句、 do -while 循环 语句、for 循环语句以及 while 和 for 循环语句组合 实现 t ms 延时点亮一个按照一定频率闪烁的 LED 灯,使学生很快掌握了延时的概念,并能把 巳学的 C 语言知识运用到单片机课程中,取得了 很好的教学效果 。 文中实现的 t ms 的延时是一 个经验值,存在一定的误差,在精确度要求不高的 情况下,可以认为是 t m。 由于 C 程序具有可移 植性,所以本文中提到的延时函数在单片机的其 他应用,如流水灯设计、模拟交通灯设计、多位数 码管显示器设计、点阵显示、调速小车等多种设计 中均可使用 。参考文献:[ I ]赵全利,肖兴达- 单片机原理及应用教程[ M ].北京:机械工业出版社,2007: 16 一 17.[ 2 ]任Hi!富,李学平单片机原理与应用项目化教程[ M ].北京:中国建材工业出版社,2013:2 3 [ 3 ] 陈王平.单片机应用技术(第二版) 武汉·华中科技大学出版社,2012,3.[ 4 ] 斩梳, 邬芝权,李骤,等基于 51 系列单片机的 LED 显示屏开发技术[ M ].北京 :北京航空航天大学出 版社 , 2009:7780.[5 ]谭浩强, C 程序设计(第 3 版) [ M ].北京:清华大学 出版丰士,2005: 114 - 121.期句。· 119· 青草草疆环变量更新表达式的值循环语句程序流程图把电路的控制程序中延时函数换成由 for 循环语句实现,内容如下,
同样可以实现任务的要求 。voiddelay_tms( unsignedint t) for(; t> 0;t 一-)unsignedintx; for(x =120;x >O;x 一-)4 语旬和 while 语旬配合使用实现ms延时利用循环语句和 while 循环语句配合使用实现延时。 既然两种循环语句配合使用,那么就要分谁作用于外循环,谁作用于内循环的情况,即要分两种情况讨论:一种是 for 循环语句为外循环函数, while 循环语句为内循环函数实现的延时;另外一种是 for 循环语句为内循环函数, while循环语句为外循环函数实现的延时。 下面分别来介绍两种延时函数的实现。4.I 语句为外循环函数, while 语句为内循环函数实现 t ms 延时voiddelay_tms( unsignedintt) for(; t > 0;t - - ) unsignedintx =120; while ( x--) ; 4.2 循环语句为内循环函数, while 循环语句为外循环函数实现 t ms 延时voiddelay_tms ( unsignedint t) while( t 一-)unsignedint x =120; for(;x>O;x- -); 总结本文根据学生 C 语言程序设计课程中掌握的知识点,分别用 while 循环语句、 do -while 循环语句、for 循环语句以及 while 和 for 循环语句组合实现 t ms 延时点亮一个按照一定频率闪烁的LED 灯,使学生很快掌握了延时的概念,并能把巳学的 C 语言知识运用到单片机课程中,取得了很好的教学效果 。 文中实现的 t ms 的延时是一个经验值,存在一定的误差,在精确度要求不高的情况下,可以认为是 t m。 由于 C 程序具有可移植性,所以本文中提到的延时函数在单片机的其他应用,如流水灯设计、模拟交通灯设计、多位数码管显示器设计、点阵显示、调速小车等多种设计中均可使用 。[]任Hi!富,李学平单片机原理与应用项目化教程[ M ].北京:]陈王平.单片机应用技术(第二版) 武汉·华中科技大学出版社,2012,3.斩梳, 邬芝权,李骤,等基于 51 系列单片机的 LED 显示屏80.[5]谭浩强, C 程序设计(第 3 版) [ M ].北京:清华大学 出版·120•安庆师范学院学报(自然科学版)Implementationof DelayFunction of Microcontroller UnitbyUsingC LoopStatements XULei,SUNChang-zhi ( Department of chemicalandphysical,Bozhou
Teachers College,Bozhou,Anhui 236800China) Abstract: Delayisone of themostcommonlyusedconceptsinmicroconlrollerleaching,anddelayfunctionisanimportantfunctioninthe controlling programs of microcontroller unit.Take flashingLEDlamps ala constant frequencylighted by t ms delayfunction,whichrealizedusing while,do - while,for,and combination of while and for loop statemen恼,脑 an ex.副nple.the delayfunctionsof microcontroller C loop statements are summarized tohelp students enhance understanding 由e delay concepts of micro controller unitbased ontheC knowledgιThe results showthe teaching methodsareverygood.Key words: micr回ontroller unit,C language,delayfunction,loopstatements 吨’+++吨’吨’吨’吨’吨’毛’吨’吨’吨’吨’传’吨’毛’吨’吨’吨’+吨’吃々吨’吨’吨’吨’吨’吨’吨’吨’吨’吨’吨’吨’吨’吨’毛’喝’吨’吨’吨’喝’(上接第 78 页)3结束语CAE 分析可弥补由于试验条件限制而不能 测量一些数据缺陷,可大大减少试验经费、缩短试 验周期,降低新产品的研发成本,缩短研发周期, 提高车轮产品结构设计的一次合格率。同时实验 分析也表明,利用有限元方法来研究车轮结构的 动力学问题是可行的,通过 CAE 建立公司内部的 强度评价标准,提高试验合格率,具有十分重要的 应用价值。对于涉及轮胎大变形、轮胎与车轮接触问题 以及材料断裂问题的车轮冲击试验,有限元分析 结果与实验结果还有一定差距,有限元分析模型 相对简单,如能把高弹性的轮胎引人车轮结构的 分析模型,利用逆推法或实验测得冲击试验载荷 谱作为动响应分析的输入,将能使分析结果更接 近于实际,从而取消修正系数,还有待于借鉴更新 的CAE 技术做进一步研究。参考文献: [I ]李平化,周华祥,龙华,等铝车轮设计的有限元分析[ J].装备制造技术,2006, (4):“- [ 2 J J.Stearns,T.S.Srivatsan,A.Prak时, et
al.Modelingthemechanicalresponseofanalu 山 mim alloyautomotiverim [ J J.Materials Science andEngineering A ,2004 ’366 :262 -268.[3]崔胜民.杨占春.汽车车轮疲劳寿命预测方法的研究[ J ].饥械强度,2002,24 (4 ):“7 -619.[ 4]HaruyukiKONISHI,AkibumiFUJIWARA,ToshihiroKATSU
RA,etal.ImpactStrengthofAluminumWheel( Influence 。f DiskandRim 阳gidity ontheJWLlmpactStrengthof AluminumWheel)[ C ].日本楼械学会揄文集, l”6 , 62( 7 ) : 2884- 2890.]吴永礼.计算固体力学方法[ M ].北京:科学出版社,2003.[6]马晓建,等机械装备中跌落物冲击信号的恢复[ J ].振动与冲击,2001,20 (1):31-33.[7]K.S.Tan,S.V.Wong,R.S.RadinUm町, et
al.Anexpen mentalstudyof defo,mationbehavwr ofmotorcyclefrontwheel- tyreassembly under frontalimpact loading[ J].lntemational Jour
nalofImpactEngineering,2α施,( 32): 1554 -1572.AnalysisonImpact Testof AutomobileWheelbyCAEandExperimentMethods YANSheng-zan1, TONGShui-guan矿, ZHU Xun-ming3 ( I.Schoolof Computer
andlnfomiation,Anqing Teachers College,Anqing, Anhui 246133 ; 2.Institute of Proce目 Equipment and
ControlEngineering,ZhejiangUniversity,Hangzhou,Zhejiang 310027; 3.Zhejiang Wanfeng Auto Group,Xianchang,Zhejiang 312500,China) Abstract: Aimedat the impact test of aluminum alloy automobile wheels,the maximum st陀ss and 相对简单,如能把高弹性的轮胎引人车轮结构的分析模型,利用逆推法或实验测得冲击试验载荷谱作为动响应分析的输入,将能使分析结果更接近于实际,从而取消修正系数,还有待于借鉴更新的[I]李平化,周华祥,龙华,等铝车轮设计的有限元分析[ J].装[ 2 J J.Stearns,T.S.Srivatsan,A.Prak时, et al.Modelingthe mechanicalresponseofanalu 山 mim alloyautomotiverim [ J J.Materials Science andEngineering A ,2004 ’366 :262 -268.[3[ 4]HaruyukiKONISHI,AkibumiFUJIWARA,ToshihiroKATSURA,etal.ImpactStrengthofAluminumWheel( Influence 。fDiskandRim 阳gidity ontheJWLlmpactStrengthof Aluminum Wheel)[ C ].日本楼械学会揄文集, l”6 , 62( 7 ) : 2884-2890.[7]K.S.Tan,S.V.Wong,R.S.RadinUm町, et al.Anexpenmentalstudyof defo,mationbehavwr ofmotorcyclefrontwheel-tyreassembly under frontalimpact loading[ J].lntemational JournalofImpactEngineering,2α施,( 32): 1554 -1572.AnalysisonImpact Testof AutomobileWheelbyCAEandExperimentMethods YANSheng-zan1, TONGShui-guan矿, ZHU Xun-ming3 Schoolof Computer andlnfomiation,Anqing Teachers College,Anqing, Anhui 246133 ; Institute of Proce目 Equipment and ControlEngineering,ZhejiangUniversity,Hangzhou,Zhejiang 310027; Zhejiang Wanfeng Auto Group,Xianchang,Zhejiang 312500,China) Abstract: Aimedat the impact test of aluminum alloy automobile wheels,the maximum st陀ss and using MATLAB the VonMises stress iscalculatedand the stress respon盹四”e is 由awn.Comparing the calculated VonMises stre脑 and 由e me臼ured one a correctionfactorisproposed to correct the finite element analysis model,and this result canbe usedinthe wheel designin the enterprisetoimprovethe once qualifiedrate of productstructure design.Key words:impacttest,CAEanalysis,dynamicresponse,experimentalstress analysis,dynamicresistancestraingauge 【文献来源】https://www.zhangqiaokeyan.com/academic-journal-cn_journal-anqing-normal-university-natural-science-edition_thesis/0201247727845.html 【相关文献】 1.循环冗余校验在单片机通信中的C语言的实现 [J], 曹爱请,曹洁 2.手把手教你学单片机的C语言程序设计(十)——开关语句和循环语句 [J], 吕超亚 3.单片机C语言的精确延时程序设计 [J], 盛文利 4.单片机的C语言应用程序设计中关于输入输出语句的使用 [J], 张玉馥 5.96系列单片机C语言函数的重入与非重入性 [J], 雷电 因篇幅问题不能全部显示,请点此查看更多更全内容