找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1743|回复: 0
打印 上一主题 下一主题
收起左侧

基于51单片机的12864液晶显示

[复制链接]
跳转到指定楼层
楼主
ID:526216 发表于 2019-5-3 08:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#include"yejin.h"
#define uchar unsigned char
#define uint   unsigned int

sbit CS=P0^0;
sbit SID=P0^1;
sbit SCLK=P0^2;
sbit PSB=P0^3;
                                
uchar code disp1[]={"液晶显示"};
uchar code disp2[]={"好的天气"};
uchar code disp3[]={"开心过好每一天"};
uchar code disp4[]={"天气挺好"};


void delay_1ms(uint x)   //延时
{
        uint i,j;
        for(j=0;j<x;j++)                                   
                for(i=0;i<110;i++);
}

void send_command(uchar command_data)
{
        uchar i;
        uchar i_data;
        i_data=0xf8;//写指令                        
        CS=1;
        SCLK=0;
        for(i=0;i<8;i++)
        {
                SID=(bit)(i_data&0x80);//取字节最高位,(1)高到低依次送给SID,从而发给液晶
                SCLK=0;
                SCLK=1;
                i_data=i_data<<1;//(1)
        }
        i_data=command_data;
        i_data&=0xf0; //
        for(i=0;i<8;i++)
        {
                SID=(bit)(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data=i_data<<1;
        }
        i_data=command_data;//高4位取出,低4位补0
        i_data<<=4;                        //+上;低4位移到高4位,原来的低4位自动补0
        for(i=0;i<8;i++)
        {
                SID=(bit)(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data=i_data<<1;
        }
        CS=0;
        delay_1ms(10);
}

void send_data(uchar command_data)
{
        uchar i;
        uchar i_data;
        i_data=0xfa;
        CS=1;
    for(i=0;i<8;i++)
        {
                SID=(bit)(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data=i_data<<1;
        }
        i_data=command_data;
        i_data&=0xf0;
        for(i=0;i<8;i++)
        {
                SID=(bit)(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data=i_data<<1;
        }
        i_data=command_data;
        i_data<<=4;
        for(i=0;i<8;i++)
        {
                SID=(bit)(i_data&0x80);
                SCLK=0;
                SCLK=1;
                i_data=i_data<<1;
        }
        CS=0;
        delay_1ms(10);        
}

void lcd_init()  //初始化
{
     PSB=0;
        delay_1ms(100);
        send_command(0x30);
        send_command(0x02);
        send_command(0x06);
        send_command(0x0c);
        send_command(0x01);
        send_command(0x80);
}

void display_1()
{
        uchar a;
        send_command(0x80);        //第一行                                 
        for(a=0;a<12;a++)
        {
                send_data(disp1[a]);
        }
}
void display_2()
{
        uchar a;
        send_command(0x90);        //第二行
        for(a=0;a<12;a++)
        {
                send_data(disp2[a]);
        }
}
void display_3()
{
        uchar a;
        send_command(0x88);         //第三行
        for(a=0;a<12;a++)
        {
                send_data(disp3[a]);
        }
}
void display_4()
{

        uchar a;
          send_command(0x98);         //第四行
        for(a=0;a<12;a++)
        {
                send_data(disp4[a]);
        }
}
再写一个 yejin.h 就可以了。               

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表