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

在液晶左上角显示一个感叹号 

#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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值