2.28
来源:互联网 发布:修身夹克 知乎 编辑:程序博客网 时间:2024/06/05 03:13
#include<reg52.h>
#define LCD1602_DB P0
sbit LCD1602_RS = P2^4;
sbit LCD1602_RW = P2^5;
sbit LCD1602_E = P2^6;
void InitLcd1602();
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str,unsigned char len);
bit flag = 0;
unsigned char code str1[] = "ZHOUTAO";
unsigned char code str2[] = "Welcome";
void main()
{
unsigned char pdata bufMove1[16+sizeof(str1)+16];
unsigned char pdata bufMove2[16+sizeof(str2)+16];
unsigned char index = 0;
unsigned char i;
EA = 1;
TMOD = 0x01;
TH0 = 0xD8;
TL0 = 0xF0;
ET0 = 1;
TR0 = 1;
InitLcd1602();
for(i=0;i<16;i++)
{
bufMove1[i] = ' ';
bufMove2[i] = ' ' ;
}
for(i=0;i<(sizeof(str1)-1);i++)
{
bufMove1[16+i] = str1[i];
bufMove2[16+i] = str2[i];
}
for(i=(16+sizeof(str1)-1);i<sizeof(bufMove1);i++)
{
bufMove1[i] = ' ';
bufMove2[i] = ' ';
}
while(1)
{
///////////////////////////////////////静态显示
/*InitLcd1602();
LcdShowStr(3,0,str1);
LcdShowStr(0,1,str2);*/
///////////////////////////////////////动态显示
/*InitLcd1602();
LcdShowStr(3,0,str1);
LcdShowStr(0,1,str2);*/
///////////////////////////////////////滚动显示
if(flag == 1)
{
flag = 0;
LcdShowStr(0,0,bufMove1+index,16);
LcdShowStr(0,1,bufMove2+index,16);
index++;
if(index >= (16+sizeof(str1)-1))
{
index = 0;
}
}
}
}
void InterruptTimer0() interrupt 1
{
static unsigned char cnt = 0;
TH0 = 0xD8;
TL0 = 0xF0;
cnt++;
if(cnt > 50)
{
cnt = 0;
flag = 1;
}
}
void LcdWaitReady()
{
unsigned char sta;
LCD1602_DB = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
do{
LCD1602_E = 1;
sta = LCD1602_DB;
LCD1602_E = 0;
}while(sta & 0x80);
}
void LcdWriteCmd(unsigned char cmd)
{
LcdWaitReady();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_E = 1;
LCD1602_E = 0;
}
void LcdWriteDat(unsigned char dat)
{
LcdWaitReady();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_E = 1;
LCD1602_E = 0;
}
void LcdSetCursor(unsigned char x,unsigned char y)
{
unsigned char addr;
if(y == 0)
{
addr = 0x00 + x;
}
else
{
addr = 0x40 + x;
}
LcdWriteCmd(addr|0x80);
}
/*void delay(unsigned char cnt)
{
unsigned char i,j;
for(i=0;i<255;i++)
{
for(j=0;j<cnt;j++);
}
}*/
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str,unsigned char len)
{
LcdSetCursor(x,y);
while(len--)
{
LcdWriteDat(*str++);
//delay(100);
}
}
void InitLcd1602()
{
LcdWriteCmd(0x38);
LcdWriteCmd(0x0C);
LcdWriteCmd(0x06);
LcdWriteCmd(0x01);
}
#define LCD1602_DB P0
sbit LCD1602_RS = P2^4;
sbit LCD1602_RW = P2^5;
sbit LCD1602_E = P2^6;
void InitLcd1602();
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str,unsigned char len);
bit flag = 0;
unsigned char code str1[] = "ZHOUTAO";
unsigned char code str2[] = "Welcome";
void main()
{
unsigned char pdata bufMove1[16+sizeof(str1)+16];
unsigned char pdata bufMove2[16+sizeof(str2)+16];
unsigned char index = 0;
unsigned char i;
EA = 1;
TMOD = 0x01;
TH0 = 0xD8;
TL0 = 0xF0;
ET0 = 1;
TR0 = 1;
InitLcd1602();
for(i=0;i<16;i++)
{
bufMove1[i] = ' ';
bufMove2[i] = ' ' ;
}
for(i=0;i<(sizeof(str1)-1);i++)
{
bufMove1[16+i] = str1[i];
bufMove2[16+i] = str2[i];
}
for(i=(16+sizeof(str1)-1);i<sizeof(bufMove1);i++)
{
bufMove1[i] = ' ';
bufMove2[i] = ' ';
}
while(1)
{
///////////////////////////////////////静态显示
/*InitLcd1602();
LcdShowStr(3,0,str1);
LcdShowStr(0,1,str2);*/
///////////////////////////////////////动态显示
/*InitLcd1602();
LcdShowStr(3,0,str1);
LcdShowStr(0,1,str2);*/
///////////////////////////////////////滚动显示
if(flag == 1)
{
flag = 0;
LcdShowStr(0,0,bufMove1+index,16);
LcdShowStr(0,1,bufMove2+index,16);
index++;
if(index >= (16+sizeof(str1)-1))
{
index = 0;
}
}
}
}
void InterruptTimer0() interrupt 1
{
static unsigned char cnt = 0;
TH0 = 0xD8;
TL0 = 0xF0;
cnt++;
if(cnt > 50)
{
cnt = 0;
flag = 1;
}
}
void LcdWaitReady()
{
unsigned char sta;
LCD1602_DB = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
do{
LCD1602_E = 1;
sta = LCD1602_DB;
LCD1602_E = 0;
}while(sta & 0x80);
}
void LcdWriteCmd(unsigned char cmd)
{
LcdWaitReady();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_E = 1;
LCD1602_E = 0;
}
void LcdWriteDat(unsigned char dat)
{
LcdWaitReady();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_E = 1;
LCD1602_E = 0;
}
void LcdSetCursor(unsigned char x,unsigned char y)
{
unsigned char addr;
if(y == 0)
{
addr = 0x00 + x;
}
else
{
addr = 0x40 + x;
}
LcdWriteCmd(addr|0x80);
}
/*void delay(unsigned char cnt)
{
unsigned char i,j;
for(i=0;i<255;i++)
{
for(j=0;j<cnt;j++);
}
}*/
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str,unsigned char len)
{
LcdSetCursor(x,y);
while(len--)
{
LcdWriteDat(*str++);
//delay(100);
}
}
void InitLcd1602()
{
LcdWriteCmd(0x38);
LcdWriteCmd(0x0C);
LcdWriteCmd(0x06);
LcdWriteCmd(0x01);
}
0 0
- 2.28
- 2.28
- 2.28
- 2.28
- 2.28
- 2.28SwapNodesinPairs
- sicp 习题2.28
- 入门HTML 之2.28
- 2.28(1)
- 2.28(2)
- c++作业2.28
- 2.28学习内容
- MediaChance DVD-lab PRO 2.28
- Cygwin+NS-2.28 安装图解
- 2.28 Displaying Progress with UIProgressView
- 2.28周五 数电 汇编
- 【SICP练习】58 练习2.28
- SICP 联系2.28 实现fringe
- 欢迎使用CSDN-markdown编辑器
- 编码格式
- 99%用错销售技巧笔记
- js兼容性问题
- 5-12 排序 (25分)
- 2.28
- Linux进程间通信——使用消息队列
- 《论文排版札记》part 4 论文中插入参考文献
- SQL数据操作语言的使用
- 设置开机启动
- java中的JDBC创建步骤--自我总结,我的首篇勿喷...
- 400. Nth Digit
- 【Python】学习笔记——-19、访问数据库
- SeekBar样式修改