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

📄 dds9954.c

📁 基于AD9954的扫频仪程序设计
💻 C
📖 第 1 页 / 共 2 页
字号:
    	RS = 0;   //指令
    	RW = 0;   //写模式
   	 }
  	P2=uc_Content;//数据放到P1口上
  	E = 1;
  	_nop_();//很重要 
	_nop_();
   	_nop_();
    E = 0;														
}


//********************************************
//*函数名称:uc_Parallel_Read_LCD_Data		 *
//*函数功能:并行读LCD数据					 *
//*形式参数:无								 *
//*形参说明:无								 *
//*返回参数:读回的数据						 *
//*使用说明:无								 *
//********************************************
uchar uc_Parallel_Read_LCD_Data(void)
{
 	uchar uc_Content;
	Parallel_Check_Busy();
	P2 = 0xff;			//输入前置1
    RS = 1;   			//数据
    RW = 1;   			//读模式
  	E = 1;				//使能
  	uc_Content = P2;    //P1口的内容放到变量中
  	E = 0;
	return uc_Content;
}

//*************************************************************
//*函数名称:void Parallel_DDRAM_Address_Set(uchar ucDDramAdd) *
//*函数功能:设定DDRAM(文本区)地址到地址计数器AC				  *
//*形式参数:uchar ucDDramAdd								  *
//*行参说明:具体地址										  *
//*格式说明:												  *
//*		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0				  *
//*		0	0	1	AC6	AC5	AC4	AC3	AC2	AC1	AC0				  *
//*返回参数:无												  *
//*使用说明:												  *
//*	第一行地址:80H~8FH										  *
//*	第二行地址:90H~9FH										  *
//*	第三行地址:A0H~AFH										  *
//*	第四行地址:B0H~BFH										  *
//*************************************************************
void Parallel_DDRAM_Address_Set(uchar ucDDramAdd)
{
	Parallel_Write_LCD(COMMAND,BASIC_FUNCTION);			//基本指令集
	Parallel_Write_LCD(COMMAND,ucDDramAdd);				//设定DDRAM地址到地址计数器AC
}


//*************************************************************
//*函数名称:void Parallel_CGRAM_Address_Set(uchar ucCGramAdd) *
//*函数功能:设定CGRAM(自定义字库区)地址到地址计数器AC		  *
//*形式参数:uchar ucCGramAdd								  *
//*形参说明:具体地址										  *
//*格式说明:												  *
//*		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0				  *
//*		0	0	0	1	AC5	AC4	AC3	AC2	AC1	AC0				  *
//*返回参数:无												  *
//*使用说明:地址范围为40H~3FH								  *
//*************************************************************
void Parallel_CGRAM_Address_Set(uchar ucCGramAdd)
{
	Parallel_Write_LCD(COMMAND,BASIC_FUNCTION);			//基本指令集
	Parallel_Write_LCD(COMMAND,ucCGramAdd);				//设定CGRAM地址到地址计数器AC
}


//*******************************************************************************
//*函数名称:void Parallel_GDRAM_Address_Set(uchar ucGDramAdd)					*
//*函数功能:设定GDRAM(图形区)地址到地址计数器AC									*
//*形式参数:uchar ucGDramAdd													*
//*形参说明:具体地址值															*
//*		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0									*
//*		0	0	1	AC6	AC5	AC4	AC3	AC2	AC1	AC0									*
//*		先设定垂直位置再设定水平位置(连续写入两个字节完成垂直和水平位置的设置)	*	
//*		垂直地址范围:AC6~AC0													*
//*		水平地址范围:AC3~AC0													*
//*返回参数:无																	*
//*使用说明:必须在扩展指令集的情况下使用										*
//*******************************************************************************
void Parallel_GDRAM_Address_Set(uchar ucGDramAdd)
{
	Parallel_Write_LCD(COMMAND,EXTEND_FUNCTION);			//扩展指令集
	Parallel_Write_LCD(COMMAND,ucGDramAdd);		
}



