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

📄 subprogram_12864.c

📁 //时钟和温度显示程序.制作李聪 //用T0中断定时,DS18B20测温,12864完成显示.原创
💻 C
字号:
sbit CS1=P2^3;
sbit CS2=P2^4;
sbit RST=P2^5;
sbit DI=P2^0;
sbit RW=P2^1;
sbit ALE=P2^2;
unchar  COM;//指令数据寄存器
unchar  DAT;//显示数据寄存器

//软件复位程序
void    intrst(void)
        {
            unchar  i;
            RST=0;
            i++;
            i++;
            RST=1;        //软件复位

        }

//12864发送命令子程序
void	comsend(void)
	{	unchar	i;
        unchar  temp;
		DI=0;
		RW=1;
        P0=0xff;
        do {    ALE=1;
                i++;
                i++;
				temp=P0;
                ALE=0;
			} while((temp&0x80)==1);	//读BUSY信号
		RW=0;
		P0=COM;
		ALE=1;
		i++;i++;i++;		//NOP		
		ALE=0;
	}

//12864发送数据子程序
void	dasend(void)
	{   unchar	i;
        unchar  temp;
		DI=0;
		RW=1;
		do	{P0=0xff;
			ALE=1;
			temp=P0;
            ALE=0;
			}while((temp&0x80)==1);		//读BUSY信号
		DI=1;
		RW=0;
		P0=DAT;
		ALE=1;
		i++;i++;i++;		//NOP
		ALE=0;
	}

//左半屏写命令子程序
void	left_comsend(void)
	{
		CS1=1;
		comsend();
		CS1=0;
	}

//左半屏写数据子程序
void	left_dasend(void)
	{
		CS1=1;
		dasend();
		CS1=0;
	}

//右半屏写命令子程序
void	right_comsend(void)
	{
		CS2=1;
		comsend();
		CS2=0;
	}


//右半屏写数据子程序
void	right_dasend(void)
	{
		CS2=1;
		dasend();
		CS2=0;
	}


//左半屏写一个字节数据程序,
//入口参数为X,Y的起始地址
//以及Y的变址范围(写入的字节数)和写入数据的指针
void	left_bytes_dasend(unchar x,unchar y,unchar *loc,unchar bytes)
		{	unchar	i;
			COM=(x|0xB8);	//填入特征位0xB8
			left_comsend();		//定位X
			COM=(y|0x40);	//填入特征位0x40
			left_comsend();		//定位Y
			for(i=0;i<bytes;i++)
				{
				DAT=*(loc+i);
				left_dasend();
				}

		}


//右半屏写一个字节数据程序,
//入口参数为X,Y的起始地址
//以及Y的变址范围(写入的字节数)和写入数据的指针
void	right_bytes_dasend(unchar x,unchar y,unchar *loc,unchar bytes)
		{	unchar	i;
			COM=(x|0xB8);	//填入特征位0xB8
			right_comsend();		//定位X
			COM=(y|0x40);	//填入特征位0x40
			right_comsend();		//定位Y
			for(i=0;i<bytes;i++)
				{
				DAT=*(loc+i);
				right_dasend();
				}
		}
//开LCD
void    lcdon(void)
        {
             COM=0x3F;
             left_comsend();
             right_comsend();
        }
//关LCD
void	lcdoff(void)
		{
			 COM=0x3e;
             left_comsend();
             right_comsend();	
		}
//设置Z地址
void	lcdz(unchar z)
		{
			 COM=(z|0xc0);
             left_comsend();
             right_comsend();	
		}

⌨️ 快捷键说明

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