wanwtju 发表于 2008-7-24 16:44:31

请教高手:2.8寸屏,驱动是ili9320,16位接口,显示闪烁难忍(除了RGB)

当显示RGB组合的八种基本色时显示正常,但是当显示其他颜色是就闪烁不止,

学习AVR两个星期了,顺便在这里交一下作业,程序(以前没用过C,比较幼稚):

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_357232.jpg
(原文件名:img130.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_357233.jpg
(原文件名:img129.jpg)

#include <avr/io.h>
#include <avr/delay.h>
#include <avr/pgmspace.h>
#include<avr/pgmspace.h>

#define uchar unsigned char
#define uint unsigned int

#define nop asm("NOP")

#define CS_L PORTB&=0xfd
#define CS_H PORTB|=0x02

#define RS_L PORTB&=0xfb
#define RS_H PORTB|=0x04

#define WR_L PORTB&=0xf7
#define WR_H PORTB|=0x08

#define RD_L PORTB&=0xef
#define RD_H PORTB|=0x10

#define RESET_L PORTC&=0xfe
#define RESET_H PORTC|=0x01

#define DATA_L PORTD
#define DATA_H PORTA

void MUC_Init();
void LCD_Init();
void LCD_WR_REG(uchar index,uint val);
void LCD_WR_Start();
void LCD_WR_Data(uint val);
void LCD_WR_End();
void LCD_test();
void LCD_test2();
void num_dis(uint startX, uint startY, uchar *pic,uint color,uint bcolor);
void chr_dis(uint startX, uint startY, uchar *pic,uint color,uint bcolor);
void LCD_DrawPicture(uint startX, uint startY, uint *pic);

uint color[]={0xf800,0x07e0,0x001f,0xffe0,0x0000,0xffff,0x07ff,0xf81f};
uchar chra[] PROGMEM ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x18,0x60,0x30,0x30,
            0x30,0x30,0x00,0x30,0x01,0xF0,0x0E,0x30,0x38,0x30,0x30,0x30,0x60,0x30,0x60,0x30,
            0x60,0x32,0x30,0xF2,0x1F,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"a",0*/
                          
uchar chrn[] PROGMEM ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x78,0xF0,0x1B,0x18,0x1C,0x0C,
            0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,
            0x18,0x0C,0x18,0x0C,0x7E,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"n",1*/                  
                          
                          
uchar chrd[] PROGMEM ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x78,0x00,0x18,
            0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x07,0xD8,0x0C,0x38,0x18,0x18,
            0x18,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x10,0x18,
            0x18,0x38,0x0C,0x5E,0x07,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"d",2*/                  
                          
                          
uchar chro[] PROGMEM ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x0E,0x38,0x08,0x0C,
            0x18,0x0C,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x18,0x0C,
            0x18,0x0C,0x0C,0x18,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"o",3*/



uchar chrB[] PROGMEM ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x18,0x38,
            0x18,0x1C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x18,0x18,0x30,0x1F,0xE0,
            0x18,0x18,0x18,0x0C,0x18,0x04,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,
            0x18,0x0C,0x18,0x18,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"B",5*/

uchar chrP[] PROGMEM ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF0,0x18,0x18,
            0x18,0x0C,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x0C,0x18,0x18,
            0x1F,0xF0,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,
            0x18,0x00,0x18,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"P",6*/

uchar chrM[] PROGMEM ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x38,0x1C,
            0x38,0x1C,0x38,0x1C,0x38,0x3C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x6C,0x2E,0x4C,
            0x26,0x4C,0x26,0x4C,0x26,0x4C,0x26,0x8C,0x23,0x8C,0x23,0x8C,0x23,0x8C,0x23,0x0C,
            0x23,0x0C,0x21,0x0C,0xF9,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"M",7*/

uchar num6 PROGMEM ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,0x1F,0xFF,0x80,0x00,0x00,0x00,0x7F,0xFF,
0xE0,0x00,0x00,0x01,0xFF,0xFF,0xF0,0x00,0x00,0x03,0xFF,0xFF,0xF8,0x00,0x00,0x07,
0xFF,0xFF,0xFC,0x00,0x00,0x0F,0xFF,0xFF,0xFE,0x00,0x00,0x0F,0xFE,0x07,0xFE,0x00,
0x00,0x1F,0xF0,0x03,0xFF,0x00,0x00,0x3F,0xE0,0x01,0xFF,0x00,0x00,0x3F,0xC0,0x00,
0xFF,0x80,0x00,0x7F,0x80,0x00,0x7F,0x80,0x00,0x7F,0x80,0x00,0x7F,0x80,0x00,0xFF,
0x00,0x00,0x7F,0xC0,0x00,0xFF,0x00,0x00,0x3F,0xC0,0x00,0xFE,0x00,0x00,0x3F,0xC0,
0x01,0xFE,0x00,0x00,0x3F,0xC0,0x01,0xFE,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,
0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,0x03,0xFC,
0x00,0x00,0x00,0x00,0x03,0xFC,0x03,0xFC,0x00,0x00,0x03,0xFC,0x0F,0xFF,0x80,0x00,
0x03,0xF8,0x3F,0xFF,0xE0,0x00,0x07,0xF8,0x7F,0xFF,0xF0,0x00,0x07,0xF8,0xFF,0xFF,
0xF8,0x00,0x07,0xF9,0xFF,0xFF,0xFC,0x00,0x07,0xFB,0xFF,0xFF,0xFE,0x00,0x07,0xFB,
0xFC,0x0F,0xFF,0x00,0x07,0xFF,0xE0,0x03,0xFF,0x00,0x07,0xFF,0xC0,0x01,0xFF,0x80,
0x07,0xFF,0x80,0x01,0xFF,0x80,0x07,0xFF,0x00,0x00,0xFF,0xC0,0x07,0xFF,0x00,0x00,
0x7F,0xC0,0x07,0xFE,0x00,0x00,0x7F,0xC0,0x07,0xFE,0x00,0x00,0x7F,0xC0,0x07,0xFE,
0x00,0x00,0x7F,0xE0,0x07,0xFC,0x00,0x00,0x3F,0xE0,0x07,0xFC,0x00,0x00,0x3F,0xE0,
0x07,0xFC,0x00,0x00,0x3F,0xE0,0x07,0xFC,0x00,0x00,0x3F,0xE0,0x07,0xFC,0x00,0x00,
0x3F,0xE0,0x03,0xFC,0x00,0x00,0x3F,0xE0,0x03,0xFC,0x00,0x00,0x3F,0xE0,0x03,0xFC,
0x00,0x00,0x3F,0xE0,0x03,0xFC,0x00,0x00,0x3F,0xE0,0x03,0xFC,0x00,0x00,0x3F,0xE0,
0x03,0xFE,0x00,0x00,0x3F,0xE0,0x01,0xFE,0x00,0x00,0x3F,0xE0,0x01,0xFE,0x00,0x00,
0x7F,0xC0,0x01,0xFE,0x00,0x00,0x7F,0xC0,0x01,0xFF,0x00,0x00,0x7F,0xC0,0x00,0xFF,
0x00,0x00,0xFF,0xC0,0x00,0xFF,0x80,0x00,0xFF,0x80,0x00,0x7F,0xC0,0x01,0xFF,0x80,
0x00,0x7F,0xE0,0x03,0xFF,0x00,0x00,0x3F,0xF0,0x07,0xFF,0x00,0x00,0x3F,0xFC,0x0F,
0xFE,0x00,0x00,0x1F,0xFF,0xFF,0xFE,0x00,0x00,0x0F,0xFF,0xFF,0xFC,0x00,0x00,0x07,
0xFF,0xFF,0xF8,0x00,0x00,0x03,0xFF,0xFF,0xF0,0x00,0x00,0x00,0xFF,0xFF,0xE0,0x00,
0x00,0x00,0x7F,0xFF,0x80,0x00,0x00,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"6",0*/
                          
uchar numr PROGMEM ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFE,0x00,0x00,0x0F,0xFF,0xFF,0xFF,
0xC0,0x00,0x00,0xFF,0x00,0x1F,0xF8,0x00,0x00,0x7E,0x00,0x03,0xFC,0x00,0x00,0x7E,
0x00,0x01,0xFE,0x00,0x00,0x7E,0x00,0x00,0x7F,0x00,0x00,0x7E,0x00,0x00,0x7F,0x80,
0x00,0x7E,0x00,0x00,0x3F,0x80,0x00,0x7E,0x00,0x00,0x1F,0xC0,0x00,0x7E,0x00,0x00,
0x1F,0xC0,0x00,0x7E,0x00,0x00,0x1F,0xC0,0x00,0x7E,0x00,0x00,0x0F,0xE0,0x00,0x7E,
0x00,0x00,0x0F,0xE0,0x00,0x7E,0x00,0x00,0x0F,0xE0,0x00,0x7E,0x00,0x00,0x0F,0xE0,
0x00,0x7E,0x00,0x00,0x0F,0xE0,0x00,0x7E,0x00,0x00,0x0F,0xE0,0x00,0x7E,0x00,0x00,
0x0F,0xE0,0x00,0x7E,0x00,0x00,0x0F,0xE0,0x00,0x7E,0x00,0x00,0x0F,0xE0,0x00,0x7E,
0x00,0x00,0x0F,0xC0,0x00,0x7E,0x00,0x00,0x1F,0xC0,0x00,0x7E,0x00,0x00,0x1F,0xC0,
0x00,0x7E,0x00,0x00,0x1F,0x80,0x00,0x7E,0x00,0x00,0x3F,0x80,0x00,0x7E,0x00,0x00,
0x7F,0x00,0x00,0x7E,0x00,0x00,0xFE,0x00,0x00,0x7E,0x00,0x01,0xFC,0x00,0x00,0x7E,
0x00,0x03,0xF8,0x00,0x00,0x7E,0x00,0x1F,0xE0,0x00,0x00,0x7F,0xFF,0xFF,0xC0,0x00,
0x00,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x7E,0x01,0xFC,0x00,0x00,0x00,0x7E,0x00,0xFC,
0x00,0x00,0x00,0x7E,0x00,0xFE,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00,0x7E,
0x00,0x7E,0x00,0x00,0x00,0x7E,0x00,0x7F,0x00,0x00,0x00,0x7E,0x00,0x3F,0x00,0x00,
0x00,0x7E,0x00,0x3F,0x80,0x00,0x00,0x7E,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x1F,
0xC0,0x00,0x00,0x7E,0x00,0x1F,0xC0,0x00,0x00,0x7E,0x00,0x0F,0xC0,0x00,0x00,0x7E,
0x00,0x0F,0xE0,0x00,0x00,0x7E,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x07,0xF0,0x00,
0x00,0x7E,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x03,
0xF8,0x00,0x00,0x7E,0x00,0x01,0xF8,0x00,0x00,0x7E,0x00,0x01,0xFC,0x00,0x00,0x7E,
0x00,0x00,0xFC,0x00,0x00,0x7E,0x00,0x00,0xFC,0x00,0x00,0x7E,0x00,0x00,0xFE,0x00,
0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x7F,0x00,0x00,0x7E,0x00,0x00,
0x3F,0x00,0x00,0x7E,0x00,0x00,0x3F,0x80,0x00,0x7E,0x00,0x00,0x3F,0x80,0x00,0x7E,
0x00,0x00,0x1F,0xC0,0x00,0xFF,0x00,0x00,0x1F,0xE0,0x0F,0xFF,0xF0,0x00,0x0F,0xFE,
0x0F,0xFF,0xF0,0x00,0x0F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"R",0*/          
uchar yemin[] PROGMEM = { /* 0X00,0X10,0X88,0X00,0X66,0X00,0X01,0X1B, */
0XE7,0X71,0XC8,0X71,0XE8,0X71,0X08,0X7A,0X28,0X72,0X29,0X7A,0X29,0X7A,0X08,0X72,
0XE8,0X69,0X08,0X7A,0X29,0X72,0X09,0X72,0XE7,0X59,0X69,0X82,0X09,0X72,0X0A,0X7A,
0X2A,0X7A,0X29,0X7A,0X69,0X82,0XE8,0X71,0X28,0X72,0X49,0X7A,0X29,0X7A,0X09,0X72,
0XE7,0X71,0X08,0X72,0X29,0X7A,0X4A,0X7A,0X28,0X72,0XAA,0X82,0X49,0X82,0X49,0X7A,
0X89,0X82,0X48,0X7A,0X28,0X7A,0X69,0X7A,0X29,0X7A,0X08,0X72,0XE1,0X49,0XE0,0X29,
0X20,0X2A,0X4A,0X72,0X51,0X85,0XAD,0X74,0X87,0X63,0XAD,0X9D,0X28,0X6A,0X28,0X6A,
0XAB,0X8D,0XCD,0X9D,0X8D,0X8D,0X48,0X6A,0XEA,0X6C,0X2C,0X7D,0X2B,0X7D,0X89,0X6C,
0XA9,0X72,0X28,0X72,0X0D,0X9E,0X4F,0XA6,0XAD,0X85,0X6D,0X84,0X86,0X51,0XE8,0X71,
0XA6,0X61,0X86,0X49,0XA6,0X59,0XE9,0X69,0XC3,0X41,0XE8,0X69,0XC8,0X69,0XC7,0X61,
0XA7,0X51,0XC7,0X59,0XA8,0X59,0XE8,0X61,0XE3,0X29,0X42,0X19,0X22,0X21,0X63,0X39,
0XA6,0X51,0X65,0X32,0X24,0X2A,0XE3,0X21,0X82,0X39,0X41,0X21,0X67,0X49,0XC6,0X51,
0XC6,0X51,0X24,0X41,0X45,0X49,0X45,0X41,0X86,0X49,0X65,0X49,0XE5,0X39,0X65,0X41,
0X85,0X49,0X45,0X49,0XE0,0X31,0XA1,0X29,0XC1,0X29,0X85,0X31,0X61,0X2A,0XC0,0X32,
0XA0,0X3A,0XE0,0X2A,0X86,0X43,0X09,0X54,0X6C,0X64,0X6C,0X64,0X6A,0X64,0X8A,0X6C,
0XAC,0X6B,0X09,0X73,0XCA,0X5A,0XE3,0X18,0XE2,0X21,0XC3,0X32,0X46,0X4B,0X46,0X4B,
0X66,0X53,0X45,0X43,0XE2,0X32,0X43,0X22,0XD2,0X7C,0X56,0X95,0X56,0X95,0X56,0X95,
0X36,0X9D,0X57,0X9D,0X77,0X9D,0X56,0X95,0X36,0X95,0X04,0X22,0X16,0X95,0X36,0X95,
0X08,0X72,0X49,0X7A,0X29,0X7A,0X08,0X72,0X08,0X7A,0X29,0X7A,0X29,0X7A,0X29,0X7A,
0X08,0X72,0X49,0X7A,0X48,0X7A,0X08,0X72,0XE8,0X59,0XA9,0X8A,0X08,0X72,0X29,0X7A,
0X49,0X7A,0X69,0X82,0X6A,0X82,0X08,0X72,0X08,0X72,0X29,0X72,0X09,0X72,0X29,0X72,
0X4A,0X7A,0X6A,0X7A,0X29,0X7A,0X6A,0X82,0XE8,0X71,0X6A,0X82,0X6A,0X82,0X8A,0X82,
0XAA,0X82,0X69,0X7A,0X49,0X82,0X29,0X72,0X49,0X7A,0X49,0X7A,0X08,0X72,0X49,0X82,
0XA3,0X42,0X4A,0X72,0X4A,0X72,0X48,0X4B,0X29,0X72,0X8C,0X83,0X49,0X72,0X47,0X72,
0XAE,0X95,0XCD,0X8D,0X8C,0X8D,0X8A,0X73,0X49,0X6A,0XCD,0X74,0X2D,0X7D,0XA9,0X64,
0XA8,0X4B,0X07,0X6A,0X31,0XB6,0XC6,0X6A,0XA1,0X4A,0XE6,0X59,0X86,0X51,0X09,0X72,
0XE9,0X69,0X67,0X51,0XA8,0X59,0XC7,0X61,0XE8,0X69,0XE8,0X69,0XC8,0X61,0XA7,0X61,
0X87,0X41,0XC8,0X59,0XC8,0X61,0X07,0X62,0X29,0X62,0X41,0X11,0X25,0X39,0X66,0X51,
0XA6,0X51,0X65,0X3A,0X65,0X2A,0XE8,0X59,0X66,0X49,0XC8,0X61,0X87,0X59,0X62,0X4A,
0X03,0X31,0XE3,0X19,0X04,0X2A,0XA8,0X3A,0X8A,0X3A,0X2A,0X4A,0X86,0X49,0XE8,0X51,
0XA6,0X51,0X65,0X49,0X22,0X2A,0X41,0X32,0X63,0X2A,0XC5,0X3A,0X43,0X4B,0X00,0X3B,
0XE0,0X3A,0X85,0X43,0X09,0X54,0X8B,0X64,0XAD,0X6C,0X8B,0X64,0XEC,0X74,0X6A,0X64,
0X4A,0X5C,0XC8,0X3A,0X4C,0X5B,0XCA,0X6B,0X48,0X64,0X46,0X6C,0XE8,0X5B,0X86,0X53,
0XEA,0X63,0X88,0X63,0X49,0X53,0XA6,0X3A,0X35,0X8D,0X56,0X95,0X76,0X9D,0X76,0X9D,
0X97,0X9D,0X56,0X9D,0X56,0X9D,0X57,0X9D,0X57,0X9D,0X91,0X7C,0X14,0X85,0X36,0X95,
0X28,0X7A,0X28,0X7A,0X08,0X7A,0X28,0X7A,0X08,0X7A,0X48,0X7A,0X08,0X72,0X48,0X7A,
0X28,0X7A,0X4A,0X7A,0X49,0X7A,0X29,0X7A,0XE8,0X61,0XEA,0X8A,0X09,0X72,0X2A,0X72,
0X69,0X7A,0X69,0X82,0X0A,0X72,0X69,0X7A,0X28,0X7A,0X29,0X7A,0X49,0X7A,0X49,0X82,};                          
                          
int main ()
{
   uchar px,py;
//   _delay_loop_2 (0xffff);
//   _delay_loop_2 (0xffff);
   MUC_Init();
   LCD_Init();
   LCD_test();
//   LCD_test2();   
   chr_dis(96,200, chrn,0xf800,0xf81f);
   num_dis(0,200,num6,0xffff,0xf800);
   num_dis(48,200,numr,0x0000,0xffff);
   LCD_DrawPicture(0, 0,yemin);
   while (1);
   return 0;
}

void MUC_Init()
{
   DDRD=0xff;
   PORTD=0xff;
   DDRC=0xff;
   PORTC=0xff;
   DDRB=0xff;
   PORTB=0xff;
   DDRA=0xff;
   PORTA=0xff;
}

void LCD_Init()
{
        RESET_L;
        _delay_loop_2 (10000);
        _delay_loop_2 (10000);
        RESET_H;
    //_delay_loop_2 (10000);

        //initializing funciton 1
        LCD_WR_REG(0xe5,0x8000);
        LCD_WR_REG(0x00,0x0001);
        LCD_WR_REG(0x2b,0x0010);
        LCD_WR_REG(0x01,0x0100);
        LCD_WR_REG(0x02,0x0700);
        LCD_WR_REG(0x03,0x1230);
        LCD_WR_REG(0x04,0x0000);
        LCD_WR_REG(0x08,0x0202);
        LCD_WR_REG(0x09,0x0000);
        LCD_WR_REG(0x0a,0x0000);
        LCD_WR_REG(0x0c,0x0000);
        LCD_WR_REG(0x0d,0x0000);
        LCD_WR_REG(0x0f,0x0000);
        LCD_WR_REG(0x50,0x0000);
        LCD_WR_REG(0x51,0x00ef);
        LCD_WR_REG(0x52,0x0000);
        LCD_WR_REG(0x53,0x013f);
        LCD_WR_REG(0x60,0x2700);
        LCD_WR_REG(0x61,0x0001);
        LCD_WR_REG(0x6a,0x0000);
        LCD_WR_REG(0x80,0x0000);
        LCD_WR_REG(0x81,0x0000);
        LCD_WR_REG(0x82,0x0000);
        LCD_WR_REG(0x83,0x0000);
        LCD_WR_REG(0x84,0x0000);
        LCD_WR_REG(0x85,0x0000);
        LCD_WR_REG(0x90,0x0010);
        LCD_WR_REG(0x92,0x0000);
        LCD_WR_REG(0x93,0x0003);
        LCD_WR_REG(0x95,0x0110);
        LCD_WR_REG(0x97,0x0000);
        LCD_WR_REG(0x98,0x0000);

        //power setting function
        LCD_WR_REG(0x10,0x0000);
        LCD_WR_REG(0x11,0x0000);
        LCD_WR_REG(0x12,0x0000);
        LCD_WR_REG(0x13,0x0000);
        //_delay_loop_2 (10000);
       
        LCD_WR_REG(0x10,0x17b0);
        LCD_WR_REG(0x11,0x0004);
        //_delay_loop_2 (10000);
       
        LCD_WR_REG(0x12,0x013e);
        //_delay_loop_2 (10000);
       
        LCD_WR_REG(0x13,0x1f00);
        LCD_WR_REG(0x29,0x000f);
        _delay_loop_2 (0xffff);         //非常重要,不能少
       
        LCD_WR_REG(0x20,0x0000);
        LCD_WR_REG(0x21,0x0000);

        //initializing function 2

        LCD_WR_REG(0x30,0x0204);
        LCD_WR_REG(0x31,0x0001);
        LCD_WR_REG(0x32,0x0000);
        LCD_WR_REG(0x35,0x0206);
        LCD_WR_REG(0x36,0x0600);
        LCD_WR_REG(0x37,0x0500);
        LCD_WR_REG(0x38,0x0505);
        LCD_WR_REG(0x39,0x0407);
        LCD_WR_REG(0x3c,0x0500);
        LCD_WR_REG(0x3d,0x0503);

        //display on
        LCD_WR_REG(0x07,0x0173);
}

void LCD_WR_REG(uchar index,uint val)
{
        CS_L;
        RS_L;
       
        DATA_L=index;
        DATA_H=0;
       
        WR_L;
        //nop;
        //nop;
        WR_H;
        RS_H;
        DATA_L=(uchar)val;
        DATA_H=(uchar)(val>>8);
       
        WR_L;
        //nop;
        //nop;
        WR_H;
        CS_H;
}

void LCD_WR_Start()
{
        CS_L;
        RS_L;
       
        DATA_L = 0x22;
        DATA_H = 0x00;
        WR_L;
        nop;
        nop;
        WR_H;
        RS_H;
}

void LCD_WR_Data(uint val)
{
        DATA_L = (uchar)val;
        DATA_H = (uchar)(val>>8);
        WR_L;
        //nop;
        //nop;
        WR_H;
}

void LCD_WR_End()
{
        CS_H;
}

void LCD_test()
{
        uint temp,num,cl;
        uchar n;
       
        LCD_WR_REG(0x20,0);      //0-239
        LCD_WR_REG(0x21,0);      //0-319
       
        LCD_WR_Start();
        for(n=0;n<8;n++)
       {
          temp=color;
                for(num=40*240;num>0;num--)
                  LCD_WR_Data(temp);
       }
        LCD_WR_End();
       
/*        cl=0x0000;
        LCD_WR_REG(0x20,0);      //0-239
        LCD_WR_REG(0x21,0);      //0-319
        LCD_WR_Start();
        for(num=0;num<1320;num++)
        {
          for(temp=0;temp<240;temp++)
                {
                LCD_WR_Data(cl);
                }
                cl=cl+60;
        }
        LCD_WR_End();*/
}

void LCD_test2()
{
        uint temp,num;
        uint n;
       
        LCD_WR_REG(0x20,0);      //0-239
        LCD_WR_REG(0x21,0);      //0-319
       
        LCD_WR_Start();
        for(n=0;n<40*240;n++)
        {
    LCD_WR_Data(0xf800);
        }
        LCD_WR_End();
       
   LCD_WR_REG(0x20,100);      //0-239
   LCD_WR_REG(0x21,100);      //0-319
   LCD_WR_REG(0x50,100);      //定义好16*16方形的起始和末尾地址
   LCD_WR_REG(0x51,115);
   LCD_WR_REG(0x52,100);
   LCD_WR_REG(0x53,131);
   LCD_WR_Start();
        for(n=0;n<32*16;n++)
        {
    LCD_WR_Data(0xf800);

        }
        LCD_WR_End();
}

void num_dis(uint startX, uint startY, uchar *pic,uint color,uint bcolor)          //96*48
{
    uint n,t,k;
        uchar x,z,y;
       
    LCD_WR_REG(0x20,startX);      //0-239
    LCD_WR_REG(0x21,startY);      //0-319
        LCD_WR_REG(0x50,startX);
        LCD_WR_REG(0x51,startX+47);
        LCD_WR_REG(0x52,startY);
        LCD_WR_REG(0x53,startY+95);
        LCD_WR_Start();
    for(n=96;n>0;n--)
        {
       t=n-1;
       t=t*6;
       for(k=t;k<t+6;k++)
       {
          y=0x80;
          for(z=0;z<8;z++)
          {
          x=pgm_read_byte(pic+k)&y;
          if (x==0)
               LCD_WR_Data(bcolor);
            else
               LCD_WR_Data(color);
          y=y/2;
          }
       }
        }
        LCD_WR_End();
}

void chr_dis(uint startX, uint startY, uchar *pic,uint color,uint bcolor)          //32*16
{
    uint n,t,k;
        uchar x,z,y;
       
    LCD_WR_REG(0x20,startX);      //0-239
    LCD_WR_REG(0x21,startY);      //0-319
        LCD_WR_REG(0x50,startX);
        LCD_WR_REG(0x51,startX+15);
        LCD_WR_REG(0x52,startY);
        LCD_WR_REG(0x53,startY+31);
        LCD_WR_Start();
    for(n=32;n>0;n--)
        {
       t=n-1;
       t=t*2;
       y=0x80;
       for(z=0;z<8;z++)
       {
           x=pgm_read_byte(pic+t)&y;
           if (x==0)
                LCD_WR_Data(bcolor);
             else
                LCD_WR_Data(color);
           y=y/2;
       }
   t=t+1;
       y=0x80;
       for(z=0;z<8;z++)
       {
       x=pgm_read_byte(pic+t)&y;
       if (x==0)
                LCD_WR_Data(bcolor);
             else
                LCD_WR_Data(color);
       y=y/2;
       }
        }
   LCD_WR_End();
}





void LCD_DrawPicture(uint startX, uint startY, uint *pic)
{
        unsigned int i;
        LCD_WR_REG(0x20,startX);      //0-239
    LCD_WR_REG(0x21,startY);      //0-319
        LCD_WR_REG(0x50,startX);
        LCD_WR_REG(0x51,startX+135);
        LCD_WR_REG(0x52,startY);
        LCD_WR_REG(0x53,startY+101);
        LCD_WR_Start();
        for(i=0;i<136*10;i++)
        {
        LCD_WR_Data(pgm_read_word(pic++));
        }
    LCD_WR_End();
}

zcdyyu 发表于 2008-7-24 16:48:11

请问LZ的LCM模块型号是?能拍个后面阻容元件的图看看么?

wanwtju 发表于 2008-7-24 16:54:43

是320*240的驱动芯片是ili9320

wanwtju 发表于 2008-7-24 16:55:44

自己顶希望高手出现

wanwtju 发表于 2008-7-24 16:59:00

我现在甚至不知道闪烁是不是正常现象,希望用过的说一下,谢了。

zcdyyu 发表于 2008-7-24 17:03:28

你说的是LCD DRIVER IC的型号,我想知道的是模块是那个厂家生产的,一般后面会带有模块型号,比如说一个IC为ICL9320,模块型号是TFT8KXXXXX...闪烁不正常吧,要这样怎么卖出去...

wanwtju 发表于 2008-7-24 17:05:45

我在这个论坛学了很多东西得到了很多帮助,也希望能做点贡献,上传一个很好用的字模软件,使用“逐行+顺向”就可以用我上面写的英文数字显示函数了
点击此处下载 ourdev_357250.zip(文件大小:916K) (原文件名:20059213767.zip)

wanwtju 发表于 2008-7-24 17:08:42

to【5楼】 zcdyyu
    不好意思我用胶封上了,焊接技术不好的原因:>
好像是新盈科技的,等我知道了告诉你

aysyjgw 发表于 2008-7-24 17:47:53

顶你
我卖的2.4的也是ili9320驱动的
呵呵
广告一下
有人要的话欢迎去看看

zcdyyu 发表于 2008-7-24 18:07:20

http://shop36028206.taobao.com

ldqmoon 发表于 2008-7-24 21:06:29

9320 的IC不会出现闪烁问题. 是你的初始化有问题. 要么就是你的屏坏掉了(IC部分损坏)
重新找供应商要个初始化代码,或者自己调一下.

fugeone 发表于 2008-7-24 21:18:23

没见过这个情况啊,就是单独显示颜色的时候,屏闪烁么?你是一直在刷屏么?

kgp17738 发表于 2012-10-27 13:52:58

闪烁有很多种可能,如果TFT屏没有坏的话就是VCOM值初始化有问题。

nhztb 发表于 2012-10-27 17:25:39

按你的描述应该是VCOM的问题,调下VCOM应该能解决
页: [1]
查看完整版本: 请教高手:2.8寸屏,驱动是ili9320,16位接口,显示闪烁难忍(除了RGB)