📄 hd44780.c
字号:
#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"
#define SetData GpioDataRegs.GPFDAT.bit.GPIOF12 = 1
#define ClrData GpioDataRegs.GPFDAT.bit.GPIOF12 = 0
#define SetClk GpioDataRegs.GPFDAT.bit.GPIOF8 = 1
#define ClrClk GpioDataRegs.GPFDAT.bit.GPIOF8 = 0
#define SetRS GpioDataRegs.GPADAT.bit.GPIOA5 = 1
#define ClrRS GpioDataRegs.GPADAT.bit.GPIOA5 = 0
#define SetRW GpioDataRegs.GPADAT.bit.GPIOA6 = 1
#define ClrRW GpioDataRegs.GPADAT.bit.GPIOA6 = 0
#define SetE GpioDataRegs.GPADAT.bit.GPIOA7 = 1
#define ClrE GpioDataRegs.GPADAT.bit.GPIOA7 = 0
unsigned int *LedReg = (unsigned int *)0x27FF;
unsigned int *Led8Lock = (unsigned int *)0x2BFF;
void SendData(Uint16 data);
void LcdInit(void);
void WriteData(Uint16 data);
void WriteNum(Uint16 row,Uint16 col,Uint16 num);
void WriteCGRAM(Uint16 num, const Uint16 *pBuffer);
void WriteMenu(const Uint16 *pBuffer);
const Uint16 UserTab[]={
0x00,0x00,0x04,0x0E,0x1F,0x1F,0x00,0x00,
0x00,0x00,0x1F,0x1F,0x0E,0x04,0x00,0x00,
0x00,0x03,0x07,0x0F,0x07,0x03,0x00,0x00,
0x00,0x0C,0x0E,0x0F,0x0E,0x0C,0x00,0x00,
};
const Uint16 MenuTab[]={
'V','o','l','t','a','g','e',' ','=',' ','.',' ',' ','k','V',' ',
' ','S','e','t',' ','b','y',' ',' ','[',0x00,0x01,0x02,0x03,']',' ',
};
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化外设*/
InitPeripherals();
InitGpio();
*Led8Lock = 0X07;
*LedReg = 0xFF;
SendData(0xFF);
LcdInit();
WriteNum(1,3,0);
WriteCGRAM(32,UserTab);
WriteMenu(MenuTab);
for(;;);
}
void delay(Uint16 number)
{
Uint16 j;
for(j = 0;j < number;j++);
}
void SendData(Uint16 data)
{
Uint16 i,Temp;
Temp = 0x80;
for (i=0;i<8;i++)
{
if ((data & Temp)==0) ClrData;
else SetData;
Temp >>= 1;
ClrClk;
delay(10);
SetClk;
}
*Led8Lock = 0x03;
delay(10);
*Led8Lock = 0x07;
SetData;
}
void LCDPIN(void)
{
EALLOW;
GpioMuxRegs.GPADIR.all = 0x00FC;
EDIS;
GpioDataRegs.GPADAT.bit.GPIOA4 = 1;
}
void LCDPOUT(void)
{
EALLOW;
GpioMuxRegs.GPADIR.all = 0xFFFC;
EDIS;
GpioDataRegs.GPADAT.bit.GPIOA4 = 0;
}
//============================================
// 查忙
//============================================
void Busy(void)
{
Uint16 Temp = 0x8000;
LCDPIN();
delay(200);
ClrRS;
SetRW;
while(Temp)
{
SetE;
delay(50);
Temp = GpioDataRegs.GPADAT.all;
Temp = Temp & 0x8000;
ClrE;
delay(50);
}
}
//==========================================
// 描述:写命令函数
// 入口:’COM‘
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -