单片机驱动一个闪烁精选PPT.ppt

上传人:石*** 文档编号:69877233 上传时间:2023-01-10 格式:PPT 页数:24 大小:1.50MB
返回 下载 相关 举报
单片机驱动一个闪烁精选PPT.ppt_第1页
第1页 / 共24页
单片机驱动一个闪烁精选PPT.ppt_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《单片机驱动一个闪烁精选PPT.ppt》由会员分享,可在线阅读,更多相关《单片机驱动一个闪烁精选PPT.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、单片机驱动一个闪烁第1页,此课件共24页哦3.1 单片机驱动一个单片机驱动一个LED闪烁闪烁 单片机的单片机的I/OI/O口可以直接驱动一些器件,通过单片口可以直接驱动一些器件,通过单片机运行程序,达到单片机对一些器件的控制。机运行程序,达到单片机对一些器件的控制。LEDLED是是一种常用的显示器件,单片机的一种常用的显示器件,单片机的I/OI/O可以直接驱动。可以直接驱动。本节任务是利用单片机的一个本节任务是利用单片机的一个I/OI/O口驱动口驱动LEDLED电路,电路,设计程序使其闪烁。在了实现设计程序使其闪烁。在了实现P0.0P0.0口驱动负载特点口驱动负载特点基础上掌握程序设计一般方法

2、,同时还要掌握单片基础上掌握程序设计一般方法,同时还要掌握单片机系统仿真、程序下载的一般过程。机系统仿真、程序下载的一般过程。第2页,此课件共24页哦3.1.1 电路原理电路原理 STC-89C51STC-89C51单片机的单片机的P0P0口采用为口采用为ODOD门输出,高电平门输出,高电平输出时不存在拉出电流,但输出时不存在拉出电流,但P0P0口输出低电平时,口输出低电平时,P0P0口口灌入电流达到灌入电流达到2020毫安,因此毫安,因此P0P0只具有较强的低电平驱只具有较强的低电平驱动能力。如果利用动能力。如果利用P0P0驱动门电路以及如驱动门电路以及如LEDLED这样的小这样的小功率负载

3、,必须加上拉电阻,否则,即使编程让功率负载,必须加上拉电阻,否则,即使编程让P0P0输输出高电平,但是实际只能输出低电平。出高电平,但是实际只能输出低电平。图图3-1-13-1-1是单片机驱动是单片机驱动LEDLED电路,图中电路,图中 P0.0 P0.0 端口与电端口与电源之间接有一个电阻源之间接有一个电阻R2R2,当,当P0.0P0.0口输出低电平时,从电源口输出低电平时,从电源正极出发经过电阻的电流通过正极出发经过电阻的电流通过P0.0P0.0口进入单片机,口进入单片机,LEDLED的的正极为低电平,此时正极为低电平,此时LEDLED不亮,当此时不亮,当此时P0P0口输出高电平时,口输出

4、高电平时,经过电阻的电流无法进入经过电阻的电流无法进入P0.0P0.0端口,只能通过端口,只能通过LEDLED,此时,此时LEDLED亮。这种亮。这种LEDLED驱动方式为高电平有效方式。驱动方式为高电平有效方式。P0.7P0.7驱动驱动LEDLED采用的是低电平有效方式,直接了利用了采用的是低电平有效方式,直接了利用了P0P0口的低电口的低电平驱动能力。当平驱动能力。当P0.7P0.7端口输出高电平时,端口输出高电平时,LEDLED不亮,只有不亮,只有当当P0.7P0.7端口输出低电平时,端口输出低电平时,LEDLED才亮。才亮。第4页,此课件共24页哦 图图3-1-1 单片机驱动单片机驱动

5、LED电路原理电路原理第5页,此课件共24页哦3.1.2 程序设计与编译程序设计与编译一、程序设计一、程序设计 单片机内部的单片机内部的P0P3寄存器寄存器都可以进行位操都可以进行位操 作,作,P0P3对应的端口即单片对应的端口即单片机的机的32个个I/O口会输出口会输出P0P3的结果。本例实现的结果。本例实现LED闪烁,只要让闪烁,只要让P0.0电电平周期性变化即可。程序平周期性变化即可。程序流程见图流程见图3-1-2所示所示。图图3-1-2 LED闪闪烁程序流程烁程序流程第6页,此课件共24页哦 在在KielKiel程序设计软件中,程序设计软件中,P0.0P0.0口定义为口定义为P00P0

