2024年2月3日发(作者:)
51单片机最小系统
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.
对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.
下面给出一个51单片机的最小系统电路图.
说明
复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍.
晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)
单片机:一片AT89S51/52或其他51系列兼容单片机
特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行.这一点是初学者容易忽略的.
因此可以看出,其实要熟悉51单片机的40个引脚功能也很容易:
总共40个脚,电源用2个(Vcc和GND),晶振用2个,复位1个,EA/Vpp用1个,剩下还有34个.29脚PSEN,30脚ALE为外扩数据/程序存储器时才有特定用处,一般情况下不用考虑,这样,就只剩下32个引脚,对于初学者,这32个引脚就是要经常跟它们打交道的了.它们是:
P0端口P0.0~P0.7共8个
P1端口P1.0~P1.7共8个
P2端口P02.0~P2.7共8个
P3端口P3.0~P3.7共8个
使得单片机工作的最小电路
80C51为例
首先,我们在使用protel和proteus的软件画电路图时,你会发现原先40个引脚的芯片变成了38个引脚,那是因为它把第40和第20个引脚VCC和GND隐藏了,所以要是的单片机开始工作至少需要一个VCC(电源)和GND(接地)。
其次,学习过组成原理的同学或者说学习过计算机导论的同学一定知道,计算机的冯·诺依曼体系,什么是冯·诺依曼体系。简单的说就是程序(指令)存储,顺序执行,也就是说指令是一条一条执行的,即CPU从ROM(他可以称为程序存储器,但不准确)中取出指令然后再执行。取指令并执行有严格的先后顺序,那么就需要一个时钟来准确的使CPU稳定工作。
所以,第二个需要的就一个时钟电路。一个内部时钟电路是由两个电容(CAP)和一个石英晶振(Crystal)组成。CPU的时钟周期(震荡周期)由石英晶振决定(常用6MHZ或12MHZ),两个电容取10~30pF,并把他们接在XTAL1(输入)和XTAL2(输出)两端。
最后,因为单片机每次工作时,执行程序都是从0000H开始的,所以在进入系统时,必须对单片机复位,因此,我们还需要一个复位电路。复位电路的引脚为RST(9号引脚)。复位的条件是给RST引脚一个持续两个机器周期的高电平。一个机器周期是12个时钟周期,时钟周期就是上面说的震荡周期,计算方法是12*(1/fOSC),其中fOSC是晶振频率。所以6MHZ时钟的持续时间为4us,12MHZ的持续时间是2us。复位电路分为三种,上电自动复位(用的最多),按键复位(需要经常复位的电路),专用复位。以上电自动复位的电路为例,他需要一个电容(电解电容CAP-elec)和一个下拉电阻(RES)(针对上下拉电阻解释下,上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流作用!下拉同理!),利用电容的两端电压不能突变的的性质使RST持续两个时钟周期的高电平。
至此,当你打开单片机时,机器就可以跑起来,达到了机器运行的最低条件,只不过现在机器里面还没有下载程序(可以通过串口RS-232下载)以及没有外围设备。
单片机复位电路简述
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。实无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以我们必须弄清楚MCS-51型单片机复位的条件、复位电路和复位后状态。
掌握方法与技巧轻松学习51单片机
单片机是微机的一种,现时有8051、AVR、ARM7、ARM9等系列,其中 “8051”是源自于Intel公司的MCS-51系列芯片,但目前不同生产厂商都以其兼容芯片为主,如Ateml公司的89C51/89S51系统,宏晶公司的STC89C52RC。本文所述的正是宏晶的STC89C52RC,该芯片烧写简单,只用通过宏晶的工具通过串口MAXRS232的TX、RX脚位就可以将程序烧录到芯片,是一个非常不错的嵌入式入门基础,教程多、51系列的学习板普遍就是采用STC89C52RC的芯片,可见其通用性很广,那怎样才能快速学习8051单片机呢。
学习51系列的CPU需要记忆脚位功能,我学习的时候得益于其简单的熟记方法,脚位的功能与位置掌握得很快,不用死记硬背,就可以轻松记住P0、P1、P2、P3的脚位,请看下图:
学习好脚位功能后,如果要启动单片机的电路还需要了解外围连接,这样才能为日后自己制作单片机控制电路打下基础。这是学习8051系统单片机所必须熟记的,以下是51
单片机的最小电路图,只要按照以下方面连接,就可以简单上电驱动单片机的运行,功能脚位的应用是在最小系统的基础上添加的。
学习单片机,你不能没有一本纸质的教程,到本地的书店挑选或便宜的可以到卓越、当当网掏一掏。有了教程能更好的指导如何系统地学习单片机,尤其是学习C语言版本的,《例说51单片机(C语言版)》邮电出版社的。即有单片机理论基础,又有C语言的学习,接触C语言也比较长的时间,之前是使用C++Builder进行Windows方面的开发,通过教程发觉Windows的C语言与单片机上的C语言不同在于脚位的定义上,这个是单片机C独有的。
教程有了,但是光有知识没有实践怎么能知道自己学得怎样,学是一回时,实践应用又是另外一回事。编程现在51系统的都是用Keil v3,最好是打上“过滤0xfd字符的bug”的修正程序,我曾经试过遇到因为这个字符出现显示结果不正确而浪费时间的经历,打上补丁可以减少我们在程序调试中遇到的奇怪现象。
使用Keil软件编程只能检测C语言编程语法的正确性,而无法检验真正的功能是实现,现在可以使用单片机软件仿真Proteus(教程)进行电路板及程序功能的仿真与调试。不过仿真模拟虽然是好的方法,但比不上使用单片实验板,通过Keil编写的程序,再通过RS232将程序灌写到单片机进行实质性的操作,才能更好的了解单片机的性能与硬件之件的配搭使用,不要买最小系统的那种,这种只是供已经掌握单片机控制的人群使用,他们有自己的外围电路板,只需要根据自己的实际接上相应的单片机脚去驱动电路,是不适合初学者的,入门的单片机实验板最好是功能比较齐的、学习的内容越多,你对单片机的应用就越熟悉。以下是一款单片板学习板,在淘宝上的,价格在200元以下,还有视频教程,比较适合初学者,有兴趣的网友可以参考一下,选择好的学习板、辅导、交流是快速学习单片机的方法。
手把手教你学单片机》视频教程 51单片机开发板学习板
学习一门技能,最可贵的还是持之以恒,不断学习与总结,才会有所提高。学习51系列的单片机是进入嵌入式领域的踏脚石,如果你是电子方面的也可以考虑从简单的51入手,向更高级的应用迈进。
跟菜鸟一起学单片机之入门级led流水灯
单片机,一开始还不知道这个东西是干嘛的,直到前年的寒假,买来一块51的板子,开始了我的单片机生涯。一开始,还不知道这个东西和程序是怎么搞在一起的,写几行程序真的就这么容易就可以控制单片机了吗?傻傻地,按照给的资料,一点点的开始,先下了个led灯的程序,呀,这个神奇的事情就这么发生了,这个灯一个一个亮了,挺漂亮的。
看着给的代码,就这么几行额,话说搞过ACM的,这个程序应该是超级简单的。一开始还是不是非常懂。所以就慢慢地开始去理解了,下面是自己写的各种流水灯了。代码都加了注释了,应该很好理解的。具体的电路图也在下面了。
单片机引脚与端口操作
以前写过一篇也是关于单片机引脚的文章,写的非常简单,那时候的见解,今天再次看到单片机关于读引脚和端口的操作时突然又是非常的不解,上网搜资料很多也都是关于单片机IO口结构的解释,经过一番辛苦的搜索终于是找到了关于端口和引脚的资料,下面是我自己从各个方面总理的。
首先对于单片机IO口一般有第二功能,因为P0口比较特别以P0口为例说明。
1. P0口置1是怎么回事,什么时候置1?
单片机P0口作为输入时需要先给锁存器置1,以关闭V2场效应管,不置1的话当锁存器的值为0时,V2导通接地使引脚的值为低,不能输入高电平。至于怎么给P0口置1,就是给P0寄存器置1.
2. P0口怎么要接上拉电阻?有什么用?
见P0口结构图可知,P0口作为通用IO口,即输入输出口时,需要把V1场效应管关闭,多功能开关连接到锁存器,高电平信号通过锁存器Q'端输出时为低电平,V2管截止,V1,V2都截止,输出既不是高电平又不是低电平,这就是漏极开路输出。为了能够输出高电平需要外接上拉电阻。
3. 读引脚和读端口有什么不一样?
读引脚是读P0口引脚上的电平信号,读端口是读锁存器中的值,即就是读P0口寄存器的值。作为输出时引脚和端口的值是一样的,但是作为输入时因为外设可以影响引脚的值,所以端口和引脚的值作为输入时可以不一样。
4. 什么时候读端口?什么时候读引脚?各自的指令是什么?
一般的教科书上都会强调:读端口的指令为端口内容取反这样的“读-修改-写”指令。而读引脚之前,先置1,然后用Mov A,Px之类的指令即可。 以下是从web(/dzbbs/20061112/ )上搜集的资料:
“ 资料称: 这样的指令才有 Read-Modify-Write 功效
ANL (logical AND, e.G., ANL P1,A)
ORL (logical OR, e.g., ORL P2,A)
XRL (logical EX-OR, e.g., XRL P3,A)
JBC (jump if bit = 1 and clear bit, e.g., JBC P1.1, LABEL)
CPL (complement bit, e.g., CPL P3.0)
INC (increment, e.g., INC P2)
DEC (decrement, e.g., DEC P2)
DJNZ (decrement and jump if not zero, e.g., DJNZ P3, LABEL)
MOV PX.Y,C(move carry bit to bit Y of PORT X)
CLR PX.Y(clear bit Y of PORT X)
SETB PX.Y(set bit Y of PORT X)
”
有没有读端口的指令(而不修改端口)?
可以说,没有直接的读端口的指令。无论之前是否置1,以下指令
MOV A, P1
MOV 20H, P1
MOV R0, P1
MOV @R0, P1
读的都是引脚,尽管不一定读准确。
5. 端口的内容什么时候发生改变?当Px口作为输入,若外部引脚信号不断变化,读取引脚值之后, 端口内容是否变化?
某网友的看法与我不谋而合:“ 由于复位后各引脚寄存器的值是明确的,而以后各引脚的寄存器的值的改变不会因为芯片外面而,影响到引脚寄存嚣的值,引脚的寄存器的值只可能由程序来改变,所以就没有必要只读寄存器的值而不改变寄存器的内容了。 ”
参考引脚内部结构图可知,端口就是一个锁存器,纵使锁存器D口数据在变(内部数据线),只要时钟触发端clk没有触发信号,锁存器中的内容永远都不会改变,也就是说,不管外部引脚信号如何变,也不管执行过多少次读引脚操作,端口锁存器中的内容是不会发生变化的。
那么,端口内容何时变化?答曰:只要执行过一次输出,端口内容必为输出值,因为端口就是输出的数据锁存器。
6. 端口上的内容亦即反映到引脚上来吗?
Px口如果作为输出口,由引脚内部结构可知,端口内容是直接反映到引脚上去的。这对于P1口更为直接。而其他口,由于有第二功能,是否作为I/O口受内部控制信号的控制
单片机晶振不起振故障分析
晶振对单片机的重要性不言而喻,简单地说,没有晶振,单片机就没办法工作。而我们也知道,单片机晶振不起振是常见现象,那么引起晶振不起振的原因究竟有哪些?如何排除晶振不起振故障?如何检测晶振是否正常?本文将一一解答。
遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢?
(1)PCB板布线错误;
(2)单片机质量有问题;
(3)晶振质量有问题;
(4)负载电容或匹配电容与晶振不匹配或者电容质量有问题;
(5)PCB板受潮,导致阻抗失配而不能起振;
(6)晶振电路的走线过长;
(7)晶振两脚之间有走线;
(8)外围电路的影响。
解决方案,建议按如下方法逐个排除故障:
(1)排除电路错误的可能性,因此你可以用相应型号单片机的推荐电路进行比较。
(2)排除外围元件不良的可能性,因为外围零件无非为电阻,电容,你很容易鉴别是否为良品。
(3)排除晶振为停振品的可能性,因为你不会只试了一二个晶振。
(4)试着改换晶体两端的电容,也许晶振就能起振了,电容的大小请参考晶振的使用说明。
(5)在PCB布线时晶振电路的走线应尽量短且尽可能靠近IC,杜绝在晶振两脚间走线。
晶振是否正常的检测方法:
用示波器接晶振的任一引脚,示波器的接地引脚接线路板上的地,如果晶振正常则会显示正弦波(单片机内部将其变为方波),正弦波的频率与晶振的标注的频率相差不大。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1706957586a1470206.html
评论列表(0条)