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

📄 lcm12864.c

📁 DDS 单片机控制AD7008 产生正弦波
💻 C
字号:
#include "LCM12864.h"
unsigned char BUSY,hang,lie;
/*********************************************延时**************************************/
void Delayus(unsigned long t)
{
        int i,j;
        for (i=0;i<t;i++)
        for (j=0;j<t;j++);
}

//*********************判忙函数************************//
void BUSYLOOP()
{
        P1=0x0ff;
        RS=0;
        RW=1;
        do
        {
            E=1;
            BUSY=P1;
            E=0;
        }
        while(BUSY>0x7F);
}
//*********************写控制字函数****************************//
void Write_command(unsigned char CMD,unsigned char bb)
{
        if(bb) BUSYLOOP();
        RS=0;
        RW=0;
        E=1;
        P1=CMD;
        Delayus(1);
        E=0;
}

//*********************写数据函数****************************//
void Write_data(unsigned char CMD)
{
        BUSYLOOP();
        RS=1;
        RW=0;
        E=1;
        P1=CMD;
        Delayus(1);
        E=0;
}

//*************************液晶初始化********************************//
void Init_LCM()
{
        Delayus(38);
        Write_command(0x30,0);
        Delayus(1);
        Write_command(0x30,0);
        Delayus(1);
        Write_command(0x0c,1);
        Delayus(1);
        Write_command(0x01,1);
        Delayus(20);
        Write_command(0x06,1);
}

//***************************清屏*************************************//
void CLEAR()
{
        RS=0;
        RW=0;
        E=1;
        P1=0x01;
        Delayus(1);
        E=0;
}

//**********************显示字符串************************************//
void Display(unsigned char *ptr,unsigned char ddram)
{
        unsigned char l,i1,x;
        l=0;
        if(ddram<0x88) hang=0;  //定位行地址:第一行
        else if(ddram<0x90) hang=2;  //定位行地址:第三行
        else if(ddram<0x98) hang=1;  //定位行地址:第二行
        else hang=3;  //定位行地址:第四行

        lie=0x0f&ddram; //定位列地址
        if(lie>0x07)
        {
            lie=lie-0x08;
        }
        x=lie*2;
        Write_command(ddram,0); // 定位显示起始地址
        while ((ptr[l])!='\0') l++;
        for (i1=0;i1<l;i1++)
        {
             Write_data(ptr[i1]); //输出单个字符
             x++;
             if (x ==0x10)
             {
                     x=0;
                     hang++;
                     switch (hang)
                     {
                           case 0:Write_command(0x80,0);
                           break;
                           case 1:Write_command(0x90,0);
                           break;
                           case 2:Write_command(0x88,0);
                           break;
                           case 3:Write_command(0x98,0);
                     }
                     if (hang>3)
                     {
                           Write_command(0x80,0);
                           hang=0;
                     }
             }
       }
}

/*************************读取按键值**********************************/
bit ZLG7290_ReadReg(unsigned char RegAddr, char *dat)
{
	bit b;
	b = I2C_Gets(0x38,RegAddr,1,dat,1);
	return b;
}

⌨️ 快捷键说明

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