6、0,因此,因此在利用在利用C C语言程序设计时,要想让语言程序设计时,要想让P0.0P0.0为低电平,只要为低电平,只要编写编写P00=0P00=0一条语句即可。为了是程序简单明了,也一条语句即可。为了是程序简单明了,也可以利用可以利用sbit LED1=P00sbit LED1=P00语句,让语句,让LED1LED1代替代替P00P00。本。本案例的程序清单如下:案例的程序清单如下:第7页,此课件共24页哦/*/#include /包含头文件包含头文件sbit LED1=P00;/LED接接P0.0。在。在kell C51软件中,软件中,/定义定义P0.0为为sbit sbit LED2=P

7、07;void delay(unsigned char x)/延时函数延时函数unsigned char i,j;for(i=0;i x;i+)for(j=0;j 200;j+);第8页,此课件共24页哦void main(void)/主函数主函数while(1)/程序死循环程序死循环 LED1=0;/P0.0输出低电平,输出低电平,LED1灭灭 delay(100);/调用延时函数,延时一段时间,约调用延时函数,延时一段时间,约0.3秒,秒,/不精确不精确 LED1=1;/P0.0输出高电平,输出高电平,LED1亮亮 delay(100);/*/第9页,此课件共24页哦二、程序说明二、程序说

8、明 (1)因为使用的单片机芯片为)因为使用的单片机芯片为STC89C51,因此程序包含,因此程序包含reg51.h文件,文件,reg51.h文件定义了文件定义了51单片机所有特殊功能寄存器单片机所有特殊功能寄存器的名称定义和相对应的地址值;的名称定义和相对应的地址值;(2)单片机程序顺序执行程序,先执行主函数,在主函数)单片机程序顺序执行程序,先执行主函数,在主函数内可以调用分函数,分函数可以调用分函数,但分函数不能调内可以调用分函数,分函数可以调用分函数,但分函数不能调用主函数,程序执行一条命令再执行下一条,执行完毕后返回用主函数,程序执行一条命令再执行下一条,执行完毕后返回到主函数入口进行

9、下次循环。延时的过程是单片机执行了一个到主函数入口进行下次循环。延时的过程是单片机执行了一个delay(100)函数而浪费一段时间。在执行)函数而浪费一段时间。在执行delay()的过程中,()的过程中,如果没有中断单片机只能忙这一件事,如果没有中断单片机只能忙这一件事,第10页,此课件共24页哦 单片机在执行此函数相关指令时浪费和占用的时间就是执行单片机在执行此函数相关指令时浪费和占用的时间就是执行延时函数获得的时间,但利用延时函数获得的时间,但利用delay()()不能得到精确的延时。不能得到精确的延时。延时函数还可以利用带有形参的函数实现,例如:延时函数还可以利用带有形参的函数实现,例如

10、:/*/void delay(unsigned int x)while(x)x-;/*/第11页,此课件共24页哦 (3)利用位定义命令让)利用位定义命令让LED等价于等价于P0.0,程序执行,程序执行LED1=1后,后,P0.0对以的单片机内部位寄存器就设置为高对以的单片机内部位寄存器就设置为高电平,电平,P0.0端口输出高电平,单片机的所有端口输出高电平,单片机的所有I/O口都可位口都可位位定义,也可以字节定义。位定义,也可以字节定义。(4)单片机)单片机C语言程序设计需要的语言程序设计需要的C语言关键字不多,并且语言关键字不多,并且在在keil C 中用到的关键字是独有的,因此对于没有学

11、习过中用到的关键字是独有的,因此对于没有学习过C语言语言的人学习单片机的人学习单片机C语言程序设计困难并不是很大,重点掌握单语言程序设计困难并不是很大,重点掌握单片机片机C语言书写格式和怎样用语言书写格式和怎样用C语言控制单片机的硬件资源皆可;语言控制单片机的硬件资源皆可;另外,在编程时,还要有清晰的逻辑思维头脑和认真实践,由另外,在编程时,还要有清晰的逻辑思维头脑和认真实践,由浅逐步深入学习,当你坚持到最后时,单片机浅逐步深入学习,当你坚持到最后时,单片机C语言程序设计语言程序设计会让你感觉很简单。会让你感觉很简单。第12页,此课件共24页哦 (5)每个人在利用)每个人在利用C语言编写单片机

