1616点阵显示屏.docx

上传人:b****6 文档编号:7061275 上传时间:2023-01-16 格式:DOCX 页数:9 大小:623.27KB
下载 相关 举报
1616点阵显示屏.docx_第1页
第1页 / 共9页
1616点阵显示屏.docx_第2页
第2页 / 共9页
1616点阵显示屏.docx_第3页
第3页 / 共9页
1616点阵显示屏.docx_第4页
第4页 / 共9页
1616点阵显示屏.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

1616点阵显示屏.docx

《1616点阵显示屏.docx》由会员分享,可在线阅读,更多相关《1616点阵显示屏.docx(9页珍藏版)》请在冰豆网上搜索。

1616点阵显示屏.docx

1616点阵显示屏

16×16点阵显示屏成功点亮!

     看到江同学的3216屏(),对于我来说,稍显复杂,所以决定做个1616的屏看看效果,原理图就是以下了,注意做1616时,要去掉一个74LS154(当然这里也能换用74HC154,虽然功耗大,但价格较低),经过两天的奋斗,终于完工了。

简单的调试后,点亮了!

编个流动显示的程序,哈哈,很炫啊。

心动不如赶快行动啊!

      我是把点阵块焊到一块板子上,可方便检查有无虚焊,控制部分放到了另一张板上,做成的实物图就是下面的了,视频在这里:

(注:

以下原理图均来自)

/*********************************************************

程序名称:

LED1616点阵流动显示汉字

简要说明:

最大可显示16*16汉字

                  P0口接上行线,P2口接下行线,P3口接扫描线

编   写:

  JiangX.net

改   编:

  springvirus

*********************************************************/

#include

#definehang1  P0      //上行线

#definehang2  P2      //下行线

#definelie     P1//列线

#definesum  sizeof(hanzi)/32//自动计算汉字字数

/*****参数设置*****/

#defineziti   16  //字体大小(宽度)

#definelight  50  //显示亮度

#definemove_speed50    //移动速度

unsignedcharcodehanzi[]={

/*--文字:

自--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0x00,0x00,0x00,0xF8,0x48,0x48,0x4C,0x4B,0x4A,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,

0x00,0x00,0x00,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00,

/*--文字:

制--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0x00,0x50,0x4F,0x4A,0x48,0xFF,0x48,0x48,0x48,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,

0x00,0x00,0x3F,0x01,0x01,0xFF,0x21,0x61,0x3F,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,

/*--文字:

小--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0x00,0x00,0x00,0xC0,0x70,0x20,0x00,0xFF,0x00,0x10,0x20,0xC0,0x80,0x00,0x00,0x00,

0x04,0x02,0x01,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x01,0x07,0x02,0x00,

/*--文字:

型--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0x10,0x12,0x92,0x7E,0x12,0x12,0xFE,0x12,0x12,0x10,0xFC,0x00,0x00,0xFF,0x00,0x00,

0x40,0x42,0x49,0x48,0x48,0x48,0x49,0x7E,0x48,0x48,0x48,0x4A,0x4C,0x4B,0x40,0x00,

/*--文字:

点--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0x00,0x00,0x00,0xE0,0x20,0x20,0x20,0x3F,0x24,0x24,0x24,0xF4,0x24,0x00,0x00,0x00,

0x00,0x40,0x30,0x07,0x12,0x62,0x02,0x0A,0x12,0x62,0x02,0x0F,0x10,0x60,0x00,0x00,

/*--文字:

阵--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0xFE,0x02,0x12,0x2A,0xC6,0x88,0xC8,0xB8,0x8F,0xE8,0x88,0x88,0x88,0x88,0x00,0x00,

0xFF,0x00,0x02,0x04,0x03,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x00,

/*--文字:

显--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0x00,0x00,0x00,0x3E,0x2A,0xEA,0x2A,0x2A,0x2A,0xEA,0x2A,0x3E,0x00,0x00,0x00,0x00,

0x20,0x21,0x22,0x2C,0x20,0x3F,0x20,0x20,0x20,0x3F,0x28,0x24,0x23,0x20,0x20,0x00,

/*--文字:

示--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0x00,0x20,0x20,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00,

0x10,0x08,0x04,0x03,0x00,0x40,0x80,0x7F,0x00,0x00,0x01,0x02,0x0C,0x18,0x00,0x00,

/*--文字:

系--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00,

0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00,

/*--文字:

统--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16  --*/

0x20,0x30,0x2C,0xA3,0x60,0x10,0x84,0xC4,0xA4,0x9D,0x86,0x84,0xA4,0xC4,0x84,0x00,

0x20,0x22,0x23,0x12,0x12,0x92,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x41,0x70,0x00,

/*****空白,用于区分显示内容的头和尾*****/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

uintk=0,j;     //移位变量,k:

移位个数

uinta=0;     //用于软件延时  

ulongs=(sum+1)*ziti;  //s为全部列数

uchardisbuf[16][2];    //定义显示缓冲区(16行两列的二维数组以开辟1个16*16汉字的空间)

bit  move_st;   //移动标志

/*****可变延时*****/

voiddelay(void)    

{

uchari;

for(i=0;i

}

/*****初始化子程序*****/

voidinit(void)  

{    

  TMOD=0x1;

  TH0=0xfc;

  TL0=0x18;

}

/*****计数器中断程序*****/

voidtimer0(void)interrupt1   //中断处理

{

  TH0=0xfc;

  TL0=0x18;

  a++;         

}

/*****汉字循环显示*****/

voidrun_move(void)

{

uchark1,k2;

if(a>=move_speed)//move_speed控制移动速度

{    

       

  if(k>s-ziti-1)k=0;//整屏移动列数  

  k1=k/ziti;

  k2=k%ziti;

  j=ziti*2*k1+k2;  //显示指针

  k++;

  move_st=1;

  a=0;

}

}

/*****装载显示数据至缓冲区*****/

voidload_hanzi(void)

{  

uchari;

run_move();

if(move_st)

{

  for(i=0;i<15;i++)

  {

   disbuf[i][0]=disbuf[i+1][0];//移位处理

   disbuf[i][1]=disbuf[i+1][1];//移位处理

  }

  disbuf[15][0]=hanzi[j];

  disbuf[15][1]=(hanzi[ziti+j]);   

  move_st=0;     

}  

}

/*****扫描显示数据缓冲区的内容*****/

voiddisplay(void)

{  

uchari;

for(i=0;i<16;i++)

{

  lie=i;       

  hang1=disbuf[i][0];

  hang2=disbuf[i][1];

  delay();

  hang1=0;

  hang2=0;     

}

}

/*****主程序*****/

voidmain(void)

{   init();

     EA=1;//开中断

    TR0=1;         

    ET0=1;       

   while

(1)

{load_hanzi();

    display();}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1