.
附录
一、 源程序
#define
GLOBAL_CLK
1
#include \#include \#include \#include \#include \#include \/*
*#define LCD_W35 *
*#elif defined(LCD_W35) *
*#define LCD_WIDTH 320 宽 //在option.h文件里面有他们的定义
*#define LCD_HEIGHT *#define LCD_PIXCLOCK
240 高
4
时钟参数
*#define LCD_RIGHT_MARGIN *#define LCD_LEFT_MARGIN *#define LCD_HSYNC_LEN
0x44 右边沿 0x04 左边沿
0x01 行无效脉冲宽度
10 上边沿 4
下边沿
*#define LCD_UPPER_MARGIN *#define LCD_LOWER_MARGIN *#define LCD_VSYNC_LEN
*#define LCD_CON5 */
1 列无效脉冲宽度
((1<<11) | (1<<8) | (1<<9) | (1<<0) )
unsigned int lcd_buf[LCD_HEIGHT][LCD_WIDTH]; //24bpp,定义为(unsigned int)32
.
.
位
void delay(unsigned int times); void lcd_init(void);
void lcd_brush_background(unsigned int color);
void lcd_draw_circle(unsigned int color, unsigned int radius);
void lcd_draw_word(unsigned int x, unsigned int y, unsigned int color, const unsigned char ch[]); void lcd_draw_ascii(unsigned int x, unsigned int y, unsigned int color, const unsigned char ch[]); void lcd_put_pixel(unsigned int x, unsigned int y, unsigned int color);
int Main(void) { }
void delay(unsigned int times) { int i;
for (;times > 0; times--) }
void lcd_init(void) {
.
lcd_init();
lcd_brush_background(0xffffff);
lcd_draw_word(80, 100, 0x00ff00, *word); lcd_draw_word(80, 200, 0x00ff00, *(word + 4)); lcd_draw_ascii(130, 80, 0xff0000, *(word + 8)); lcd_draw_ascii(130, 155, 0xff0000, *(word + 10)); lcd_draw_ascii(130, 230, 0xff0000, *(word + 12)); while (1); return 0;
for (i = 0; i < 400; i++);
rGPCCON = 0xaaaa02a9; //管脚配置用于LCD
.
rGPCUP = 0xffffffff; rGPDCON = 0xaaaaaaaa; rGPDUP = 0xffffffff;
rGPGCON |= (0x3<<8); //设置GPG4为LCD_PWREN rGPGUP |= (0x1<<4); rGPGDAT |= (0x1<<4);
rLCDCON1 = (LCD_PIXCLOCK<<8) | (0x3<<5) | (0xd<<1); //设置时钟、LCD类型
为TFT、24bpp
rLCDCON2 = (LCD_UPPER_MARGIN<<24) | ((LCD_HEIGHT - 1)<<14) |
(LCD_LOWER_MARGIN<<6) | (LCD_VSYNC_LEN);
rLCDCON3 = (LCD_RIGHT_MARGIN<<19) | ((LCD_WIDTH - 1)<<8) |
(LCD_LEFT_MARGIN);
rLCDCON4 = LCD_HSYNC_LEN; rLCDCON5 = 0x0308;
rLCDSADDR1 = (((unsigned int)lcd_buf>>22)<<21) | ((0x1fffff) & ((unsigned
int)lcd_buf>>1));
rLCDSADDR2 = 0x1fffff & (((unsigned int)lcd_buf + (LCD_WIDTH * LCD_HEIGHT *
4))>>1);
rLCDSADDR3 = LCD_WIDTH * 32 / 16; rLCDINTMSK |= 0x3; rTCONSEL = 0;
rLCDCON5 = rLCDCON5 & (~(1<<3)) | (1<<3); //有效PWREN信号
rLCDCON5 = rLCDCON5 & (~(1<<5)) | (0<<5); //PWREN信号极性不翻转 }
void lcd_brush_background(unsigned int color) {
.
rLCDCON1 |= 0x1; //开启LCD
int x, y;
.
for (x = 0; x < LCD_HEIGHT; x++) { for (y = 0; y < LCD_WIDTH; y++) { lcd_buf[x][y] = color;
}
}
}
void lcd_draw_circle(unsigned int color, unsigned int radius) { unsigned int x, y;
unsigned int sqr = radius * radius;
for (x = 0; x < LCD_WIDTH; x++) { for (y = 0; y < LCD_HEIGHT; y++) {
if (((x-120)*(x-120) + (y-160)*(y-160)) <= sqr) { lcd_buf[x][y] = color;
}
}
}
}
.
//点在圆内的话就上色
嵌入式课程设计报告 - 图文



