PA0--- 复位信号RESET
PA1---片选CS
PA2----寄存器选择信号RS
PA3---写信号WR
PA4---读信号RD
文件名:Type.h,主要定义一些数据变量的别名
- /****************************************Copyright (c)**************************************************
- ** Southeast University
- **--------------File Info-------------------------------------------------------------------------------
- ** File Name: Type.h
- ** Last modified Date: 2012-03-23
- ** Last Version: 1.0
- ** Description: 定义数据类型别名
- **------------------------------------------------------------------------------------------------------
- ** Created By: JianGe
- ** Created date: 2012-03-23
- ** Version: 1.0
- **------------------------------------------------------------------------------------------------------ */
- #ifndef __TYPE_H__
- #define __TYPE_H__
- /********************************************************************************************************
- * Date types(Compiler specific) 数据类型(和编译器相关) *
- ********************************************************************************************************/
- typedef unsigned char uint8; // Unsigned 8 bit quantity 无符号8位整型变量
- typedef unsigned char uchar; // Unsigned 8 bit quantity 无符号8位整型变量
- typedef signed char int8; // Signed 8 bit quantity 有符号8位整型变量
- typedef unsigned short uint16; // Unsigned 16 bit quantity 无符号16位整型变量
- typedef signed short int16; // Signed 16 bit quantity 有符号16位整型变量
- typedef unsigned int uint32; // Unsigned 32 bit quantity 无符号32位整型变量
- typedef unsigned int uint; // Unsigned 32 bit quantity 无符号32位整型变量
- typedef signed int int32; // Signed 32 bit quantity 有符号32位整型变量
- typedef float fp32; // Single precision floating point 单精度浮点数(32位长度)
- typedef double fp64; // Double precision floating point 双精度浮点数(64位长度)
- #ifndef TRUE
- #define TRUE 1
- #endif
- #ifndef FALSE
- #define FALSE 0
- #endif
- #ifndef NULL
- #define NULL 0
- #endif
- #endif
- /*********************************************************************************************************
- * End Of File *
- *********************************************************************************************************/
文件名:USART.h,串口操作函数的声明
- /****************************************Copyright (c)**************************************************
- ** Southeast University
- **--------------File Info-------------------------------------------------------------------------------
- ** File Name: USART.h
- ** Last modified Date: 2012-03-23
- ** Last Version: 1.0
- ** Description: 串口函数声明
- **------------------------------------------------------------------------------------------------------
- ** Created By: JianGe
- ** Created date: 2012-03-23
- ** Version: 1.0
- **------------------------------------------------------------------------------------------------------ */
- #ifndef _USART_H
- #define _USART_H
- #include "Type.h"
- #define BAUD 9600 //波特率设置
- #define CRYSTAL 4000000 //11059200 //晶振频率
- #define BAUD_SET (uint16)((uint32)CRYSTAL/(16*(uint32)BAUD)-1)
- #define BAUD_H (uint8)(BAUD_SET>>8)
- #define BAUD_L (uint8)(BAUD_SET)
- #define FE_EER BIT(FE) //帧接收错误
- #define PE_EER BIT(PE) //校验错误
- #define DATA_OVER BIT(DOR) //接收溢出错误
- #define UDR_EMPTY BIT(UDRE) //数据寄存器空
- #define USAT_TX_EN UCSRB|=BIT(TXEN) //使能USART发送
- #define USAT_TX_NO_EN UCSRB&=~BIT(TXEN)
- #define USAT_RX_EN UCSRB|=BIT(RXEN) //使能USART接收
- #define USAT_RX_NO_EN UCSRB&=~BIT(RXEN)
- extern void USART_Init(void);
- extern void Uart_Transmit(unsigned char i);
- extern unsigned char Uart_Receive( void );
- #endif
- /*********************************************************************************************************
- * End Of File *
- *********************************************************************************************************/
文件名:Delay.h,延时函数的声明
- /****************************************Copyright (c)**************************************************
- ** Southeast University
- **--------------File Info-------------------------------------------------------------------------------
- ** File Name: Delay.h
- ** Last modified Date: 2012-03-23
- ** Last Version: 1.0
- ** Description: 延时函数声明
- **------------------------------------------------------------------------------------------------------
- ** Created By: JianGe
- ** Created date: 2012-03-23
- ** Version: 1.0
- **------------------------------------------------------------------------------------------------------ */
- # ifndef DELAY_H_H_
- # define DELAY_H_H_
- # define DELAY_US asm("nop"); asm("nop"); asm("nop"); asm("nop");\
- asm("nop"); asm("nop"); asm("nop"); asm("nop");
- extern void Delay_nUS(unsigned int n);
- extern void Delay_MS(void);
- extern void Delay_nMS(unsigned int n);
- # endif
- /*********************************************************************************************************
- * End Of File *
- *********************************************************************************************************/
文件名:LCDDriver.h,LCD驱动函数和应用函数的声明
- /****************************************Copyright (c)**************************************************
- ** Southeast University
- **--------------File Info-------------------------------------------------------------------------------
- ** File Name: LCD_Driver.h
- ** Last modified Date: 2012-03-24
- ** Last Version: 1.0
- ** Description: LCD驱动函数声明
- **------------------------------------------------------------------------------------------------------
- ** Created By: JianGe
- ** Created date: 2012-03-24
- ** Version: 1.0
- **------------------------------------------------------------------------------------------------------ */
- # ifndef LCD_DRIVER_H_H_
- # define LCD_DRIVER_H_H_
- # include "Type.h"
- # include
- extern void LCD_Port_Init(void);
- extern void LCD_WriteCmd(uint32 regID);
- extern void LCD_WriteData(uint32 data);
- extern void LCD_WriteReg(uint32 regID, uint32 regData);
- extern unsigned int LCD_ReadReg(uint32 regID);
- extern void LCD_ILI9325_Init(void);
- extern void LCD_SetWindow(unsigned int x0, unsigned int x1, unsigned int y0, unsigned int y1);
- extern void LCD_ClearScreen(unsigned int color);
- extern void LCD_Fill_Rectangle(unsigned int x0,unsigned int y0,unsigned int x1,unsigned int y1,unsigned int color);
- extern unsigned char Get_CharOffset(unsigned char char_data);
- extern void Set_CharWindow(unsigned int lineNum, unsigned int rowNum);
- extern void LCD_WriteChar(unsigned int lineNum,
- unsigned int rowNum,
- unsigned int charColor,
- unsigned int bkColor,
- unsigned char chChar)
- extern void LCD_WriteString(unsigned char lineNum, unsigned char rowNum,
- unsigned int charColor,
- unsigned int bkColor,
- unsigned char *p_str)
- # endif
- /*********************************************************************************************************
- * End Of File *
- *********************************************************************************************************/
文件名:LCD_Font.h LCD字体库的声明
- /****************************************Copyright (c)**************************************************
- ** Southeast University
- **--------------File Info-------------------------------------------------------------------------------
- ** File Name: LCD_Font.h
- ** Last modified Date: 2012-03-27
- ** Last Version: 1.0
- ** Description: LCD显示字符的字节表
- **------------------------------------------------------------------------------------------------------
- ** Created By: JianGe
- ** Created date: 2012-03-27
- ** Version: 1.0
- **------------------------------------------------------------------------------------------------------ */
- # ifndef LCD_FONT_H_H_
- # define LCD_FONT_H_H_
- //常用ASCII字符码表
- const unsigned char Letter[][16] =
- {
- //第一栏从' '到 '?'
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
- {0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x18,0x18,0x00,0x00},/*"!",1*/
- {0x00,0x12,0x36,0x24,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
- {0x00,0x00,0x00,0x24,0x24,0x24,0xFE,0x48,0x48,0x48,0xFE,0x48,0x48,0x48,0x00,0x00},/*"#",3*/
- {0x00,0x00,0x10,0x38,0x54,0x54,0x50,0x30,0x18,0x14,0x14,0x54,0x54,0x38,0x10,0x10},/*"$",4*/
- {0x00,0x00,0x00,0x44,0xA4,0xA8,0xA8,0xA8,0x54,0x1A,0x2A,0x2A,0x2A,0x44,0x00,0x00},/*"%",5*/
- {0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x50,0x6E,0xA4,0x94,0x88,0x89,0x76,0x00,0x00},/*"&",6*/
- {0x00,0x60,0x60,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
- {0x00,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x02,0x00},/*"(",8*/
- {0x00,0x40,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x00},/*")",9*/
- {0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00},/*"*",10*/
- {0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x10,0x00,0x00,0x00},/*"+",11*/
- {0x00,0x60,0x60,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",12*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",13*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00},/*".",14*/
- {0x00,0x00,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x00},/*"/",15*/
- {0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"0",16*/
- {0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"1",17*/
- {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},/*"2",18*/
- {0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"3",19*/
- {0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},/*"4",20*/
- {0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"5",21*/
- {0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"6",22*/
- {0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},/*"7",23*/
- {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},/*"8",24*/
- {0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00},/*"9",25*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00},/*":",26*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x20},/*";",27*/
- {0x00,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00},/*"<",28*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00},/*"=",29*/
- {0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x40,0x00,0x00},/*">",30*/
- {0x00,0x00,0x00,0x3C,0x42,0x42,0x62,0x02,0x04,0x08,0x08,0x00,0x18,0x18,0x00,0x00},/*"?",31*/
- //第二栏从'@'开始
- {0x00,0x00,0x00,0x38,0x44,0x5A,0xAA,0xAA,0xAA,0xAA,0xB4,0x42,0x44,0x38,0x00,0x00},/*"@",32*/
- {0x00,0x00,0x00,0x10,0x10,0x18,0x28,0x28,0x24,0x3C,0x44,0x42,0x42,0xE7,0x00,0x00},/*"A",33*/
- {0x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x78,0x44,0x42,0x42,0x42,0x44,0xF8,0x00,0x00},/*"B",34*/
- {0x00,0x00,0x00,0x3E,0x42,0x42,0x80,0x80,0x80,0x80,0x80,0x42,0x44,0x38,0x00,0x00},/*"C",35*/
- {0x00,0x00,0x00,0xF8,0x44,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x44,0xF8,0x00,0x00},/*"D",36*/
- {0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x42,0x42,0xFC,0x00,0x00},/*"E",37*/
- {0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x40,0x40,0xE0,0x00,0x00},/*"F",38*/
- {0x00,0x00,0x00,0x3C,0x44,0x44,0x80,0x80,0x80,0x8E,0x84,0x44,0x44,0x38,0x00,0x00},/*"G",39*/
- {0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"H",40*/
- {0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"I",41*/
- {0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x88,0xF0},/*"J",42*/
- {0x00,0x00,0x00,0xEE,0x44,0x48,0x50,0x70,0x50,0x48,0x48,0x44,0x44,0xEE,0x00,0x00},/*"K",43*/
- {0x00,0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0xFE,0x00,0x00},/*"L",44*/
- {0x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0x54,0xD6,0x00,0x00},/*"M",45*/
- {0x00,0x00,0x00,0xC7,0x62,0x62,0x52,0x52,0x4A,0x4A,0x4A,0x46,0x46,0xE2,0x00,0x00},/*"N",46*/
- {0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x44,0x38,0x00,0x00},/*"O",47*/
- {0x00,0x00,0x00,0xFC,0x42,0x42,0x42,0x42,0x7C,0x40,0x40,0x40,0x40,0xE0,0x00,0x00},/*"P",48*/
- {0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x82,0xB2,0xCA,0x4C,0x38,0x06,0x00},/*"Q",49*/
- {0x00,0x00,0x00,0xFC,0x42,0x42,0x42,0x7C,0x48,0x48,0x44,0x44,0x42,0xE3,0x00,0x00},/*"R",50*/
- {0x00,0x00,0x00,0x3E,0x42,0x42,0x40,0x20,0x18,0x04,0x02,0x42,0x42,0x7C,0x00,0x00},/*"S",51*/
- {0x00,0x00,0x00,0xFE,0x92,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00},/*"T",52*/
- {0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"U",53*/
- {0x00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,0x24,0x28,0x28,0x18,0x10,0x10,0x00,0x00},/*"V",54*/
- {0x00,0x00,0x00,0xD6,0x92,0x92,0x92,0x92,0xAA,0xAA,0x6C,0x44,0x44,0x44,0x00,0x00},/*"W",55*/
- {0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00},/*"X",56*/
- {0x00,0x00,0x00,0xEE,0x44,0x44,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00},/*"Y",57*/
- {0x00,0x00,0x00,0x7E,0x84,0x04,0x08,0x08,0x10,0x20,0x20,0x42,0x42,0xFC,0x00,0x00},/*"Z",58*/
- {0x00,0x1E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1E,0x00},/*"[",59*/
- {0x00,0x00,0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x08,0x08,0x04,0x04,0x04,0x02,0x02},/*"\",60*/
- {0x00,0x78,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x78,0x00},/*"]",61*/
- {0x00,0x1C,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",63*/
- //第三栏从'''开始
- {0x00,0x60,0x60,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",64*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x1E,0x22,0x42,0x42,0x3F,0x00,0x00},/*"a",65*/
- {0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x64,0x58,0x00,0x00},/*"b",66*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x40,0x40,0x40,0x22,0x1C,0x00,0x00},/*"c",67*/
- {0x00,0x00,0x00,0x06,0x02,0x02,0x02,0x1E,0x22,0x42,0x42,0x42,0x26,0x1B,0x00,0x00},/*"d",68*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x7E,0x40,0x40,0x42,0x3C,0x00,0x00},/*"e",69*/
- {0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x7E,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"f",70*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x44,0x44,0x38,0x40,0x3C,0x42,0x42,0x3C},/*"g",71*/
- {0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"h",72*/
- {0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"i",73*/
- {0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x44,0x78},/*"j",74*/
- {0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x4E,0x48,0x50,0x68,0x48,0x44,0xEE,0x00,0x00},/*"k",75*/
- {0x00,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"l",76*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x49,0x49,0x49,0x49,0x49,0xED,0x00,0x00},/*"m",77*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"n",78*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"o",79*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x64,0x42,0x42,0x42,0x44,0x78,0x40,0xE0},/*"p",80*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x22,0x42,0x42,0x42,0x22,0x1E,0x02,0x07},/*"q",81*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x32,0x20,0x20,0x20,0x20,0xF8,0x00,0x00},/*"r",82*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x42,0x40,0x3C,0x02,0x42,0x7C,0x00,0x00},/*"s",83*/
- {0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x10,0x10,0x10,0x0C,0x00,0x00},/*"t",84*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x42,0x42,0x42,0x42,0x46,0x3B,0x00,0x00},/*"u",85*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x28,0x10,0x10,0x00,0x00},/*"v",86*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD7,0x92,0x92,0xAA,0xAA,0x44,0x44,0x00,0x00},/*"w",87*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6E,0x24,0x18,0x18,0x18,0x24,0x76,0x00,0x00},/*"x",88*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x28,0x18,0x10,0x10,0xE0},/*"y",89*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x44,0x08,0x10,0x10,0x22,0x7E,0x00,0x00},/*"z",90*/
- {0x00,0x03,0x04,0x04,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x00},/*"{",91*/
- {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00},/*":",92*/
- {0x00,0x60,0x10,0x10,0x10,0x10,0x10,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x60,0x00},/*"}",93*/
- {0x30,0x4C,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/
- {0x00,0x1C,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",95*/
- };
- # endif
- /*********************************************************************************************************
- * End Of File *
- *********************************************************************************************************/
文件名: Delay.c,延时函数的实现
- /****************************************Copyright (c)**************************************************
- ** Southeast University
- **--------------File Info-------------------------------------------------------------------------------
- ** File Name: Delay.c
- ** Last modified Date: 2012-03-23
- ** Last Version: 1.0
- ** Description: 延时函数实现
- **------------------------------------------------------------------------------------------------------
- ** Created By: JianGe
- ** Created date: 2012-03-23
- ** Version: 1.0
- **------------------------------------------------------------------------------------------------------ */
- #include "Delay.h"
- #include "Type.h"
- /*********************************************************************************************************
- ** Function name: Delay_nUS
- ** Descriptions: 延时n微秒
- ** input parameters: 无
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- void Delay_nUS(uint32 n)
- {
- uint32 i=0;
- for(i=0; i
- {
- DELAY_US;
- }
- }
- /*********************************************************************************************************
- ** Function name: Delay_MS
- ** Descriptions: 延时1毫秒
- ** input parameters: 无
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- void Delay_MS(void)
- {
- uint32 i=0;
- for(i=0; i<1000; i++)
- {
- DELAY_US;
- }
- }
- /*********************************************************************************************************
- ** Function name: Delay_nMS
- ** Descriptions: 延时n毫秒
- ** input parameters: 无
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- void Delay_nMS(uint32 n)
- {
- uint32 i=0;
- for(i=0; i
- {
- Delay_MS();
- }
- }
- /*********************************************************************************************************
- * End Of File *
- *********************************************************************************************************/
文件名:USART.c 串口调试函数的实现
- /****************************************Copyright (c)**************************************************
- ** Southeast University
- **--------------File Info-------------------------------------------------------------------------------
- ** File Name: USART.c
- ** Last modified Date: 2012-03-23
- ** Last Version: 1.0
- ** Description: 串口函数实现
- **------------------------------------------------------------------------------------------------------
- ** Created By: JianGe
- ** Created date: 2012-03-23
- ** Version: 1.0
- **------------------------------------------------------------------------------------------------------ */
- #include
- #include "USART.h"
- /*串口初始化函数*/
- void USART_Init(void)
- {
- UCSRA = 0x02; /*倍速*/
- UCSRB = 0x18; /*允许接收和发送*/
- UCSRC = 0x06; /*8位数据*/
- UBRRH = 0x00;
- //UBRRL = 12; /*9600*/
- //UBRRL = 103; //11.0592M下9600
- UBRRL = 207; //16MHz下9600
- }/*数据发送,查询方式*/
- void Uart_Transmit(unsigned char i)
- {
- while (!(UCSRA & (1<
- UDR = i; /* 发送数据*/
- }
- /*数据接收,查询方式*/
- unsigned char Uart_Receive( void )
- { while (!(UCSRA & (1<
- return UDR; /* 获取并返回数据*/
- }
- /*********************************************************************************************************
- * End Of File *
- *********************************************************************************************************/
文件名:LCDDriver.c LCD驱动函数以及上层函数的实现
- /****************************************Copyright (c)**************************************************
- ** Southeast University
- **--------------File Info-------------------------------------------------------------------------------
- ** File Name: LCDDriver.c
- ** Last modified Date: 2012-04-12
- ** Last Version: 1.0
- ** Description: LCD驱动函数的实现
- **------------------------------------------------------------------------------------------------------
- ** Created By: JianGe
- ** Created date: 2012-03-24
- ** Version: 1.0
- **------------------------------------------------------------------------------------------------------ */
- # include "Delay.h"
- # include
- # include
- # include "USART.h"
- # include "LCD_Font.h"
- # include "Type.h"
- ///////////屏显示参数设置///////////////
- //设置屏显示像素大小
- # define X_SIZE 240
- # define Y_SIZE 320
- //x和y的最大坐标值,坐标原点为(0, 0)
- # define X_END (X_SIZE - 1)
- # define Y_END (Y_SIZE - 1)
- //一个字符x*y的分别大小
- # define CHAR_X_SIZE 8
- # define CHAR_Y_SIZE 16
- //横坐标能显示的字符数X_SIZE/CHAR_X_SIZE
- # define CHAR_X_NUM 30
- //纵坐标能显示的字符数Y_SIZE/CHAR_Y_SIZE
- # define CHAR_Y_NUM 20
- ////////////////////////////////////////
- //LCD控制端口动作宏定义
- # define LCD_CS_BIT PA1
- # define LCD_RS_BIT PA2
- # define LCD_WR_BIT PA3
- # define LCD_RD_BIT PA4
- # define LCD_REST_BIT PA0
- # define LCD_CLT_PORT PORTA
- # define LCD_CLT_PIN PINA
- # define LCD_CLT_DDR DDRA
- # define LCD_CS_L LCD_CLT_PORT &= ~BIT(LCD_CS_BIT)
- # define LCD_CS_H LCD_CLT_PORT |= BIT(LCD_CS_BIT)
- # define LCD_RS_L LCD_CLT_PORT &= ~BIT(LCD_RS_BIT)
- # define LCD_RS_H LCD_CLT_PORT |= BIT(LCD_RS_BIT)
- # define LCD_WR_L LCD_CLT_PORT &= ~BIT(LCD_WR_BIT)
- # define LCD_WR_H LCD_CLT_PORT |= BIT(LCD_WR_BIT)
- # define LCD_RD_L LCD_CLT_PORT &= ~BIT(LCD_RD_BIT)
- # define LCD_RD_H LCD_CLT_PORT |= BIT(LCD_RD_BIT)
- # define LCD_REST_L LCD_CLT_PORT &= ~BIT(LCD_REST_BIT)
- # define LCD_REST_H LCD_CLT_PORT |= BIT(LCD_REST_BIT)
- //8位数据口
- # define DATA_H PB0
- # define LCD_DATA_PORT PORTB
- # define LCD_DATA_DDR DDRB
- # define LCD_DATA_PIN PINB
- # define LCD_DATA_IN DDRB = 0x00
- # define LCD_DATA_OUT DDRB = 0xFF
- //读GRAM时需要一个虚晃的读(Dummy Read)
- # define DUMMY_READ() LCD_RD_L;LCD_RD_H;LCD_RD_L;LCD_RD_H;
- //片选,开始9328的某种操作前调用
- # define LCD_SELECT() LCD_CS_L
- //片选,结束9328的某项操作后调用
- # define LCD_DIS_SELECT() LCD_CS_H
- /*********************************************************************************************************
- ** Function name: LCD_Port_Init
- ** Descriptions: LCD的控制端口和数据端口的初始化
- ** input parameters: 寄存器地址regID
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- void LCD_Port_Init(void)
- {
- LCD_DATA_OUT;
- LCD_DATA_PORT = 0xFF;
- LCD_CLT_DDR = 0xFF;
- LCD_CS_H;
- LCD_RS_H;
- LCD_WR_H;
- LCD_RD_H;
- LCD_REST_H;
- }
- /*********************************************************************************************************
- ** Function name: LCD_WriteCmd
- ** Descriptions: 写寄存器命令,选择一个寄存器
- ** input parameters: 寄存器地址regID
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- ///////////////////////////////////////////////////////////////////////////////////////////////////////
- // nCS ----\__________________________________________/--------------------------- //
- // RS ------\______________________________/------------------------------------ //
- // nRD ---------------------------------------------------------------------------- //
- // nWR --------\______/----------\_____/------------------------------------------- //
- // DB[10:17] ----[寄存器高8位]-----[寄存器低8位]-------------------------------------------//
- ////////////////////////////////////////////////////////////////////////////////////////////////////////
- void LCD_WriteCmd(uint32 regID)
- {
- LCD_RS_L;
- LCD_DATA_PORT = regID>>8;
- LCD_WR_L;
- LCD_WR_H;
- LCD_DATA_PORT = regID;
- LCD_WR_L;
- LCD_WR_H;
- LCD_RS_H;
- }
- /*********************************************************************************************************
- ** Function name: LCD_WriteData
- ** Descriptions: 向LCD写数据
- ** input parameters: 待写入的数据data
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- // nCS ----\__________________________________________/-----------------------------//
- // RS -----------------------------------------------------------------------------//
- // nRD ------------------------------------------------------------------------- //
- // nWR --------\______/--------\_____/----------------------------------------- //
- // DB[10:17] -----[数据高8位]----- [数据低8位]------------------------------------------- //
- /////////////////////////////////////////////////////////////////////////////////////////////////////
- void LCD_WriteData(uint32 data)
- {
- LCD_DATA_PORT = data>>8;
- LCD_WR_L;
- LCD_WR_H;
- LCD_DATA_PORT = data;
- LCD_WR_L;
- LCD_WR_H;
- }
- /*********************************************************************************************************
- ** Function name: LCD_WriteReg
- ** Descriptions: 向一个寄存器写入数据
- ** input parameters: 寄存器地址:regID 待写入的数据regData
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- // nCS ----\_____________________________________________________________/--------//
- // RS ----\____________________________/-----------------------------------------//
- // nRD ------------------------------------------------------------------------- //
- // nWR ------\______/--------\_____/--------\______/-----\______/---------------- //
- // DB[10:17] ---[寄存器高8位]---[寄存器低8位]---[数据高8位]----[数据低8位]--------------- //
- /////////////////////////////////////////////////////////////////////////////////////////////////////
- void LCD_WriteReg(uint32 regID, uint32 regData)
- {
- LCD_RS_L;
- LCD_DATA_PORT = regID>>8;
- LCD_WR_L;
- LCD_WR_H;
- LCD_DATA_PORT = regID;
- LCD_WR_L;
- LCD_WR_H;
- LCD_RS_H;
- LCD_DATA_PORT = regData>>8;
- LCD_WR_L;
- LCD_WR_H;
- LCD_DATA_PORT = regData;
- LCD_WR_L;
- LCD_WR_H;
- }
- /*********************************************************************************************************
- ** Function name: LCD_ReadReg
- ** Descriptions: 读取指定寄存器的数据
- ** input parameters: 寄存器地址:regID
- ** output parameters: 无
- ** Returned value: 读出数据(16位)
- *********************************************************************************************************/
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- // nCS ----\_____________________________________________________________/--------//
- // RS ----\____________________________/-----------------------------------------//
- // nRD -----------------------------------\_____/------\_____/------------------ //
- // nWR ------\______/--------\_____/---------------------------------------------- //
- // DB[10:17] ---[寄存器高8位]--[寄存器低8位]--[数据高8位]--[数据低8位]--------------- //
- /////////////////////////////////////////////////////////////////////////////////////////////////////
- unsigned int LCD_ReadReg(uint32 regID)
- {
- uint32 regData;
- LCD_WriteCmd(regID);
- LCD_DATA_IN;
- LCD_RS_H;
- LCD_RD_L;
- LCD_RD_H;
- regData = LCD_DATA_PIN;
- regData = regData << 8;
- LCD_RD_L;
- LCD_RD_H;
- regData |= LCD_DATA_PIN;
- LCD_WR_L;
- LCD_WR_H;
- LCD_DATA_OUT;
- return regData;
- }
- /*********************************************************************************************************
- ** Function name: LCD_ILI9325_Init
- ** Descriptions: 9325/28内部寄存器的初始化
- ** input parameters: 无
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- void LCD_ILI9325_Init(void)
- {
- uint32 ID = 0x0000;
- LCD_Port_Init();
- LCD_REST_L; //复位
- Delay_nMS(50);
- LCD_REST_H;
- Delay_nMS(50);
- LCD_SELECT();
- ID = LCD_ReadReg(0x0000); // 读LCD的ID,这里是9328
- Uart_Transmit(ID>>8); //串口观察
- Uart_Transmit(ID);
- LCD_WriteReg(0x0001,0x0100);
- LCD_WriteReg(0x0002,0x0700);
- LCD_WriteReg(0x0003,0x1030); //转换RGB至GBR,水平扫描
- LCD_WriteReg(0x0004,0x0000);
- LCD_WriteReg(0x0008,0x0207);
- LCD_WriteReg(0x0009,0x0000);
- LCD_WriteReg(0x000A,0x0000);
- LCD_WriteReg(0x000C,0x0000);
- LCD_WriteReg(0x000D,0x0000);
- LCD_WriteReg(0x000F,0x0000);
- //power on sequence VGHVGL
- LCD_WriteReg(0x0010,0x0000);
- LCD_WriteReg(0x0011,0x0007);
- LCD_WriteReg(0x0012,0x0000);
- LCD_WriteReg(0x0013,0x0000);
- //vgh
- LCD_WriteReg(0x0010,0x1290);
- LCD_WriteReg(0x0011,0x0227);
- //vregiout
- LCD_WriteReg(0x0012,0x001d); //0x001b
- //vom amplitude
- LCD_WriteReg(0x0013,0x1500);
- //vom H
- LCD_WriteReg(0x0029,0x0018);
- LCD_WriteReg(0x002B,0x000D);
- //gamma
- LCD_WriteReg(0x0030,0x0004);
- LCD_WriteReg(0x0031,0x0307);
- LCD_WriteReg(0x0032,0x0002);// 0006
- LCD_WriteReg(0x0035,0x0206);
- LCD_WriteReg(0x0036,0x0408);
- LCD_WriteReg(0x0037,0x0507);
- LCD_WriteReg(0x0038,0x0204);//0200
- LCD_WriteReg(0x0039,0x0707);
- LCD_WriteReg(0x003C,0x0405);// 0504
- LCD_WriteReg(0x003D,0x0F02);
- //ram
- LCD_WriteReg(0x0050,0x0000);
- LCD_WriteReg(0x0051,0x00EF);
- LCD_WriteReg(0x0052,0x0000);
- LCD_WriteReg(0x0053,0x013F);
- LCD_WriteReg(0x0060,0xA700);
- LCD_WriteReg(0x0061,0x0001);
- LCD_WriteReg(0x006A,0x0000);
- //
- LCD_WriteReg(0x0080,0x0000);
- LCD_WriteReg(0x0081,0x0000);
- LCD_WriteReg(0x0082,0x0000);
- LCD_WriteReg(0x0083,0x0000);
- LCD_WriteReg(0x0084,0x0000);
- LCD_WriteReg(0x0085,0x0000);
- //
- LCD_WriteReg(0x0090,0x0010);
- LCD_WriteReg(0x0092,0x0600);
- LCD_WriteReg(0x0093,0x0003);
- LCD_WriteReg(0x0095,0x0110);
- LCD_WriteReg(0x0097,0x0000);
- LCD_WriteReg(0x0098,0x0000);
- LCD_WriteReg(0x0007,0x0133);
- LCD_DIS_SELECT();
- }
- /*********************************************************************************************************
- ** Function name: LCD_SetWindow
- ** Descriptions: 定义刷屏窗口
- ** input parameters: 起始坐标 (x0,y0),终止坐标(x1,y1)
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- static void LCD_SetWindow(unsigned int x0, unsigned int x1, unsigned int y0, unsigned int y1)
- {
- LCD_WriteReg(0x0050,x0);
- LCD_WriteReg(0x0051,x1);
- LCD_WriteReg(0x0052,y0);
- LCD_WriteReg(0x0053,y1);
- LCD_WriteReg(0x0020,x0);
- LCD_WriteReg(0x0021,y0);
- LCD_WriteCmd(0x0022); //GRAM寄存器,之后可以写GRAM缓冲区
- }
- /*******************************************************************************************************************/
- /*******************************************************************************************************************/
- /**************************************************以下为LCD的应用函数**********************************************/
- /*******************************************************************************************************************/
- /*******************************************************************************************************************/
- /*********************************************************************************************************
- ** Function name: LCD_ClearScreen
- ** Descriptions: 刷整屏为一种颜色
- ** input parameters: 颜色的RGB值color
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- void LCD_ClearScreen(unsigned int color)
- {
- unsigned int i,j;
- LCD_SELECT(); //选择9328
- LCD_SetWindow(0,240,0,320); //320x240的屏
- for (i=0;i<320;i++)
- {
- for (j=0;j<240;j++)
- {
- LCD_WriteData(color); //向GRAM写入RGB数据
- }
- }
- LCD_DIS_SELECT(); //操作完毕
- }
- /*********************************************************************************************************
- ** Function name: LCD_Fill
- ** Descriptions: 填充一个矩形区域
- ** input parameters: 矩形起始坐标----(x0,y0),矩形终点坐标--(x1,y1)
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- //
- void LCD_Fill_Rectangle(unsigned int x0,unsigned int y0,unsigned int x1,unsigned int y1,unsigned int color)
- {
- unsigned long i;
- LCD_SELECT(); //选择9328
- LCD_SetWindow(x0, x1, y0, y1);
- for(i=0; i < (x1 - x0 + 1)*(y1 - y0 + 1); i++)
- {
- LCD_WriteData(color); //填充颜色
- }
- LCD_DIS_SELECT(); //操作完毕
- }
- /*********************************************************************************************************
- ** Function name: Get_CharOffset
- ** Descriptions: 获取字节的偏移量
- ** input parameters: 输入字节
- ** output parameters: 无
- ** Returned value: 偏移量
- *********************************************************************************************************/
- unsigned char Get_CharOffset(unsigned char char_data)
- {
- if(char_data >= ' ' && char_data <= '}')
- {
- char_data -= ' '; //字符偏移从空格开始
- }
- else
- {
- char_data = ' '; //如无匹配字符以空格代替
- }
- return char_data; //返回字符所在字符表的位置
- }
- /*********************************************************************************************************
- ** Function name: Set_CharWindow
- ** Descriptions: 设置字节窗口
- ** input parameters: 每个字符8X16像素,共30行20列,lineNum----字符所在行号,rowLine----字符所在列号
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- //例如显示'2'这个字节窗口,为一个8X16的像素矩形
- // _ _ _ _ _ _ _ _ ,
- // _ _ _ _ _ _ _ _ ,
- // _ _ _ _ _ _ _ _ ,
- // _ _ X X X _ _ _ ,
- // _ X _ _ _ X _ _ , // lineNum
- // _ _ _ _ _ X _ _ ,
- // _ _ _ _ _ X _ _ ,
- // _ _ _ _ X _ _ _ ,
- //_ _ _ X _ _ _ _ ,
- // _ _ X _ _ _ _ _ ,
- // _ X _ _ _ _ _ _ ,
- // _ X X X X X _ _ ,
- // _ _ _ _ _ _ _ _ ,
- // _ _ _ _ _ _ _ _ ,
- // _ _ _ _ _ _ _ _ ,
- // _ _ _ _ _ _ _ _ ,
- void Set_CharWindow(unsigned int lineNum, unsigned int rowNum)
- {
- unsigned int x0 = 0;
- unsigned int y0 = 0;
- x0 = rowNum<<3; //起始X像素坐标
- y0 = lineNum<<4; //其实Y像素坐标
- LCD_SetWindow(x0,x0+7,y0,y0+15);
- }
- /*********************************************************************************************************
- ** Function name: LCD_WriteChar
- ** Descriptions: 向屏幕写一个字节
- ** input parameters: lineNum表示字符开始的行数,rowNum表字符开始的列数,共30X20个字符,背景色bkColor,写入的字节chChar
- 字符颜色----charColor
- 待显示的字符ch_char
- ** output parameters: 无
- ** Returned value: 无
- *********************************************************************************************************/
- void LCD_WriteChar(unsigned int lineNum,
- unsigned int rowNum,
- unsigned int charColor,
- unsigned int bkColor,
- unsigned char chChar)
- {
- unsigned char show_cnt = 0;
- unsigned char bit_cnt = 0;
- unsigned int charPos = 0; // 字符在字符表中所在的位置
- LCD_SELECT();
- charPos = Get_CharOffset(chChar); //获取字模显示的偏移量
- Set_CharWindow(lineNum, rowNum); //设置起始坐标,xy是8*16的方格坐标
- for(show_cnt = 0; show_cnt < 16; show_cnt ++)
- {
- for(bit_cnt = 0; bit_cnt < 8; bit_cnt ++)
- {
- if( Letter[charPos][show_cnt] & BIT(7 - bit_cnt) )
- {
- LCD_WriteData(charColor); //字符颜色
- }
- else
- {
- LCD_WriteData(bkColor); //背景色
- }
- }
- }
- LCD_DIS_SELECT();
- }
- /*******************************************************************************************************************
- ** Function name: LCD_WriteString
- ** Descriptions: 向屏幕写字符串
- ** input parameters: 字符起始行列(lineNum,rowLine),背景色---bkColor,字节颜色---charColor,字符串指针 p_str
- ** output parameters: 无
- ** Returned value: 无
- ********************************************************************************************************************/
- void LCD_WriteString(unsigned char lineNum, unsigned char rowNum,
- unsigned int charColor,
- unsigned int bkColor,
- unsigned char *p_str)
- {
- while(*p_str)
- {
- //计算坐标
- if(*p_str == '\n') //换行
- {
- rowNum = 0;
- lineNum++;
- p_str ++; //调过换行符,不用显示
- continue; //查询下一个字符
- }
- else //未遇到换行符则按正常显示坐标自加
- {
- LCD_WriteChar(lineNum,rowNum,charColor,bkColor,*p_str);
- rowNum++;
- if(rowNum == CHAR_X_NUM)
- {
- rowNum = 0;
- lineNum ++;
- if(lineNum == CHAR_Y_NUM)
- {
- lineNum = 0;
- }
- }
- }
- p_str ++; //字符串指针++
- }
- }
- /*********************************************************************************************************
- * End Of File *
- *********************************************************************************************************/
文件名:main.c 主函数测试
- /****************************************Copyright (c)**************************************************
- ** Southeast University
- **--------------File Info-------------------------------------------------------------------------------
- ** File Name: main.c
- ** Last modified Date: 2012-04-11
- ** Last Version: 1.0
- ** Description: 测试函数
- **------------------------------------------------------------------------------------------------------
- ** Created By: JianGe
- ** Created date: 2012-03-23
- ** Version: 1.0
- **------------------------------------------------------------------------------------------------------ */
- # include
- # include
- # include "Type.h"
- # include "Delay.h"
- # include "USART.h"
- void main(void)
- {
- unsigned char* ptr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- USART_Init();
- LCD_ILI9325_Init();
- LCD_ClearScreen(0xF800);
- LCD_Fill_Rectangle(0,0,200,200,0xF800);
- LCD_WriteChar(1,1,0xF800,0xFFFF,'1'); //显示字符
- LCD_WriteString(0,0,0xF800,0xFFFF,ptr); //显示字符串
- }
上一篇:AVR的中断问题
下一篇:AVR串口(USART)基本操作函数
推荐阅读最新更新时间:2024-03-16 14:52