⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12864

📁 这是TOPWAY公司的LCD驱动程序
💻
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
Copyright 2007 普兰工作室
All rights reserved.

文件名	: st7920serial.c
模块名称:st7920 串行方式驱动12864液晶驱动
功能概要:

取代版本:0.0.1
修改人	:pulan
完成日期:2007.07.08
升级说明:create
CPU: stc89c58   主频:11.0592M
液晶型号:       生产厂家:        驱动芯片:st7920
******************************************************************************/

#include <reg52.h>
#include <stdlib.h>
#include <intrins.h>
#include <stdio.h>

#define uchar unsigned char
#define uint  unsigned int
sbit CS  = P2^1;
sbit SCK = P2^4;
sbit SID = P2^2;
sbit Key = P1^1;

uchar code AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,      //第一行汉字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,      //第二行汉字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,      //第三行汉字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,      //第四行汉字位置
};
uchar code str2[]="欢迎光临sunson!!";
uchar code str1[]="黄河远上白云间,一片孤城万仞山。羌笛何须怨杨柳,春风不度玉门关。";
uchar code bmp1[];

/******************************************************************************************
* 函数名称    :SendByte
* 功能描述    :串口发送一个字节
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void SendByte(uchar Dbyte)
{
     uchar i;
     for(i=0;i<8;i++)
     {
           SCK = 0;
           Dbyte=Dbyte<<1;      //左移一位
           SID = CY;            //移出的位给SID
           SCK = 1;
           SCK = 0;
     }
}

/******************************************************************************************
* 函数名称    :ReceiveByte
* 功能描述    :串口接收一个字节
* 参数        :  参数名称:	输入/输出?	类型		描述
* 仅在读取数据的时候用到
* 而读出的数据是一次只能读出4bit的
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
uchar ReceiveByte(void)
{
     uchar i,temp1,temp2;
     temp1 = 0;
     temp2 = 0;
     for(i=0;i<8;i++)
     {
           temp1=temp1<<1;
           SCK = 0;
           SCK = 1;            
           SCK = 0;
           if(SID) temp1++;
     }
     for(i=0;i<8;i++)
     {
           temp2=temp2<<1;
           SCK = 0;
           SCK = 1;
           SCK = 0;
           if(SID) temp2++;
     }
     return ((0xf0&temp1)+(0x0f&temp2));
}
/******************************************************************************************
* 函数名称    :CheckBusy
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void CheckBusy( void )
{
     do   SendByte(0xfc);      //11111,RW(1),RS(0),0
     while(0x80&ReceiveByte());      //BF(.7)=1 Busy
}
/******************************************************************************************
* 函数名称    :WriteCommand
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void WriteCommand(uchar Cbyte )
{
     CS = 1;
     CheckBusy();
     SendByte(0xf8);            //11111,RW(0),RS(0),0
     SendByte(0xf0&Cbyte);      //高四位
     SendByte(0xf0&Cbyte<<4);//低四位(先执行<<)
     CS = 0;
}
/******************************************************************************************
* 函数名称    :WriteData
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void WriteData(uchar Dbyte )
{
     CS = 1;
     CheckBusy();
     SendByte(0xfa);            //11111,RW(0),RS(1),0
     SendByte(0xf0&Dbyte);      //高四位
     SendByte(0xf0&Dbyte<<4);//低四位(先执行<<)
     CS = 0;
}
/******************************************************************************************
* 函数名称    :ReadData
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
uchar ReadData( void )
{
     CheckBusy();
     SendByte(0xfe);            //11111,RW(1),RS(1),0
     return ReceiveByte();
}
/******************************************************************************************
* 函数名称    :Delay
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void Delay(uint MS)
{
     uchar us,usn;
     while(MS!=0)            //for 12M
      { 
         usn = 2;
         while(usn!=0)
          {
            us = 0xf5;
            while (us!=0)
             {
               us--;
             };
            usn--;
           }
         MS--;
      }
}
/******************************************************************************************
* 函数名称    :DelayKey
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void DelayKey(uint Second , uint MS100)
{                              //输入精确到0.1S,是用","
     uint i;
     for(i=0;i<Second*100+MS100*10;i++)
     {
           if(Key==0)
           {
                 Delay(20);
                 while(Key==0) 
                   {
                   	Delay(20);
                   }
                 break;
           }
           else Delay(10);
     }
}
/******************************************************************************************
* 函数名称    :LcmInit
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void LcmInit( void )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -