1. 51单片机关于P1口的实验
如果实物按图这样接,51早就烧了。P1.5接电源,proteus里可能是算为高电平,即写1了。你可以串一只10K上拉电阻,这样才真正相当于写1
2. 如何检测单片机P1.0的电压
我感觉你的最终目的是在电源掉电前要计算机要执行一套保护现场或者其他的动作。那么用这种方法就太慢了,计算机可能没时间进行处理。
推荐你个电路,MAX813L,你可以使用它的第4脚的功能。将7805输入端的电压经2个电阻分压后输入4脚,保证正常情况下4脚稍高于1.25V。
当电源掉电时,15V滤波电容上的电压逐渐下降,当4脚低于1.25V,MAX813L的5脚输出低电平,接入单片机进行判断和采取措施。
由于15V滤波电容比较大,可以保证程序有足够的时间来进行掉电处理。
如果你只是判断有无15V,而且单片机电源与15V无关,那么只要把15V用一个二极管整流,然后加2个电阻分压,再加个电容稍微滤波就OK了。反应速度取决于电容和分压电阻大小。
3. 典型51单片机的P0,P1,P2,P3口都有哪些功能
P0口第一个功能是数据接口,第二个功能是地址低八位,P2口第二个功能是地址高八位。另外除了P0口没有内部上拉电阻外,其他三个都有内部上拉电阻。P1就没多少功能,就是个准双向I/O口。最重要的就是P3口了,他除了是个准双向I/O口外,第二功能很重要:P3.0
(RXD)串行数据接收端;P3.1
(TXD)串行数据发送端;P3.2
(INT0)外部中断0输入;P3.3
(INT1)外部中断1输入;P3.4(T0)Timer0
计数器输入:P3.5(T1)Timer1计数器输入;P3.6(WR)写外部存储器的脉冲输出:P3.7(RD)读外部存储器的脉冲输出。
(3)单片机p1口怎么检测扩展阅读:
在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。
由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。
4. 怎样知道单片机的矩阵键盘每个按键的地址
1、比如是一个4行×4列的矩阵键盘。
2、将4行和4列共8根线分别接到单片机的I/O口,比如接P1口,行接低4位(P1.0~P1.3),列接高4位(P1.4~P1.7)。
3、单片机先将行置第电平0,列置高电平1.
4、在键盘扫描程序中,判断是否有任意按键按下:if((P1&0xf0)!=0xf0),表示有按键按下,延时消抖后,再次判断,如果(P1&0xf0)!=0xf0,则表示有按键按下。
5、然后开始逐行扫描:
P1=0xfe; //第一行置为低电平“0”(P1.0输出低电平“0”)
if(P14==0) keyval=1; //如果检测到接P1.4引脚的列线为低电平“0”,可判断是S1键被按下
if(P15==0) keyval=2; //如果检测到接P1.5引脚的列线为低电平“0” ,可判断是S2键被按下
if(P16==0) keyval=3; //如果检测到接P1.6引脚的列线为低电平“0”,可判断是S3键被按下
if(P17==0) keyval=4; //如果检测到接P1.7引脚的列线为低电平“0”,可判断是S4键被按下
P1=0xfd; //第二行置为低电平“0”(P1.1输出低电平“0”)
if(P14==0) keyval=5; //如果检测到接P1.4引脚的列线为低电平“0”,可判断是S5键被按下
if(P15==0) keyval=6; //如果检测到接P1.5引脚的列线为低电平“0”,可判断是S6键被按下
if(P16==0) keyval=7; //如果检测到接P1.6引脚的列线为低电平“0”,可判断是S7键被按下
if(P17==0) keyval=8; //如果检测到接P1.7引脚的列线为低电平“0”,可判断是S8键被按下
P1=0xfb; //第三行置为低电平“0”(P1.2输出低电平“0”)
if(P14==0) keyval=9; //如果检测到接P1.4引脚的列线为低电平“0”,可判断是S9键被按下
if(P15==0) keyval=10; //如果检测到接P1.5引脚的列线为低电平“0”,可判断是S10键被按下
if(P16==0) keyval=11; //如果检测到接P1.6引脚的列线为低电平“0”,可判断是S11键被按下
if(P17==0) keyval=12; //如果检测到接P1.7引脚的列线为低电平“0”,可判断是S12键被按下
P1=0xf7; //第四行置为低电平“0”(P1.3输出低电平“0”)
if(P14==0) keyval=13; //如果检测到接P1.4引脚的列线为低电平“0”,可判断是S13键被按下
if(P15==0) keyval=14; //如果检测到接P1.5引脚的列线为低电平“0”,可判断是S14键被按下
if(P16==0) keyval=15; //如果检测到接P1.6引脚的列线为低电平“0”,可判断是S15键被按下
if(P17==0) keyval=16; //如果检测到接P1.7引脚的列线为低电平“0”,可判断是S16键被按下
依次类推,得到4×4=16个按键的键值。就知道哪个按键被按下。