bbxyliyang08 发表于 2012-11-8 21:04:48

74hc164低电平到高电平中要延时吗

/*a为要操作的寄存器, b要操作的位数*/
#define   set(a,b) a|(1<<b)      //置1
#define   clr(a,b) a&~(1<<b)   //置0
#define   DATA_H   set(PORTG,2)//数据输出至74HC164,高电平
#define   DATA_L   clr(PORTG,2)//数据输出至74HC164,低电平
#define   CLK_H    set(PORTC,6)//时钟输出至74HC164,高电平
#define   CLK_L    clr(PORTC,6)//时钟输出至74HC164,低电平



void write_164(uint8 ChrDat)
{
           uint8 i;
           for(i=8;i>0;i--)
           {
                           if(ChrDat&0x80)// 输出数据
                                DATA_H;
                        else
                                DATA_L;
                           ChrDat<<=1;//数据移位
                        CLK_L;
                        CLK_H;//时钟给上升延信号
           }

}

sunliezhi 发表于 2012-11-8 21:19:14

你还没有成功地用74ls164点亮过数码管?

bbxyliyang08 发表于 2012-11-8 21:33:49

sunliezhi 发表于 2012-11-8 21:19 static/image/common/back.gif
你还没有成功地用74ls164点亮过数码管?

是啊,是公司的项目,驱动12位数码管……搞了一天了,不知道问题出在哪里了?郁闷

sunliezhi 发表于 2012-11-8 23:11:20

是用74hc154作位选吗?

bbxyliyang08 发表于 2012-11-8 23:59:10

sunliezhi 发表于 2012-11-8 23:11 static/image/common/back.gif
是用74hc154作位选吗?

是用74hc164作为段码输入……

sunliezhi 发表于 2012-11-9 00:04:02

位选呢?

bbxyliyang08 发表于 2012-11-10 09:58:54

sunliezhi 发表于 2012-11-9 00:04 static/image/common/back.gif
位选呢?

是74hc164作为段码输入端,通过级联2个74HC164的方式,控制3排数码管,一排四个数码管,位选由74HC138控制,现在遇到问题就是数码管闪烁,不稳定,我是通过定时器定时2ms扫描一数排数码管的,怎么会闪烁呢?

millwood0 发表于 2012-11-10 10:26:45

Your set() and clr() macros are totally wrong.

bbxyliyang08 发表于 2012-11-10 10:37:35

millwood0 发表于 2012-11-10 10:26 static/image/common/back.gif
Your set() and clr() macros are totally wrong.

ICCAVR不支持宏嵌套吗?

millwood0 发表于 2012-11-10 10:38:47

your macros do not do what you think they do.

bbxyliyang08 发表于 2012-11-10 11:20:43

millwood0 发表于 2012-11-10 10:38 static/image/common/back.gif
your macros do not do what you think they do.

是这样的,我用avrstdio调试发现到宏嵌套语句就执行下一条语句,跳出这条语句不执行,让我很郁闷,求解,是ICCAVR不支持,还是所有编译器都不支持。

sunliezhi 发表于 2012-11-10 19:37:04

本帖最后由 sunliezhi 于 2012-11-10 19:39 编辑

用74HC154作位选,是4-16译码器,可扫描16位数码管;
每2ms刷一位数码管,全部刷完12位共需时24ms,刷新率也有41Hz。

软件方面再细调。

bbxyliyang08 发表于 2012-11-10 19:49:55

sunliezhi 发表于 2012-11-10 19:37 static/image/common/back.gif
用74HC154作位选,是4-16译码器,可扫描16位数码管;
每2ms刷一位数码管,全部刷完12位共需时24ms,刷新率 ...

我们公司的硬件就是用74HC138接的,用了3个74HC138控制3排的位选,74HC138的输入端接到了一起……

sunliezhi 发表于 2012-11-10 19:58:01

呵呵,那就锻炼一下自己的分析能力吧。

bbxyliyang08 发表于 2012-11-10 20:13:18

sunliezhi 发表于 2012-11-10 19:58 static/image/common/back.gif
呵呵,那就锻炼一下自己的分析能力吧。