12、程序时都有自己的风格。语言编写单片机程序时都有自己的风格。一般情况下,函数的字符左行距为一般情况下,函数的字符左行距为0,其下每条语句前留一个,其下每条语句前留一个“tab”键空。算数逻辑符号的左右各留一个空格,关键语句要有键空。算数逻辑符号的左右各留一个空格,关键语句要有中文或英文说明,每一个函数有时也可以用中文或英文说明,每一个函数有时也可以用“/*.*/”上下上下隔开,这样有助于提高程序的层次感和可读性。隔开,这样有助于提高程序的层次感和可读性。第13页,此课件共24页哦三、程序编译三、程序编译 程程序设计采用第二章介绍的序设计采用第二章介绍的KielKiel软件。针对本节例软件。针对本

13、节例子,在电脑上运行子,在电脑上运行KielKiel,首先新建一个项目,项目使用,首先新建一个项目,项目使用的单片机为的单片机为AT89C51AT89C51,这个项目暂且命名为,这个项目暂且命名为LEDLED;然后新;然后新建一个文件,并保存为建一个文件,并保存为”LED.c”LED.c”文件,并添加到工程文件,并添加到工程项目中。由于本案例程序比较简单,可以直接在项目中。由于本案例程序比较简单,可以直接在KeilKeil软软件界面中编写,也可以先把程序清单形成一个件界面中编写,也可以先把程序清单形成一个TXTTXT文件,文件,然后剪切到然后剪切到KeilKeil的程序编辑界面中。当程序设计完

14、成后,的程序编辑界面中。当程序设计完成后,通过通过KielKiel编译并创建编译并创建LED.HEXLED.HEX目标文件,见图目标文件,见图3-1-33-1-3所示。所示。第14页,此课件共24页哦 在在KeilKeil的应用过程中,由于编译过程成产生很多文的应用过程中,由于编译过程成产生很多文件件,因此新建一个项目需在一个目录中建立。因此新建一个项目需在一个目录中建立。KeilKeil软件创软件创建的建的HEXHEX文件可以下载到单片机的程序存储器中运行,也文件可以下载到单片机的程序存储器中运行,也可以被仿真软件调用。可以被仿真软件调用。第15页,此课件共24页哦 图图3-1-3 Keil

15、软件目标文件创建软件目标文件创建第16页,此课件共24页哦3.1.3 汇编语言嵌入汇编语言嵌入 在使用在使用C语言所开发的项目中,有时需要写一些汇语言所开发的项目中,有时需要写一些汇编语言的程序,以提高程序的精炼和精确度。如本例编语言的程序,以提高程序的精炼和精确度。如本例中的中的delay()函数延时不够精确,可以使用汇编语()函数延时不够精确,可以使用汇编语言实现时间延迟,提高延时的精确程度。在一个项目言实现时间延迟,提高延时的精确程度。在一个项目中要加入汇编语言程序时,有两种方法,第一种方法中要加入汇编语言程序时,有两种方法,第一种方法是使用是使用Inline assembly,也就是在

16、程序中直接加入汇编也就是在程序中直接加入汇编语言码,如以下的程序所示:语言码,如以下的程序所示:第17页,此课件共24页哦/*延时函数延时函数*/void delay100us()#pragra endasm more:mov R3,#48 djnz R3,$djnz R7,more#pragma endasm /*/第18页,此课件共24页哦 在上面的程序中,直接加入汇编语言码时是使用编译指在上面的程序中,直接加入汇编语言码时是使用编译指令令#pragma asm 和和#pragma endasm。编译指令。编译指令#pragma asm 和和#pragma endasm 之间则加入您需要的

17、汇编语言代码。这之间则加入您需要的汇编语言代码。这一段程序主要是实现一段程序主要是实现100微秒时间延迟,使用汇编语言我微秒时间延迟,使用汇编语言我们可以通过如表们可以通过如表3-1-1所示的计算方法估计出延迟时间大约是所示的计算方法估计出延迟时间大约是0.1ms。最后还有一条返回指令最后还有一条返回指令ret,所以总共需要,所以总共需要100条条指令,如果外接指令,如果外接12MHz的石英晶体时,每执行一条指令的石英晶体时,每执行一条指令需要需要1s,所以执行这一个子程序总共需要,所以执行这一个子程序总共需要100s,也就是也就是0.1s.但是这只是一个估计值,因为执行子程序时如果有中断但是

18、这只是一个估计值,因为执行子程序时如果有中断发生,就会造成执行时间增加。发生,就会造成执行时间增加。第19页,此课件共24页哦执行的指令执行的指令 执行次数执行次数 指令执行周期指令执行周期 计算结果计算结果 More:mov R3,#48 111djnz R3,$148 296djnz R7,more 122表表3-1-1 计算方法计算方法第20页,此课件共24页哦 第二种做法是将汇编语言的程序写在一个文件中,然后第二种做法是将汇编语言的程序写在一个文件中,然后再从主程序中调用这些使用汇编语言写的子程序。再从主程序中调用这些使用汇编语言写的子程序。C语言主程序调用汇编语言子程序时,必须注意到

19、,累加器语言主程序调用汇编语言子程序时,必须注意到,累加器(accumulator)和寄存器给的内容都必须自行维护,如果维护)和寄存器给的内容都必须自行维护,如果维护不当,可能会造成不可预期的结果。一般而言,可以在进入汇不当,可能会造成不可预期的结果。一般而言,可以在进入汇编语言程序之后,马上将累加器编语言程序之后,马上将累加器A和寄存器和寄存器R0R7推入堆栈当推入堆栈当中,等到要离开汇编语言程序之前再使用中,等到要离开汇编语言程序之前再使用POP指令,将累加器指令,将累加器A和寄存器和寄存器R0R7从堆栈中取出,但是要特别注意,堆栈推入从堆栈中取出,但是要特别注意,堆栈推入与取出的顺序是相

20、反的,也就是先进者后出,后进者先出。与取出的顺序是相反的,也就是先进者后出,后进者先出。第21页,此课件共24页哦3.1.4 软件仿真软件仿真 在安装过在安装过ProteusProteus软件的软件的PCPC上运行上运行ISISISIS文件,即可进入文件,即可进入ProteusProteus电路原理仿真界面,利用该软件仿真时操作比较简单,电路原理仿真界面,利用该软件仿真时操作比较简单,其过程是首先构造电路,然后双击单片机加载其过程是首先构造电路,然后双击单片机加载HEXHEX文件,最后执文件,最后执行仿真。行仿真。ProteusProteus界面以及本案例的仿真电路见图所示。电路中界面以及本案

21、例的仿真电路见图所示。电路中单片机采用单片机采用AT89C51AT89C51,单片机默认为最小系统,不需要再外接晶,单片机默认为最小系统,不需要再外接晶体振荡电路和复位电路。仿真过程中,单片机加载程序模拟运体振荡电路和复位电路。仿真过程中,单片机加载程序模拟运行实际状态行实际状态 。第22页,此课件共24页哦 软件仿真是程序设计结果的验证,能够在没有硬件的软件仿真是程序设计结果的验证,能够在没有硬件的条件下验证程序的完整性。计算机是单片机程序设计的重条件下验证程序的完整性。计算机是单片机程序设计的重要工具,但单片机的程序设计或相关产品开发必须有相关要工具,但单片机的程序设计或相关产品开发必须有相关的软件和硬件,软件仿真虽然节约了一定硬件的投入,但的软件和硬件,软件仿真虽然节约了一定硬件的投入,但软件仿真不能测试软件的安全性和可靠性,也不能测试电软件仿真不能测试软件的安全性和可靠性,也不能测试电路的完整性。程序的设计往往需要软件仿真和硬件仿真结路的完整性。程序的设计往往需要软件仿真和硬件仿真结合,并且在有限的时间里熟练完成项目的设计工作。合,并且在有限的时间里熟练完成项目的设计工作。第23页,此课件共24页哦图图3-1-4 Proteus仿真仿真第24页,此课件共24页哦

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