Jal V2 LCD'ye noktalı veri yazdırma sorunu çözüldü

Başlatan ensar, 29 Aralık 2013, 20:39:33

ensar

Selamün aleyküm.


indirme sayfası : http://code.google.com/p/jallib/downloads/list

son eklenen derleme : http://code.google.com/p/jallib/downloads/detail?name=jallib-pack-bee-jalv24q1-20131229.zip&can=2&q=

son ekleneni denemedim bendeki stabil sürüm 2.4q


Daha önce bende arıyordum.Format ile oluyormuş şöyle bir uygulama yazdım ve dahasıda var:



örnek kod:

include 16f877                    -- target PICmicro
pragma target clock 4_000_000     -- oscillator frequency
pragma target OSC        hs
pragma target   LVP disabled
pragma target   WDT disabled
enable_digital_io()                -- make all pins digital I/O
include format                                      ----------------  FORMAT KÜTÜPHANESİNİ EKLİYORUZ !!!
const byte LCD_ROWS    =  2           -- LCD with 2 lines
const byte LCD_CHARS   =  16          -- and 16 characters per line
--
alias     lcd_en       is pin_d2      -- data trigger
alias     lcd_rs       is pin_d3      -- command/data select.
pin_d2_direction       = output
pin_d3_direction       = output
--
alias     lcd_d4       is pin_d4
alias     lcd_d5       is pin_d5
alias     lcd_d6       is pin_d6
alias     lcd_d7       is pin_d7
--
pin_d4_direction       = output
pin_d5_direction       = output
pin_d6_direction       = output
pin_d7_direction       = output
include lcd_hd44780_4
lcd_init()
const bit ADC_HIGH_RESOLUTION = high
const byte ADC_NCHANNEL = 1
const byte ADC_NVREF = ADC_NO_EXT_VREF
include adc
adc_init()
procedure panelvoltaji is
var float voltaj
var word oku
const byte panelvolt[] ="PanelV:"
oku = adc_read (0)
_usec_delay(100)
voltaj = (oku * 0.205078125)
lcd_cursor_position(2,0)
print_string(lcd , panelvolt)
lcd_cursor_position(2,7)
format_sdword_dec(lcd,voltaj,4,1) ---------  4 Digit veri yazdıracağımızı belirtiyoruz ve 1(geriden) karakter kaydırıp noktayı konduruyoruz :) Mutlu son:)
end procedure
forever loop
panelvoltaji
end loop



Son yayımlanan sürümde örnekler çok ben burayada aktarayım.Yazdığım kod çalışmaktadır.

buda 877a için hazırlanmış örnek kodu.



   CASE counter OF
      0 : block
         -- hex byte output
         format_byte_hex(lcd, 0xEA)
         counter = counter + 1
      end block
      1 : block
         -- hex word output
         format_word_hex(lcd, 0xFD22) -- VIC20 reset vector ;-)
         counter = 10
      end block
      10 : block
         -- desimal çıktısı  ' 1.2'
         format_byte_dec(lcd, 12, 3, 1)
         counter = counter + 1
      end block
      11 : block
         -- desimal çıktısı  '0.12'
         format_byte_dec(lcd, 12, 3, 2)
         counter = counter + 1
      end block
      12 : block
         -- desimal çıktısı  ' 12'
         format_byte_dec(lcd, 12, 3, 0)
         counter = counter + 1
      end block
      13 : block
         -- desimal çıktısı  '12.0'
         format_byte_dec(lcd, 120, 3, 1)
         counter = 20
      end block
      20 : block
         -- desimal çıktısı  '-12'
         format_sbyte_dec(lcd, -12, 3, 0)
         counter = counter + 1
      end block
      21 : block
         -- desimal çıktısı  '-1.2'
         format_sbyte_dec(lcd, -12, 3, 1)
         counter = counter + 1
      end block
      22 : block
         -- desimal çıktısı  '-12'
         format_sbyte_dec(lcd, -12, 3, 2)
         counter = 30
      end block
      30 : block
         -- desimal çıktısı  ' 0.012'
         format_word_dec(lcd, 12, 6, 3)
         counter = counter + 1
      end block
      31 : block
         -- desimal çıktısı  '   1.2'
         format_word_dec(lcd, 12, 6, 1)
         counter = counter + 1
      end block
      32 : block
         -- desimal çıktısı  '   12'
         format_word_dec(lcd, 12, 6, 0)
         counter = 40
      end block
      40 : block
         -- desimal çıktısı  ' -0.012'
         format_sword_dec(lcd, -12, 6, 3)
         counter = 50  -- (no more examples in this group - you should get it by now...)
      end block
      50 : block
         -- desimal çıktısı  '23:55'
         format_time_hm(lcd, 23, 55-- 5 minutes to midnight
         counter = counter + 1
      end block
      51 : block
         -- desimal çıktısı  '23:56'
         format_time_hm_word(lcd, 23 * 60 + 56-- 4 minutes to midnight
         counter = 99
      end block
      OTHERWISE block
         lcd = "E"    lcd = "n"    lcd = "d"
         counter = 0
      end block
   END CASE



buda uygulamanın fotosu, fotoyu çamaşır makinesi ile çektim kimse kusura bakmasın :)  :


kolay gele.