标题: 求助 谁在帮我看看,于数码管显示问题。 [打印本页]
作者: wodedzw 时间: 2017-5-6 00:48
标题: 求助 谁在帮我看看,于数码管显示问题。
用hc139控制四个数码管动态显示,为啥最后一位一直都是8,而且四个数码管显示一直都不变。
作者: 归依龙井 时间: 2017-5-6 03:54
程序呢,还有硬件图
作者: 51Lovers 时间: 2017-5-6 08:43
应该不会,要么都不对要么全对,要学好C51,先学会单步调试。试试单步调试排除软件问题,软件没问题再检查硬件是否正确。
作者: wodedzw 时间: 2017-5-6 08:47
程序太多,分模块写的
作者: wodedzw 时间: 2017-5-6 08:50
显示5558的那四个数码管,程序太多,分模块写的。怎么发呀。
-
P70506-084935.jpg
(95.2 KB, 下载次数: 127)
作者: 军师祭酒 时间: 2017-5-6 08:58
最后一位显示8,应该是你没消隐导致两个数显示重叠了,具体的还得看你的程序,能不能发一下你的程序好帮你解决
作者: w1179benp 时间: 2017-5-6 10:10
这问题问的,都不知如何帮你
作者: wodedzw 时间: 2017-5-6 10:47
图发不上来啊
作者: 519762768 时间: 2017-5-6 11:07
就根据你的提问来大致说下:1找硬件问题,2找程序问题。3程序下载至硬件协议/通讯/。
作者: 48578946416749 时间: 2017-5-6 12:47
什么都没有给|?
作者: 13819348 时间: 2017-5-6 13:17
动态刷新
作者: ttzms 时间: 2017-5-6 13:27
全部显示8表明数码管的abcdefg都被点亮,检查一下程序
作者: 鹰眼科技 时间: 2017-5-6 13:30
来个模拟图·电路看看 是实物还是模拟?
作者: ym0706 时间: 2017-5-6 13:53
你还是先把程序和原理图放出来吧 ,不然,我们也没办法帮你找问题
作者: zl2168 时间: 2017-5-6 14:51
本帖最后由 zl2168 于 2017-5-6 14:52 编辑
实例57 74LS139选通4位LED数码管动态显示
实例57 74LS139选通4位共阴LED数码管动态显示.rar
(48.12 KB, 下载次数: 3)
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。
作者: wodedzw 时间: 2017-5-6 17:10
#include<reg51.h>
#include"SEGx8.H"
#include"DELAY.H"
#include"DS1302.H"
#include"NONGLI.H"
#define SEGx8_Port P0 //硬件端口定义
extern unsigned char dtime[7][2];
extern unsigned char ntime[3][2];
#define uchar unsigned char
#define uint unsigned int
sbit E1=P2^0; //定义数码管使能引脚1
sbit E2=P2^1; //定义数码管使能引脚2
sbit E3=P2^2; //定义数码管使能引脚3
sbit E4=P2^3; //定义数码管使能引脚4
sbit E5=P1^0; //定义数码管使能引脚5
sbit E6=P1^1; //定义数码管使能引脚6
unsigned char SEGx8_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char SEGx8_bits[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
/*--------------------------底层驱动-----------------------------*/
void SEGx8_WEI(unsigned char _Numb) //位选
{
switch(_Numb)
{
case 0: P2=0X00;break;
case 1: P2=0X01;break;
case 2: P2=0X02;break;
case 3: P2=0X03;break;
case 4: P2=0X04;break;
case 5: P2=0X05;break;
case 6: P2=0X06;break;
case 7: P2=0X07;break;
case 8: P2=0X08;break;
case 9: P2=0X09;break;
case 10: P2=0X0A;break;
case 11: P2=0X0B;break;
case 12: P2=0X0C;break;
case 13: P2=0X0D;break;
case 14: P2=0X0E;break;
case 15: P2=0X0F;break;
case 16: P1=0X00;break;
case 17: P1=0X01;break;
case 18: P1=0X02;break;
case 19: P1=0X03;break;
default :break;
}
}
void SEGx8_DUAN(unsigned char _Numb) //位选
{
switch(_Numb)
{
case 0: SEGx8_Port=0X3f;break;
case 1: SEGx8_Port=0X06;break;
case 2: SEGx8_Port=0X5b;break;
case 3: SEGx8_Port=0X4f;break;
case 4: SEGx8_Port=0X66;break;
case 5: SEGx8_Port=0X6d;break;
case 6: SEGx8_Port=0X7d;break;
case 7: SEGx8_Port=0X07;break;
case 8: SEGx8_Port=0X7f;break;
case 9: SEGx8_Port=0X6f;break;
default :break;
}
}
/*----------------------------实际应用------------------------*/
void showtime(void)
{
unsigned char i,d1,d2,m1,m2;
Conversion(0,YEAR,MONTH,DATE);
m1=month_moon/10;
m2=month_moon%10;
d1=day_moon/10;
d2=day_moon%10;
for(i=0;i<10;i++)
{
SEGx8_WEI(0);SEGx8_Port=0X5b;delayms(1);//显示年
SEGx8_WEI(1);SEGx8_Port=0X3f;delayms(1);
SEGx8_WEI(2);SEGx8_DUAN(dtime[5][0]-0x30); delayms(1);
SEGx8_WEI(3);SEGx8_DUAN(dtime[5][1]-0x30); delayms(1);
SEGx8_WEI(4);SEGx8_DUAN(dtime[4][0]-0x30);delayms(1);//显示月
SEGx8_WEI(5);SEGx8_DUAN(dtime[4][1]-0x30);delayms(1);
SEGx8_WEI(6);SEGx8_DUAN(dtime[3][0]-0x30);delayms(1);//显示日
SEGx8_WEI(7);SEGx8_DUAN(dtime[3][1]-0x30);delayms(1);
SEGx8_WEI(8);SEGx8_DUAN(dtime[2][0]-0x30);delayms(1); //显示时
SEGx8_WEI(9);SEGx8_DUAN(dtime[2][1]-0x30);delayms(1);
SEGx8_WEI(10);SEGx8_DUAN(dtime[1][0]-0x30);delayms(1);//显示分
SEGx8_WEI(11);SEGx8_DUAN(dtime[1][1]-0x30);delayms(1);
SEGx8_WEI(12);SEGx8_DUAN(dtime[0][0]-0x30);delayms(1);//显示秒
SEGx8_WEI(13);SEGx8_DUAN(dtime[0][1]-0x30);delayms(1);
SEGx8_WEI(14);SEGx8_DUAN(dtime[6][0]-0x30);delayms(1);//显示星期
SEGx8_WEI(15);SEGx8_DUAN(dtime[6][1]-0x30);delayms(1);
SEGx8_WEI(16);SEGx8_DUAN(m1-0x30); delayms(1);//农历月
SEGx8_WEI(17);SEGx8_DUAN(m2-0x30); delayms(1);
SEGx8_WEI(18);SEGx8_DUAN(d1-0x30); delayms(1);//农历日
SEGx8_WEI(19);SEGx8_DUAN(d2-0x30); delayms(1);
}
}
作者: wodedzw 时间: 2017-5-6 17:11
这是数码管显示的程序
作者: wodedzw 时间: 2017-5-6 17:20
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |