《(中职)单片机技术应用项目教程项目二任务二电子课件.pptx》由会员分享,可在线阅读,更多相关《(中职)单片机技术应用项目教程项目二任务二电子课件.pptx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、(中职)单片机技术应用项目教程项目二任务二电子课件项目二 芯片“眨眼睛”LED灯闪烁1.51单片机并行I/O端口的结构2.C语言函数的定义、声明、调用方法。知识准备项目实施编写程序绘制仿真电路图仿真并调试下载程序并测试识读电路图绘制流程图搭建电路用单片机控制8个彩灯(LED)同时闪烁,要求亮1秒,灭1秒。任务二八个彩灯同时闪烁1)能熟练完成单片机I/O端口的读写操作2)会用KeilC51编写及修改简单的C51源程序3)能够使用Proteus完成单片机的仿真调试技能目标1)了解51单片机并行I/O端口的结构。2)掌握C语言函数的定义、声明、调用方法。知识目标【任务实施】活动一:识读电路图八彩灯闪
2、烁电路原理图如图2-19所示。在最小系统基础上,P1口外接8个发光二极管(LED1LED8)和8个300的限流电阻(R1R8),当P1口输出低电平时,发光二极管(LED1LED8)就会被点亮。活动二:绘制流程图P1共有8个I/O端口,当单片机P1的任意一个端口输出低电平时,LED就会发光,彩灯就会点亮,输出高电平时彩灯就会熄灭,中间延时1秒,由此产生闪烁效果。8个彩灯闪烁程序流程图如图2-20所示。程序代程序代码注注释#includereg51.h#defineuintunsignedint#defineucharunsignedcharvoiddelay(uintms);/*-主函数主函数-
3、*/voidmain(void)while(1)P1=0 x00;delay(1000);P1=0 xff;delay(1000);/*-延延时函数函数-*/voiddelay(uintms)uchari,j;for(i=0;ims;i+)for(j=0;j125;j+);/51头文件文件/预编译,简化关化关键字的字的书写写/函数声明函数声明/死循死循环,反复,反复执行彩灯行彩灯闪烁任任务/P1低低电平,彩灯点亮平,彩灯点亮/调用延用延时函数延函数延时1s/P1高高电平,彩灯熄平,彩灯熄灭/调用延用延时函数延函数延时1s/定定义变量量i和和j为无符号的字符型无符号的字符型变量量/利利用用for
4、循循环语句句产生生空空操操作作,达达到到延延时目目的的活动三:编写程序使用Keil编写源程序,然后编译,生成HEX文件。活动四:用Proteus绘制仿真电路图图2-18为八彩灯闪烁Proteus仿真电路,仿真电路中省略了单片机最小系统中的复位、时钟和电源电路。注意:软件仿真时最小系统电路可以省略,不影响电路正常工作,实际电路中是不可以省略的。活动五:用Proteus进行软件仿真调试活动六:用万能实验板搭建硬件电路活动七:下载程序,验证功能将单片机插到电路板的DIP40IC插座上,使用下载器将HEX文件下载到单片机芯片中,在电源和地端加上+5V直流稳压电源,观察实际效果。【任务拓展】1.将彩灯闪
5、烁速度提高一倍要求:绘制程序流程图,编写C源程序,使用仿真软件进行调试,验证其功能。操作提示:修改延时时间。2.间隔闪烁(先1、3、5、7灯闪烁,再2、4、6、8灯闪烁)要求:绘制电路原理图,绘制程序流程图,编写C源程序,使用仿真软件进行调试,验证其功能。一、51单片机I/O端口结构51单片机共有4个双向的8位并行I/O端口,分别记作P0P3,共有32根口线。1P0口P0可以做为单片机系统的地址/数据线使用,也可以做为通用I/O端口使用。当做为通用I/O口使用时,P0口是一个三态双向I/O口,需要外接上拉电阻。【应用与调试经验】P0当做通用I/O口使用时,必须外接10K的上拉电阻。上拉电阻简单
6、来说就是将电平拉高,通常用4.710K的电阻接到Vcc电源,下拉电阻则是把电平拉低,电阻接到GND地线上。一、51单片机I/O端口结构51单片机共有4个双向的8位并行I/O端口,分别记作P0P3,共有32根口线。2P1口P1口是一个准双向口,只作通用的I/O口使用;输出电路中有上拉电阻。所以P1口作输出口使用时不需外接上拉电阻;3P2口P2口也是一个准双向口,它有两种使用功能:一种是当系统不扩展外部存储器时,作普通I/O口使用,其功能和原理与P1口第一功能相同;另一种是当系统外扩存储器时,P2口作系统扩展的高8位地址总线使用,与P0口低8位地址相配合,实现对64KB外部程序或数据存储器的访问。
7、但它只能作地址线使用,并不能像P0口那样作为地址/数据复用线使用。一、51单片机I/O端口结构51单片机共有4个双向的8位并行I/O端口,分别记作P0P3,共有32根口线。4P3口P3口可以作为通用I/O口使用,此时功能与P1口完全相同,但在实际应用中,常使用它的第二功能。P3口的第二功能是控制和其它特殊功能,这时八条端口线所定义的功能各不相同,如表2-4所示。表2-4P3口各位的第二功能二、C语言的函数一个C语言程序可以由一个主函数main()和若干个其他函数构成。一个函数由两部分构成:函数定义和函数体。例如:voiddelay(uintms)/函数定义(void-函数类型delay-函数名
8、称uint-形参类型ms-形参名称)(一)函数的定义从函数的形式来看,函数可以分为无参数函数和有参数函数。前者在被调用时没有参数传递,后者在被调用时有参数传递。1.无参数函数定义格式如下:类型说明符函数名(void)/“void”声明该函数无参数传递二、C语言的函数类型说明符定义了函数返回值的类型。如果函数没有返回值,需要用“void”作为类型说明符。如果没有类型说明符出现,函数返回值默认为整型值。例1:返回值类型为无符号整型,无参数传递unsignedcharmin(void)例2:无返回值,无参数传递voiddelay(void)unsignedcharnfor(i=0;i125;i+);
9、二、C语言的函数2.有参数传递函数定义格式如下:类型说明符函数名(形式参数列表)/形式参数超过一个时,用“,”隔开return(n)/(二)函数调用函数调用就是在一个函数体中使用另外一个已经定义的函数,前者为主调用函数,后者为被调用函数。主函数可以调用其他函数,其他函数也可以调用相互调用,函数可以调用它本身,称为“递归调用”,但是其他函数不能调用主函数。其结构如图3-19所示:二、C语言的函数主函数函数1函数2函数n函数11函数12函数1n图3-19函数调用示意图函数调用的格式如下:函数名(实参表);有实参的函数调用中,如果有多个实参,要用“,”间隔开。实参与形参顺序对应,个数相同,类型相同。
10、二、C语言的函数例如:/8个彩灯闪烁程序1#includereg51.h/包含头文件reg51.h2#defineuintunsignedint/预编译3#defineucharunsignedchar4voiddelay(uintms);/函数声明5/*-主函数-*/6voidmain(void)78while(1)910P1=0 x00;/将P1口输出低电平,彩灯点亮11delay(1000);/调用延时1秒函数12P1=0 xff;/将P1口输出高电平,彩灯熄灭13delay(1000);/调用延时1秒函数1415二、C语言的函数16/*-延时函数-*/17voiddelay(uintm
11、s)1819uchari,j;20for(i=0;ims;i+)2122for(j=0;j125;j+)23;2425第1行:头文件第23行:预编译。为了书写方便,C51通常将一些数据类型的关键字进行更名操作。第4行:函数声明。C语言中,函数要遵循先声明、后调用的原则。二、C语言的函数第515行:main()函数。C语言程序执行时,先执行main()函数,在main()函数中继续调用其他函数。第1625行:延时函数delay(),该函数的功能为延时1s,用于控制彩灯的闪烁速度。第17行为延时函数的函数定义。第1825行为延时函数的函数体。上述这段程序中,调用了一个延时函数delay(1000)。其中,1000为该延时函数的实参。二、C语言的函数【调试经验】1.如果被调用函数的函数定义在主调用函数之后,则需要在调用之前(一般在程序头部)对函数进行声明。上述程序段中的函数声明如下:voiddelay(ucharms);/函数声明2.如果被调用的函数不是标准库函数,在本文件中也没有定义,而是在其他文件中定义的,调用时需要使用关键字“extern”进行函数原型说明。例如上述程序段中如果延时函数的定义在另外一个文件中,则函数声明时需要进行如下说明:externvoiddelay(ucharms);/函数声明感谢聆听感谢聆听
限制150内