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

📄 tsp_lcd_movx.c

📁 89C52单片机12M晶振下DS18B20温度传感器测量温度应用子程序源码
💻 C
字号:




//**************************************************************************************//
//			                             头文件区                                       //
//**************************************************************************************//
#include <SST89x5x4.h>					/*关于寄存器、位的定义*/

#include <intrins.h>					/*内部函数调用,如_nop_() 、_crol_()、cror();*/

#include <absacc.h>	    				/*绝对地址访问,如XBYTE[0x0fff0]*/

#define write_data_operation 		XBYTE[0XCDFF] 			//写数据//E =1 RS=1 RW=0
#define write_commend_operation 	XBYTE[0XCCFF] 			//写命令//E=1 RS=0 RW=0
#define read_operation 				XBYTE[0xCEFF]			//读数据//CS=1 RS=0 RW=1


//**************************************************************************************//
//			                             全局变量定义                                   //
//**************************************************************************************//
unsigned char test_value,temp;
unsigned char code display[]= "                It will take  years of hard work to speak English well!                        ";
unsigned char code display1[]= "Try our best to study! ";
unsigned char code display2[]= "   to study!    ";
unsigned char code display3[]= " tsp!  English!   ";
unsigned char code display4[]= "   so lovely!   ";


//**************************************************************************************//
//			                             延时程序                                       //
//**************************************************************************************//
void delay5ms(void)
{
	unsigned int TempCyc = 5552;
	while(TempCyc--);
}

void delay(unsigned int d)      	//延时du秒,延时较短,用于指令间的延时
      {
      	while(d--);
	  }


//**************************************************************************************//
//			                           状态字检测程序                                   //
//**************************************************************************************// 
void read_write_test(void)      	//状态字检测程序
{                         			//对控制器每次进行读写操作前,都必须进行读写检测
	temp=read_operation;
	test_value=(temp&0x80);
}


//**************************************************************************************//
//			                           写指令子函数                                     //
//**************************************************************************************// 
void write_command_not(unsigned char value)//(不检测忙信号)写指令子函数
{
	write_commend_operation=value;
}


void write_command(unsigned char value)//(须检测忙信号)写指令子函数
{
	do
	{
		read_write_test();             //对控制器每次进行读写操作前,都必须进行读写检测
    }while(test_value==0x80);  //STA7=P0^7最高们为读/写操作使能端,1:禁止 0:允许

	write_commend_operation=value;
}


//**************************************************************************************//
//			                           写数据子函数                                     //
//**************************************************************************************// 
void write_data(unsigned char value)   
{
	do
	{
		read_write_test();             //对控制器每次进行读写操作前,都必须进行读写检测
    }while(test_value==0x80);  //STA7=P0^7最高们为读/写操作使能端,1:禁止 0:允许

	write_data_operation=value;
}


//**************************************************************************************//
//			                           LCD系统初始化                                    //
//**************************************************************************************// 
void System_Init ( void )
{
	delay5ms();
	delay5ms();
	delay5ms();		
    write_command_not(0x38);	//(不检测忙信号)写指令子函数 
    delay5ms();
    write_command_not(0x38);	// 
    delay5ms();
    write_command_not(0x38);	//

	write_command(0x38);	//设置显示模式 ,8位2行5x7点阵
    write_command(0x08);	// 关显示
	write_command(0x01);	//清屏 	  
    write_command(0x38);	//设置显示模式 ,8位2行5x7点阵
    write_command(0x06);	//文字不动,光标自动右移 
	write_command(0x0F);	//显示器开、光标开、闪烁开 
}
  

//**************************************************************************************//
//			                           主MAIN函数区                                     //
//**************************************************************************************//    
void main(void)
{
	unsigned char i,j,k;
	System_Init ();
	while(1)
	{
    	for(k=0;k<3;k++)//闪烁三次
		{
		 	write_command(0x01);	//清屏
			delay(100);
	     	write_command(0x0f);	//显示器开、光标开、闪烁开 

			for(i=0;i<32;i++)
			{
				if(i<16)
	     		{
	      			write_command(0x80|i);
		  			write_data(display1[i]);
		 		}

				else
		 		{
		  			write_command(0xc0|(i-16));//#0C0H ;写入显示起始地址(第二行第一个位置)
		  			write_data(display2[i-16]);
		 		}
			}
		 delay(50000);
		 delay(50000);
		}
		 delay(300);

		for(j=0;j<75;j++)
  			for(i=0;i<32;i++)
			{
       			if(i<16)
	     		{
	     	 		write_command(0x80|i);
		  			write_data(display3[i]);
		
		  			write_command(0xc0|i);//#0C0H ;写入显示起始地址(第二行第一个位置)
		  			write_data(display[i+j]);
		 		}
	   			delay(700);
	  		}
			delay(100);

	  	for(i=0;i<32;i++)
		{
       		if(i<16)
	     	{
	      		write_command(0x80|i);
		  		write_data(display3[i]);
		 	}
			else
		 	{
		  		write_command(0xc0|(i-16));//#0C0H ;写入显示起始地址(第二行第一个位置)
		  		write_data(display4[i-16]);
		 	}
		}
		delay(300);

	  	delay(10);
	};
  	while(1);
}

⌨️ 快捷键说明

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