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

📄 display.c

📁 基于矢量控制的永磁同步交流伺服电机控制系统 可以用的源程序
💻 C
字号:
#include "DSP281x_DEVICE.h"
/*
#define Set_E()		GpioDataRegs.GPBSET.bit.GPIOB10 = 1
#define Set_RS()	GpioDataRegs.GPBSET.bit.GPIOB8 = 1
#define Set_RW()	GpioDataRegs.GPBSET.bit.GPIOB9 = 1
#define CLR_E()		GpioDataRegs.GPBCLEAR.bit.GPIOB10 = 1
#define CLR_RS()	GpioDataRegs.GPBCLEAR.bit.GPIOB8 = 1
#define CLR_RW()	GpioDataRegs.GPBCLEAR.bit.GPIOB9 = 1 */

#define Set_E()		GpioDataRegs.GPBSET.bit.GPIOB14 = 1
#define Set_RS()	GpioDataRegs.GPBSET.bit.GPIOB15 = 1
#define Set_RW()	GpioDataRegs.GPBSET.bit.GPIOB12 = 1
#define CLR_E()		GpioDataRegs.GPBCLEAR.bit.GPIOB14 = 1
#define CLR_RS()	GpioDataRegs.GPBCLEAR.bit.GPIOB15 = 1
#define CLR_RW()	GpioDataRegs.GPBCLEAR.bit.GPIOB12 = 1


#define BUSY_BIT	GpioDataRegs.GPBDAT.bit.GPIOB7

#define WRITE_PORT(A) GpioDataRegs.GPBDAT.all = (GpioDataRegs.GPBDAT.all & 0xFF00) | A

#define LCD_DELAY_nUS(A)  Delay(((((long double) A * 1000.0L) / (long double)6.666667) - 18.0L) / 14.0L)


//'''''''''''''''''''''''''液晶显示值/'''''''''''''''''''''''''''''''''''''
 unsigned char number[10]={'0','1','2','3','4','5','6','7','8','9'};
 unsigned char a=0,b=0,c=0,d=0,e=0, biao_zhi=1;


//extern Delay(unsigned long loopCnt);
void Write_Port(unsigned int data);
unsigned int Read_Port(void);
void Write_Comm(unsigned int comm, unsigned int busy);
void Write_Data(unsigned int data, unsigned int busy);
unsigned int Read_State(void);
void Wait (void);
void Set_X_Y(unsigned int x, unsigned int y);
void display_a_char(unsigned int x, unsigned int y, unsigned int c);
void display_a_string(unsigned int x, unsigned int y, unsigned int *s);
void Init_LCD(void);
void Delay(unsigned long LoopCnt);

void Write_Port(unsigned int data)
{
	GpioDataRegs.GPBDAT.all &= (0xFFFF | data);
}

unsigned int Read_Port(void)
{
	unsigned int buffer;
	buffer = BUSY_BIT;
	return buffer;
}

void Write_Comm(unsigned int comm, unsigned int busy)
{
	if (busy)
	Wait();
	CLR_E();
	CLR_RW();
	CLR_RS();
	LCD_DELAY_nUS(1);
	Set_E();
	LCD_DELAY_nUS(1);
	WRITE_PORT(comm);
	LCD_DELAY_nUS(2);
	CLR_E();
}

void Write_Data(unsigned int data, unsigned int busy)
{
	if (busy)
	Wait();
	CLR_E();
	CLR_RW();
	Set_RS();
	LCD_DELAY_nUS(1);
	Set_E();
	LCD_DELAY_nUS(1);
	WRITE_PORT(data);
	LCD_DELAY_nUS(2);
	CLR_E();
}

unsigned int Read_State(void)
{
	unsigned int result;
	CLR_E();
	Set_RW();
	CLR_RS();
	EALLOW;
	GpioMuxRegs.GPBDIR.all = 0xFF00;
	EDIS;
	LCD_DELAY_nUS(1);
	Set_E();
	LCD_DELAY_nUS(2);
	result = BUSY_BIT;
	LCD_DELAY_nUS(2);
	CLR_E();
	EALLOW;
	GpioMuxRegs.GPBDIR.all = 0xFFFF;
	EDIS;
	return result;	
}

void Wait(void)
{	
	volatile int buffer;
	buffer = Read_State();
	while (buffer)
	{
		buffer = Read_State();
	}
}

void Set_X_Y(unsigned int x, unsigned int y)
{
	if (y == 0)
		Write_Comm(0x80 | x, 1);
	else
		Write_Comm(0xC0 | x, 1);
}

void display_a_char(unsigned int x, unsigned int y, unsigned int c)
{
	Set_X_Y(x, y);
	Write_Data(c, 1);
}

void display_a_string(unsigned int x, unsigned int y, unsigned int *s)
{
    display_a_char(x, y, *s);
	s++;
	while (*s)
	{
		Write_Data(*s, 1);
		s++;
	}
}

void Init_LCD(void)
{
	LCD_DELAY_nUS(15000);
	Write_Comm(0x38, 0);
	LCD_DELAY_nUS(5000);
	Write_Comm(0x38, 0);
	LCD_DELAY_nUS(5000);
	Write_Comm(0x38, 0);
	
	Write_Comm(0x38, 1);
	Write_Comm(0x08, 1);
	Write_Comm(0x01, 1);
	Write_Comm(0x06, 1);
	Write_Comm(0x0C, 1);
}
void Delay(unsigned long LoopCnt)				//延时
{
	unsigned long i;	
 	for (i = 0; i < LoopCnt; i++);	
}

⌨️ 快捷键说明

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