74LS148 单片机输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 09:15:10
按键接输入端0-7 输出端接 A0A1A2 接P1口 E1接地
在没有写P1口程序的时候 按键按下 输出电压高电平4.9
但是写了程序 按键 按下 高电平2.4V 低电平不变
有人指导为什么嘛?
麻烦大家 看下我的这个程序
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

uchar num;
uchar temp;
delay(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=25;b>0;b--)
;
}

void main()
{
while(1)
{
P0=0XC0;
P2=0X07;
P1=0XFF;
temp=P1;
do{}
while(temp!=0xff);
delay(50);
if(temp!=0xff)
{
switch(temp)
{
case 0xf0:num=0xF9;
break;
case 0xf1:num=0xA4;
break;
case 0xf2:num=0xB0;
break;
case 0xf3:num=0x99;
break;
case 0xf4:num=0x92;
break;
case 0xf5:num=0x82;
break;
case 0xf6:num=0xF8;
break;

正确方法:
读取74LS148编码时,先向P1口写#0FFH,然后再读P1口.

;==================
如果P1口某位写0,该位就会吸掉74LS148产生的编码信号,你就测出2.4V了而不是5V了

;
确认74LS148编码器能否产生正确的编码?
(可先拨掉单片机,测74LS148输出,按不同的键能否产生正确的编码)

剩下的就是单片机程序的问题了