最适合初学液晶者参考的程序

来源:互联网 发布:苹果电脑系统修复软件 编辑:程序博客网 时间:2024/05/22 16:05

//液晶为金鹏12864,20引脚由于我单片机P1^0不能用让我受累了,再者就是延时函数两个变量写一样了
//本程序采用延时而不用查询状态

#include<reg52.h>
#define uchar unsigned char

sbit rs=P1^1;            //inst_data标志位
sbit rw=P1^2;            //读写状态标志位
sbit en=P1^3;            //使能标志位

uchar code line1[]={"你好欢迎你来这里"};
uchar code line2[]={"我们这里欢迎你  "};
uchar code line3[]={"我叫权利红哈哈哈"};
uchar code line4[]={"互相学习共同进步"};

void send_comm(uchar comd);                                                    //写指令函数声明
void send_data(uchar dat);                                                    //写数据函数声明
void inst();                                                                                //初始化函数声明
void outchinese(uchar post,uchar hang,uchar datt[]);//输出汉字函数声明也可输出字符
void delay(uchar k);                                                                  //延时函数声明

//主函数
void main()
{
        inst();
        outchinese(0x80,8,line1);             //地址位已定义好按顺序输出line1~4的内容
        outchinese(0x90,8,line2);
        outchinese(0x88,8,line3);
        outchinese(0x98,8,line4);
}   

//发送指令函数
void send_comm(uchar comd)
{
    en=0;
    rs=0;
    rw=0;   
    en=1;
    P2=comd;
    delay(1);        //如果没有查忙函数这个延时必须加上
    en=0;
}

//发送数据函数
void send_data(uchar dat)
{
    en=0;
    rs=1;
    rw=0;
    en=1;       
    P2=dat;
    //delay(1);            //这个延时可以省去
    en=0;
}

//初始化函数
void inst()
{
    send_comm(0x30);//功能设置,一次送8位数据,基本指令集
    send_comm(0x01);//0000,0001 清DDRAM
    send_comm(0x06);//0000,0010 DDRAM地址归位
    send_comm(0x0C);//0000,1100 整体显示,游标off,游标位置off
}

//输出汉字或字符函数
void outchinese(uchar post,uchar hang,uchar datt[])
{
    uchar i;
  send_comm(post);
    for (i=0;i<hang*2;i++)
    send_data (datt[i]);
}

void delay(uchar k)
{
    uchar i;
    while(k--)
        for(i=0;i<125;i++);
}

原创粉丝点击