单片机关键技术基础详解(四)

2012-03-28 11:48:21来源: 互联网 关键字:单片机  关键技术

单片机关键技术基础详解(四)

       单片机被广泛应用于工业控制,家电,消费电子,医疗电子,仪表测量等领域,为应广大初级电子工程师/单片机爱好者之需,电子发烧友网隆重策划整合推出《单片机关键技术基础详解》系列技术文章,以后会陆续推出其他章节,敬请广大工程师朋友继续关注和留意。应广大工程师网友对前三个章节热烈反响,电子发烧友网会再接再厉为各位工程师网友推出更多技术精品系列文章,以飨读者。

  一、电子电路设计之C51单片机常见问题

  笔者在工作中实际使用过AT89C2051、AT89C51、AT89C52等51单片机,后来应用台湾新茂、华邦等厂家的51单片机。实践中遇到许多问题,都是书本上没有的。我印象中,书本上的知识只有一页插图了,就是cpu的时序图。最初直接用汇编写程序,然后是C51嵌套汇编。编译器曾用伟福系列编译器,后来使用keil等,感觉这些编译器大同小异。需要熟练的C语言基础,加上单片机应用的特殊性。

  本文就51单片机应用中一些常见问题作个总结,这都是我实际碰到过的,因为文章篇幅所限,这些问题远远不足以表达单片机的常见问题。希望对初学者有所帮助,文中不完善的地方务请指点。谢谢!

  1:C51编译器如何区分位地址和字节地址

  是靠预定义实现的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者声明了P0端口地址位于0x80,后者说明了P0端口的bit0,即P0.0位于位地址空间0x80处。这2个0x80具有完全不同的含义,靠关键字sfr和sbit来区别。这样当程序被编译时,编译器会依此编译成相应的汇编语言。例如:

  C51语句: P0 = 1;

  P0声明为sfr,因此编译成:mov 80h,01h,将把0x01数据送入0x80单元,由于0x80单元物理上对应P0端口,因此,P0.0脚将输出高电平(其实是呈现高阻态,P0口独有的),其他.1-.7脚输出低电平。

  C51语句: P0_0 = 1;

  P0_0声明为sbit,因此编译成:setb 80h,这将把位地址空间的0x80地址的bit的值置1。这个位正是P0口的bit0,执行后,P0.0将输出高阻态。而P0.1-.7不会变化。

  2:C51为什么要嵌套汇编

  51单片机一个显著优点就是指令执行时间固定,因此可以适应时序要求严格的场合。例如符合ISO7816协议的cpu卡的读写,对时序要求比较严格。其实就是用io脚做出来的同步半双工串口。支持cpu卡的程序一般比较庞大,需要用c51来组织,但是由于c编译的不确定性,必须把底层程序封装成汇编语言模块嵌入到工程中。这就带来几个问题:如何声明函数、参数如何传递等。限于篇幅,不能说得很细。下面举例:

  汇编程序单独保存一个文件,加入到工程中,函数如下:

  _proc_a:

  mov a, r7

  inc a

  mov r7, a

  ret

  用c语言在.h文件中声明: extern unsigned char proc_a(unsigned char val);

  调用时形如: retvalue = proc_a(0x11);

  说明:

  a:汇编程序如果带参数,则需要在汇编程序前多加一个下划线。而声明它的地方不用加(伟福编译器这么要求的)。

  b:函数的形参中第一参数用R7传递,函数返回值用R7返回,这是C51的通用规范。其他参数都有相应规定。函数可以返回一个位,用psw的c位返回。

  c:上面的语句,执行顺序是把0x11给R7,然后跳转子程序,子程序将它加1后送回。

  d:函数跳转到汇编程序时,本区的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考虑调用后是否要恢复这些常规资源。上例中,A的值被函数使用了,编程者不必恢复调用前的值。

