您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 单片机应用 学习情况1 模拟广告流水灯的制作与调试
yiher学习情况1模拟广告流水灯的制作与调试1.1发光LED灯任务描述使用单片机驱动发光二极管发光。要求:1.按照如图所示硬件电路,在单片机最小系统基础上焊接制作发光二极管电路。2.按要求输入程序并编译生成目标文件,下载到单片机是P1.0所接发光二极管亮。目标:1.学会使用KeilC51编写第一个C语言源程序,并编译声场目标文件。2.学会使用AVRfighter下载软件将目标文件下载到单片机中。3.学或使用程序控制单片机引脚的高、低电平。4.通过观察程序执行的结果,理解控制单片机引脚输出高、低电平对外围电路所起到的作用。yiher电路制作单片机驱动发光二极管发光硬件电路原理图yiher相关咨询一、任务分析:发光二极管具有单向导电性。单片机的P1.0接到发光二极管D1的阴极,发光二极管D1的阳极通过排阻接上电源。当单片机的P1.0输出低电平,发光二极管的阳极电位高于阴极电位,就会导通发亮;否则,当单片机的P1.0输出高电平,发光二极管就会截止,不亮。由于单片机P1口德8个引脚可以同时输出不同的电平,所以可以控制不同的发光二极管D1D8同时亮灭。yiher二、相关知识介绍1.库函数文件reg51.h可以帮助我们使用C51芯片内部资源。2.我们可以通过sbit定义位变量,表示单片机的一个位地址或者一个二进制的位变量,其值只能是0或者1,变量的标识符命令式可以使用字母、数字和下环线,对大小写的书写严格区分,不能与关键词同名,例如不能使用sbitP1ˆ0=P1.0。3.C程序由函数构成,其中main()为程序的主函数,是每个程序执行的起始点。4.C语言程序的书写格式:一行可以写几个语句,一个语句也可以写在多行上;每条语句的最后必须有一个分号“;”表示语句的结束。5.使用注释可以提高程序可读性,是编程人员的良好习惯。例如使用/**/进行多行注释,或者使用//对当前行注释。6.在程序的书写上,我们多用TAB键将每一部分的语句对其,使编写的程序呈现锯齿形,这样可以帮助我们分清不同的程序体,便于调试。7.while(1);为一个死循环,可以理解为程序将在此处进入空闲和等待状态。yiher编程调试yiher拓展训练1.编写程序使单片机P1.2所接发光二极管D3亮。提示:要使P1.2所接发光二极管亮,则P1.2输出_______电平?其他引脚输出_______电平?编写程序:2.编写程序使单片机P1所接所有发光二极管都亮。提示:要使P1所接发光二极管亮,则P1全都输出_______电平,如果要一次性赋值,用C语言程序如何实现?完成情况:()3.编写程序使单片机P1所接发光二极管D1,D3,D5,D7一起亮。提示:要使P1所接发光二极管D1D3D5D7同时亮,则_____________输出低电平,P1的状态用二进制表示为:____________,用C语言程序如何实现?yiher总结与评价一、自我总结你在整个任务完成过程中出现了哪些问题?你是如何解决的?你还有什么问题不能解决?有什么体会?二、评价组长评价:日期:教师评价日期:yiher1.2闪烁LED灯任务描述使用单片机驱动发光二极管闪烁。要求:1.按要求输入程序并编译生成目标文件,下载到单片机使P1.0所接发光二极管D1闪烁发光,每一秒闪烁一次。2.完成拓展训练任务,使P1口指定发光二极管闪烁发光,并通过修改程序,提高或者降低发光二极管闪烁速度。目标:3.熟练使用KeilC51编写C语言源程序,并编译生成目标文件,学会使用KeilC51调试程序。4.数量掌握AVRfighter下载软件的使用及使用其自动更新功能提高效率。5.学会编写程序实现延时和进行延时长短控制。yiher电路制作单片机驱动发光二极管闪烁硬件电路原理图yiher相关咨询一、任务分析:单片机的指令的执行的时间是很短,数量一般都是us级。当我们要求发光二极管每一秒闪烁1次,也就是发光二极管亮0.5s,灭0.5s,不断循环。实际操作中我们一般采取软件延时的方法。通过程序使发光二极管亮,然后延时0.5s;再是发光二极管灭,再延时0.5s,然后不断循环这个过程。二、相关知识介绍1.使用字符P1可以直接调用单片机特殊功能寄存器(SFR)的P1端口物理地址,从而操作P1端口,对其赋值,就可以控制其每一个引脚输出的电平高低。2.KeilC51程序使由函数构成,任何函数必须先定义,再使用。3.我们可以使用unsignedcharint*定义一个无符号整型变量,表示一个16bit的二进制数,其数值范围为0~65535其命令遵循标识符命令原则。同理,使用unsignedchar定义一个无符号字符型变量,表示一个8bit的二进制数,其数值范围为0~225。变量如果定义在函数的外面,成为全局变量;变量如果定义在函数体内,则只能在函数内部使用。yiher4.while(表达式){循环体},表达当表达式的值为真(非0)时,就执行循环体,表达式为真就一直执行循环体,其特点使先判断,在确定是否执行。while(1){},表示程序将循环执行{}中的语句体。类似的语句体还有do{循环体}while(表达式),其特点使先执行循环体,在判断表达式是否为真,以确定是否继续执行循环体。5.for(表达式A;表达式B;表达式C;){循环体},该语句的执行过程为:(1)求解表达式A;(2)判断表达式B,其值为假时退出该语句;其值为真时执行循环体,然后继续执行第(3)步。(3)求解表达式C;(4)返回第(2)步6.延时程序可以用一下子函数来表示,可以是一个固定延时时间的函数,例如delay();或者是一个通过参数控制延时时间的函数,例如delay(unsignedintm)通常单片机使用的石英晶振振荡器频率为12MHz,其对应的机器周期为1us,for(;m0;m--){语句};这条语句将把{}内的语句循环执行m次。yiher编程调试点亮D1延时0.5s熄灭D1延时0.5s开始yiher拓展训练1.编写程序使P1口所接所有发光二极管每1秒闪烁2次。提示:要实现要求,则P1所接发光二极管每____________秒就要闪烁一次,即亮灭一次。则P1输出低电平_____________秒,再输出高电平___________秒,如此循环。这时候,P1输出的是一个_________波形,其频率是________Hz。2.编写程序使P1口所接所有发光二极管1357和2468,交替闪烁,每1秒闪烁4次。发光二极管D2D4D6D8同时亮,亮_________秒,编写程序。3.编写程序使用P1口所有发光二极管D1每1秒闪烁1次,同时D2每1秒闪烁2次。提示:根据要求混出D1和D2对应的P1口引脚输出的波形图,再转化为程序。4.使用本任务案例程序,P1.0输出1Hz的方波,其周期应该是________秒,我们用示波器观测实际波形,结果得到的实际周期是_________秒,通过调节程序中延时1ms语句中的n值,即语句(for(n=0;n124;n++);),使P1.0输出相对更为精确的1Hz方波,这时候n的溢出值由124变为________,这是为什么?5.编写程序使P1口所接所有发光二极管一个一个轮流亮,每1秒亮一遍。提示:要实现功能,每一个发光二极管要亮__________秒,如此循环。yiher总结与评价一、自我总结你在整个任务完成过程中出现了哪些问题?你是如何解决的?你还有什么问题不能解决?有什么体会?二、评价组长评价:日期:教师评价日期:yiher1.3模拟广告流水灯任务描述使用单片机驱动8个发光二极管模拟广告流水灯效果。要求:1.编写程序使P1口德发光二极管实现单灯流水显示,每一个灯亮200ms。目标:1.使用循环移位函数实现流水灯效果。2.使用数组和查表方式实现各种广告彩灯效果。yiher电路制作单片机驱动8各发光二极管模拟广告流水灯硬件电路原理图yiher相关咨询一、任务分析:要是P1口的发光二极管实现单灯流水显示,可以采用P1口诵0xfe先亮第一个灯,延时200ms后,将P1口值循环左移1位再送P1口,使第2个灯亮,再延时200ms,一次类推,循环下去。或者把每一种亮灯模式对应的P1口值存到一个表格中,每次都能调用一个值送P1口并延时,一直到表格结束在重新开始循环,这种方法适用性更广,能实现各种不同的彩灯效果,在实际工程中应用较多。二、相关知识介绍1.KeilC51提供了丰富的库函数,供我们调用和适用。专用寄存器reg51.h,包括了所有8051的SFR及其位定义,我们一般都必须在文件开头适用#includereg51.h包含开头文件。math.h,数学运算头文件。stdio.h,输入输出流函数头文件。yiher2.循环移位函数在头文件intrins.h中有循环移位函数,_crol_(a,b)表示将一个无符号字符型变量a循环左移b次,_cror_(a,b)表示将一个无符号字符型变量a循环右移b次,另外还有无符号的整型变量循环移位函数。3.数组一种具有固定数目和相同类型成分的有序集合,常用来表示一些固定表格、数据等。例如unsignedchartable[8]={0xfe.0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f},表示一个无符号正习惯数组,一共有8个元素,分别用table[0],table[1].·······table[7]来表示,我们可以适用table[i]来适用这个数组里的数,其中i=0~7。4.KeilC自带有一个位左移和位右移运算符(和),其功能是将一个数的二进制代码全部同时左移或者右移若干位,移出的数据丢失,空白的地方补“0”。位左移运算格式为a《n,表示把a的值左移n位,高位丢失n位,地位自动补上n个0;例如P1=(P1《2);表示把P1的值左移2位,右边补上2个“0”,然后再赋给P1。yiher编程调试//使用循环移位函数实现单灯流水效果//使用循环移位函数实现单灯流水效果延时0.2sP1左移1位显示开始yiher//使用数组和查表方式实现各种广告彩灯效果//使用数组和查表方式实现各种广告彩灯效果延时0.2s开始i=i+1NYi=0i8取第i个亮灯模式yiher拓展训练1.编写程序使P1口所接所有发光二极管实现两个相邻的发光二极管双灯流水,每次亮0.5s。2.用KeilC自带有位左移和位右移运算符(和)能否实现单灯流水效果。3.编写程序使8个发光二极管演示单灯流水效果,同时其速度是变化的,逐渐加快,或者珠江减慢。提示:如果每次调用延时程序的参数是变化的,其延时时间不同,就会出现速度变化的效果。yiher总结与评价一、自我总结你在整个任务完成过程中出现了哪些问题?你是如何解决的?你还有什么问题不能解决?有什么体会?二、评价组长评价:日期:教师评价日期:yiher1.3可调亮度LED灯任务描述使用单片机控制发光二极管的亮度。要求:1.单片机驱动发光二极管发光。2.通过按键控制发光二极管的亮度。(辅助功能,关于按键使用后面章节详细介绍)目标:1.理解PWM调制的概念,了解其应用领域。2.掌握通过延时程序输出PWM波形的方法。yiher相关咨询一、任务分析:要改表发光二极管的亮度,即要改变流过发光二极管的平均电流。在直流电路中,我们可以通过改变限流电阻的阻值达到改变电流的目的。但在单片机控制发光二极管时,我们只能通过改变发光二极管导通(点亮)的时间,来达到改变平均电流和改变亮度。这时,一般采用输出PWM波形调光。二、相关知识介绍1.PWM(PulseWidthModulation)脉宽调制技术。通过对脉冲宽的调制,获得需要的波形(含形状和幅值)。PWM是单片机常用的模拟量输出方法,通过外接转换电路,可以将不同占空比的脉冲变成与之对应的电压(占空比是指正脉冲与整个周期的比值),用其进行调光、调功输出,或者控制直流电机的转速。假如需要一个1V0.6A的输出,而实际上只是一个1V1A的输出,那么只需要把1V1A的输出接通0.6秒,再断开0.4秒,然后继续接通0.6秒断开0.4秒,得到的效果和1V0.6A输出的效果
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:单片机应用 学习情况1 模拟广告流水灯的制作与调试
链接地址:https://www.777doc.com/doc-1472707 .html