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.