(原创)液晶的一个最简单的测试程序
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);
}
#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);
}
相关文章推荐
- 一个简单的AVR测试程序
- Java实训——创建一个窗体程序,实现简单的数学加、减法测试。
- 一个简单的线程测试程序
- 一个简单精确的asp速度测试程序
- 发一个php简单的伪原创程序,配合商城采集用的
- (原创)如何使用boost.asio写一个简单的通信程序(二)
- 一个最简单的测试在/dev下生成字符设备的程序
- java例程练习(一个BirthDate类 以及简单的测试程序)
- 基于JUnit3.8的一个简单的测试程序
- 把double 类型数组中的数据倒序排列,并在一个简单的程序中测试该函数
- 一个简单的redis性能测试程序和性能测试结果
- 一个最简单的测试在dev/下生成字符设备的程序
- 简单的只运行一个程序实例[原创]
- [原创]我的WCF之旅(1):创建一个简单的WCF程序
- 一个简单的GNU信号测试程序
- 【原创】一个基于简单剪枝的DFS解数独程序
- 一个Nodejs的简单计算测试程序
- 一个简单的HTTP并发测试程序
- 测试自动化 2011/06/11 - 1 一个最简单的GMock测试程序HelloGMock
- 一个简单的字符设备驱动程序和测试程序