本站联系电话:023-58186350 客服手机:15823731091 客服QQ:865697323
  给本站投递文章!
  购买本站产品,享受优惠价格!
  初学者应该怎样快速入门?
您现在的位置: 五六电子 > 电子技术 > 单片机 > 初学入门 > 正文 本站公告:网站公告列表     本站代理多家公司产品,质量保证,发货快捷,欢迎大家购买!  [2008年2月14日]            本站向各位网友征稿!  [2007年11月6日]        
  [图文]单片机入门制作(四)         ★★★ 【字体:
教你玩转单片机!
-成家立业--豁然间玩转单片机!
作者:杜 洋    文章来源:《无线电》    点击数:    更新时间:2008-2-2    

 

原来如此

  也许你早已经没有耐心继续看下面的文字了,实验的趣味性总是能引人入胜,从实际操作的角度出发是本文的一个特点。艰苦的实验过程帮我们打通了任督二脉,但这并不表示习武生涯的结束,反而追根朔源成了新的渴望。了解我们实验过程中的技术原理对于深入学习单片机技术和应付死板的理论考试都有帮助。

  现在找到单片机最小系统的电路图,见《十八变兵器》图 5。这一次就要有板有眼地说说单片机的整个工作过程。我尽量少开一些玩笑,面对纯学术的知识还是怀有敬意的好,以便让大家能明白是怎么回事。先说芯片的一般要求,这可以在图 8上窥见一斑,AT89S52采用的是 5V的电源供电,Vcc和 GND接口是单片机的系统电源接口。另外它内部集成了可以反复擦写 10万次且掉电不会丢失数据的存储单元(ROM单元),我们用 ISP下载线下载的程序就存放在这里。还有一块存储区域是存放一些在程序运行时的临时数据(RAM单元),因为在 ROM单元里的数据下载后是不可以让单片机自己改写的,有一些经常变换的计算结果是可以在 RAM单元里轻松改变的,但 RAM单元里的数据在掉电后就烟消云散了,虽然看上去不怎么样,但这种结构还是常用的,C51系列的单片机就是采用的这种存储器结构,在日后的编程岁月里你会深有体会。以 AT89S52为例,其内部的 RAM单元仅有 256B(字节),如果要计算或处理许多数据则需要外扩 RAM芯片,外扩的 RAM单元最大可以达到 64KB(千字节)。怎么让单片机知道我们是使用内部的 RAM单元还是外扩呢,这就取决于单片机第 31脚,即 EA/VPP接口的状态。当单片机复位时读得 EA/VPP接口为高电平则使用内部 RAM单元,若为低电平则使用外扩的 RAM单元,外扩 RAM的使用有专门的文章介绍。

  上面说的 RAM使用的选择是在复位的时候,那复位又是怎么回事呢?每个看似不相关的事件都是有必然联系,复位功能和整个单片机运行是密不可分的。电脑主机箱上的“RESET”按键可以让你打到一半的游戏消失并让电脑重新启动,一切都从头开始,程序不管走到哪里就要回到第一行去,电脑开机的时候也是需要复位的,那些知识渊博的电脑设计师们已经在你按下电源开关时悄悄地完成了复位。电脑上的故事同样适用在单片机这里,同时也证明了我开始所说的单片机就是一个小型电脑的说法,不过单片机芯片的设计者并没有将复位功能的电路直接放在 AT89S52的里面,也许是他们很懒或是出于更成熟的考虑,虽然有一些单片机有内部复位电路可是我们涉及的AT89S52没有,总之复位电路是要我们单片机爱好者自己设计的。有一些专用的复位芯片出售,它们都可以提供稳定可靠的复位信号,并且卖给我们一个较贵的价格。以我们现在的最小系统而言只要有一个阻容复位电路就足够了,这正是单片机最小系统电路图中 C1和 R存在的理由。系统通电的瞬间,电流流入 C1一端开始给 C1充电,此过程中 C1相当于短路状态,这巧妙地使 AT89S52的第 9脚即 RET接口连接到高电平,而这正是单片机需要的复位信号。当 C1充电完成后就相当于继路状态使得 RET通过下拉电阻 R置于低电平,单片机读到 RET为低电平时就知道复位结束可以开始工作了。读者朋友可以在 C1的两端并联一个微动开关,这可实现不断开电源的手动复位功能,这在电路图里没有给出,你可以选择使用。单片机内部读到高电平的复位信号时是要忙一些事情的,它要把自己内部的东西收拾好,该回到开始位置的要移到开始位置,等它忙完了我们才可以让它开始工作。这就需要一段复位时间,以本文中的最小系统电路为例实现复位需要至少 12μS(微秒)的时间,这是在 12.00MHz时钟频率时 12个时钟脉冲或 2个机器周期的时间,这个时间的定义和产生是由单片机上另一个重要的电路部分实现的,这就是系统时钟电路。

  上回书中我亲切地称之为晶振部分电路的家伙其实应该叫系统时钟电路,因为当时是实践性的说明我也就讲的通俗直观一些,这两个名词在业内一讲谁都明白所指的是什么。系统时钟电路是产生单片机用的基准时间了,这可以让单片机在你所指定的时刻精确地行动。人们以铯原子(Cs133)基态的两个超精细能级之间跃迁所对应辐射的 9192631770个周期所持续的时间定义为一秒,虽然看上去很复杂但这让我们的生活多了时间观念。单片机的时间观念来自于一个精确的脉冲源。

  你可以用专用芯片或是更精密的电路制作成精确而稳定的脉冲信号源接到单片机的 XTAL1接口。除此之外单片机的内部还含有一个振荡电路,它可以和外接的石英晶体(俗称晶振)构成时钟脉冲,这也是本文电路中用到的方法。采用晶振电路设计的系统时钟电路一般都会接入两个几十皮法(pF)的电容,这是为了更好地提高晶振电路的时钟精度,一般的单片机电路设计都有这个部分,百益而无一害。系统时钟还可以更深入地介绍,但有专门的系统时钟的理论文章介绍得比我专业,我则多留一些文字给后面实用的制作吧。

  
  再谈单片机的输入/输出接口,这是单片机实现工作的重要部分,上面谈到的所有电路最终都是为了让它动起来。输入 /输出接口常被称为 I/O口(IN/OUT)是单片机实现信号采集、控制、通信的接口,AT89S52的 I/O口分为四组,分别是 P0、P1、P2、P3,每组又分 8位分别是 P0.0~P0.7、P1.0~P1.7、P2.0~P2.7、P3.0~P3.7共 32个 I/O口,在最小系统电路图上可以了解其位置分布。每一个接口都可以作为信号的输入或输出使用,这是在程序中选择的,但无论输入还是输出都只有高、低电平两种状态。那怎么让单片机作为输出接口实现对外部电路的控制呢?答案是软硬件的完美配合,只要我们在程序中写上“P1.0=0”则 P1.0接口被拉到低电平,实验板上连接在 P1.0接口的 LED正极连接到 5V而负极的 P1.0为低电平,LED就会被点亮。相反的“P1.0 = 1”则 P1.0接口被拉到高电平,LED两端同为高电平状态,LED熄灭。一高一低之间我们的 LED就闪烁了起来,这就是 I/O口输出控制的原理。作为输入接口的原理要从连接到 P2.0接口的微动开关入手,我们要让单片机知道何时开关被按下就要让它一直读 P2.0的状态,在此之前先要用程序将 P2.0设置成高电平。然后单片机不厌其烦地读着 P2.0的电平状态,如果读到高电平则和我们事先设置的是一样,表示没有按下开关。微动开关的另一端是与地连接的,按下开关则 P2.0被迫与地短路即变为低电平,程序读到的也就变成低电平,输入功能即可实现。顺便说一下,开关按键部分的程序设计还要涉及到延时去除按键抖动的部分,保证读到信号的准确,在编写程序的时候会用到这个。如果单片机的 32个 I/O口都只是一样的功能也许你会感觉有一些单调,单片机设计者们可能也这样认为,于是他们设计了一些复用功能,就是部分 I/O口可以当其它功能使用。AT89S52的复用功能多种多样,有一路两线串口与 P3.0、P3.1复用,两路硬件中断与 P3.2、P3.3复用等等,更奇妙的是 P0接口是具有输入、输出、高阻抗的三态 I/O口,这些功能在特殊场合都很实用,我们可以在 AT89S52的原版技术手册上了解这些内容。

  有一些资料是权威的,这里必须要提一下。有谁比单片机的设计者更了解单片机呢?大家都能看得出这是设问句,所以我们要看设计者们写的单片机文章才权威,从文章中我们可以最全面而系统地了解 AT89S52,包括它的电气参数、系统结构、指令集等。虽然这让我辛辛苦苦写的这篇文章显得一无事处,但我还是向大家推荐 AT89S52的原版技术手册。不用担心,它是免费的,可以在网上搜索到该技术手册的电子版,等待你茶余饭后细细品味。

  到此为止,单片机的理论与实践全部完成,我松了一口气,也不知我说得对不对、细不细、好不好。我既希望简单明了又希望面面俱到,既想轻松风趣又想认真严谨。不能单调无趣、不可一带而过,我用我的写作方式与大家分享一个故事,一个《无线电》爱好者与单片机之间的浪漫爱情故事。

上一页  [1] [2] [3] 

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【文章投稿】【加入收藏】【告诉好友】【打印此文
    载入中...
    载入中...
         网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    数据载入中,请稍后……
    专 题 栏 目
    推 荐 商 品
    最 新 商 品
    推 荐 图 文
    最新热点 最新推荐 相关文章
    单片机大虾是怎么样炼成的
    5年单片机学习总结
    如何学好单片机
    单片机系统延时关机电路
    对51单片机的学习心得
    致单片机初学者
    从无线电世界到单片机世界
    我对单片机的向往!
    单片机入门制作(三)
    单片机入门制作(二)
    地址:重庆市万州区石柱坪6号5单元601室 邮编:404000
    联系电话:023-58186350 邮箱:webmaster@56dz.com QQ:865697323
    Copyright©2007-2008 五六电子 All rights reserved
    渝ICP备07007061号