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

📄 rt12864s.c.bak

📁 关于DSC1820温度传感器的单片机应用程序
💻 BAK
字号:
#include <REG938.h>          		/*头文件的包含*/
#include <intrins.h>

#define  uchar unsigned char		/*宏定义*/
#define  uint  unsigned int
#define  _Nop()  _nop_()        /*定义空指令*/



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 lcd_tab[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
										    0x41,0x42,0x43,0x44,0x45,0x46};


sbit rt12864_sid = P1^0;	//数据
sbit rt12864_clk = P1^1;	//时钟

/********************************************************************
使用定时器1延时n毫秒
********************************************************************/
void dally_timer1(uint data ms)
{
	uchar tmp = 15;
	TR1 = 1;
	do
	{
		tmp = 15;
		do
		{
			while (TF1 == 0);
			TF1 = 0;
			--tmp;
		}
		while (tmp != 0);
		--ms;
	}
	while (ms != 0);
	TR1 = 0;
}

/****************************************************************************
* 名称:rt12864_write()
* 功能:LCD读写子程序。
* 入口参数:LCD_COMMAND, LCD_DATA
* 出口参数:无
****************************************************************************/
/**------------------------------------------------------------------------**/
void rt12864_write1(uchar data TMP1)
{
	uchar data i,TMP;
	for(i=8;i>0;i--)
	{
		TMP=(TMP1&(0x01<<(i-1)))>>(i-1);//取数据第7-0位
		if(TMP==0)
		{
			rt12864_sid = 0;		//第i位为0,lcd数据为0
		}
		if(TMP==1)
		{
			rt12864_sid = 1;		//第i位为1,lcd数据为1	
		}	
		rt12864_clk = 0;			//lcd时钟产生一个上升沿
		_Nop();
		_Nop();
		rt12864_clk = 1;			
	}
}
	

/**-----------------------------------------------------------------------**/
void rt12864_write(uchar data LCD_COMMAND,uchar data LCD_TMP)
{
	uchar data TMP1;
  TMP1=LCD_COMMAND;                  //发送lcd指令
  rt12864_write1(TMP1);
  TMP1=LCD_TMP&0xF0;                //发送lcd指令或数据高4位
  rt12864_write1(TMP1);
  TMP1=(LCD_TMP&0x0F)<<4;           //发送lcd指令或数据低4位
  rt12864_write1(TMP1);
}

/****************************************************************************
* 名称:LCDInit()
* 功能:LCD初始化子程序。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void rt12864_initialization(void)
{
	rt12864_write(0xf8,0x01);		//清屏命令
	dally_timer1(40);
	rt12864_write(0xf8,0x30);		//基本指令集
	dally_timer1(40);
	rt12864_write(0xf8,0x02);		//游标归零命令
	dally_timer1(40);
	rt12864_write(0xf8,0x04);		//
	dally_timer1(40);
	rt12864_write(0xf8,0x0c);		//
	dally_timer1(40);
	rt12864_write(0xf8,0x01);		//
	dally_timer1(40);
	rt12864_write(0xf8,0x80);		//
	dally_timer1(40);
}

/****************************************************************************
在row行,tier列,十进制方式显示双字节数据
****************************************************************************/
void rt12864_ten_int(uchar row,uchar tier,uint dt)
{
	uchar data tmp;
	tmp = AC_TABLE[8*row+tier];
	rt12864_write(0xf8,tmp);
	tmp = lcd_tab[dt / 1000];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 1000) / 100];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 100) / 10];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[dt % 10];
	rt12864_write(0xfa,tmp);
}

/****************************************************************************
在row行,tier列,十六进制方式显示双字节数据
****************************************************************************/
void rt12864_sixteen_int(uchar row,uchar tier,uint dt)
{
	uchar data tmp;
	tmp = AC_TABLE[8*row+tier];
	rt12864_write(0xf8,tmp);
	tmp = lcd_tab[dt / 4096];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 4096) / 256];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 256) / 16];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[dt % 16];
	rt12864_write(0xfa,tmp);
}

/****************************************************************************
在row行,tier列,十进制方式显示单字节数据
****************************************************************************/
void rt12864_ten_char(uchar row,uchar tier,uchar dt)
{
	uchar data tmp;
	tmp = AC_TABLE[8*row+tier];
	rt12864_write(0xf8,tmp);
	tmp = lcd_tab[dt / 100];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 100) / 10];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[dt % 10];
	rt12864_write(0xfa,tmp);
}

/****************************************************************************
在row行,tier列,十六进制方式显示单字节数据
****************************************************************************/
void rt12864_sixteen_char(uchar row,uchar tier,uchar dt)
{
	uchar data tmp;
	tmp = AC_TABLE[8*row+tier];
	rt12864_write(0xf8,tmp);
	tmp = lcd_tab[dt / 16];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[dt % 16];
	rt12864_write(0xfa,tmp);
}

void lcd12232_zfc(uchar row,uchar tier,uchar *puts)
{
	uchar data tmp;
	tmp = AC_TABLE[8*row+tier];
	rt12864_write(0xf8,tmp);
	while(*puts != '\0')									//判断字符串是否显示完毕
	{
		rt12864_write(0xfa,*puts);							//
		puts++;
	}
}

/****************************************************************************
在row行,tier列,十进制方式显示四字节数据
****************************************************************************/
void rt12864_ten_long(uchar row,uchar tier,ulong dt)
{
	uchar data tmp;
	tmp = AC_TABLE[8*row+tier];
	rt12864_write(0xf8,tmp);
	tmp = lcd_tab[dt / 1000000000];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 1000000000) / 100000000];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 100000000) / 10000000];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 10000000) / 1000000];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 1000000) / 100000];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 100000) / 10000];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 10000) / 1000];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 1000) / 100];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[(dt % 100) / 10];
	rt12864_write(0xfa,tmp);
	tmp = lcd_tab[dt % 10];
	rt12864_write(0xfa,tmp);
}






⌨️ 快捷键说明

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