بسم الله الرحمن الرحیم
سلام به همه دوستان خوب و ارجمند
با احترام و به خلاصه خدمت تان دوستان ارجمند عرض شود که ممکن است در برنامه و یا پروژه ای نیاز باشد یا بخواهید که صرفا اعداد یا حروف خاصی را با اندازه ای بزرگتر از اندازه معمول حروف و اعداد LCD های کاراکتری نمایش دهید . نمونه اجرا شده بر روی 4 خطی:

همانطور که همه می دانید در نمایشگر های ال سی دی چند تا محل حافظه خالی CGRAM وجود دارد که آدرس شروع آنها 64 است و در اختیار کاربر است . فارسی سازی نمایشگر هم از همین نقطه شروع می شود. ما کاراکترهایمان در محل هایی که با این آدرس 64 شروع می شود می نویسیم و بعد بقیه ماجرا...
این تجربه بر روی هر دو دسته نمایشگر دو 2خطی و 4 خطی قابل اجرا است. این برنامه برای نمایشگر های 4 خطی آماده شده است . شما می توانید برای نمایشگر 2 خطی مقادیر اضافه را حذف کنید. همچنین این برنامه بر روی نمایشگر های کاراکتری که سریال هستند نیز با موفقیت آزمایش شد. نمونه اجرا شده بر روی 2 خطی:

