من بالاخره تونستم با mmc و lcd رنگی یک عکس کوچیک نمایش بدم!
اینم لینک عکس کوچیک:
عکس
اندازه این تصویر 2x2 هستش!
اما برنامه ای که نوشتم توش چهارتا دستور کشیدن مستطیل نوشتم برای چهار تا پیکسل!
نمیتونم که یه حلقه for بزارم تا با یه دستور کشیدن مستطیل کار تموم شه!!
اگر for رو بزارم lcd هیچی نمیاره!!!
اینم برنامه:
[code=c]#include <mega32a.h>
#include <delay.h>
#include <ff.h>
#include <stdlib.h>
#define xtal 20000000
#define T1_OVF_FREQ 100
#define T1_PRESC 1024L
#define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))
//================================ LCD CONFIGURATIONS =======================================
#define PORTRAIT
#define LCD_CONTROLPORT_DDR DDRC
#define LCD_CONTROLPORT_PORT PORTC
#define LCD_CONTROLPORT_PIN PINC
#define LCD_RST_DDR DDRC
#define LCD_RST_PORT PORTC
#define LCD_RST_PIN 4
#define LCD_RS_DDR DDRC
#define LCD_RS_PORT PORTC
#define LCD_RS_PIN 1
#define LCD_CS_DDR DDRC
#define LCD_CS_PORT PORTC
#define LCD_CS_PIN 0
#define LCD_RD_DDR DDRC
#define LCD_RD_PORT PORTC
#define LCD_RD_PIN 3
#define LCD_WR_DDR DDRC
#define LCD_WR_PORT PORTC
#define LCD_WR_PIN 2
#define LCD_DATAPORT_MSB_DDR DDRD
#define LCD_DATAPORT_MSB_PORT PORTD
#define LCD_DATAPORT_MSB_PIN PIND
#define LCD_DATAPORT_LSB_DDR DDRA
#define LCD_DATAPORT_LSB_PORT PORTA
#define LCD_DATAPORT_LSB_PIN PINA
//================================================== ==============
#include <tftlcd_functions.h>
unsigned char buffer[255];
FRESULT res;
unsigned int nbytes;
FATFS drive;
FIL file;
interrupt [TIM1_OVF] void timer_comp_isr(void)
{
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
disk_timerproc();
}
char a[64];
int x,i,j;
void main(void)
{
TCCR1A=0x00;
TCCR1B=(1<<CS12)|(1<<CS10);
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
TIMSK=1<<TOIE1;
#asm("sei"
lcd_init();
r:
if ((res=f_mount(0,&drive))==FR_OK)
if ((res=f_open(&file,"0:/pic1.bmp",FA_READ))==FR_OK)
if ((res=f_read(&file,buffer,sizeof(buffer),& nbytes))!=FR_OK) goto r;
lcd_draw_rectangle(0,11,10,21,1,RGB2COL(buffer[56],buffer[55],buffer[54]));
lcd_draw_rectangle(11,11,21,21,1,RGB2COL(buffer[59],buffer[58],buffer[57]));
lcd_draw_rectangle(0,0,10,10,1,RGB2COL(buffer[64],buffer[63],buffer[62]));
lcd_draw_rectangle(11,0,21,10,1,RGB2COL(buffer[67],buffer[66],buffer[65]));
} [/code]
اینم لینک عکس کوچیک:
عکس
اندازه این تصویر 2x2 هستش!
اما برنامه ای که نوشتم توش چهارتا دستور کشیدن مستطیل نوشتم برای چهار تا پیکسل!
نمیتونم که یه حلقه for بزارم تا با یه دستور کشیدن مستطیل کار تموم شه!!
اگر for رو بزارم lcd هیچی نمیاره!!!
اینم برنامه:
[code=c]#include <mega32a.h>
#include <delay.h>
#include <ff.h>
#include <stdlib.h>
#define xtal 20000000
#define T1_OVF_FREQ 100
#define T1_PRESC 1024L
#define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))
//================================ LCD CONFIGURATIONS =======================================
#define PORTRAIT
#define LCD_CONTROLPORT_DDR DDRC
#define LCD_CONTROLPORT_PORT PORTC
#define LCD_CONTROLPORT_PIN PINC
#define LCD_RST_DDR DDRC
#define LCD_RST_PORT PORTC
#define LCD_RST_PIN 4
#define LCD_RS_DDR DDRC
#define LCD_RS_PORT PORTC
#define LCD_RS_PIN 1
#define LCD_CS_DDR DDRC
#define LCD_CS_PORT PORTC
#define LCD_CS_PIN 0
#define LCD_RD_DDR DDRC
#define LCD_RD_PORT PORTC
#define LCD_RD_PIN 3
#define LCD_WR_DDR DDRC
#define LCD_WR_PORT PORTC
#define LCD_WR_PIN 2
#define LCD_DATAPORT_MSB_DDR DDRD
#define LCD_DATAPORT_MSB_PORT PORTD
#define LCD_DATAPORT_MSB_PIN PIND
#define LCD_DATAPORT_LSB_DDR DDRA
#define LCD_DATAPORT_LSB_PORT PORTA
#define LCD_DATAPORT_LSB_PIN PINA
//================================================== ==============
#include <tftlcd_functions.h>
unsigned char buffer[255];
FRESULT res;
unsigned int nbytes;
FATFS drive;
FIL file;
interrupt [TIM1_OVF] void timer_comp_isr(void)
{
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
disk_timerproc();
}
char a[64];
int x,i,j;
void main(void)
{
TCCR1A=0x00;
TCCR1B=(1<<CS12)|(1<<CS10);
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
TIMSK=1<<TOIE1;
#asm("sei"

lcd_init();
r:
if ((res=f_mount(0,&drive))==FR_OK)
if ((res=f_open(&file,"0:/pic1.bmp",FA_READ))==FR_OK)
if ((res=f_read(&file,buffer,sizeof(buffer),& nbytes))!=FR_OK) goto r;
lcd_draw_rectangle(0,11,10,21,1,RGB2COL(buffer[56],buffer[55],buffer[54]));
lcd_draw_rectangle(11,11,21,21,1,RGB2COL(buffer[59],buffer[58],buffer[57]));
lcd_draw_rectangle(0,0,10,10,1,RGB2COL(buffer[64],buffer[63],buffer[62]));
lcd_draw_rectangle(11,0,21,10,1,RGB2COL(buffer[67],buffer[66],buffer[65]));
} [/code]
دیدگاه