一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 2479|回复: 1

16*16点阵左移显示程序请教

[复制链接]
发表于 2012-8-2 12:52 | 显示全部楼层 |阅读模式
# include <STC90.H>
# define uint unsigned int
# define uchar unsigned char
sbit Data=P3^0;
sbit CLK=P3^1;
sbit G=P3^2;
sbit STB=P1^7;
uchar move;//列指针
uchar line;//行指针
uint word;//字模计数器
uchar speed=40;
uchar BUFF[4];//缓存
void load_data(void);// 调整数据
void send_data(void);//发送数据
void scan();//16段扫描
uchar code table[]=
{
0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0x80,0x03,0xFB,0xFF,0xF6,0xFF,0xEE,0xFF,0xDE,0xFF,
0xC0,0x07,0xFE,0xFF,0xF6,0xDF,0xEE,0xEF,0xDE,0xF7,0xBE,0xFB,0xFA,0xFF,0xFD,0xFF,0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0xFB,0xB7,0x83,0xAF,0xFB,0x9F,0xFB,0xBF,
0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0xFB,0xBD,0xE3,0xBD,0x1B,0xBD,0xBB,0xC1,0xFB,0xFF,
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,
0xFD,0x7F,0xFD,0x7F,0xFB,0xBF,0xFB,0xBF,0xF7,0xDF,0xEF,0xEF,0xDF,0xF7,0x3F,0xF9,
0xDD,0xF7,0xEE,0xF7,0xEE,0xEF,0xFF,0xDF,0x80,0x01,0xBF,0xFD,0x7F,0xFB,0xE0,0x1F,
0xFF,0xBF,0xFE,0x7F,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF
};
void main(void)
{
   uchar i;
   move=0;
   word=0;
   G=0;
   while(1)
   {
      while(move<16)//数据移位
   {
      for(i=0;i<speed;i++)//移动速度
   {
      scan();
   }
   move++;//移动一步
   }
   move=0;
   word=word+32;//后移一个字
   if(word>=128) //到最后从头开始
       word=0;
   }
}
void scan()
{
   for(line=0;line<16;line++)
   {
      load_data();  //调整数据
   send_data(); //串口发送数据   
   P1=0x7f;//关闭显示
   STB=1;  //锁存为高
   P1=line;//行选
   }
}
void load_data(void)
{
   char s;
   for(s=1;s>=0;s--)//s为屏数加1(16*16为一屏)
   {
      
   BUFF[2*s]=table[word+(32*s)+(2*line)];//左半屏,line是行数,word是字数
   BUFF[2*s+1]=table[word+(32*s+1)+(2*line)];//右半屏
   }
}
void send_data(void)
{
   char s;
   uchar inc,tempyd,temp;
   if(move<8)
        inc=0;
   else
        inc=1;
   for(s=0+inc;s<2+inc;s++)
   {
      if(move<8)
      tempyd=move;
   else
      tempyd=move-8;
   temp=(BUFF<<tempyd)|(BUFF[s+1]>>(8-tempyd));
   //temp=255-temp;
   SBUF=temp;
   while(!TI);
   TI=0;
   }
}

哪位帮忙指点一下,这两个函数的具体的实现功能,劳烦对关键语句给予详尽的注释。谢谢!哪位能帮忙讲解一下左移扫描显示的原理更为甚好。。谢谢大家了。。。
 楼主| 发表于 2012-8-3 19:22 | 显示全部楼层
哪位大侠指点一下。多谢了。。
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-3-13 22:46 , Processed in 0.032031 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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