注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

悠然家园

书香浸润童年,阅读陪伴人生

 
 
 

日志

 
 

【转载】学习单片机第四步:单片机工作的基本原理  

2014-03-21 13:41:51|  分类: 单片机 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

 

单片机工作其实就是程序控制硬件的过程,就好比人的双手在大脑的控制下有意识的敲打键盘,需要思想,还需要灵活的手指做条件。单片机要控制LED和蜂鸣器工作也一样的道理。首先要有思想,第二就是要知道LED和蜂鸣器的工作原理。

在第二步的演示视频中,可以看到程序被下载到单片机中后单片机控制蜂鸣器和LED灯以0.1S的时间间隔循环工作,即LED和蜂鸣器工作0.1S,停止0.1S,反复执行。

先来看下电路控制图吧,电路控制图分为三部分。第一部分保证单片机可以正常工作的基本电路,第二控制LED灯的电路,第三控制蜂鸣器的电路。

硬件工作原理

学习单片机第四步:单片机工作的基本原理 - pandong_happy - 星信的博客

单片机是将CPU、存储器、I\O口等集成在一片芯片上,再配合几个小零件即可以形成完整的微型计算机。由定义可以看出,单片机要变成微型计算机必须配合几个小零件,这些零件构成了图第一部分,单片机复位电路,按键按下去,单片机内部的程序可以从头开始执行,这就好比普通电脑的重启按钮,在电脑出现死机的情况下,按下重启就可以了。单片机也一样,当单片机的执行程序比较复杂的时候,受到环境的干扰程序容易出现跑飞,出现这种情况,就必须通过按钮复位。

图的第二部分是晶振电路,晶振就是晶体振荡器,单片机能否工作就看振荡器是否开始震荡并输出系统所需要的时序,单片机内部的程序就根据这个时序来执行。这个晶振频率怎么去理解,就好比我们购买电脑的时最关心的是电脑CPU的频率,这个频率对电脑的执行速度起到了非常关键的作用。当然了不同的CPU频率都是有限制的,不能过分超频哦。对于AT89S51单片机频率范围是0M~33M。一般情况下我们用的是12M的频率,这个频率工作下的程序正好一个机器周期1us。那什么是机器周期呢?例如第二步中控制LED和蜂鸣器工作的程序中,每个指令都是有固定的机器周期。比如MOV 的机器周期为1,那么执行一次就需要1us,DJNZ的机器周期为2,所以执行一次就需要2us。同样的道理,如果晶振换成是24M 。那么MOV 的执行时间就是0.5us了。根据这个原理起始对于上面程序延时子程序执行一次延时0.1S就不难理解了。当然了,对于这个延时时间的算法有疑问可以给我留言。

学习单片机第四步:单片机工作的基本原理 - pandong_happy - 星信的博客

如图8个LED正极同时与5V的正极相连,负极串联了一个330欧的电阻与单片机一组引脚相连接。蜂鸣器的正极连接在一个三极管的集电极,并通过三极管的基极串联一个电阻与单片机的一个引脚相连且负极接地。

那程序是如何执行的呢?如何达到控制效果的呢?       

学习单片机第四步:单片机工作的基本原理 - pandong_happy - 星信的博客

         

单片机由AT89S51单片机由40个引脚,其中系统引脚占了8个分别是第9脚复位引脚,第18、19引脚晶振引脚、第40、20正负极以及与系统扩展有关的第31、30、29引脚。

其他32个引脚为用户引脚,为什么这个32个引脚称为用户引脚呢?这个32个引脚分为4组,分别是第1~8的P1口,第10~17的P3口,第21~28的P2口以及第32~29脚的P0口。每个引脚都有相同的输入输出特性。这32个引脚额可以在程序的控制下输出高低电平。比如指令SETB P2.0表示控制第21引脚也就是P2口的第一个引脚输出高电平。指令CLR P2.0表示控制P2.0第21引脚输出低电平。同样的道理MOV P2,#11111110B即将二进制数据11111110赋给P2引脚相当于控制P2口的第一个引脚输出低电平其他引脚输出高电平。作为数字芯片单片机AT89S51单片机工作在5V的条件下有个特性即输出高电平时相当于电压为5V,输出低电平时即输出0V。

当然了这里需要知道LED的工作原理及参数,第一:LED有二极管的特性即单项导电,电流只有从正极流入,负极流出才能正常工作。一般LED正极的引脚比负极长,在使用时通过长短可以辨别LED的正负极。第二:LED的额定工作电压为1.7V,额定工作电流为10ma。

从图可以看出LED的负极串联了电阻与单片机的引脚相连,那什么时候LED工作,什么时候LED不工作。LED串联的电阻是多少呢?

因为LED单项导电性,图中每个LED的正极都连接在5V的电源正极,如果需要LED亮,另一端必须连接负极,前面说过单片机引脚输出低电平时相当于接地。输出高电平时电压为5V。根据这个特点,单片机输出高电平LED熄灭,输出低电平LED亮。那串联的电阻是多大呢?根据欧姆定律,当LED亮时候在5V电压工作下要保证工作电流为10ma,可以计算出串联的电阻为220欧。当然了这里能不能修改下电路,将LED的正极与单片机引脚相连,负极接地。答案是不可以的,根据AT89S51单片机的引脚结构,每个引脚内部有一个30K的上拉电阻,输出高电平时引脚输出的电流远远不到10ma,所以不能驱动LED工作。当然了其他型号的51单片机可以正常驱动,这个要查看具体的芯片参数。

那单片机又是如何控制蜂鸣器工作的呢?这里起到非常重要作用的是三极管。在这里可以将三极管看出一个电子开关(三极管的具体用法在另一篇文章有单独的介绍),基极串联一个1K的电阻。对于PNP型三极管(比如S9012、S8550)当与基极连接的单片机引脚输出低电平时,电子开关导通蜂鸣器工作,输出高电平时电子开关断开蜂鸣器不工作。对于NPN型号三极管(比如S9013、S8050)则正好相反,高电平导通,低电平断开。这里用的S8550三极管,所以CLR P1.0时该引脚输出低电平蜂鸣器工作,输出高电平时蜂鸣器不工作。

程序工作原理

先来看下以下单词表吧,对照单词表大家可以先猜下程序的意思,我想如果有程序的基础,有了所谓的逻辑思维,那个这个程序就看得懂了。很多觉得汇编语言难学,因为那是低级语言,但是我可以告诉大家汇编语言其实并不难,只是被表面现象难倒了。当然了这个也不能怪大家。在大学很多单片机教材里或很多传统的教材都是以单片机的技术资料为蓝本(不信你可以去网上找些出厂的英文AT89S51数据手册,翻译成中文也就是我们现在很多教材的雏形了。)

教材安排的内容,第一章为单片机的概述,讨论单片机的“上下五千年”。第二章为单片机的汇编指令,介绍指令用法,就比如我们上面的一条MOV指令,在书本上都是长篇大论。第三章为单片机的不是很容易让初学者感兴趣的汇编程序(一般都是教大家如何用汇编去进行一些低级计算,小学生都会的那种)。

所以等到学生真正想学编程的时候,他们已经被51单片机的111条指令给降服了。

真的,我也是以汇编语言入门的,但是我没有按照书本的流程去学习,我是学了多少用多少。最后发原来里面真正常用的指令不到30条。很多指令可能一辈子都用不到。上面给出的这个程序就是汇编语言常见的指令比如SETB、CLR 、DJNZ、JMP、MOV 以及一些标号。如果掌握了这个程序,哪怕是你记住上面的这几个指令,那汇编语言就掌握了1/5了哦。

指令表

指令           指令用法          指令中文意思

STEB          SETB P1.0         将单片机P1口的第1个引脚置为高电平

CLR           CLR   P1.0       将单片机P1口的第1个引脚置为低电平

JMP           JMP   LP1        控制程序返回到LP1所指的位置

MOV          MOV R7,#200      将十进制数据200赋给R7寄存器

DJNZ         DJNZ R0,LP1 如果R0寄存器中的值减1,如果不为零,则跳转到LP1所指的位置

学习到这里,大家应该对单片机控制外设工作基本原理有所了解了吧。单片机通过输出低电平可以控制LED,数码管和点阵可以可以用相同的方法控制,单片机可以通过三极管控制蜂鸣器工作,同样也可以控制电机转动。

在学习单片机第五步将一起来学习如何利用单片机控制3个彩色LED实现交通灯的效果。

  评论这张
 
阅读(15)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017