AT89C51芯片如下
1.1主要特性:
·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线
·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路
1.2管脚说明:
VCC、VPP:接电压。 VSS:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入, P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写"1"时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址"1"时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。 P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入"1"后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,口管脚 备选功能
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部 中断1)
P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
1.3、芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写"1"且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一
五、两位数码管循环显示00~99电路
数码管只要是用于数字的显示。数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同。两位数码管循环电路是由1K的电阻、IN4148二极管和数码管组成,电源+5V通过560的电阻直接给数码管的7个段位供电,P0.0-P0.7对应了两个接数码管的A,B,C,D,E,F,G和小数点位,P2.6接显示个位数的数码管的3、8引角,P2.7则接十位数的。P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的PNPS8550三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示需要的数字。两位数码管循环电路图如下:
三、软件设计
AT89C51显示00~99汇编语言程序
要实现两位数码管显示00~99依次循环的秒表设计,必须得将AT89C51芯片写入程序,只有将程序写进AT89C51芯片,才能实现其秒表的原理功能。
3.2 汇编语言程序
以下是用AT89C51实验板的两位数码管显示00~99依次循环的汇编语言程序:
- ORG 0000H
- A_BIT EQU 20H
- B_BIT EQU 21h
- TEMP EQU 22h
- STAR: MOV TEMP,#0
- STLOP: ACALL DISPLAY
- INC TEMP
- MOV A,TEMP
- CJNE A,#100,NEXT
- MOV TEMP,#0
- NEXT: LJMP STLOP
- DISPLAY: MOV A,TEMP
- MOV B,#10
- DIV AB
- MOV B_BIT,A
- MOV A_BIT,B
- MOV DPTR ,#NUMT
- MOV R0,#4
- DPL1: MOV R1,#250
- DPLOP: MOV A,A_BIT
- MOVC A,@A+DPTR
- MOV P0,A
- CLR P2.7
- ACALL D1MS
- SETB P2.7
- MOV A,B_BIT
- MOVC A,@A+DPTR
- MOV P0,A
- CLR P2.6
- ACALL D1MS
- SETB P2.6
- DJNZ R1,DPLOP
- DJNZ R0,DPL1
- RET
- D1MS: MOV R7,#250
- DJNZ R7,$
- RET
- 7段数码管0~9数字的共阳显示代码:
- NUMT: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
- END
复制代码
四、调试和使用
4.1 189C54芯片的调试
断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(18、19脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地约2.24V,19脚对地约2.09V。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导 线短时间和+5V连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路有问题。因为要显示两位不同的数字,所以必须用动态扫描的方法来实现,就是先个位显示1毫秒,再十位显示1毫秒,不断循环,这样只要 扫描时间小于1/50秒,就会因为人眼的视觉残留效应,看到两位不同的数字稳定显示
4.2 5伏电源安装调试
电阻和绿色的LED组成5伏电源的工作指示电路,只要电源部分正常,绿色的LED1就会点亮,我们可以根据这个LED来判断整个电源部分是否工作正常,电源部分就是下面图像中需要安装的元件。注意事项:
1. 有极性的电解电容正负不要颠反,引脚长的哪个为正
2. 三端稳压7805不要装反
3. LED极性不要颠反,引脚长的哪个为正极
4.3 两位数码管
数码管只要是用于数字的显示,安装时不能把数码管安装颠反了。还要注意三极管各引脚的极性。
5