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

📄 lcd.c

📁 用tms320c2812实现的高精度频率计
💻 C
字号:
#include	"DSP28_Device.h"
#include "stdio.h"
#include "stdlib.h"
#define comm 0
#define dat  1
unsigned short displayflag=0;
extern const unsigned char *ASCIITAB[];
extern const unsigned char *Welcome[];
const unsigned char disline[8] = {0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01};


void  delay(unsigned int d_time)
{
	while(d_time--);
}


/*----------------LCD忙检测----------------*/
void chk_busy()
{
	unsigned int temp;
	LCD_REG = 0x06;//RS=0(comm), RW=1(read)
	temp = 0x0080;
	while((temp&0x0080)!=0)
	{
		temp = LCD_DAT;
	}
	//while((LCD_DAT&0x80)!=0); 
}


/*------------------写LCD------------------*/
void  wr_lcd(unsigned char dat_comm, unsigned int content)
{
	chk_busy();
	if(dat_comm)
	{
		LCD_REG = 0x05;//RS=1(data), RW=0(write)
	}
	else
	{
		LCD_REG = 0x04;//RS=0(comm), RW=0(write)
	}
	LCD_DAT = content;
}


/*----------------清DDRAM------------------*/
void clrram (void)
{
    wr_lcd (comm,0x30);
    wr_lcd (comm,0x01);
}


/*------------------初始化-----------------*/
void  lcd_init(void)
{
	LCD_REG = 0x03;//RESET
	delay(5000);
	LCD_REG = 0x04;
    wr_lcd (comm,0x30);  /*30---基本指令动作*/  
    wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
    wr_lcd (comm,0x06);  /*光标的移动方向*/
    wr_lcd (comm,0x0c);  /*开显示,关游标*/		
}


/*---------------欢迎界面------------------*/
void Smenu()
{
	wr_lcd (comm,0x30);
	delay(5000);
	wr_lcd (comm,0x80);
	delay(5000);
	wr_lcd (dat,0xc6);          //"频"
	delay(5000);
	wr_lcd (dat,0xb5);
	delay(5000);
    wr_lcd (dat,0xc2);          //"率"
    delay(5000);
	wr_lcd (dat,0xca);
	delay(5000);
 //   wr_lcd (dat,0xa3);          //":"
 //   delay(5000);
//	wr_lcd (dat,0xba);
//	delay(5000);
	
	wr_lcd (comm,0x30);
	delay(5000);
	wr_lcd (comm,0x90);
	delay(5000);
	wr_lcd (dat,0xd6);          //"频"
	delay(5000);
	wr_lcd (dat,0xdc);
	delay(5000);
    wr_lcd (dat,0xc6);          //"率"
    delay(5000);
	wr_lcd (dat,0xda);
	delay(5000);
 //   wr_lcd (dat,0xa3);          //":"
 //   delay(5000);
//	wr_lcd (dat,0xba);
//	delay(5000);
	
	
	wr_lcd (comm,0x30);
	delay(5000);
	wr_lcd (comm,0x88);
	delay(5000);
	wr_lcd (dat,0xcf);          //"频"
	delay(5000);
	wr_lcd (dat,0xe0);
	delay(5000);
    wr_lcd (dat,0xce);          //"率"
    delay(5000);
	wr_lcd (dat,0xbb);
	delay(5000);
//    wr_lcd (dat,0xa3);          //":"
 //   delay(5000);
//	wr_lcd(dat,0xba);
//	delay(5000);
//	wr_lcd (dat,0x31);          //":"
 //   delay(5000);
//	wr_lcd (dat,0x32);
//	delay(5000);
 //   wr_lcd (dat,0xd7);          //"子"
  //  delay(5000);
//	wr_lcd (dat,0xd3);
//	delay(5000);
}

void display(long fre)
{
//	unsigned short disnum[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//	disnum[0] = fre%10;
//	disnum[1] = fre/10;
//fre =12345678;
	wr_lcd (comm,0x30);
	delay(5000);
	wr_lcd (comm,0x82);
	delay(5000);
	wr_lcd (dat,0x30+fre/10000000);          //"频"
	delay(5000);
	wr_lcd (dat,0x30+fre/1000000-fre/10000000*10);
	delay(5000);
    wr_lcd (dat,0x30+fre/100000-fre/1000000*10);          //"率"
    delay(5000);
	wr_lcd (dat,0x30+fre/10000-fre/100000*10);
	delay(5000);
	wr_lcd (dat,0x30+fre/1000-(fre/10000)*10);
	delay(5000);
    wr_lcd (dat,0x30+fre/100-fre/1000*10);          //"率"
    delay(5000);
    wr_lcd (dat,0x30+fre/10-fre/100*10);          //"率"
    delay(5000);
	wr_lcd (dat,0x30+fre%10);
	delay(5000);
}



