LED显示屏虚亮和错位,有时还有闪烁的问题。

[复制链接]
4853|1
 楼主| luling5897 发表于 2013-3-24 13:46 | 显示全部楼层 |阅读模式
  1. void Byte_Data_in(uchar R1_data) //595移位
  2. {
  3. uchar i;

  4. for(i=0; i<8; i++)
  5. {
  6. R1_data <<= 1;
  7. shift_dataR1= CY;

  8. shift_clk = 0;
  9. _nop_();
  10. shift_clk = 1;
  11. }
  12. shift_clk = 0;
  13. }

  14. void ROW_138(uchar word, uchar gg, uchar noread) //138扫描显示
  15. {
  16. uchar i,j,k;

  17. if(!noread)
  18. {
  19. for(i=0;i<8;i++) //移位存储显示内容
  20. {
  21. if(left)
  22. {
  23. mov1_mov(l_word*2, gg, i, word_buffer0, led_display_data);//左 滚动显示时移位函数
  24. }
  25. if(middle)
  26. {
  27. mov1_mov(m_word*2, gg, i, word_buffer1, led_display_data+l_word*32);//中 滚动显示时移位函数
  28. }
  29. if(right)
  30. {
  31. mov1_mov(r_word*2, gg, i, word_buffer2, led_display_data+l_word*32+m_word*32);//右 滚动显示时移位函数
  32. }
  33. }
  34. }

  35. for(i=0;i<8;i++)
  36. {
  37. for(j=0;j<word*2;j++)
  38. {
  39. for(k=2;k>0;k--)
  40. {
  41. Byte_Data_in(led_display_data[j*16+(k-1)*8+i]);
  42. }
  43. }
  44. //EN = 1; //关显示,消隐
  45. latch_clk= 0;

  46. row138_A = i&1;
  47. row138_B = i&2;
  48. row138_C = i&4; //138行选

  49. latch_clk= 1; //锁存时钟(上升沿有效)

  50. EN = 0;
  51. timer0_val(); //T0初值重置,开定时器T0,定时1ms
  52. delay_us(280); //延时1.4ms
  53. }
  54. delay_us(980); //延时4.9ms
  55. EN = 1;
  56. }

  57. void timer0_val() //T0初值重置,开定时器T0
  58. {
  59. TH0 = 0xF8;
  60. TL0 = 0xCD; //定时器定时1ms
  61. TR0 = 1; //开定时器
  62. }

  63. void timer0_intrrupt() interrupt 1 //定时器T0中断服务程序
  64. {
  65. TR0 = 0; //关定时器
  66. EN = 1; //关138使能
  67. }

       程序是1/8扫描的,按照这些程序写,亮度足够,显示正常,就是有虚亮现象,如果把138扫描函数里面的EN=1不屏蔽的话,亮度足够,也没有了虚亮,但是滚动显示的时候有些灯会闪烁(即个别灯会跳动显示),不知道程序哪里可以改进,麻烦路过的各位指点指点,谢谢!以上是部分相关的程序。
 楼主| luling5897 发表于 2013-3-26 09:07 | 显示全部楼层
都是路过的,没人给点意见。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

35

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部