80C51单片机控制12864液晶显示
*摘要:本程序实现液晶屏上显示自己的学号与姓名。#include<reg51.h>#include<LCD.h>voidmain(){uchari=0,j=0;clear...
* 摘 要:本程序实现液晶屏上显示自己的学号与姓名。
#include<reg51.h>
#include<LCD.h>
void main()
{
uchar i=0,j=0;
clear_scr(); //清屏
CS1=1; CS2=1;
write_LCD_command(0xC0); //设置显示始行为DDRAM第0行
write_LCD_command(0x3F); //显示开
CS2=0;
CS1=0; //选中左边屏幕
CS1=1;
for(i=0;i<4;i++)
{
write_LCD_command(0xC0); //设置显示始行为DDRAM第0行
write_LCD_command(0xB8+i); //设置页地址为i
write_LCD_command(0x40); //设置Y地址为0
for(j=0;j<64;j++)
{
write_LCD_data(display[i][j]);
}
}
CS1=0;
CS2=0;
CS2=1;
//选中右边屏幕
for(i=0;i<4;i++)
{
write_LCD_command(0xC0); //设置显示始行为DDRAM第0行
write_LCD_command(0xB8+i); //设置页地址为i
write_LCD_command(0x40); //设置Y地址为0
for(j=64;j<128;j++)
{
write_LCD_data(display[i][j]);
}
}
while(1);
}
void write_LCD_command(uchar LCDcommand) //写指令程序
{
EN=0;
RW=WRITE;
DI=COMMAND;
EN=ENABLE;
P0=LCDcommand;
EN=DISABLE;
delay();
RW=READ;
DI=DATA;
}
void write_LCD_data(uchar LCDdata) //写数据程序
{
EN=0;
RW=WRITE;
DI=DATA;
EN=ENABLE;
P0=LCDdata;
EN=DISABLE;
delay();
RW=READ;
DI=COMMAND;
}
void delay(void) //延时程序
{
uchar n;
for(n=0;n<40;n++)
;
}
void clear_scr(void) //清屏程序
{
uchar x, y;
CS2=0;
CS1=1; //选中左边屏幕
for(x=0;x<8;x++)
{
write_LCD_command(0xB8+x); //设置页地址为x
write_LCD_command(0x40); //设置Y地址为0
for(y=0;y<64;y++)
{
write_LCD_data(0x00);
}
}
CS1=0;
CS2=1; //选中右边屏幕
for(x=0;x<8;x++)
{
write_LCD_command(0xB8+x); //设置页地址为x
write_LCD_command(0x40); //设置Y地址为0
for(y=0;y<64;y++)
{
write_LCD_data(0x00);
}
}
}
这个头文件#include<LCD.h>是要自己写还是现成的?麻烦给一个~这个是老师给的程序,怎么都不能运行啊
另外怎样在以上实验的基础上,实现液晶屏自左向右滚动显示自己的学号与姓名?
既然要自己写,能麻烦哪位帮忙写一个么,这个真不会。。。 展开
#include<reg51.h>
#include<LCD.h>
void main()
{
uchar i=0,j=0;
clear_scr(); //清屏
CS1=1; CS2=1;
write_LCD_command(0xC0); //设置显示始行为DDRAM第0行
write_LCD_command(0x3F); //显示开
CS2=0;
CS1=0; //选中左边屏幕
CS1=1;
for(i=0;i<4;i++)
{
write_LCD_command(0xC0); //设置显示始行为DDRAM第0行
write_LCD_command(0xB8+i); //设置页地址为i
write_LCD_command(0x40); //设置Y地址为0
for(j=0;j<64;j++)
{
write_LCD_data(display[i][j]);
}
}
CS1=0;
CS2=0;
CS2=1;
//选中右边屏幕
for(i=0;i<4;i++)
{
write_LCD_command(0xC0); //设置显示始行为DDRAM第0行
write_LCD_command(0xB8+i); //设置页地址为i
write_LCD_command(0x40); //设置Y地址为0
for(j=64;j<128;j++)
{
write_LCD_data(display[i][j]);
}
}
while(1);
}
void write_LCD_command(uchar LCDcommand) //写指令程序
{
EN=0;
RW=WRITE;
DI=COMMAND;
EN=ENABLE;
P0=LCDcommand;
EN=DISABLE;
delay();
RW=READ;
DI=DATA;
}
void write_LCD_data(uchar LCDdata) //写数据程序
{
EN=0;
RW=WRITE;
DI=DATA;
EN=ENABLE;
P0=LCDdata;
EN=DISABLE;
delay();
RW=READ;
DI=COMMAND;
}
void delay(void) //延时程序
{
uchar n;
for(n=0;n<40;n++)
;
}
void clear_scr(void) //清屏程序
{
uchar x, y;
CS2=0;
CS1=1; //选中左边屏幕
for(x=0;x<8;x++)
{
write_LCD_command(0xB8+x); //设置页地址为x
write_LCD_command(0x40); //设置Y地址为0
for(y=0;y<64;y++)
{
write_LCD_data(0x00);
}
}
CS1=0;
CS2=1; //选中右边屏幕
for(x=0;x<8;x++)
{
write_LCD_command(0xB8+x); //设置页地址为x
write_LCD_command(0x40); //设置Y地址为0
for(y=0;y<64;y++)
{
write_LCD_data(0x00);
}
}
}
这个头文件#include<LCD.h>是要自己写还是现成的?麻烦给一个~这个是老师给的程序,怎么都不能运行啊
另外怎样在以上实验的基础上,实现液晶屏自左向右滚动显示自己的学号与姓名?
既然要自己写,能麻烦哪位帮忙写一个么,这个真不会。。。 展开
展开全部
#include<LCD.h>是自己写的,没有现成的,但你可以用公司里的例程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询