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;//时钟给上升延信号
}
} 你还没有成功地用74ls164点亮过数码管? sunliezhi 发表于 2012-11-8 21:19 static/image/common/back.gif
你还没有成功地用74ls164点亮过数码管?
是啊,是公司的项目,驱动12位数码管……搞了一天了,不知道问题出在哪里了?郁闷
是用74hc154作位选吗? sunliezhi 发表于 2012-11-8 23:11 static/image/common/back.gif
是用74hc154作位选吗?
是用74hc164作为段码输入…… 位选呢? sunliezhi 发表于 2012-11-9 00:04 static/image/common/back.gif
位选呢?
是74hc164作为段码输入端,通过级联2个74HC164的方式,控制3排数码管,一排四个数码管,位选由74HC138控制,现在遇到问题就是数码管闪烁,不稳定,我是通过定时器定时2ms扫描一数排数码管的,怎么会闪烁呢? Your set() and clr() macros are totally wrong.
millwood0 发表于 2012-11-10 10:26 static/image/common/back.gif
Your set() and clr() macros are totally wrong.
ICCAVR不支持宏嵌套吗? your macros do not do what you think they do. 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:39 编辑
用74HC154作位选,是4-16译码器,可扫描16位数码管;
每2ms刷一位数码管,全部刷完12位共需时24ms,刷新率也有41Hz。
软件方面再细调。 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 static/image/common/back.gif
呵呵,那就锻炼一下自己的分析能力吧。
3个74hc138输入端接到一起,不知道可不可以用一个74hc138代替?定时2ms扫描一位应该不行,数码管扫描频率为50Hz,则完成一轮扫描的时间就是1/50=20ms。我们的系统有4位数码管,则每位数码管在一轮扫描周期中点亮的时间为20/4=5ms,延时5ms应该差不多了。 bbxyliyang08 发表于 2012-11-10 20:13 static/image/common/back.gif
3个74hc138输入端接到一起,不知道可不可以用一个74hc138代替?定时2ms扫描一位应该不行,数码管扫描频率 ...
这样分析对吗? 求解
You are not understanding what you are doing. Those macros do not do what you think they do. 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 static/image/common/back.gif
你把电路图传上来看看
这是我根据PCB画出来的 为什么?
Just expand the macros.
164级联?
如果是我就用一片164负责3排(共12位)数码管的abcdefg.,12位位选用一片154。省掉2片164和2片138
楼主,你的宏定义是错误的,无法达到控制的效果的。自己展开看看。 mcu_lover 发表于 2012-11-11 00:57 static/image/common/back.gif
楼主,你的宏定义是错误的,无法达到控制的效果的。自己展开看看。
要定义成这样#define set(a,b)a=a|(1<<b) 才对,我还原以为ICCAVR不支持宏嵌套呢,谢谢了。 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应该差不多了。我 分析的对吗? sunliezhi 发表于 2012-11-11 00:41 static/image/common/back.gif
164级联?
如果是我就用一片164负责3排(共12位)数码管的abcdefg.,12位位选用一片154。省掉2片164和2片13 ...
一个74hc164能驱动12个数码管? 一次只点亮 1 位数码管 在这个简单, 联系我吧 sunliezhi 发表于 2012-11-11 17:55 static/image/common/back.gif
一次只点亮 1 位数码管
依照我的电路图定时2ms扫描一位应该不行,数码管扫描频率为50Hz,则完成一轮扫描的时间就是1/50=20ms。我们的系统有4位数码管,则每位数码管在一轮扫描周期中点亮的时间为20/4=5ms,延时5ms应该差不多了。我 分析的对吗? 为什么要限制在50Hz?
我在12楼就说了:每2ms刷一位数码管,全部刷完12位共需时24ms,刷新率也有41Hz,肉眼感觉没有闪烁感 其实只要刷新率在24Hz以上就不会有明显的闪烁感,电影的工作原理你忘了吗
页:
[1]