//*******************************************
//*函数名称:void Parallel_Init_LCD(void)	*
//*函数功能:并行初始化LCD					*
//*形式参数:无								*
//*形参说明:无								*
//*返回参数:无								*
//*使用说明:无								*
//*******************************************
void Parallel_Init_LCD(void)
{
  	RST = 1;									//复位后拉高,停止复位
  	PSB = 1;									//选择并行传输模式		
  	Parallel_Write_LCD(COMMAND,BASIC_FUNCTION); //基本指令动作   
  	Parallel_Write_LCD(COMMAND,CLEAR_SCREEN);  	//清屏,地址指针指向00H
  	Parallel_Write_LCD(COMMAND,0x06);  		    //光标的移动方向
  	Parallel_Write_LCD(COMMAND,0x0c);  			//开显示,关游标

}



//********************************************************
//*函数名称:void Parallel_Clear_Ram(void)	             *
//*函数功能:并行清屏函数					             *
//*形式参数:无								             *
//*形参说明:无							     	         *
//*返回参数:无								             *
//*使用说明:DDRAM填满20H,并设定DDRAM AC到00H	         *
//*格式说明:											 *
//*		    RS	RW	DB7	 DB6  DB5  DB4	DB3	DB2	DB1	DB0	 *
//*		    0	0	 0	  0	   0	0	 0   0	 0	 1	 *
//********************************************************
void Parallel_Clear_Ram(void)
{
	Parallel_Write_LCD(COMMAND,BASIC_FUNCTION);			//基本指令集
	Parallel_Write_LCD(COMMAND,CLEAR_SCREEN);			//清屏
}


//*****************************************************
//*函数名称:void Parallel_Graph_Mode_Set(bit bSelect) *
//*函数功能:打开或关闭绘图显示						  *
//*形式参数:bit bSelect								  *
//*形参说明:打开或关闭绘图显示的标志位,1打开,0关闭	  *
//*格式说明:										  *
//*		RS	RW	DB7	DB6	DB5	DB4	DB3	DB2	DB1	DB0		  *
//*		0	0	0	0	1	DL	X	RE	 G	 X		  *
//*		DL:0,4bitMPU控制界面						  *
//*		DL:1,8bitMPU控制界面						  *
//*		RE:0,基本指令集								  *
//*		RE:1,扩充指令集								  *
//*		G :0,绘图显示OFF							  *
//*		G :1,绘图显示ON								  *
//*返回参数:无										  *
//*使用说明:无										  *
//*****************************************************
void Parallel_Graph_Mode_Set(bit bSelect)
{
	Parallel_Write_LCD(COMMAND,EXTEND_FUNCTION);	//扩展指令集
	if(bSelect)
	{
	Parallel_Write_LCD(COMMAND,GRAPH_ON);			//打开绘图模式
	}
	else
	{
	Parallel_Write_LCD(COMMAND,GRAPH_OFF);			//关闭绘图模式	
	}
}


//*********************************************************************************
//*函数名称:void Parallel_DisplayStrings_WithAddress(uchar ucAdd,uchar code *p)	  *
//*函数功能:在(文本区)ucAdd指定的位置显示一串字符(或是汉字或是ASCII或是两者混合)  *
//*形式参数:uchar ucAdd,uchar code *p											  *
//*形参说明:指定的位置,要显示的字符串											  *
//*地址必须是:80H~8FH,90H~9FH,88H~AFH,98H~BFH									  *
//*返回参数:无																	  *
//*使用说明:使用之前要初始化液晶												  *
//*********************************************************************************
void Parallel_DisplayStrings_WithAddress(uchar ucAdd,uchar code *p)
{
	uchar length;
	length = strlen(p);
    Parallel_Write_LCD(COMMAND,BASIC_FUNCTION);  			//基本指令动作   
	Parallel_DDRAM_Address_Set(ucAdd);
	for( ;  length ; length -- )
	Parallel_Write_LCD(DATA, *(p++));					
}