3个74hc138输入端接到一起,不知道可不可以用一个74hc138代替?定时2ms扫描一位应该不行,数码管扫描频率为50Hz,则完成一轮扫描的时间就是1/50=20ms。我们的系统有4位数码管,则每位数码管在一轮扫描周期中点亮的时间为20/4=5ms,延时5ms应该差不多了。

bbxyliyang08 发表于 2012-11-10 20:15:45

bbxyliyang08 发表于 2012-11-10 20:13 static/image/common/back.gif
3个74hc138输入端接到一起,不知道可不可以用一个74hc138代替?定时2ms扫描一位应该不行,数码管扫描频率 ...

这样分析对吗?

millwood0 发表于 2012-11-10 20:28:03

求解

You are not understanding what you are doing. Those macros do not do what you think they do.

bbxyliyang08 发表于 2012-11-10 20:31:16

millwood0 发表于 2012-11-10 20:28 static/image/common/back.gif
You are not understanding what you are doing. Those macros do not do what you think they do.

为什么?

sunliezhi 发表于 2012-11-10 20:35:52

你把电路图传上来看看

bbxyliyang08 发表于 2012-11-10 20:46:26

sunliezhi 发表于 2012-11-10 20:35 static/image/common/back.gif
你把电路图传上来看看

这是我根据PCB画出来的

millwood0 发表于 2012-11-10 20:50:10

为什么?

Just expand the macros.

sunliezhi 发表于 2012-11-11 00:41:26

164级联?
如果是我就用一片164负责3排(共12位)数码管的abcdefg.,12位位选用一片154。省掉2片164和2片138

mcu_lover 发表于 2012-11-11 00:57:45

楼主,你的宏定义是错误的,无法达到控制的效果的。自己展开看看。

bbxyliyang08 发表于 2012-11-11 09:19:49

mcu_lover 发表于 2012-11-11 00:57 static/image/common/back.gif
楼主,你的宏定义是错误的,无法达到控制的效果的。自己展开看看。

要定义成这样#define   set(a,b)a=a|(1<<b) 才对,我还原以为ICCAVR不支持宏嵌套呢,谢谢了。

bbxyliyang08 发表于 2012-11-11 09:24:22

sunliezhi 发表于 2012-11-11 00:41 static/image/common/back.gif
164级联?
如果是我就用一片164负责3排(共12位)数码管的abcdefg.,12位位选用一片154。省掉2片164和2片13 ...

依照我的电路图定时2ms扫描一位应该不行,数码管扫描频率为50Hz,则完成一轮扫描的时间就是1/50=20ms。我们的系统有4位数码管,则每位数码管在一轮扫描周期中点亮的时间为20/4=5ms,延时5ms应该差不多了。我 分析的对吗?

bbxyliyang08 发表于 2012-11-11 09:31:18

sunliezhi 发表于 2012-11-11 00:41 static/image/common/back.gif
164级联?
如果是我就用一片164负责3排(共12位)数码管的abcdefg.,12位位选用一片154。省掉2片164和2片13 ...

一个74hc164能驱动12个数码管?

sunliezhi 发表于 2012-11-11 17:55:55

一次只点亮 1 位数码管

aaron96031 发表于 2012-11-11 17:57:40

在这个简单, 联系我吧

bbxyliyang08 发表于 2012-11-11 19:21:59

sunliezhi 发表于 2012-11-11 17:55 static/image/common/back.gif
一次只点亮 1 位数码管

依照我的电路图定时2ms扫描一位应该不行,数码管扫描频率为50Hz,则完成一轮扫描的时间就是1/50=20ms。我们的系统有4位数码管,则每位数码管在一轮扫描周期中点亮的时间为20/4=5ms,延时5ms应该差不多了。我 分析的对吗?

sunliezhi 发表于 2012-11-11 20:10:59

为什么要限制在50Hz?
我在12楼就说了:每2ms刷一位数码管,全部刷完12位共需时24ms,刷新率也有41Hz,肉眼感觉没有闪烁感

sunliezhi 发表于 2012-11-11 20:19:40

其实只要刷新率在24Hz以上就不会有明显的闪烁感,电影的工作原理你忘了吗
页: [1]
查看完整版本: 74hc164低电平到高电平中要延时吗