資源簡介
使用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
評論
共有 條評論