资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第6讲,完成一个流水灯项目,亚博科技 51单片机开发板28课配套视频教程,流水灯设计,本讲任务:,分别用位输出操作、移位操作、循环移位操作完成3个典,型流水灯的设计。,掌握下列C语言知识点:,宏定义、函数和函数调用、循环结构、while语句、关系,运算和逻辑值,掌握流程图绘制。,完成闪烁灯的设计。,如 何 完 成 函 数 调 用。,亚博科技 51单片机开发板28课配套视频教程,完成一个典型流水灯的设计,程序就是人的思想的反映,编程最重要的就是你的编程思路,有什么样的思路就会编出什么样的程序。,先看上一讲的点一个发光管程序:,1、思路分析。流程图是整理我们思路的好工具,同时也能保证若干年以后你还能轻易看懂自己编写的程序。,2、程序讲解(这个程序是利用了位输出操作)。,宏定义,函数和函数调用,如何熄灭发光管,循环结构,while语句详解、关系运算和逻辑值,如何改变流水灯流动的速度,亚博科技 51单片机开发板28课配套视频教程,亚博科技 51单片机开发板28课配套视频教程,本讲需要学习的新知识,数电、模电方面同上一讲一样,有不熟悉的同学也可回看上一讲的内容,本讲在C语言方面增加了一个新的函数。,延时函数delay,for循环语句,了解一下延时函数,学过汇编你就会知道,每条指令都占一定的时间(或者机,器周期)的,如果你让机器什么都不做,即空指令的话,,机器就会延时,然后你在计算好每次延时到底有多长,外,面套一个循环(或者多重循环),根据你想要的延时时间,即可计算出来循环的次数,延时函数基本上都是这种原,理,它的参数就是用来控制循环次数的。,亚博科技 51单片机开发板28课配套视频教程,怎样编写精确的延时函数,实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。,1 使用定时器/计数器实现精确延时,2 软件延时与时间计算,在很多情况下,定时器/计数器经常被用作其他用途,这时候就只能用软件方法延时。下面介绍几种软件延时的方法。,2.1 短暂延时,2.2 在C51中嵌套汇编程序段实现延时,2.3 使用示波器确定延时时间,2.4 使用反汇编工具计算延时时间,亚博科技 51单片机开发板28课配套视频教程,认识一个For 循环语句,For(表达式1;表达式2;表达式3),语句(内部可为空),执行过程:,1.求解一次表达式1.,2.求解表达式2,若其值为真(非0 即为真),则执行,for中语句。然后执行第3步。否则结束for 语句,直接跳出,不再执行第3步。,3.求解表达式3.,4.跳到第2步重复执行。,亚博科技 51单片机开发板28课配套视频教程,一个简单的延时函数,只需要了解一下,不需要记住,学会调用它就可以了。,/*-,延时函数,含有输入参数 unsigned int t,无返回值,unsigned int 是定义无符号整形变量,其值的范围是,065535,-*/,void Delay(unsigned int t),while(-t);,亚博科技 51单片机开发板28课配套视频教程,了解一下实验板初始化,初始化就是把变量赋为默认值,把控件设为默认状态,把没准备的准备好。但是如果是整个系统初始化那就不一样了。在汇编语言中,为变量分配空间时,初始化过的变量的初值位于可执行文件代码段数据后,会占用一定空间,不必要的初始化会造成磁盘空间的浪费。在C语言等高级语言中,为每一个变量赋初值被视为良好的编程习惯,有助于减少出现Bugs的可能性。因此,是否对不必要的变量初始化依情况而定。,亚博科技 51单片机开发板28课配套视频教程,实验板初始化函数,只需要了解一下,不需要记住,学会调用它就可以了。,bst-v51.h,bst-v51.c,亚博科技 51单片机开发板28课配套视频教程,宏定义义,#号是是预处处理指指令,用#开头头。,#defineON(新新的名名称)1(原来来的名名称),作用:在程程序书书写时时可用用新的的名称称代替替原来来的名名称书书写,以达达到简简化或或直观观的效效果。编译译器在在预处处理的的时候候,自自动将将新的的名称称还原原为原原来的的名称称。,书书写位位置:源程程序开开头,函数数的外外面,亚博科科技51单片片机开开发板板28课配配套视视频教教程,3个流流水灯灯程序序框图图,亚博科科技51单片片机开开发板板28课配配套视视频教教程,开始详详细讲讲解流流水灯灯项目目开发发,设计目目的,从从实际际工程程应用用出发发,在在理论论和实实践上上掌握握流水水灯系系统的的基本本组成成,工工作原原理。对设设计流流水灯灯有一一个完完整的的概念念,使使设计计出来来的流流水灯灯达到到本设设计任任务书书的技技术要要求。,亚博科科技51单片片机开开发板板28课配配套视视频教教程,8位流流水灯灯开发发过程程,亚博科科技51单片片机开开发板板28课配配套视视频教教程,一一、任任务描描述:这次次开发发的目目的是是什么么(如要要实现现什么么功能能,应应用在在什么么地方方,对对性能能、功功耗、实时时性等等有什什么要要求),任任何一一个应应用单单片机机开发发的产产品,从客客户提提出要要求到到完成成方案案设计计,再再到产产品样样机的的调试试,直直至正正式投投入试试运行行,这这个过过程称称为单单片机机应用用系统统得开开发。单片片机应应用系系统开开发过过程所所用的的设备备统称称为开开发工工具。由于于单片片机的的软件件资源源有限限,并并且自自身没没有调调试能能力,因此此必须须配备备相应应的开开发工工具来来排除除开发发过程程中的的软件件错误误,生生成目目标程程序。,本本任务务通过过左移移亮灯灯电路路来讲讲解单单片机机系统统开发发设计计时电电路原原理图图的设设计方方法和和步骤骤。通通过本本任务务的学学习,掌握握单片片机应应用电电路和和程序序的开开发过过程。,二、任任务分分析,根根据这这次开开发的的目的的展开开分析析,要要用到到什么么模块块,而而且每每个模模块可可能会会用许许多选选择,这就就要根根据价价钱,性能能,功功耗,实时时性等等方面面的要要求来来选择择了,8只发发光二二极管管亮灯灯数据据左移移一位位。首首先先对单单片机机工作作条件件(电电源、时钟钟和复复位电电路)进行行设计计,然然后根根据设设计任任务要要求对对I/O接接口电电路进进行设设计;本任任务学学习用用DZ-80C52集成成的串串口模模块烧烧写器器器进进行单单片机机程序序下载载。,亚博博科科技技51单单片片机机开开发发板板28课课配配套套视视频频教教程程,三、任任务务演演示示,分分配配任任务务,因因为为,有有些些开开发发项项目目可可能能不不是是一一个个人人能能够够完完成成的的,是是要要一一个个团团队队来来做做,那那么么就就要要根根据据每每个个人人的的特特点点来来分分配配任任务务了了。如如,硬硬件件,软软件件,算算法法,调调度度,测测试试,界界面面,采采购购等等。,亚博博科科技技51单单片片机机开开发发板板28课课配配套套视视频频教教程程,四、项项目目开开发发相相关关知知识识,(一一)单单片片机机产产品品开开发发流流程程,1、项项目目评评估估:出出初初步步技技术术开开发发方方案案,据据此此出出预预算算,包包括括可可能能的的开开发发成成本本、样样机机成成本本、开开发发耗耗时时、样样机机制制造造耗耗时时、利利润润空空间间等等,2、项项目目实实施施:,(1)设设计计电电原原理理图图,(2)设设计计印印刷刷电电路路板板(PCB)图图,(3)把把PCB图图发发往往制制版版厂厂做做板板,(4)定定购购开开发发系系统统和和元元件件,(5)装装配配样样机机:PCB板板拿拿到到后后开开始始样样机机装装配配,设设计计中中的的错错漏漏会会在在装装配配过过程程开开始始显显现现,尽尽量量去去补补救救。,亚博博科科技技51单单片片机机开开发发板板28课课配配套套视视频频教教程程,样机机调调试试,(6)样样机机调调试试:这这个个过过程程需需要要用用到到电电烙烙铁铁、刻刻刀刀、不不同同参参数数的的元元件件、各各种种调调试试和和仿仿真真软软件件、样样机机的的模模拟拟工工作作环环境境等等。(7)整整理理数数据据:研研发发过过程程中中得得到到的的重重要要数数据据记记录录保保存存下下来来,比比如如更更新新电电原原理理图图里里的的元元件件参参数数、PCB元元件件库库里里的的三三维维模模型型,还还要要记记录录暴暴露露出出来来的的设设计计上上的的失失误误、分分析析失失误误的的原原因因、采采用用的的补补救救方方案案等等等等。,亚博博科科技技51单单片片机机开开发发板板28课课配配套套视视频频教教程程,完善善样样版版机机,(8)如如果果项项目目进进入入生生产产阶阶段段或或确确有有需需要要,可可以以根根据据修修正正后后的的技技术术方方案案按按以以上上各各个个步步骤骤重重做做一一台台完完善善的的V1.1版版样样机机。,(9)编编写写设设备备文文档档:包包括括编编写写产产品品说说明明书书、拍拍摄摄外外观观图图片片等等。,(10)沟沟通通和和修修改改,在在开开发发过过程程中中,不不能能完完全全的的根根据据任任务务来来区区分分,团团队队之之间间要要有有适适当当的的沟沟通通,根根据据需需要要来来对对计计划划做做相相应应的的修修改改,如如:中中断断的的分分配配,GPIO的的分分配配,算算法法的的复复杂杂性性,接接口口的的定定义义之之类类的的。,亚博科科技51单片片机开开发板板28课配配套视视频教教程,测试和和更改改,11)测试试和更更改,最终终,各各个模模块是是要组组合起起来的的,这这时可可能会会碰到到许多多问题题。如如,代代码太太大而而内存存不够够,时时效响响应不不够灵灵敏,代码码执行行构成成中出出现死死循环环,模模块优优先级级的选选择出出现不不妥,临界界点没没有纠纠错功功能等等,这这就要要不断断的整整合,反复复的更更改,调试试,可可能会会出现现许多多方案案,再再根据据实际际情况况最最后定定夺,小小提示示:开开发过过程中中做好好备案案,代代码写写好注注释,如果果允许许,不不同模模块、不同同系统统层次次的接接口分分别来来写,合理理分配配资源源。,亚博科科技51单片片机开开发板板28课配配套视视频教教程,一个完完整实实验源源码,/*-,名名称:IO口高高低电电平控控制,内内容:左移移,直直至LED全部部点亮亮,左左移符符号,-*/,#include/包包含头头文件件,一一般情情况不不需要要改动动,头头文件件包含含特殊殊功能能寄存存器的的定义义,voidDelay(unsignedintt);/函函数数声明明,/*-,主主函数数,-*/,voidmain(void),unsignedchari;/定定义一一个无无符号号字符符型局局部变变量i取取值值范围围0255,Delay(50000);,P1=0 xfe;/赋赋初始始值,for(i=0;i8;i+)/加加入for循循环,表明明for循循环大大括号号中的的程序序循环环执行行8次次,Delay(50000);,P1=等于于(注意:与与赋值符=,完全不同!)!=不不等于,亚博科技51单片机机开发板28课配套视频频教程,如何改变流水水灯流动的速速度,1、改变变调用延时函函数的实参。,2、更换换不同频率的的晶振。(复复习以前讲过过的时钟的快快慢决定了程程序运行速度度),亚博科技51单片机机开发板28课配套视频频教程,左移和右移,位运算:按位位对变量进行行运算。,左移和右移属属于位运算。,格式:P12;/*右移二位位*/,一般我们比较较多的是对8位无符号数数进行移位操操作,移出的的数丢弃,空空位自动补0。,注意点:位运运算不改变参参与运算的变变量的值,如如果希望改变变参与运算的的变量的值,应利用相应应的赋值操作作!,用循环左移编编写第二个流流水灯程序。例程,亚博科技51单片机机开发板28课配套视频频教程,循环左移和循循环右移,C51没有专专
展开阅读全文