مقدار عددی که نمایش داده می شود در متغیر dispVal باید قرار داده شود. برای نمونه اینجا ، به ازای هر 300 میلی ثانیه یکی افزایش می دهد.
از آنجا که بنده قدرتی را که در محیط PICBasic مشاهده و تجربه کرده ام هنوز در محیط برنامه نویسی دیگری برای PIC تجربه نکردم ، فلذا این سورس کد بیسیک با بضاعت اندک و تجربه کم خودم را به حضور شما معرفی می کنم. این برنامه آنقدر ساده نوشته شده که به راحتی می توانید آن را به هر محیط دلخواهی از C ببرید. می دانم که طرفداران C خیلی زیاد هستند.
لینک منبع : http://www.picbasic.co.uk/forum/showthread.php?t=4795
سلام به همه دوستان خوب و ارجمند
با احترام و به خلاصه خدمت تان دوستان ارجمند عرض شود که ممکن است در برنامه و یا پروژه ای نیاز باشد یا بخواهید که صرفا اعداد یا حروف خاصی را با اندازه ای بزرگتر از اندازه معمول حروف و اعداد LCD های کاراکتری نمایش دهید . نمونه اجرا شده بر روی 4 خطی:
همانطور که همه می دانید در نمایشگر های ال سی دی چند تا محل حافظه خالی CGRAM وجود دارد که آدرس شروع آنها 64 است و در اختیار کاربر است . فارسی سازی نمایشگر هم از همین نقطه شروع می شود. ما کاراکترهایمان در محل هایی که با این آدرس 64 شروع می شود می نویسیم و بعد بقیه ماجرا...
این تجربه بر روی هر دو دسته نمایشگر دو 2خطی و 4 خطی قابل اجرا است. این برنامه برای نمایشگر های 4 خطی آماده شده است . شما می توانید برای نمایشگر 2 خطی مقادیر اضافه را حذف کنید. همچنین این برنامه بر روی نمایشگر های کاراکتری که سریال هستند نیز با موفقیت آزمایش شد. نمونه اجرا شده بر روی 2 خطی:
مقدار عددی که نمایش داده می شود در متغیر dispVal باید قرار داده شود. برای نمونه اینجا ، به ازای هر 300 میلی ثانیه یکی افزایش می دهد.
از آنجا که بنده قدرتی را که در محیط PICBasic مشاهده و تجربه کرده ام هنوز در محیط برنامه نویسی دیگری برای PIC تجربه نکردم ، فلذا این سورس کد بیسیک با بضاعت اندک و تجربه کم خودم را به حضور شما معرفی می کنم. این برنامه آنقدر ساده نوشته شده که به راحتی می توانید آن را به هر محیط دلخواهی از C ببرید. می دانم که طرفداران C خیلی زیاد هستند.
کد:
'****************************************************************
'* Name : BigDigits.PBP *
'* Author :ِDarrel Taylor *
'* Notice : Copyright (c) 2015 *
'* : All Rights Reserved *
'* Date : 8/26/2015 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
;Initialize your hardware first
'
ASM
__config _HS_OSC & _WDT_ON & _PWRTE_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF
ENDASM
DEFINE OSC 20
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 3 '* Reset Bit port B.3 pin4==>LCD
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 2 '* Enable Bit port B.2 pin6==>LCD
DEFINE LCD_BITS 4
DEFINE LCD_LINES 4
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
I con 254 ' Instruction prefix.
ClrLCD con 1 ' Clear-LCD instruction.
cgRAM con 64 ' Address 0 of CG RAM.
EEptr var word ' Pointer into EEPROM.
pat var EEptr ' Alias for EEptr.
dispVal var word ' Value to be displayed as big digits.
temp var byte ' Temporary byte variable.
decade var word
nbl var byte ' Index into number-pattern tables.
digit var byte ' Current digit to display
line var byte ' LCD line
LCDOUT I,ClrLCD
PAUSE 500
bitPat0 DATA 0,0,0,1,3,7,15,31 ' Left-right up-ramp shape.
bitPat1 DATA 0,0,0,16,24,28,30,31 ' Right-left " "
bitPat2 DATA 31,15,7,3,1,0,0,0 ' Left-right down ramp.
bitPat3 DATA 31,30,28,24,16,0,0,0 ' Right-left " "
bitPat4 DATA 0,0,0,0,31,31,31,31 ' Lower block.
bitPat5 DATA 31,31,31,31,0,0,0,0 ' Upper block.
bitPat6 DATA 31,31,31,31,31,31,31,31 ' Full block.
bitPat7 DATA 0,0,0,0,0,0,0,0 ' Full blank
LCDOUT I,cgRAM
for EEptr = 0 to 63 ' Write the bit patterns
Read EEptr,temp ' to the LCD.
lcdout temp
next
LCDOUT I, ClrLCD
pause 1
' ========================================================================
' Demo Loop: Show dispVal in Big Numerals, Increment, Loop
' ========================================================================
again:
gosub bigLCD
dispVal = dispVal + 1
pause 300
goto again
' ========================================================================
' Subroutine Displaying Large Numbers
' ========================================================================
bigLCD:
for line = 0 to 3
decade = 1000
lookup line,[128,192,148,212],temp
LCDOUT I, temp
for digit = 3 to 0 step -1
nbl = dispVal dig digit
gosub getPattern
if dispVal = 0 and digit = 0 then skip0
if dispVal < decade then blankIt
skip0:
LCDOUT pat.Highbyte>>4, pat.Highbyte&$0F, pat.LowByte>>4, pat.Lowbyte&$0F
goto cont
blankIt:
lcdout " "
cont:
if digit = 0 then skip1
LCDOUT 32
skip1:
decade = decade/10
next
next
return
' Subroutines Defining Big-Character Patterns
' ========================================================================
getPattern:
branch line,[first,second,third,fourth]
' 0 1 2 3 4 5 6 7 8 9
' --- --- --- --- --- --- --- --- --- ---
first:
lookup2 nbl,[$0551,$7067,$0551,$0551,$6776,$6555,$0557,$2556,$0551,$0551],pat
return
second:
lookup2 nbl,[$6776,$7767,$7743,$7743,$6776,$2441,$6041,$7703,$2443,$6776],pat
return
third:
lookup2 nbl,[$6776,$7767,$0577,$7751,$2556,$7776,$6776,$7767,$0551,$2536],pat
return
fourth:
lookup2 nbl,[$2443,$7464,$6444,$2443,$7776,$2443,$2443,$7767,$2443,$7443],pat
return
لینک منبع : http://www.picbasic.co.uk/forum/showthread.php?t=4795