//****************************************************************
//*函数名称:void Parallel_ImgDisplay(unsigned char code *img)	 *
//*函数功能:全屏显示128*64个象素的图形							 *
//*形式参数:unsigned char code *img								 *
//*形参说明:要显示的图形										 *
//*液晶屏坐标说明:												 *
//*		 _______________________________________________		 *
//*		|(0,0)					                 (7,0) |		 *
//*		|					     					   |		 *
//*		|					     				       |		 *
//*		|(0,31)					                 (7,31)|		 *
//*		|(8,0)					                 (15,0)|		 *
//*		|					     					   |		 *
//*		|					      					   |		 *
//*		|(8,31)                                 (15,31)|		 *
//*    	|______________________________________________|		 *
//																 *
//返回参数:无													 *
//使用说明:此函数适用于RT12864-4M型液晶							 *
//****************************************************************
void Parallel_ImgDisplay(unsigned char code *img)
{
  	uchar i,j;
    Parallel_Graph_Mode_Set(0x01); //先关闭图形显示功能
	for(j=0;j<32;j++)
  	 {
    	for(i=0;i<8;i++)
     	 {
      		Parallel_Write_LCD(COMMAND,0x80+j);		//设定垂直坐标
      		Parallel_Write_LCD(COMMAND,0x80+i);		//设定水平坐标
      	    Parallel_Write_LCD(DATA,img[j*16+i*2]);	//放入数据高字节
      		Parallel_Write_LCD(DATA,img[j*16+i*2+1]);	//放入数据低字节
    	 }
  	 }
  	for(j=32;j<64;j++)
  	 {
    	for(i=0;i<8;i++)
    	 {
      		Parallel_Write_LCD(COMMAND,0x80+j-32);
      		Parallel_Write_LCD(COMMAND,0x88+i);
      		Parallel_Write_LCD(DATA,img[j*16+i*2]);
     	    Parallel_Write_LCD(DATA,img[j*16+i*2+1]);
    	 }
  	 }
	Parallel_Graph_Mode_Set(0x00);//最后打开图形显示功能
}



//******************************************************************************
//*函数名称:void Parallel_ImgDisplayCharacter(uchar x,uchar y,uchar code *img) *
//*函数功能:使用绘图的方法,在(x,y)处画一个16*16点阵的图案,也可以是字符		   *
//*形式参数:uchar x,uchar y,uchar code *img									   *
//*			x取值范围:0~15													   *
//*			y取值范围:0~32 (针对RT12864-4M型液晶)						       *
//*形参说明:坐标水平位置,坐标垂直位置,要显示的图形							   *
//*液晶屏坐标说明:															   *
//*		_______________128个象素______________________						   * 
//*		|(0,0)								     (7,0)|						   *
//*		|											  |						   *
//*	6	|											  |						   *
//*	4	|(0,31)									(7,31)|						   *
//*	个	|(8,0)									(15,0)|						   *
//*	象	|											  |						   *
//*	素	|											  |						   *
//*		|(8,31)________________________________(15,31)|						   *
//*																			   *
//*返回参数:无																   *
//*使用说明:此函数适用于RT12864-4M型液晶								       *
//******************************************************************************
void Parallel_ImgDisplayCharacter(uchar x,uchar y,uchar code *img)
{
  	uchar i;
 	Parallel_Graph_Mode_Set(0x01);		//先关闭图形显示功能
    Parallel_Write_LCD(COMMAND,EXTEND_FUNCTION);
	for(i=0;i<16;i++)
  	 {

      	   //	Parallel_Write_LCD(COMMAND,0x80+y+i);
      		//Parallel_Write_LCD(COMMAND,0x80+x);
			Parallel_GDRAM_Address_Set(0x80+y+i);
		    Parallel_GDRAM_Address_Set(0x80+x);
      		Parallel_Write_LCD(DATA,img[i*2]);
      		Parallel_Write_LCD(DATA,img[i*2+1]);
  	 }
   Parallel_Graph_Mode_Set(0x00);				//最后打开图形显示功能
}

								    



void main()
{
 
  PSB=0;   
  Parallel_Init_LCD();
  Parallel_DisplayStrings_WithAddress(0x80,Tab1);
  Parallel_DisplayStrings_WithAddress(0x90,Tab2);
  Parallel_DisplayStrings_WithAddress(0x88,Tab3);
  Parallel_DisplayStrings_WithAddress(0x98,Tab4);
  
  IO9954_Init();
  PS1=0;
  PS0=0;
  AD9954_LinearSweep_Init();
 
 while(1)
{
  

 PS0=0;
 nNop(2);
 PS0=1;
  AD9954_LinearSweep_Freq();
  
 
}
}


























⌨️ 快捷键说明

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