void display_p(long fre)
{	
	int tempnum=0;
	wr_lcd (comm,0x30);
	delay(5000);
	wr_lcd (comm,0x92);
	delay(5000);
/*	tempnum=0x30+fre/100000000;
	if(tempnum!=0x30)
		{
		wr_lcd (dat,tempnum);          
		delay(5000);
		displayflag =1;
		}
	else
	{	
		wr_lcd (dat,11);          
		delay(5000);
		displayflag =1;
	}
		tempnum=0x30+fre/10000000-fre/100000000*10;
	if(displayflag||tempnum!=0x30)
		{
		wr_lcd (dat,tempnum);          
		delay(5000);
		displayflag =1;
		}
	else
	{	
		wr_lcd (dat,32);          
		delay(5000);
		displayflag =1;
	}
	
		tempnum=0x30+fre/1000000-fre/10000000*10;
	if(displayflag||tempnum!=0x30)
		{
		wr_lcd (dat,tempnum);          
		delay(5000);
		displayflag =1;
		}
	else
	{	
		wr_lcd (dat,32);          
		delay(5000);
		displayflag =1;
	}
		tempnum=0x30+fre/100000-fre/1000000*10;
	if(displayflag||tempnum!=0x30)
		{
		wr_lcd (dat,tempnum);          
		delay(5000);
		displayflag =1;
		}
	else
	{	
		wr_lcd (dat,32);          
		delay(5000);
		displayflag =1;
	}
		tempnum=0x30+fre/10000-fre/100000*10;
	if(displayflag||tempnum!=0x30)
		{
		wr_lcd (dat,tempnum);          
		delay(5000);
		displayflag =1;
		}
	else
	{	
		wr_lcd (dat,32);          
		delay(5000);
		displayflag =1;
	}
		tempnum=0x30+fre/1000-fre/10000*10;
	if(displayflag||tempnum!=0x30)
		{
		wr_lcd (dat,tempnum);          
		delay(5000);
		displayflag =1;
		}
	else
	{	
		wr_lcd (dat,32);          
		delay(5000);
		displayflag =1;
	}
		tempnum=0x30+fre/100-fre/1000*10;
	if(displayflag||tempnum!=0x30)
		{
		wr_lcd (dat,tempnum);          
		delay(5000);
		displayflag =1;
		}
	else
	{	
		wr_lcd (dat,32);          
		delay(5000);
		displayflag =1;
	}
		tempnum=0x30+fre/10-fre/100*10;
	if(displayflag||tempnum!=0x30)
		{
		wr_lcd (dat,tempnum);          
		delay(5000);
		displayflag =1;
		}
	else
	{	
		wr_lcd (dat,32);          
		delay(5000);
		displayflag =1;
	}
		tempnum=0x30+fre%10;
	if(displayflag||tempnum!=0x30)
		{
		wr_lcd (dat,tempnum);          
		delay(5000);
		displayflag =1;
		}
	else
	{	
		wr_lcd (dat,32);          
		delay(5000);
		displayflag =1;
	}
		displayflag =0;*/
		wr_lcd (dat,0x30+fre/100000000);
		delay(5000);
	wr_lcd (dat,0x30+fre/10000000-fre/100000000*10);
	delay(5000);
    wr_lcd (dat,0x30+fre/1000000-fre/10000000*10);          
    delay(5000);
	wr_lcd (dat,0x30+fre/100000-fre/1000000*10);
	delay(5000);
	wr_lcd (dat,0x30+fre/10000-(fre/100000)*10);
	delay(5000);
    wr_lcd (dat,0x30+fre/1000-fre/10000*10);         
    delay(5000);
    wr_lcd (dat,0x30+fre/100-fre/1000*10);          
    delay(5000);
	wr_lcd (dat,0x30+fre/10-fre/100*10);
	delay(5000);
	wr_lcd (dat,0x30+fre%10);
	delay(5000);
}

void display_pw(long fre)
{
	wr_lcd (comm,0x30);
	delay(5000);
	wr_lcd (comm,0x8a);
	delay(5000);
	wr_lcd (dat,0x30+fre/100000000);          //"频"
	delay(5000);
	wr_lcd (dat,0x30+fre/10000000-fre/100000000*10);
	delay(5000);
    wr_lcd (dat,0x30+fre/1000000-fre/10000000*10);          //"率"
    delay(5000);
    wr_lcd (dat,46);          //"."
    delay(5000);
	wr_lcd (dat,0x30+fre/100000-fre/1000000*10);
	delay(5000);
	wr_lcd (dat,0x30+fre/10000-(fre/100000)*10);
	delay(5000);
   // wr_lcd (dat,0x30+fre/1000-fre/10000*10);          //"率"
   // delay(5000);
   // wr_lcd (dat,0x30+fre/100-fre/1000*10);          //"率"
    //delay(5000);
//	wr_lcd (dat,0x30+fre/10-fre/100*10);
//	delay(5000);
//	wr_lcd (dat,0x30+fre%10);
//	delay(5000);
}

⌨️ 快捷键说明

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