3:51单片机的P0口特殊之处

  许多新手都碰到这个问题,其实很简单,这涉及到芯片的io脚是怎么做出来的。这对硬件工程师来说十分重要。TTL的io脚模型:

  

  P1,P2,P3口都可以理解成左图,注意vcc下面有个电阻,因此可以理解成:引脚输出1的能力弱。地那边没有电阻,可以理解成引脚吸入电流能力强。而P0口,可以理解成右图。这就是集电极开路输出,也叫OC输出。可以看出,当CTR=1时,三极管导通,引脚被接地;当ctr=0时,三极管截止,引脚浮空,也叫三态。这个端口这么做的目的是考虑P0口肩负读写数据和地址复用,这个关系要仔细看懂cpu时序图。因此,P0口要加合适的上拉电阻,绝不要加下拉电阻。上拉电阻的选择要看外部负载情况。

  4:P1-3口如何输入输出

  从上节的左图可以看出。做输出时,ctr=1则输出强信号0,ctr=0则输出弱信号1。当io脚做输入时,应使ctr=0,这样三极管截止。外部信号如果是1,则上拉电阻加强了这个1,单片机就会读到1。当外部信号为0时,注意,必须将上拉电阻的上拉作用全部抵消,才能在引脚上得到0。

  因此,对于程序来说,把io脚置1就处于接收状态,当然也是输出1状态。程序置io口为1,读取的信号是不是1就依靠外部电路了,如果外部电路没有“吃掉”上拉电阻的电流,则读取得到1,反之,虽然程序置io脚为1,但是读取得到的就是0。

  因此,如果用io脚的高电平驱动外部电路时,要小心外部电路把这个1“吃掉”从而输出不了1。而作为输入时,为0电平的外设必须足够有能力将io脚拉低。所以,用io脚直接点亮led的时候,最好用反逻辑,就是输出0,让led亮。这样能保证驱动能力。就是io脚接led的负端,led的正端过电阻接vcc。

  因此,io脚输出1时,外部电路将它强行接地是没有关系的,而io脚输出0的时候,外部电路强行接电源就会把io脚损坏。所以,程序加电之后,一般把所有io口都写成1:MOV P0,0FFH。

  P3口引脚复用,必须引脚都处于输出1状态。例如,把RXD脚输出0,则它什么数据都读不进来了,笔者早期曾调试一整天才发现串口收不到数据是没有把RXD置1的原因,把时间都浪费在外围了,当时很是汗颜。

  5:有关晶振

  单片机的晶振在内部可以简化成一个反向器。当晶振输入脚XI刚过坎压、被认为是1的一瞬间,输出脚XO就输出0,这个0会带动晶振使XI电压下降,当降低到坎压被认为是0的一瞬间,输出脚XO就输出1。这样周而复始。

  因此,用示波器观察正常工作的晶振输入脚XI时,得到的是一个不高不低的近似水平线。而XO则是幅值很大的正弦波。测量晶振输入脚XI时,示波器表笔要打在X10档上,否则,表笔就能把晶振弄停。

  因此布线时,晶振输入脚XI要尽量靠近晶振,而XO脚可稍远。同时XO具有一定的驱动能力,某些芯片可以用它驱动其它时序电路(不推荐这么做,因为系统可靠性下降)。

  写到这里,才发觉51单片机的问题太多了,这篇文字简直就是沧海一粟。以后再补充吧,另行成文。

二、实验用单片机开发板介绍

  该开发板集成了单片机系统最常用,最关键的功能单元,包括字符液晶显示,图片/汉字显示,数码管显示,实时时钟,步进电机控制,继电器控制,ADC转换,E2PROM操作,串口通信等等,提供C51例程大全。

  基本配置

  1、STC89C51单片机,支持串口在线下载程序,也就是你不用买单片机烧写器也能够随时烧写程序到你的单片机里,随时观察你修改的程序运行状况。

  2、4位8段数码管显示(可做计数器,定时器,频率计,流水灯,电子钟等各种显示实验)

  3、MAX232芯片RS232通讯接口(可以做为与计算机通迅的接口同时也可做为STC单片机下载程序的接口)

  4、独立的+5V直流电源供电(避免了因用USB口供电容易烧坏电脑主板的隐患)

  5、蜂鸣器(可以让单片机发声,唱歌,让单片机变成电子琴)。

  

  6、模数转换芯片ADC0832(两路可调AD输入,串行接口控制,转换效率高,是我们常用的模数转换器件)。

  7、ULN2003步进电机驱动控制,可控制继电器和驱动步进电机(这是迈进工控自动化的第一步,对步进电机的操作是在单片机学习中所必须要面对的,也是必须要掌握的内容,机械精确定位,必须使用步进电机,数码相机调焦,扫描仪等设备都大量使用步进电机)

  8、SPI串行实时时钟电路(DS1302)以及备用电源(熟悉SPI总线,用DS1302可以做一个万年历电子时钟,待机电流非常小,扣式电池的备用电源能保证时钟芯片工作几年时间,掉电时间照走,相比用定时器做的时钟,它的时间准,且不用计算,闰年自动生成,重新上电,数据不乱),对于类似像时钟芯片的操作也是我们必须要掌握的。

  9、继电器控制,学习如何使用弱电控制强电,这在电器安全控制,远程控制方面非常有用。

  10、AT24C02外部EEPROM芯片(IIC总线元件实验),该芯片的FLASH保存的数据可以保证10年不丢失。

  11、字符液晶1602LCD接口。(采用接插件方式方便插拔,可显示两行 每行16个 共计32.任意ASCII码字符 它的功能应用比数码管丰富很多 显示的信息量也很大,可设计为仪器设备的控制面板人机交互模块)。

  12、图形点阵液晶12864LCD接口(采用接插件方式方便插拔,可显示任意汉字和图形是目前单片机图文显示最常用的显示器件,我们的实验板支持带字库的12846液晶,开发程序更方便。12846液晶不随板赠送)。

  13、4*4矩阵键盘(熟悉矩阵键盘编码,解码扫描原理,可做为人机交互信息输入接口)。

14、单片

[1] [2] [3]

关键字:单片机  关键技术

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2012/0328/article_15501.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于MSP430F169的多路电阻测量系统
下一篇:基于STM32F103RET6的编译码系统

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
单片机
关键技术

小广播

独家专题更多

TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved