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

📄 main.c

📁 对显示器LCD的读写和I2C的控制程序
💻 C
字号:

/* EasyARM2100工程模板演示文件 */


/****************************************************************************
* 文件名:main.C
* 功能:LED数码管显示0-F字符,同时控制LED1、LED2、LED3、LED4显示对应的16进行值。
* 说明:将跳线器JP3、JP4、JP7短接。
****************************************************************************/
#include  "config.h"

#define   SPI_CS	(1<<29)			/* P0.29 ,2114			*/
#define   SPI_DATA	(1<<6)			/* P0.6 			*/
#define   SPI_CLK	(1<<4)			/* P0.4 			*/

//#define   BEEP      (1<<7)      	/* P0.7为蜂鸣器控制 */

#define   SPI_IOCON	(SPI_CS|SPI_DATA|SPI_CLK)		/* SPI接口的I/O设置字 */
#define   LED_IOCON	(0x0D<<22)						/* LED1-4的I/O设置字 */
#define   KEY		IO0PIN&0x00010000		/* P0.16引脚连接KEY1 */

//#define   cs	   (1<<22)	       /*mcp4822 CS P0.22*/
//#define   sck	   (1<<23)		   /*P0.23*/
//#define   sdi	   (1<<24)		   /*P0.24*/
//#define   ldac	   (1<<25)		   /*P0.25*/
 

/****************************************************************************
* 名称:HC595_SendDat()
* 功能:向74HC595发送一字节数据
* 入口参数:dat		要发送的数据
* 出口参数:无
* 说明:发送数据时,高位先发送。
****************************************************************************/


void delay(uint32 dly)
{
   uint32 i;
   for(i=0;i<dly;i++)
   {
    ;
	}
} 

void init_io(void)
{
    PINSEL0 = UART0_EN|I2C_EN|UART1_EN;	//enable uart0 uart1 i2c										
	PINSEL1 = 0; 
	IO0DIR 	= LCD_RW|
	          LCD_E|
	          LCD_D0|
	          LCD_D2|
	          LCD_D3|
	          LCD_D5|
	          LCD_D7|
	          LCD_CS2|
	          LCD_CS1|
	          D1302_RST|
	          LCD_POWER|
	          M485_EN|
	          M4821_CS11|
	          M4821_SDI2|
	          M4821_CS12|
	          M4821_SDI1|
	          D1302_CLK;
	          
	IO1DIR 	= D1302_IO|
	          M4821_SCK1|
	          M4821_SCK2|
	          LED|
	          BEEP|
	          LCD_D6|
	          LCD_D4|
	          LCD_D1|
	          LCD_RS|
	          RY4;//|
	         // RY3|
	         // RY2|
	         // RY1;    
             IO1SET = LED;
	         IO1SET = BEEP;
			 IO0CLR=M485_EN;                     
}

void  I2C_Init(void)
{  /* 设置I2C时钟为100KHz */
   I2SCLH = I2SCLL = 14;            // 晶振为11.0592MHz,Fpclk = 2.7648MHz 
   /* 设置I2C中断允许 */
   VICIntSelect = 0x00000000;		// 设置所有通道为IRQ中断
   VICVectCntl15 = 0x29;				// I2C通道分配到IRQ slot  10
   VICVectAddr15 = (int)IRQ_I2C;	    // 设置I2C中断向量地址    10	
   VICIntEnable |= 0x00000200;           // 使能I2C中断 
}
void  UART0_Ini(uint32 bps)		 
{  uint16 Fdiv;
   U0LCR = 0x83;		                  // DLAB = 1,可设置波特率
   Fdiv = (Fpclk / 16) / bps;        // 设置波特率
   U0DLM = Fdiv / 256;							
   U0DLL = Fdiv % 256;						
   U0LCR = 0x03;
   
   U0FCR = 0x81;                         // 设置FIFO控制寄存器,使能FIFO,并设置触发点为8字节。
   U0IER = 0x01;                         // 设置中断使能寄存器,允许RBR中断,即接收中断
   
  
   VICIntSelect = 0x00000000;            // 设置所有通道为IRQ中断
   VICVectCntl0 = 0x26;                  // UART0中断通道分配到IRQ slot 10,即优先级10
   VICVectAddr10 = (int)IRQ_UART0;        // 设置UART0向量地址为10
   VICIntEnable |= 0x00000040;            // 使能UART0中断
}	
    
//void  HC595_SendDat(uint8 dat)
//{  
//	uint8  i;

//   	IO0CLR = SPI_CS;			    	// SPI_CS = 0
   	
//	for(i=0; i<8; i++)					// 发送8位数据
//   	{ 
//	 	IO0CLR = SPI_CLK;				// SPI_CLK = 0
      	/* 设置SPI的DATA输出值 */
//      	if( (dat&0x80)!=0 ) IO0SET = SPI_DATA;
//        	else IO0CLR = SPI_DATA;
//      	dat <<= 1;
//      	IO0SET = SPI_CLK;					// SPI_CLK = 1
//   	}
///   
 //  	IO0SET = SPI_CS;			    		// SPI_CS = 1,输出显示数据
//}

/* 此表为0--F的字模 */
//const uint8  DISP_TAB[16] = { 	0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
							//	0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E };


int main(void)
{  	
	init_io();
	I2C_Init();
	UART0_Ini(115200);
	init_LCD();
	 i2ctest();	
     while(1);
}

⌨️ 快捷键说明

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