• 大小: 130KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-21
  • 语言: 其他
  • 标签: proteu  LED点阵  

资源简介

使用Proteus7.8实现LED点阵显示的仿真。可以显示一行四个汉字,有跑马滚动显示文字效果。可以显示多于4字的整行文字。提供仿真图,源代码。 注意,仿真时宏定义要修改一下,如下所示: //因为仿真时延时要短些,所以仿真时设为1,实际硬件设为0 #define FANGZHEN 1

资源截图

代码片段和文件信息

/*64*16点阵屏的显示点阵屏的显示*/
//因为仿真时延时要短些,所以仿真时设为1,实际硬件设为0
#define FANGZHEN 0

#if FANGZHEN==1
#include    //51头文件
#else
#include “STC15W4K.h“
#endif

#include       //_nop_()函数要用
#include 
#include “27.h“   



//显示一屏信息多少秒
//返回值: void
//参数:
//uint s:  一屏显示停留多少秒
void displayDelay(uint s)  
{
uchar idata i;
while(s--)
{
   #if FANGZHEN==1                         
i=20;
   #else
    i=200;
   #endif
while(i--)
display();
}
}

//将汉字拷贝入缓存或显存
//返回值:void
//参数:
//uchar *buffer  将数据拷贝到哪里,可以是显示内存,也可以是其它缓存
//uchar x,      x坐标,从左边起是 01234567
//uchar *p,     是要显示的汉字或ASCII码
//uchar wide     是显示字符的宽度,例如汉字是2,ASCII码是1
//uchar len      显示缓存总共能放下几个字符,比如四个汉字就是4
//               长度单元最少为4,因为一屏4个汉字
void copy_one(uchar *buff uchar xuchar *puchar wideuchar len)
{
 uchar xdata rowi;

 if(len<4) len=4;

 //逐行拷贝 0-16行
 for(row=0; row<16; row++)
 {
  //向显存中拷贝一个字符wide=2两个字节
//或者ASCII=1码wide=1,一个字节
  for(i=0; i   //拷贝的起始位置
   //row*len*2是已经拷贝了几行,每行8个字节编号0-7每个汉字2字节
   //+x是显示的x坐标位置0-7
   //i是拷贝了几个字节,汉字两字节,ASCII一字节
   buff[row*len*2+x+i]=p[row*wide+i];
 }

}

//软件延时函数,在22.1184MHz时,延时2秒
//返回值:void
//参数:  void
void Delay2000ms() //@22.1184MHz
{
uchar idata i j k;

_nop_();
i = 29;
j = 4;
k = 219;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}


//向上或向下滚动清屏
//返回值:void
//参数:bit up_down:   清屏方式
//      1:向上清屏,0:向下清屏
void clear_up_down(bit up_down)
{
 uchar idata ij;
 uchar idata line;

 //向下清屏
 //就是将显示缓存中的128个字节重新拷贝一下,
 //显示缓存中的字节与显示屏的对应关系如下:
 //        1         2         3         4       可显示四个汉字
 //行01: [01]     [23]     [45]     [67]     对应第一行的四块LED
 //行02: [89]     [1011]   [1213]   [1415]   对应第二行的四块LED
 //...
 //行16: [120121] [122123] [124125] [126127] 对应第十六行的四块LED
 //要实现向下滚动的清屏,就是将所有数据向下移动一行并显示

 //如果是向下滚动
 if(up_down==0)  
 {  
 //有几行就移动几次,一共移动 16 次,
 for(line=1; line<=16; line++)
 {
  for(i=15; i>0; i--)
   for(j=0; j<8; j++)
    DispBuffer[i*8+j]=DispBuffer[(i-1)*8+j];

  //第0行全部补0
  for(j=0; j<8; j++)
  DispBuffer[j]=0;

  display();  //显示缓存中的全部内容
  }
 }
 else  //如果是向上滚动
  {
   //有几行就移动几次,一共移动 16 次,
   for(line=1; line<=16; line++)
   {
      for(i=0; i<15; i++)
        for(j=0; j<8; j++)
          DispBuffer[i*8+j]=DispBuffer[(i+1)*8+j];

  //第16行全部补0
  for(j=0; j<8; j++)
  DispBuffer[15*8+j]=0;

  display();  //显示缓存中的全部内容
   }
  }

 }



//左右跑马清屏
//返回值:void
//参  数:
//        bit R_L:清屏方式 
//        0左滚动,1右滚动
void clear_R_L(bit R_L)
{
 char  xdata colrowi;
 uchar xdata idelay;

 if(R_L==0)  //左跑马
 {
 //一共有8*8=64列
 for(col=0; col<64; col++)
 {
  //共16行
  for(row=0; row<16; row++)
  {
   //每行共8个字节 移动完这8个字节,才移动了某行的一列
   for(i=0; i<8; i++) 
   {
    if(i!=7)
{
    BYTE1=DispBuffer[row*8+i];     //前一个字节
 BYTE2=DispBuffer[row*8+i+1]; //它后面的一个字节

 BYTE1=BYTE1<<1;

 //将第二个字节的最高位填到第一个字节的末位
 i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-05-04 09:02  LED灯板Proteus仿真\
     目录           0  2019-05-04 09:04  LED灯板Proteus仿真\keil仿真版\
     文件       28569  2019-05-04 09:03  LED灯板Proteus仿真\keil仿真版\27.lst
     文件       21020  2019-05-04 09:03  LED灯板Proteus仿真\keil仿真版\27.m51
     文件       87373  2018-08-02 10:58  LED灯板Proteus仿真\keil仿真版\27.plg
     文件       57086  2019-05-04 09:04  LED灯板Proteus仿真\keil仿真版\27.uvopt
     文件       13491  2018-08-02 08:13  LED灯板Proteus仿真\keil仿真版\27.uvproj
     文件       57071  2019-05-04 08:52  LED灯板Proteus仿真\keil仿真版\27_uvopt.bak
     文件       13485  2018-08-02 08:11  LED灯板Proteus仿真\keil仿真版\27_uvproj.bak
     目录           0  2019-05-04 09:03  LED灯板Proteus仿真\keil仿真版\output\
     文件       20777  2019-05-04 09:03  LED灯板Proteus仿真\keil仿真版\output\27
     文件        7227  2019-05-04 09:03  LED灯板Proteus仿真\keil仿真版\output\27.hex
     文件         119  2019-05-04 09:03  LED灯板Proteus仿真\keil仿真版\output\27.lnp
     文件       24450  2019-05-04 09:03  LED灯板Proteus仿真\keil仿真版\output\27.obj
     文件         693  2019-05-04 09:04  LED灯板Proteus仿真\keil仿真版\output\27.plg
     目录           0  2019-05-04 09:02  LED灯板Proteus仿真\keil仿真版\src\
     文件       13087  2019-05-04 09:03  LED灯板Proteus仿真\keil仿真版\src\27.c
     文件        4416  2019-05-04 08:35  LED灯板Proteus仿真\keil仿真版\src\27.h
     文件       12803  2014-12-08 23:28  LED灯板Proteus仿真\keil仿真版\src\STC15W4K.H
     目录           0  2019-05-04 09:03  LED灯板Proteus仿真\proteus4\
     文件      175370  2019-05-04 09:03  LED灯板Proteus仿真\proteus4\26b.DSN
     文件        1221  2019-05-04 09:03  LED灯板Proteus仿真\proteus4\26b.PWI
     文件       53442  2018-07-30 23:23  LED灯板Proteus仿真\proteus4\ISIS.dmp
     文件      175370  2019-05-04 08:52  LED灯板Proteus仿真\proteus4\Last Loaded 26b.DBK
     文件          23  2019-05-04 08:56  LED灯板Proteus仿真\readme.txt

评论

共有 条评论