📄 display.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 + -