您的位置:首页 > 其它

(原创)液晶的一个最简单的测试程序

2007-08-31 19:20 363 查看
在液晶左上角显示一个感叹号

#include "reg52.h"
#include <intrins.h>
sbit wr=P3^3;
sbit rd=P3^4;
sbit cd=P3^5;
unsigned char mycode[12]={"hello!world!"};
sbit busy_flag_0=P1^0;
sbit busy_flag_1=P1^1;
sbit busy_flag_3=P1^3;
void read_data();
void delay(int m)
{
int i;
for(i=0;i<m;i++){}
}
void disable_rw()
{
cd=1;
rd=1;
wr=1;
}
unsigned char read_status()
{
unsigned char status;
P1=0xff;
rd=0;
status=P1;
return P1;
}
void write_data(unsigned char d)
{
do{}while((read_status()&0x03)!=0x03);
disable_rw();
cd=0;
wr=0;
P1=d;
wr=1;
cd=1;
}
void write_command(unsigned char c)
{
do{}while((read_status()&0x03)!=0x03);
disable_rw();
wr=0;
P1=c;
wr=1;
}
void clear()
{
int i;
write_data(0x00);
write_data(0x00);
write_command(0x24); //地址设置
write_command(0xb0); //自动写
for(i=0;i<0x2000;i++)
{
do{}while((read_status()&0x08)!=0x08);
disable_rw();
cd=0;
wr=0;
P1=0x00;
wr=1;
cd=1;
}
write_command(0xb2);
}
void start()
{
int i;
for(i=0;i<10;i++)
{
delay(5000);
}
write_data(0x00);
write_data(0x00);
write_command(0x40); //设置文本区

write_data(0x10);
write_data(0x00);
write_command(0x41); //设置文本区

write_data(0x00);
write_data(0x08);
write_command(0x42); //设置文本区

write_data(0x10);
write_data(0x00);
write_command(0x43); //设置文本区

write_command(0x80); //设置显示方式
write_command(0x94); //设置显示开关,开文本显示
}
void display()
{
unsigned char i;
write_data(0x00);
write_data(0x00);
write_command(0x24);
for(i=0;i<12;i++)
{
write_data(mycode[i]-0x20);
write_command(0xc0);
}
}
void main(void)
{
disable_rw();
start();
clear();
display();
while(1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: