用STC89C52 ,74hc138驱动列,74hc595驱动行,8x8点阵显示问题。
程序如下,想显示箭头,结果只显示了最后一行的两个点。想破脑袋也不会,初学者的苦恼,希望高人指点,或者推荐一篇相关文章,和我这题目一样的.#include<reg52.h>...
程序如下,想显示箭头,结果只显示了最后一行的两个点。
想破脑袋也不会,初学者的苦恼,希望高人指点,或者推荐一篇相关文章,和我这题目一样的.
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit H_shcp=P1^3; //HC595芯片
sbit H_stcp=P1^4;
sbit H_oe=P1^5;
sbit H_ds=P1^6;
sbit HC138_G=P3^1; //HC138芯片
uchar data_t[]={0,0x66,0x99,0x81,0x81,0x42,0x24,0x18}; //桃心
uchar data_j[]={0x00,0x00,0x18,0x3c,0x5a,0x18,0x00,0x00}; //箭头
void sendbyte_H(uchar aa) //HC595控制 行
{
uchar z;
for(z=0;z<8;z++) //循环8次移入数据
{
H_shcp=0;
H_ds=aa&0x01; //数据进入HC595数据线上
H_shcp=1; //数据在上升沿输入
aa>>=1; //数据右移一位
}
H_stcp=0;
H_stcp=1; //一个高电平上升沿将数据送入显示
H_ds=1; //释放数据总线
}
void sendbyte_L() //HC138控制 列
{
static uchar i;
P1=(P1&0xf8)|i; //先与后或
++i;
if(i>=8)
i=0;
}
void main()
{
uint i,j,t,r;
H_oe=0;
HC138_G=1;
i=0;
// wei_1(); //关闭八段数码管
while(1)
{
for(r=20;r>0;r--) //显示箭头
{
for(i=0;i<8;i++)
{
sendbyte_H(data_j[i]);
sendbyte_L();
for(j=300;j>0;j--);
}
}
for(t=10;t>0;t--) //关闭显示
{
for(i=0;i<8;i++)
{
sendbyte_H(0);
sendbyte_L();
for(j=1000;j>0;j--);
}
}
}
} 展开
想破脑袋也不会,初学者的苦恼,希望高人指点,或者推荐一篇相关文章,和我这题目一样的.
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit H_shcp=P1^3; //HC595芯片
sbit H_stcp=P1^4;
sbit H_oe=P1^5;
sbit H_ds=P1^6;
sbit HC138_G=P3^1; //HC138芯片
uchar data_t[]={0,0x66,0x99,0x81,0x81,0x42,0x24,0x18}; //桃心
uchar data_j[]={0x00,0x00,0x18,0x3c,0x5a,0x18,0x00,0x00}; //箭头
void sendbyte_H(uchar aa) //HC595控制 行
{
uchar z;
for(z=0;z<8;z++) //循环8次移入数据
{
H_shcp=0;
H_ds=aa&0x01; //数据进入HC595数据线上
H_shcp=1; //数据在上升沿输入
aa>>=1; //数据右移一位
}
H_stcp=0;
H_stcp=1; //一个高电平上升沿将数据送入显示
H_ds=1; //释放数据总线
}
void sendbyte_L() //HC138控制 列
{
static uchar i;
P1=(P1&0xf8)|i; //先与后或
++i;
if(i>=8)
i=0;
}
void main()
{
uint i,j,t,r;
H_oe=0;
HC138_G=1;
i=0;
// wei_1(); //关闭八段数码管
while(1)
{
for(r=20;r>0;r--) //显示箭头
{
for(i=0;i<8;i++)
{
sendbyte_H(data_j[i]);
sendbyte_L();
for(j=300;j>0;j--);
}
}
for(t=10;t>0;t--) //关闭显示
{
for(i=0;i<8;i++)
{
sendbyte_H(0);
sendbyte_L();
for(j=1000;j>0;j--);
}
}
}
} 展开
5个回答
展开全部
没有看到你的原理图,只能从原理上告诉你如何检查故障,或称之为“授以渔”吧。
你的问题是:结果只显示了最后一行的两个点
说明你的sendbyte_L()行选择有问题,可能是软件问题,也可能是硬件问题
首先断开138输入A、B、C与cpu的连接,手动设置A、B、C的高低电平,看显示是否对应的8个行是否轮流都亮,不亮再看138输出8个引脚的电平是否相应变化,这样就可以排查硬件问题。
假如硬件没有问题,检查软件,你的关闭显示段去掉,再看看;或者直接在程序中固定某行亮,依次排查,相信很快就可以找到问题所在了。
在检查故障中可以学到很多东西,比一帆风顺的做好作品学到的东西要多得多。
祝你成功!
你的问题是:结果只显示了最后一行的两个点
说明你的sendbyte_L()行选择有问题,可能是软件问题,也可能是硬件问题
首先断开138输入A、B、C与cpu的连接,手动设置A、B、C的高低电平,看显示是否对应的8个行是否轮流都亮,不亮再看138输出8个引脚的电平是否相应变化,这样就可以排查硬件问题。
假如硬件没有问题,检查软件,你的关闭显示段去掉,再看看;或者直接在程序中固定某行亮,依次排查,相信很快就可以找到问题所在了。
在检查故障中可以学到很多东西,比一帆风顺的做好作品学到的东西要多得多。
祝你成功!
展开全部
检查电源是否充裕
建议换74LS系列
74LSxxxx 是 Low power Schottky制程
74HCxxxx 是 High speed CMOS 制程
两者 功能是一样的, 规格上有些差异
74LS 供电压 VCC 5V +/- 5% , 74HC 供电压 VCC 2.0 ~ 6.0V
输入电压 High (ViH) 74LS 是 2.0V , 74HC 是3.5V
输入电压 Low (ViL) 74LS 是 0.8V , 74HC 是1.5V
输出电压 High (VoH) 74LS 是 2.7Vmin , 74HC 是VDD-0.1V
输出电压 Low (VoL) 74LS 是 0.5V , 74HC 是0.1V
静泰消耗电流 74LS 是 0.4mA , 74HC 是0.0005mA
传递延迟 Tp 74LS 是 9.0ns ,74HC 是 8.0ns
74LS 比较耗电, 驱动能力也比较强, 如果不考虑耗电量
建议换74LS系列
74LSxxxx 是 Low power Schottky制程
74HCxxxx 是 High speed CMOS 制程
两者 功能是一样的, 规格上有些差异
74LS 供电压 VCC 5V +/- 5% , 74HC 供电压 VCC 2.0 ~ 6.0V
输入电压 High (ViH) 74LS 是 2.0V , 74HC 是3.5V
输入电压 Low (ViL) 74LS 是 0.8V , 74HC 是1.5V
输出电压 High (VoH) 74LS 是 2.7Vmin , 74HC 是VDD-0.1V
输出电压 Low (VoL) 74LS 是 0.5V , 74HC 是0.1V
静泰消耗电流 74LS 是 0.4mA , 74HC 是0.0005mA
传递延迟 Tp 74LS 是 9.0ns ,74HC 是 8.0ns
74LS 比较耗电, 驱动能力也比较强, 如果不考虑耗电量
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检查电源是否充裕
建议换74LS系列
74LSxxxx 是 Low power Schottky制程
74HCxxxx 是 High speed CMOS 制程
两者 功能是一样的, 规格上有些差异
74LS 供电压 VCC 5V +/- 5% , 74HC 供电压 VCC 2.0 ~ 6.0V
输入电压 High (ViH) 74LS 是 2.0V , 74HC 是3.5V
输入电压 Low (ViL) 74LS 是 0.8V , 74HC 是1.5V
输出电压 High (VoH) 74LS 是 2.7Vmin , 74HC 是VDD-0.1V
输出电压 Low (VoL) 74LS 是 0.5V , 74HC 是0.1V
静泰消耗电流 74LS 是 0.4mA , 74HC 是0.0005mA
传递延迟 Tp 74LS 是 9.0ns ,74HC 是 8.0ns
74LS 比较耗电, 驱动能力也比较强, 如果不考虑耗电量
你的串号我已经记下,采纳后我会帮你制作
建议换74LS系列
74LSxxxx 是 Low power Schottky制程
74HCxxxx 是 High speed CMOS 制程
两者 功能是一样的, 规格上有些差异
74LS 供电压 VCC 5V +/- 5% , 74HC 供电压 VCC 2.0 ~ 6.0V
输入电压 High (ViH) 74LS 是 2.0V , 74HC 是3.5V
输入电压 Low (ViL) 74LS 是 0.8V , 74HC 是1.5V
输出电压 High (VoH) 74LS 是 2.7Vmin , 74HC 是VDD-0.1V
输出电压 Low (VoL) 74LS 是 0.5V , 74HC 是0.1V
静泰消耗电流 74LS 是 0.4mA , 74HC 是0.0005mA
传递延迟 Tp 74LS 是 9.0ns ,74HC 是 8.0ns
74LS 比较耗电, 驱动能力也比较强, 如果不考虑耗电量
你的串号我已经记下,采纳后我会帮你制作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意楼上的答案,先检查电源,如果你不考虑耗电量,建议你换成74LS系列。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询