资源简介
使用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
- 上一篇:淘宝天猫秒杀JS源码
- 下一篇:2020等级测评题集.rar
相关资源
- 51单片机PWM程序,占空比、周期可调整
- proteus仿真 AT89C51输出各种波形
- 00
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- DS18B20分布式多点测温的Proteus仿真
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 51多机通信(内附Proteus及.hex文件)
- IIC proteus仿真实验
- 8086交通灯 Proteus原理图及程序
- 单片机仿真软件proteus6.7免安装绿色版
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
- 单片机驱动4相步进电机proteus仿真
- proteus元件库对照表 (整理清晰)
- 微机原理 十字路口交通灯控制 prot
- 中央空调室内智能温控器设计论文、
- 基于51单片机的交通灯设计
- 基于AT89C51的十字路口交通灯设计pro
- Proteus单片机仿真大全几百个part4
- Proteus升压电路仿真
- keil调试仿真技巧-从入门到精通
- 十字路口交通灯.pdsprj
- 12864液晶Proteus模型
- 数电设计 交通灯控制逻辑电路设计
- Proteus仿真的单片机控制步进电机及液
评论
共有 条评论