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

📄 dsp28112_ra8835.txt

📁 This programme is designed for dsp2812 and LCD RA8835, may it be help to you!
💻 TXT
字号:

#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"

#define	  SetData	GpioDataRegs.GPFDAT.bit.GPIOF0 = 1
#define	  ClrData   GpioDataRegs.GPFDAT.bit.GPIOF0 = 0
#define	  SetClk	GpioDataRegs.GPFDAT.bit.GPIOF2 = 1
#define	  ClrClk	GpioDataRegs.GPFDAT.bit.GPIOF2 = 0
#define	  SetClk	GpioDataRegs.GPFDAT.bit.GPIOF2 = 1

#define lcd_A0_high   GpioDataRegs.GPBDAT.bit.GPIOB7=0x01
#define lcd_A0_low    GpioDataRegs.GPBDAT.bit.GPIOB7=0x00
#define lcd_CS_high   GpioDataRegs.GPBDAT.bit.GPIOB6=0x00
#define lcd_CS_low    GpioDataRegs.GPBDAT.bit.GPIOB6=0x00
#define lcd_RD_high   GpioDataRegs.GPBDAT.bit.GPIOB5=0x01
#define lcd_RD_low    GpioDataRegs.GPBDAT.bit.GPIOB5=0x00
#define lcd_WR_high   GpioDataRegs.GPBDAT.bit.GPIOB4=0x01
#define lcd_WR_low    GpioDataRegs.GPBDAT.bit.GPIOB4=0x00

#define lcd_dir_RD    GpioDataRegs.GPADAT.bit.GPIOA9=0x01
#define lcd_dir_WR    GpioDataRegs.GPADAT.bit.GPIOA9=0x00

#define	  F2812_GPIOF14		GpioDataRegs.GPFDAT.bit.GPIOF14  //XF PIN

unsigned  int  *Led8Lock = (unsigned int *)0x25FF;
const	Uint16	SpiCode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
Uint16	LedCount = 0;
Uint16	SpiCount = 0;

interrupt void ISRTimer0(void);
interrupt void ISRTimer2(void);

void	SendData(Uint16	data);
void	delay(Uint16  data)
{
	Uint16	i;
	for (i=0;i<data;i++) { ; }	
}
void lcd_WR_valid(void)
{
    EALLOW;  
    GpioMuxRegs.GPAMUX.all=0xFD00;//IOPA0~7 IOPB4~7 设置为IO方式IOA9=lcd_WR
	GpioMuxRegs.GPBMUX.all=0xFF0F;
    GpioMuxRegs.GPADIR.all=0x02FF;//IOPA0~7 IOPB4~7 设置为输出方式
    GpioMuxRegs.GPBDIR.all=0x00F0;
    EDIS;
}
void lcd_RD_valid(void)
{
    EALLOW;  
    GpioMuxRegs.GPAMUX.all=0xFD00;//IOPA0~7 IOPB4~7 设置为IO方式 IOA9=lcd_RD
	GpioMuxRegs.GPBMUX.all=0xFF0F;
    GpioMuxRegs.GPADIR.all=0x0200;//IOPA0~7 IOPB4~7 设置为输入方式
    GpioMuxRegs.GPBDIR.all=0x00F0;
    EDIS;  
}
void lcd_wr_cmd(Uint16 cmd)
{
    lcd_WR_valid();
    lcd_dir_WR;
    GpioDataRegs.GPADAT.all=(cmd & 0x00FF);//写控制命令,IOA9=0(LCD_RW=0,写数据有效);
    lcd_CS_low;
	lcd_A0_high;
	lcd_WR_low;
	delay(200);
	lcd_WR_high;
	lcd_CS_high;
}
void lcd_wr_data(Uint16 data)
{
    lcd_WR_valid();
	lcd_dir_WR;
	GpioDataRegs.GPADAT.all=(data&0x00FF);//写数据,IOA9=0(LCD_RW=0,写数据有效);
	lcd_CS_low;
	lcd_WR_low;
	lcd_A0_low;
	delay(200);
	lcd_WR_high;
	lcd_CS_high;
	lcd_A0_high;
}
Uint16 lcd_cmd_read(void)
{
    Uint16 address_cmd;
    lcd_RD_valid();
	lcd_dir_RD;
	GpioDataRegs.GPADAT.all=0xFF;
	lcd_CS_low;
	lcd_A0_low;
	lcd_RD_low;
	address_cmd=GpioDataRegs.GPADAT.all&(0x00FF);
	delay(20);
	lcd_RD_high;
	lcd_CS_high;
	lcd_A0_low;
	return(address_cmd);
}
Uint16 lcd_data_read(void)
{
    Uint16 address_data;
    lcd_RD_valid();
	lcd_dir_RD;
	GpioDataRegs.GPADAT.all=0xFF;
	lcd_CS_low;
	lcd_A0_high;
	lcd_RD_low;
    address_data=GpioDataRegs.GPADAT.all&(0x00FF);
    delay(20);
	lcd_RD_high;
	lcd_CS_high;
	lcd_A0_high;
	return(address_data);
}
void lcd_initial(void)
{
    //system set p1~p8
	lcd_wr_cmd(0x40);
	lcd_wr_data(0x30);
	lcd_wr_data(0x87);
	lcd_wr_data(0x07);
	lcd_wr_data(0x27);
	lcd_wr_data(0x37);
	lcd_wr_data(0xef);
	lcd_wr_data(0x28);
	lcd_wr_data(0x00);

    //scroll set 
	lcd_wr_cmd(0x44);
    lcd_wr_data(0x00);//sa1-L
	lcd_wr_data(0x00);//sa1-H
	lcd_wr_data(0xF0);//sL1
	lcd_wr_data(0x80);//sa2-L
	lcd_wr_data(0x25);//sa2-H
	lcd_wr_data(0xF0);//sa2
	lcd_wr_data(0x00);//sa3-L
	lcd_wr_data(0x3A);//sa3-H
	lcd_wr_data(0x00);//sa4-L
	lcd_wr_data(0x3A);//SA4-H

	lcd_wr_cmd(0x5A); //hdot scr
	lcd_wr_data(0x00);

	lcd_wr_cmd(0x58);//disp off
	lcd_wr_data(0x54);

	lcd_wr_cmd(0x5d);//csr form
	lcd_wr_data(0x00);//crx
	lcd_wr_data(0x00);//cry

	lcd_wr_cmd(0x59);//disp on
	lcd_wr_data(0x54);

	lcd_wr_cmd(0x5b);
	lcd_wr_data(0x00);
}

