新闻  |   论坛  |   博客  |   在线研讨会
1602字符液晶显示
jinsheng7533 | 2018-12-11 21:21:24    阅读:225   发布文章

blob.png




#include <AT51.h>

#include <string.h>

#define uchar unsigned char

#define uint unsigned int

void canyou();

void zifu(uchar,uchar,uchar *);

sbit K1 = P3^0;

sbit K2 = P3^1;

sbit K3 = P3^2;


uchar code Prompt[]="tf K1--K4 TO START DEMO PROG";

uchar const Line_Count = 6;

uchar code smg[][80]=

{

  "wps  users dismiss",

"process of creating PCB",

"of view.with PCB layout",

"placement and track routing,",

"can often be the most time",

"And if you use circuit simulation",

"you are going to spend even more"

};

uchar Disp_Buffer[32];

void delay(uint ms)

{

  uchar i;

while(ms--)

{

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

}

}


void play()

{

  uchar i,j,k = 0;

uchar *p = smg[0];

uchar *q = smg[Line_Count] + strlen(smg[Line_Count]);

while(p<q)

{

for(i=0;(i<16)&&(p<q);i++)

{

if(((i==0)||(i==15))&& *p == ' ')

p++;

if(*p != '\0')

{

Disp_Buffer[i] = *p++;

}

else

{

if(++k>Line_Count)

break;

p = smg[k];

Disp_Buffer[i] = *p++;

}

}

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

Disp_Buffer[j]=' ';

while(F0)

delay(5);

zifu(0,0,"      ");

delay(150);

while(F0)

delay(5);

zifu(0,1,Disp_Buffer);

delay(150);

while(F0)

delay(5);

zifu(0,0,Disp_Buffer);

zifu(0,1,"      ");

delay(150);

}

zifu(0,0,"         ");

zifu(0,1,"         ");

}


void H_Scroll_Display()

{

uchar m,n,t = 0,L=0;

uchar *p = smg[0];

uchar *q = smg[Line_Count] + strlen(smg[Line_Count]);

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

Disp_Buffer[m]=' ';

while(p<q)

{

if((m=16||m==31)&& *p == ' ')

p++;

for(m=16;m<32&&p<q;m++)

{

if(*p != '\0')

{

Disp_Buffer[m] = *p++;

}

else

{

if(++t>Line_Count)

break;

p = smg[t];

Disp_Buffer[m] = *p++;

}

}

for(n=m;n<32;n++)

Disp_Buffer[n]=' ';

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

{

while(F0)

delay(5);

  zifu(0,L,Disp_Buffer+1);

  while(F0)

delay(5);

delay(20);

}

L = (L==0)? 1:0;

delay(200);

}

if(L==1)

zifu(0,1,"      ");

}


void EX_INT0() interrupt 0

{

  F0 = !F0;

}


void main()

{

  uint Count = 0;

IE = 0x81;

IT0 = 1;

F0  = 0;

canyou();

zifu(0,0,Prompt);

zifu(0,1,Prompt+16);

while(1)

{

if(K1 == 0)

{

play();

delay(200);

}

else if(K2 == 0)

{

H_Scroll_Display();

delay(200);

}

}

}


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客