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

📄 12232.c

📁 12232驱动程序
💻 C
字号:
//                    CA12864K 测试程序(串口) 
//***************************************************************************
//连线表: CPU=89C52  SystemClock=12Mhz                                      *
//CS=P3.0            SCLK=P3.1          SID=P3.2       Reset=RC in Board    *
//***************************************************************************
#include "stc89c52.h"
#include <stdlib.h>
#include <intrins.h>
#include <stdio.h>
#include "12232.h"

sbit CS =P3^4;
sbit SID=P3^5;
sbit SCK=P3^3;
sbit Key=P3^3;

unsigned char code AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,      //第一行汉字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,      //第二行汉字位置
};


//串口发送一个字节
void SendByte(unsigned char Dbyte)
{
     unsigned char i;
     for(i=0;i<8;i++)
     {
           SCK = 0;
           Dbyte=Dbyte<<1;      //左移一位
           SID = CY;            //移出的位给SID
           SCK = 1;
           SCK = 0;
     }
}

//串口接收一个字节
//仅在读取数据的时候用到
//而读出的数据是一次只能读出4bit的
unsigned char ReceiveByte(void)
{
     unsigned char i,temp1,temp2;
     temp1=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));
}

void CheckBusy( void )
{
     do   SendByte(0xfc);      //11111,RW(1),RS(0),0
     while(0x80&ReceiveByte());      //BF(.7)=1 Busy
}

void WriteCommand( unsigned char Cbyte )
{
     CS = 1;
     CheckBusy();
     SendByte(0xf8);            //11111,RW(0),RS(0),0
     SendByte(0xf0&Cbyte);      //高四位
     SendByte(0xf0&Cbyte<<4);//低四位(先执行<<)
     CS = 0;
}

void WriteData( unsigned char Dbyte )
{
     CS = 1;
     CheckBusy();
     SendByte(0xfa);            //11111,RW(0),RS(1),0
     SendByte(0xf0&Dbyte);      //高四位
     SendByte(0xf0&Dbyte<<4);//低四位(先执行<<)
     CS = 0;
}



extern void Delay(unsigned int MS)
{
     unsigned char us,usn;
     while(MS!=0)            //for 12M
           { usn = 2;
                 while(usn!=0)
                       {
                             us=0xf5;
                             while (us!=0){us--;};
                             usn--;
                       }
                 MS--;
           }
}



void LcmInit( void )
{
     WriteCommand(0x30);      //8BitMCU,基本指令集合
     WriteCommand(0x03);      //AC归0,不改变DDRAM内容
     WriteCommand(0x0C);      //显示ON,游标OFF,游标位反白OFF
     WriteCommand(0x01);      //清屏,AC归0
     WriteCommand(0x06);      //写入时,游标右移动
}

//文本区清RAM函数
extern void LcmClearTXT( void )
{
     unsigned char i;
     WriteCommand(0x30);      //8BitMCU,基本指令集合
     WriteCommand(0x80);      //AC归起始位
     for(i=0;i<64;i++)
        WriteData(0x20);
}



void PutStr(unsigned char row,unsigned char col,unsigned char *puts)
{
     WriteCommand(0x30);      //8BitMCU,基本指令集合
     WriteCommand(AC_TABLE[8*row+col]);      //起始位置
     while(*puts != '\0')      //判断字符串是否显示完毕
     {
           if(col==8)            //判断换行
           {            //若不判断,则自动从第一行到第三行
                 col=0;
                 row++;
           }
           if(row==2) row=0;      //一屏显示完,回到屏左上角
           WriteCommand(AC_TABLE[8*row+col]);
           WriteData(*puts);      //一个汉字要写两次
           puts++;
           WriteData(*puts);
           puts++;
           col++;
     }
}



extern void DisplayLCD(unsigned char *ch1,unsigned char *ch2)
{


        LcmClearTXT();
        Delay(200); 
        PutStr(0,0,ch1);
         
        PutStr(1,0,ch2);
        
        Delay(2000);   


}


extern void DisplayMENU(unsigned char *ch1,unsigned char *ch2)
{


        LcmClearTXT();
        Delay(100); 
        PutStr(0,0,ch1);
         
        PutStr(1,0,ch2);
        
        Delay(100);   
}

extern void DisplayNow(unsigned char *ch1,unsigned char *ch2)
{

        PutStr(0,0,ch1);
          
        PutStr(1,0,ch2);
        
}

    

⌨️ 快捷键说明

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