سلام من یه برنامه با avr و codevision نوشتم که روی lcd فارسی بنویسه و لی اگه از 9 کاراکتر بیشتر تعریف کنم به کاراکترها 9تا شیفت میده مثلا اگه بخوام کاراکتر 2 نشان بدهم کاراکتر 10 روی lcd ظاهر میشه یا اگر بخوام کاراکنر 20 را نشان بدم با دستورsprintf(w,"\12\"
;lcd_puts(w); کاراکتر 1نشان میده با عدد 2 اگه میشه یکی کمک کنه اینم برنامه
#include <mega16.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15
#endasm
#include <lcd.h>
#include<stdio.h>
// Declare your global variables here
unsigned char w[100];
flash unsigned char char0 [8] = { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,0x10 };//a
flash unsigned char char1 [8] = { 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,0x1 };
flash unsigned char char2 [8] = { 0x0, 0x0, 0x1, 0x1, 0x1F, 0x0, 0x4,0x0 };//b
flash unsigned char char3 [8] = { 0x0, 0x0, 0x0, 0x11, 0x1F, 0x0, 0x4,0x0 };//B
flash unsigned char char4 [8] = { 0x0, 0xC, 0x1, 0x1, 0x1F, 0x0, 0x0,0x0 };//t
flash unsigned char char5 [8] = { 0x0, 0x7, 0x9, 0x1, 0x1F, 0x0, 0x0,0x0 };//\h
flash unsigned char char6 [8] = { 0x0, 0x8, 0x4, 0x2, 0xE, 0x0, 0x0,0x0 };//\\d
flash unsigned char char7 [8] = { 0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x0,0x0 };//\\r
flash unsigned char char8 [8] = { 0x2, 0x0, 0x2, 0x2, 0x4, 0x8, 0x10,0x0 };//\\z
flash unsigned char char9 [8] = { 0x0, 0x0, 0x1, 0x7, 0x4, 0xA, 0x10,0x0 };//\\bar
flash unsigned char char10[8] = { 0x0, 0x0, 0x15, 0x15, 0x1F, 0x0, 0x0,0x0 };//\\s
flash unsigned char char11[8] = { 0x0, 0x0, 0x17, 0x15, 0x1F, 0x0, 0x0,0x0 };//\//\sad
flash unsigned char char12[8] = { 0x8, 0x8, 0x8, 0x8, 0xB, 0xD, 0x1F,0x0 };//\\zad
flash unsigned char char13[8] = { 0x0, 0x2, 0x0, 0x7, 0x5, 0x1F, 0x0,0x0 };//\\F
flash unsigned char char14[8] = { 0x0, 0x4, 0x0, 0xE, 0xA, 0x1F, 0x0,0x0 };//\\f
flash unsigned char char15[8] = { 0x1, 0x2, 0x4, 0x8, 0x8, 0x8, 0x18,0x0 };//\\k
flash unsigned char char16[8] = { 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1F,0x0 };//\//\l
flash unsigned char char17[8] = { 0x2, 0x2, 0x2, 0x2, 0x12, 0x12, 0x1E,0x0 };//\\L
flash unsigned char char18[8] = { 0x8, 0x8, 0x8, 0x8, 0x8, 0xF, 0x3,0x0 };//\\ma
flash unsigned char char19[8] = { 0x0, 0x1F, 0x16, 0x16, 0x10, 0x10, 0x10,0x0 };//\\m
flash unsigned char char20[8] = { 0x0, 0x0, 0x4, 0x1, 0x1, 0xF, 0x0,0x0 };//\\n
flash unsigned char char21[8] = { 0x0, 0x0, 0x15, 0x11, 0x11, 0x11, 0x1F,0x0 };//\\N
flash unsigned char char22[8] = { 0x0, 0x0, 0x1C, 0x14, 0x1C, 0x4, 0x7,0x0 };//\\h
flash unsigned char char23[8] = { 0x0, 0x0, 0x2, 0x2, 0x1F, 0x0, 0x14,0x0 };//\\i
flash unsigned char char24[8] = { 0x0, 0x0, 0x7, 0x4, 0x17, 0x11, 0x1F,0x0 };//\\I
void define_char(unsigned char flash *pc,unsigned char char_code);
void main(void)
{
lcd_init(16);
_lcd_ready();
lcd_clear();
lcd_gotoxy(0,0);
_lcd_write_data(0x28);
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
define_char(char5,5);
define_char(char6,6);
define_char(char7,7);
define_char(char8,8);
define_char(char9,9);
define_char(char10,10);
define_char(char11,11);
define_char(char12,12);
define_char(char13,13);
define_char(char14,14);
define_char(char15,15);
while (1)
{
lcd_clear();
sprintf(w,"\20"
;
lcd_puts(w);
delay_ms(300);
}
}
void define_char(unsigned char flash *pc,unsigned char char_code)
{
unsigned char i,a;
a=(char_code<<3)|0x40;
for(i=0;i<8;i++)
lcd_write_byte(a++,*pc++);
}

#include <mega16.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15
#endasm
#include <lcd.h>
#include<stdio.h>
// Declare your global variables here
unsigned char w[100];
flash unsigned char char0 [8] = { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,0x10 };//a
flash unsigned char char1 [8] = { 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,0x1 };
flash unsigned char char2 [8] = { 0x0, 0x0, 0x1, 0x1, 0x1F, 0x0, 0x4,0x0 };//b
flash unsigned char char3 [8] = { 0x0, 0x0, 0x0, 0x11, 0x1F, 0x0, 0x4,0x0 };//B
flash unsigned char char4 [8] = { 0x0, 0xC, 0x1, 0x1, 0x1F, 0x0, 0x0,0x0 };//t
flash unsigned char char5 [8] = { 0x0, 0x7, 0x9, 0x1, 0x1F, 0x0, 0x0,0x0 };//\h
flash unsigned char char6 [8] = { 0x0, 0x8, 0x4, 0x2, 0xE, 0x0, 0x0,0x0 };//\\d
flash unsigned char char7 [8] = { 0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x0,0x0 };//\\r
flash unsigned char char8 [8] = { 0x2, 0x0, 0x2, 0x2, 0x4, 0x8, 0x10,0x0 };//\\z
flash unsigned char char9 [8] = { 0x0, 0x0, 0x1, 0x7, 0x4, 0xA, 0x10,0x0 };//\\bar
flash unsigned char char10[8] = { 0x0, 0x0, 0x15, 0x15, 0x1F, 0x0, 0x0,0x0 };//\\s
flash unsigned char char11[8] = { 0x0, 0x0, 0x17, 0x15, 0x1F, 0x0, 0x0,0x0 };//\//\sad
flash unsigned char char12[8] = { 0x8, 0x8, 0x8, 0x8, 0xB, 0xD, 0x1F,0x0 };//\\zad
flash unsigned char char13[8] = { 0x0, 0x2, 0x0, 0x7, 0x5, 0x1F, 0x0,0x0 };//\\F
flash unsigned char char14[8] = { 0x0, 0x4, 0x0, 0xE, 0xA, 0x1F, 0x0,0x0 };//\\f
flash unsigned char char15[8] = { 0x1, 0x2, 0x4, 0x8, 0x8, 0x8, 0x18,0x0 };//\\k
flash unsigned char char16[8] = { 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1F,0x0 };//\//\l
flash unsigned char char17[8] = { 0x2, 0x2, 0x2, 0x2, 0x12, 0x12, 0x1E,0x0 };//\\L
flash unsigned char char18[8] = { 0x8, 0x8, 0x8, 0x8, 0x8, 0xF, 0x3,0x0 };//\\ma
flash unsigned char char19[8] = { 0x0, 0x1F, 0x16, 0x16, 0x10, 0x10, 0x10,0x0 };//\\m
flash unsigned char char20[8] = { 0x0, 0x0, 0x4, 0x1, 0x1, 0xF, 0x0,0x0 };//\\n
flash unsigned char char21[8] = { 0x0, 0x0, 0x15, 0x11, 0x11, 0x11, 0x1F,0x0 };//\\N
flash unsigned char char22[8] = { 0x0, 0x0, 0x1C, 0x14, 0x1C, 0x4, 0x7,0x0 };//\\h
flash unsigned char char23[8] = { 0x0, 0x0, 0x2, 0x2, 0x1F, 0x0, 0x14,0x0 };//\\i
flash unsigned char char24[8] = { 0x0, 0x0, 0x7, 0x4, 0x17, 0x11, 0x1F,0x0 };//\\I
void define_char(unsigned char flash *pc,unsigned char char_code);
void main(void)
{
lcd_init(16);
_lcd_ready();
lcd_clear();
lcd_gotoxy(0,0);
_lcd_write_data(0x28);
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
define_char(char5,5);
define_char(char6,6);
define_char(char7,7);
define_char(char8,8);
define_char(char9,9);
define_char(char10,10);
define_char(char11,11);
define_char(char12,12);
define_char(char13,13);
define_char(char14,14);
define_char(char15,15);
while (1)
{
lcd_clear();
sprintf(w,"\20"

lcd_puts(w);
delay_ms(300);
}
}
void define_char(unsigned char flash *pc,unsigned char char_code)
{
unsigned char i,a;
a=(char_code<<3)|0x40;
for(i=0;i<8;i++)
lcd_write_byte(a++,*pc++);
}
دیدگاه