学用8051单片机的常见问题
-------------------------------------------------------------------------------------------------------------
一、8051基本概念
1、MCS8051是什么东西?
答:最开始,MCS8051是指INTEL公司出品的MCS51系列的单片机芯片,由于后来很多厂家的8051其指令集兼容INTEL公司的,所以,MCS8051又指8051基本指令集。
2、市面上有哪些常见的MCS8051兼容芯片?
答:INTEL的MCS8051内核转让过很多厂家。目前用的比较多的,最常见的厂家有:
(1)ATMEL公司的AT 89C51 /AT89C52/AT89C55、AT 89S51 /AT89S52/AT89S53等。这些芯片可以反复编程1000次,常见的封装是40引脚的PDIP。其中AT 89C51 已经停产。AT代表ATMEL公司,C的意思就是该芯片使用CMOS工艺。S的意思就是该芯片具有ISP功能。C系列的换代产品是S系列,其最明显的特点是加入了ISP功能,即In System Programeable(在系统编程),这使得只要有根ISP下载线就能在单片机应用系统板上进行编程,无须拔下芯片插入编程器,在现场改变程序时比较方便。
(2)ATMEL公司的AT89C2051和AT89C4051等。这些芯片都只有20引脚,芯片上资源较少,一般做些简单的玩具和仪表。
(3)SST公司的SST89C54/C55。这两种芯片在国内有个很重要的用途,就是制作8051系统的仿真器。在西门子的手册上说,SST89C54和SST89C58可以反复编程1万次~10万次(新出的)。所以凡是用这两者芯片做仿真CPU的仿真器,到了一定时间后都要更换写坏了的芯片。因此在购买所谓的8051 FLASH仿真器时一定要注意这个问题。
3、AT89C51/AT89S51和基本MCS8051的相同点和不同点各是什么?
答:在ATMEL公司出的手册上说,AT89C51和AT89S51都是片内4K字节的FLASH程序 存储器,128字节的片内RAM,2个定时器/计数器,6个中断源,5个在手册上可用中断,2个中断级别。都支持掉电模式和空闲模式,都是MSC8051指令集。这两种芯片与INTEL的8051芯片相比,多了些东西,比如6个中断源就比书上MCS8051的5个中断多1个,这个中断源用于芯片的编程。另外多了所谓的空闲模式和掉电模式。
二、AT89C51/AT89S51的问题
1、为什么要采用这两种芯片做8051基本实验和设计?
答:答案很简单,因为这两种芯片容易买的到,价格也便宜,一般在10元以下。特别是AT89C51已经停产后,其换代产品AT89S51在价格基本不变的条件下,多了ISP功能,利用一条ISP下载线+国人编写免费的EASYISP软件或者ISPDOWN软件,在现场编程很方便。在保护自己的程序方面,这些芯片都有3级保护位,一旦写入保护,破译芯片中的内容会变的非常困难。
2、AT89C51/AT89S51的掉电模式怎么用?
答:虽然AT89C51已经停产,但市面上还是有很多存货的。而AT89S51在这方面与其兼容。在ATMEL手册上说,掉电模式下,芯片时钟停止,调用掉电模式的指令是最后执行的指令。从掉电模式中恢复后,片内RAM的数据不丢失。复位时特殊功能寄存器被复位,但其它内部RAM的内容不改变。在VCC电源没有达到正常电压之前,复位不会发生。复位时芯片会自己等晶振的工作恢复正常。 进入掉电模式时,软件将位于片内数据RAM的87H地址的PCON的PCON.1,即PD位置1,此时ALE引脚和/PSEN引脚都会置为0,这是标志。在使用内部程序存储器时,P0口~P3口都会是数据。在使用外部程序存储器时,P0口会浮空,P1~P3口都是数据。
3、AT89C51/AT89S51的空闲模式怎么用?
答:ATMEL手册上说,空闲模式下CPU内核进入休眠,功耗下降,芯片内部的周边设备-即定时器中断、计数器中断、外部中断、串口中断仍然工作。该模式与掉电模式不同的是,空闲模式由软件调用。芯片上的RAM和特殊功能寄存器在该模式下保持原来的值。空闲模式可以由任何中断或者硬件复位来唤醒。 值得注意的是,当空闲模式由硬件复位来唤醒的时候,设备正常地从程序停止的地方恢复运行,内部运算器运行前要过2个机器周期。在该事件中,芯片上的硬件控制内部RAM的存取。当空闲模式被硬件唤醒时,要排除不希望的端口的写操作。在调用空闲模式的指令后面的第1条指令不能是写端口引脚或者是写外部内存。 进入空闲模式时,软件将位于片内数据RAM的87H地址的PCON的PCON.0,即IDL位置1,此时ALE引脚和/PSEN都会置被为0,这是标志。在使用内部程序存储器时,P0口~P3口都是数据。在使用外部程序存储器时,P0口浮空,P1~P3口都是数据。
4、这两款芯片有什么具体不同的地方?
答:有无ISP功能、特殊功能寄存器和不同的极限工作频率。AT89S51不但多了ISP功能,还有一个很好用的内部看门狗。看门狗是直译的说法,即一个不断自己工作的定时器,如果不不断地“喂”它(不断地复位它,表示程序自己没有死机),过一段时间,它就会计数溢出,MCU就复位,以避免程序卡死后没人管。 AT89S51的内部看门狗叫做WDTRST寄存器,14位长度,最大计数值16383,即3FFFH,用来替代原来AT89C51要使用外部看门狗。其位置在内部数据RAM的十六进制地址0A6H。激活该看门狗的方法是先向该地址写01EH,然后写0E1H即可。此看门狗在晶振工作时工作!在CPU掉电模式下,该功能失效。如果晶振工作,每个机器周期,该定时器加1,直到自己复位(喂狗)或者溢出。
AT89C51最高可以使用的晶振频率时24MHz,AT89S51可以使用的晶振频率更高,达33MHz。
5、如何选择合适的晶振电容?
答:任何一个8051系统都需要一个时钟来指导MCU芯片工作。很多书上说AT89C51/AT89S51使用的晶振配合的两个电容C1和C2选25pF的陶瓷电容,取得是下限。 实际上,AT89C51/AT89SS51的这两个电容的取值范围如下:如果使用的是晶振,可取30pF±10pF。如果使用的是陶瓷振荡器,那么电容就要取40±10pF。本人就买35pF的陶瓷电容,反正不管是配合使用什么振荡器,都可以用。
三、学习设计中的问题
1、如何开始我的第1个设计?
答:记得学C语言的时候,第1个例子就是“Hello,World!”,不知道激起了多少程序员的梦想。在单片机学习中,一般第1个例子就是流水灯,也有人把它叫做跑马灯的。从这个例子入门后,你可以想想看看,怎么反向流动?怎么象霓虹灯那样闪烁?等等。在设计中学习一直是我向学生提倡的方法,因为这样,学的实在、学的不会忘记。而且基本上一开始,就可以接触比较复杂点的东西了。
2、一个正规的设计要做哪几步?
答:除开为了火烧眉毛赶交导师作业的人以外(开个玩笑)。首先不要急,要写出设计的指标,比如要完成什么功能、使用多少伏特的电源、是交流供电还是直流供电、等等。 然后选择要使用什么芯片。分析一下这些芯片具体运算能力是多少,有没有可能完成需要的运算任务等。要学会一边设计、一边写设计说明书,这点非常重要。一个设计投入工作之日不等于设计者就可以撒手不管了。而是不断地改进设计,完成更加完善的功能。 平常的时候还多看看相关的书本、杂志,上相应的网站收集些资料,在虚拟社区中同那些工程师们讨论些问题,虚心向高手学习、认真做好学习记录,你的设计就一定会不断进步的。
3、我怎么才能靠单片机赚钱?
答:这大概是最重要的问题之一了。这个问题不但困惑着你,也困惑着我的学生(笑)。这其实并不困难,关键在于你要观查周围人的需要,善于观察,善于分析,善于移植。比方作个金鱼缸的温度控制,实验成功后,可以移植成工业上恒温箱的控制,可以卖设备、可以卖设计,不都是钱吗?还可以象我一样,把经验总结出来,一起讨论一下,可以交到朋友。他有活干的时候,自然也会叫上你。条条道路通罗马,路就在脚下
4、你说的这些芯片上的标号我看不懂,有什么意义?
答:这个问题问得很严谨。知道这些标号就不会被奸商欺骗。以AT 89S51 为例,有很多不同的型号,如下表:
芯片编号 |
最高工作频率 |
供电电压范围 |
封装形式 |
芯片级别 |
|
|
4.0V — 5.5V |
|
|
AT89S51-24JC |
|
4.0V — 5.5V |
|
商用(0 ~ 70 ℃) |
AT89S51-24PC |
|
4.0V — 5.5V |
|
商用(0 ~ 70 ℃) |
AT89S51-24PI |
|
4.0V — 5.5V |
|
工业级(0 ~ 85 ℃) |