打印
[C语言]

16X16点阵屏显示时候当前行亮 下一行微亮

[复制链接]
1767|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zq_1943|  楼主 | 2016-12-9 14:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
使用595+154实现16X16点阵的设计,595给高电平,154给低电平实现点阵控制,目前点阵的设计显示均能够按照程序运行,出现当前行为高电平的下一行会有一点模糊的亮度,感觉是程序的问题,程序源码如下:
for(k=0;k<7;k++)   //显示汉字
{
        for(nums=0;nums<32;nums++)         {
                table1[nums]=table[k][nums];
        }
        for(j=0;j<100;j++)                                   //每个汉字显示20次,达到控制显示时间
        {
                for(i=0;i<16;i++)
                {
                             P1=i;                                           //P1从154输出扫描信号
                        sendbyte(table1[2*i+1]);        //根据电路图,先送一行的高字节
                        sendbyte(table1[2*i]);                //再送低字节
                        out595();                                //行与列输出完毕后,再放开锁存使数据分别送到595引脚,实现显示
                        delay100us(50);                        //延时0.5ms
                }
        }

}
void sendbyte(unsigned char temp) //向595发送一字节数据,顺序从高位到低位
{
        unsigned char i;
        for(i=0;i<8;i++)
        {
                CLK_LOW();
                DAT=temp&0x80;
                temp<<=1;
                CLK_SET();
        }
}
void out595(void)//将移位寄存器数据锁存至输出显示寄存器
{
        LCK_SET();
        __nop();
        __nop();
        __nop();
        LCK_LOW();       
}

11.jpg (217.47 KB )

上一行亮,下一行微亮

上一行亮,下一行微亮

相关帖子

沙发
ningling_21| | 2016-12-9 15:30 | 只看该作者
没有消隐

使用特权

评论回复
板凳
zq_1943|  楼主 | 2016-12-9 16:00 | 只看该作者

怎么消隐,是595送完数据后,关闭一下?

使用特权

评论回复
地板
李不走寻常路| | 2016-12-11 09:38 | 只看该作者
楼上仁兄说的很对,就是没消隐的原因。595送完数据后延时一会(延时越长亮度越亮),然后再想办法使当前行全灭(这就是消隐)

使用特权

评论回复
5
chineseboyzxy| | 2016-12-11 11:08 | 只看该作者
每一行都要点亮,延时,关闭,才能转下一行。

使用特权

评论回复
6
hdwgt| | 2016-12-22 09:02 | 只看该作者
将595的OE,LE启用就没事了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

52

帖子

1

粉丝