帮忙看一个简单的单片机电路

核心提示为什么P0的上拉电阻比P2口的小很多呢?这是第一个问题AT89C51,因为每脚可吸收的门电流不同,因此P0的上拉电阻比P2口的小。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高

为什么P0的上拉电阻比P2口的小很多呢?这是第一个问题

AT89C51,因为每脚可吸收的门电流不同,因此P0的上拉电阻比P2口的小。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时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编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

第二个问题,就是既然加了上拉电阻,电压应该已经升高了,那么为什么还要加三极管呢?是增大电流吗?那如果是的话,要用什么型号的三极管呢?

是增大负载电流用,可选9015的三极管(其实很多小功率的三极管都能用)。

用单片机STC89C52怎么使下面电路图中的数码管显示

这个很简单,是单片机运行程序所在的存储区选择的作用。

EA接高电平时,访问内部程序存储器(一般是FLASH,针对51就是),但当程序计数器(PC)值超过0FFFFH时,单片机自动转向外部程序存储器;当EA接低电平时,不管单片机有无内部存储器,只访问外部存储器。80C31没有内部存储器,所以EA必须接地,这样单片机只能选择并运行外部程序存储器的程序。

#include <reg52.h>

unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char code seg[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

////////////////////////////////////////////////////////

void delay(unsigned int cnt)

{

while(--cnt);

}

///////////////////////////////////////////////////////

main()

{

unsigned char i,j;

P0 = dofly[1] //输出1的段码

P2 = 0xfe; //令DS1发光

while(1); //停机

}

上述程序,是在DS1上,显示1。

试试看。

如果可以显示,就可以继续编写其它的。

 
友情链接
鄂ICP备19019357号-22