标题:
Proteus仿真1602字符液晶滚动源程序(键控垂直与水平滚动)
[打印本页]
作者:
oy野马
时间:
2018-6-13 13:35
标题:
Proteus仿真1602字符液晶滚动源程序(键控垂直与水平滚动)
proteus仿真的LCD1602实例
带源代码和电路
0.png
(51.32 KB, 下载次数: 25)
下载附件
2018-6-14 02:44 上传
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(20.2 KB, 下载次数: 30)
下载附件
2018-6-14 02:45 上传
单片机源程序如下:
/*************** writer:shopping.w ******************/
#include <reg52.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
void Initialize_LCD();
void ShowString(uchar,uchar,uchar *);
sbit K1 = P3^0;
sbit K2 = P3^1;
sbit K3 = P3^2;
uchar code Prompt[]="PRESS K1--K4 TO START DEMO PROG";
uchar const Line_Count = 6;
uchar code Msg[][80]=
{
"Many CAD 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 Delayxms(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void V_Scroll_Display()
{
uchar i,j,k = 0;
uchar *p = Msg[0];
uchar *q = Msg[Line_Count] + strlen(Msg[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 = Msg[k];
Disp_Buffer[i] = *p++;
}
}
for(j=i;j<16;j++)
Disp_Buffer[j]=' ';
while(F0)
Delayxms(5);
ShowString(0,0," ");
Delayxms(150);
while(F0)
Delayxms(5);
ShowString(0,1,Disp_Buffer);
Delayxms(150);
while(F0)
Delayxms(5);
ShowString(0,0,Disp_Buffer);
ShowString(0,1," ");
Delayxms(150);
}
ShowString(0,0," ");
ShowString(0,1," ");
}
void H_Scroll_Display()
{
uchar m,n,t = 0,L=0;
uchar *p = Msg[0];
uchar *q = Msg[Line_Count] + strlen(Msg[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 = Msg[t];
Disp_Buffer[m] = *p++;
}
}
for(n=m;n<32;n++)
Disp_Buffer[n]=' ';
for(m=0;m<=16;m++)
{
while(F0)
Delayxms(5);
ShowString(0,L,Disp_Buffer+1);
while(F0)
Delayxms(5);
Delayxms(20);
}
L = (L==0)? 1:0;
Delayxms(200);
}
if(L==1)
ShowString(0,1," ");
}
void EX_INT0() interrupt 0
{
F0 = !F0;
}
void main()
{
uint Count = 0;
IE = 0x81;
IT0 = 1;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
1602字符液晶滚动演示程序.rar
(108.21 KB, 下载次数: 27)
2018-6-13 13:34 上传
点击文件名下载附件
proteus仿真
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1