一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 3189|回复: 4

请教点阵屏时钟程序

[复制链接]
发表于 2012-8-22 14:09 | 显示全部楼层 |阅读模式
1. 请教各位下面语句中if (Hour%16>9) Hour=Hour+6;是什么意思?时分秒都是这样的.

if (KeyState==1)
{
Hour++;
if (Hour%16>9) Hour=Hour+6;
if (Hour>0x23) Hour=0;
}
else if (KeyState==2)
{
Minute++;
if (Minute%16>9) Minute=Minute+6;
if (Minute>0x59) Minute=0;
}

2. 还有为什么我的显示屏上半部分的最后一行和下半部分最后一行都比其他的要亮很多?
发表于 2012-8-22 18:50 | 显示全部楼层
1 应该是BCD码的缘故。
9加一是10,bcd码就是0x10也就是16。

2 有可能是oe极性反了。
回复

使用道具 举报

 楼主| 发表于 2012-8-23 08:26 | 显示全部楼层
请 mdy-5153 回复, 因为你可能比较熟悉这个程序,谢谢.

1. Hour%16>9 我知道是判断各位是否进位,但是 Hour=Hour+6 是什么意思?
如果我要增加一个减1的按键,对应的那一句该怎么写呢?

if (KeyState==11)
{
Hour--;
//这一句该怎么写?
if (Hour<0x00) Hour=0x23;
}

2. 我的OE直接接5V了,没有控制, 第16行比较亮是不是这个原因呢?
回复

使用道具 举报

 楼主| 发表于 2012-8-25 15:26 | 显示全部楼层
没人知道吗? Hour=Hour+6是什么意思?
回复

使用道具 举报

发表于 2012-8-25 20:37 | 显示全部楼层
本帖最后由 lyxing 于 2012-8-26 21:34 编辑

回复 4# heroshi


可以这样理解,Hour为了数据处理方便,将十六进制当十进制处理计数,高四位为十进制的十位,
低四位为十进制的个位,如:0x21虽为十进制33,但实际表示十进制时间21:00。

if (Hour%16>9) Hour=Hour+6;

当Hour为0x0A(10)时,Hour%16=0x0A,则Hour+6=0x10(十进制16,实际按十进制10处理,表示当前时间10:00),

如果减数,可以试试如下写,可能会好理解些。

if (KeyState==11)
{
if (Hour==0x00) Hour=0x23;
esle if(Hour==0x10) Hour=0x09;
esle if(Hour==0x20) Hour=0x19;
esle  Hour--;
}

最后一行亮度不一致,可能与前几行扫描的延时时间不同引起的,如果没有OE控制,可以在第十六行显示延时后关闭行选,或者再发送一组全0或全1(根据数据有效电平选择0或1)数据来关闭显示。
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-24 09:35 , Processed in 0.032930 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表