void lcd_cursor_xy(Uint16 x, Uint16 y)
{
  lcd_wr_cmd(0x46);
  lcd_wr_data(x);
  lcd_wr_data(y);
}
void lcd_busy(void)
{
  Uint16 busy;
  do
  {
    busy=(lcd_cmd_read()&0x40);
  }while(busy);
}
void lcd_clear(void)
{
  Uint16 i;
  lcd_cursor_xy(0x00,0x00);
  lcd_wr_cmd(0x42);
  for(i=0;i<0x7FFF;i++)
  lcd_wr_data(0x00);
}
void test(void)
{
   Uint16 i;
   lcd_wr_cmd(0x42);
   for(i=0;i<9600;i++)
   lcd_wr_data(0x00);
 /*  if (((i/80)%2)==0)
     lcd_wr_data(0xAA);
   else 
     lcd_wr_data(0xff);*/
}

void main(void)
{

	/*初始化系统*/
	InitSysCtrl();

	/*关中断*/
	DINT;
	IER = 0x0000;
	IFR = 0x0000;
	/*初始化PIE*/
	InitPieCtrl();

	/*初始化PIE中断矢量表*/
	InitPieVectTable();	
	
	/*初始化外设*/
    InitPeripherals();
    
	InitGpio();
	EALLOW;	
	PieVectTable.TINT0 = &ISRTimer0;
	PieVectTable.TINT2 = &ISRTimer2;
	
	EDIS;   
    
	/*设置CPU*/
	ConfigCpuTimer(&CpuTimer0, 10, 1000000);	
	ConfigCpuTimer(&CpuTimer2, 50, 1000000);	
	
 //	StartCpuTimer0();
 	StartCpuTimer2();

    /*开中断*/
	IER |= M_INT1;
	IER |= M_INT14;	
	PieCtrl.PIEIER1.bit.INTx7=1;
	

	EINT;   // Enable Global interrupt INTM
	ERTM;	// Enable Global realtime interrupt DBGM
	*Led8Lock = 0XB7;

    EALLOW;
    GpioMuxRegs.GPFMUX.bit.XF_GPIOF14 = 0;
    GpioMuxRegs.GPFDIR.bit.GPIOF14 = 1;
    EDIS;
	F2812_GPIOF14 = 0;
    lcd_initial();
   lcd_clear();
   lcd_cursor_xy(0x80,0x25);
    while(1)
    {test();
      delay(2000);};
//	for(;;);

} 	

interrupt void ISRTimer0(void)
{
	PieCtrl.PIEACK.bit.ACK7=1;
	LedCount++;
	if (LedCount>4)
	{
		F2812_GPIOF14 = ~F2812_GPIOF14;	
		LedCount=0;
	}
}

interrupt void ISRTimer2(void)
{
	SendData(SpiCode[SpiCount]);
	SpiCount++; 
	if (SpiCount>16){	SpiCount=0;
	F2812_GPIOF14 = ~F2812_GPIOF14;}
}

void	Delay(Uint16  data)
{
	Uint16	i;
	for (i=0;i<data;i++) { ; }	
}	
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 = 0xB7;
	Delay(10);	
	*Led8Lock = 0xBF;
	SetData;		
}		

//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

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