版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机驱动一个闪烁第一页,共二十四页,2022年,8月28日3.1单片机驱动一个LED闪烁
单片机的I/O口可以直接驱动一些器件,通过单片机运行程序,达到单片机对一些器件的控制。LED是一种常用的显示器件,单片机的I/O可以直接驱动。本节任务是利用单片机的一个I/O口驱动LED电路,设计程序使其闪烁。在了实现P0.0口驱动负载特点基础上掌握程序设计一般方法,同时还要掌握单片机系统仿真、程序下载的一般过程。
第二页,共二十四页,2022年,8月28日电路原理
STC-89C51单片机的P0口采用为OD门输出,高电平输出时不存在拉出电流,但P0口输出低电平时,P0口灌入电流达到20毫安,因此P0只具有较强的低电平驱动能力。如果利用P0驱动门电路以及如LED这样的小功率负载,必须加上拉电阻,否则,即使编程让P0输出高电平,但是实际只能输出低电平。
第三页,共二十四页,2022年,8月28日图3-1-1是单片机驱动LED电路,图中P0.0端口与电源之间接有一个电阻R2,当P0.0口输出低电平时,从电源正极出发经过电阻的电流通过P0.0口进入单片机,LED的正极为低电平,此时LED不亮,当此时P0口输出高电平时,经过电阻的电流无法进入P0.0端口,只能通过LED,此时LED亮。这种LED驱动方式为高电平有效方式。P0.7驱动LED采用的是低电平有效方式,直接了利用了P0口的低电平驱动能力。当P0.7端口输出高电平时,LED不亮,只有当P0.7端口输出低电平时,LED才亮。第四页,共二十四页,2022年,8月28日图3-1-1单片机驱动LED电路原理第五页,共二十四页,2022年,8月28日程序设计与编译一、程序设计单片机内部的P0~P3寄存器都可以进行位操作,P0~P3对应的端口即单片机的32个I/O口会输出P0~P3的结果。本例实现LED闪烁,只要让P0.0电平周期性变化即可。程序流程见图3-1-2所示。图3-1-2LED闪烁程序流程第六页,共二十四页,2022年,8月28日在Kiel程序设计软件中,P0.0口定义为P0^0,因此在利用C语言程序设计时,要想让P0.0为低电平,只要编写P0^0=0一条语句即可。为了是程序简单明了,也可以利用sbitLED1=P0^0语句,让LED1代替P0^0。本案例的程序清单如下:第七页,共二十四页,2022年,8月28日/*******************************************************************/#include<reg51.h>//包含头文件sbitLED1=P0^0;//LED接P0.0。在kellC51软件中, //定义P0.0为sbitsbitLED2=P0^7;voiddelay(unsignedcharx)//延时函数{ unsignedchari,j; for(i=0;i<x;i++) for(j=0;j<200;j++);}第八页,共二十四页,2022年,8月28日voidmain(void)//主函数{ while(1)//程序死循环 {LED1=0;//P0.0输出低电平,LED1灭 delay(100);//调用延时函数,延时一段时间,约0.3秒, //不精确 LED1=1;//P0.0输出高电平,LED1亮delay(100);}}/************************************************************/第九页,共二十四页,2022年,8月28日二、程序说明(1)因为使用的单片机芯片为STC89C51,因此程序包含reg51.h文件,reg51.h文件定义了51单片机所有特殊功能寄存器的名称定义和相对应的地址值;(2)单片机程序顺序执行程序,先执行主函数,在主函数内可以调用分函数,分函数可以调用分函数,但分函数不能调用主函数,程序执行一条命令再执行下一条,执行完毕后返回到主函数入口进行下次循环。延时的过程是单片机执行了一个delay(100)函数而浪费一段时间。在执行delay()的过程中,如果没有中断单片机只能忙这一件事,第十页,共二十四页,2022年,8月28日
单片机在执行此函数相关指令时浪费和占用的时间就是执行延时函数获得的时间,但利用delay()不能得到精确的延时。延时函数还可以利用带有形参的函数实现,例如:/******************************/voiddelay(unsignedintx){ while(x) x--;}/******************************/第十一页,共二十四页,2022年,8月28日
(3)利用位定义命令让LED等价于P0.0,程序执行LED1=1后,P0.0对以的单片机内部位寄存器就设置为高电平,P0.0端口输出高电平,单片机的所有I/O口都可位位定义,也可以字节定义。(4)单片机C语言程序设计需要的C语言关键字不多,并且在keilC中用到的关键字是独有的,因此对于没有学习过C语言的人学习单片机C语言程序设计困难并不是很大,重点掌握单片机C语言书写格式和怎样用C语言控制单片机的硬件资源皆可;另外,在编程时,还要有清晰的逻辑思维头脑和认真实践,由浅逐步深入学习,当你坚持到最后时,单片机C语言程序设计会让你感觉很简单。第十二页,共二十四页,2022年,8月28日
(5)每个人在利用C语言编写单片机程序时都有自己的风格。一般情况下,函数的字符左行距为0,其下每条语句前留一个“tab”键空。算数逻辑符号的左右各留一个空格,关键语句要有中文或英文说明,每一个函数有时也可以用“/**.....**/”上下隔开,这样有助于提高程序的层次感和可读性。第十三页,共二十四页,2022年,8月28日三、程序编译程序设计采用第二章介绍的Kiel软件。针对本节例子,在电脑上运行Kiel,首先新建一个项目,项目使用的单片机为AT89C51,这个项目暂且命名为LED;然后新建一个文件,并保存为”LED.c”文件,并添加到工程项目中。由于本案例程序比较简单,可以直接在Keil软件界面中编写,也可以先把程序清单形成一个TXT文件,然后剪切到Keil的程序编辑界面中。当程序设计完成后,通过Kiel编译并创建LED.HEX目标文件,见图3-1-3所示。第十四页,共二十四页,2022年,8月28日
在Keil的应用过程中,由于编译过程成产生很多文件,因此新建一个项目需在一个目录中建立。Keil软件创建的HEX文件可以下载到单片机的程序存储器中运行,也可以被仿真软件调用。第十五页,共二十四页,2022年,8月28日图3-1-3Keil软件目标文件创建第十六页,共二十四页,2022年,8月28日
汇编语言嵌入
在使用C语言所开发的项目中,有时需要写一些汇编语言的程序,以提高程序的精炼和精确度。如本例中的delay()函数延时不够精确,可以使用汇编语言实现时间延迟,提高延时的精确程度。在一个项目中要加入汇编语言程序时,有两种方法,第一种方法是使用Inlineassembly,也就是在程序中直接加入汇编语言码,如以下的程序所示:第十七页,共二十四页,2022年,8月28日/************延时函数************/voiddelay100us(){ #pragraendasm more:movR3,#48 djnzR3,$ djnzR7,more #pragmaendasm}/*********************************/第十八页,共二十四页,2022年,8月28日在上面的程序中,直接加入汇编语言码时是使用编译指令#pragmaasm和#pragmaendasm。编译指令#pragmaasm和#pragmaendasm之间则加入您需要的汇编语言代码。这一段程序主要是实现100微秒时间延迟,使用汇编语言我们可以通过如表3-1-1所示的计算方法估计出延迟时间大约是0.1ms。最后还有一条返回指令ret,所以总共需要100条指令,如果外接12MHz的石英晶体时,每执行一条指令需要1µs,所以执行这一个子程序总共需要100µs,也就是0.1µs.但是这只是一个估计值,因为执行子程序时如果有中断发生,就会造成执行时间增加。第十九页,共二十四页,2022年,8月28日执行的指令执行次数指令执行周期计算结果More:movR3,#48111djnzR3,$1×48296djnzR7,more122表3-1-1计算方法第二十页,共二十四页,2022年,8月28日
第二种做法是将汇编语言的程序写在一个文件中,然后再从主程序中调用这些使用汇编语言写的子程序。C语言主程序调用汇编语言子程序时,必须注意到,累加器(accumulator)和寄存器给的内容都必须自行维护,如果维护不当,可能会造成不可预期的结果。一般而言,可以在进入汇编语言程序之后,马上将累加器A和寄存器R0~R7推入堆栈当中,等到要离开汇编语言程序之前再使用POP指令,将累加器A和寄存器R0~R7从堆栈中取出,但是要特别注意,堆栈推入与取出的顺序是相反的,也就是先进者后出,后进者先出。第二十一页,共二十四页,2022年,8月28日软件仿真
在安装过Proteus软件的PC上运行ISIS文件,即可进入Proteus电路原理仿真界面,利用该软件仿真时操作比较简单,其过程是首先构造电路,然后双击单片机加载HEX文件,最后执行仿真。Proteus界面以及本案例的仿真电路见图所示。电路中单片机采用AT89C51,单片机默认为最小系统,不需要再外接晶体振荡电路和复位电路。仿真过程中,单片机加载程序模拟运行实际状态。第二十二页,共二十四页,2022年,8月28日
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全球及中国单靶射频磁控溅射镀膜仪行业头部企业市场占有率及排名调研报告
- 2025-2030全球不锈钢单刃剃须刀片行业调研及趋势分析报告
- 幼儿绘本讲述与演绎经典幼儿绘本介绍讲解
- 2025室内植物出租合同范文
- 全新员工合作协议书合同下载
- 收购合同范本
- 软件系统维护服务合同
- 指标租赁合同年
- 2025合同模板信息服务部门的组织结构范本
- 建筑工程改造施工合同范本
- 2024年常德职业技术学院单招职业适应性测试题库
- 2025 年福建省中考语文试题:作文试题及范文
- 【译林】九下英语单词默写表
- IEC 62368-1标准解读-中文
- 15J403-1-楼梯栏杆栏板(一)
- 2024年发电厂交接班管理制度(二篇)
- 《数学课程标准》义务教育2022年修订版(原版)
- 各种标本采集的技术-痰标本的采集(护理技术)
- 2024年湖南中考道德与法治试卷真题答案解析(精校打印)
- 实验室的设计规划
- 2024-2030年中国假睫毛行业市场发展趋势与前景展望战略分析报告
评论
0/150
提交评论