| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 839 人关注过本帖
标题:怎样用1/8扫描方式在16*32的led显示屏控制行选信号?
只看楼主 加入收藏
cyy21021093
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-6-14
收藏
 问题点数:0 回复次数:2 
怎样用1/8扫描方式在16*32的led显示屏控制行选信号?
刚开始学习LED显示屏,现在想使用1/8扫描方式在16*128的led显示屏上显示16*16字模的汉字,程序运行上面8行可正确显示,下面8行处于全部点亮状态,请高手赐教!!谢谢!
显示程序如下:
    void _display()
   {
       int i,j,k,yu,cu;
     for(i=0; i<16; i++)
      {  
                IOSET = LED_EN;   
                        for(j=0; j<128; j++)
                        {   
                                yu = j%16;
                                cu = j/16;
   
   
                            if(yu>=8)
                            switch((DB[cu][2*i+1] >> (7-(yu-8))) & 0x01)
                            {
                                    case 1:
                                        IOCLR = LED_R1;
                                        break;
                                    case 0:
                                        IOSET = LED_R1;
                                        break;
                            }
                            else
                            switch((DB[cu][2*i] >> (7-yu)) & 0x01)
                            {
                                    case 1:
                                        IOCLR = LED_R1;
                                        break;
                                    case 0:
                                        IOSET = LED_R1;
                                        break;
                                    }
                                IOCLR = LED_SCK;
                                IOSET = LED_SCK; //移位脉冲        
                                       
                        }   
                        IOCLR = LED_EN;
                        IOCLR = LED_RCK;
                        IOSET = LED_RCK;    //锁存信号

                           IOPIN = (IOPIN & 0xff0fffff) |(i << 20); //行选择
                        nDelay(10000);
                    }
                    
                    
        }
搜索更多相关主题的帖子: 汉字 LED显示屏 led显示屏 
2011-06-14 11:12
CSharp_Go
Rank: 2
等 级:论坛游民
帖 子:6
专家分:13
注 册:2011-7-1
收藏
得分:0 
写的真复杂,不想看
我正在教人写这类程序
有兴趣的
你先好好把硬件原理图SEND me
#include <reg52.h>
#include <intrins.H>
#include <stdlib.h>

sbit CLK=P3^2;    //clk

sbit R1=P1^2;     //Serial
sbit STB=P3^5;    //Load
sbit EN=P3^4;      //enable

int row_state=0;
int led_row=16;
int num=0;
char code table[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,1,1,1,0,1,0,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,0,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1};
void sendbyte_run_still()
{

          int i=0;


    for(i=0;i<64;i++)
    {
        CLK=0;
           P1=table[num+i];
        CLK=1;
    }

    num+=64;
}


void loadclk()
{
    nop_();
    STB=1;
    nop_();
    STB=0;
    nop_();
}
   //P0.0---P0.3 分别接LA,LB,LC,LD
void main()                                   
{
  EN=0;
while(1)
{
        if ( row_state==led_row ) {row_state=0;      num=0;}
        else row_state++;
        P0++;
        sendbyte_run_still();
        CLK=0;
        
        loadclk();
}
}



2011-07-01 16:02
CSharp_Go
Rank: 2
等 级:论坛游民
帖 子:6
专家分:13
注 册:2011-7-1
收藏
得分:0 
这个程序属于删减版,很多冗余的,你参考参考吧
2011-07-01 16:03
快速回复:怎样用1/8扫描方式在16*32的led显示屏控制行选信号?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015058 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved