Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Дисплеи и индикация » Значение ШИМ в процентах на LCD дисплей


Значение ШИМ в процентах на LCD дисплей

Сообщений 1 страница 5 из 5

1

Привет. помогите пожалуйста побороть вывод значения PWM1A на дсплей в целом виде в процентах.  В данный момент делаю так:

Код:
Dim Light As Double
Dim V As Single

Pwm1a = Pwm1a + 1
If Pwm1a = 255 Then Pwm1a = 0
V = Pwm1a
Light = V
Light = Light / 255
Light = Light * 100
Light = Round(light)

Locate 2 , 11
Lcd Chr(5) ; ":" ; Light ; "%"

как видно, используются аж две вспомогательных переменных, причем большой размерности. Корректно выводить получается только так, то есть без точки. Подскажите пожалуйста, как обойтись без таких "больших типов"  двух переменных.

0

2

Я вот так когдато делал:

Dim Delay_pwm As Integer , Count As Single 

Do

Pwm1a = Delay_pwm : Count = Delay_pwm \ 2.5
Locate 2 , 1 : Lcd Fusing(count , "#.#")

If Delay_pwm > 250 Then Delay_pwm = 250
If Delay_pwm < 0 Then Delay_pwm = 0
Loop

Выводилось в процентах по 10%. Тока в отображаемом формате 0.0 последний ноль был ненужен))

0

3

Спасибо, но не совсем то... может кто еще подскажет?

0

4

'просто
Dim Light As Single
Dim V As Single
Dim Tmp As Byte
Dim Pwm1a As Word

Pwm1a = Pwm1a + 1
If Pwm1a = 255 Then Pwm1a = 0
V = Pwm1a
Light = V / 255
Light = Light * 100
Tmp=Light

Locate 2 , 11
Lcd Chr(5) ; ":" ; Tmp ; "%"

'правильно
Dim Light As Single
Dim V As Single
Dim Bufz As String * 16                 'временная строка

Pwm1a = Pwm1a + 1
If Pwm1a = 255 Then Pwm1a = 0
V = Pwm1a
Light = V / 255
Light = Light * 100
Bufz = Fusing(Light , ##.#)
Bufz = Format(Bufz , 0000)
bufz = left(bufz , 2)

Locate 2 , 11
Lcd Chr(5) ; ":" ; Bufz ; "%"

'совсем по простому
Dim Tmp As Byte
Dim Pwm1a As Word
Dim Tmw As Word

Incr Pwm1a : Pwm1a = Pwm1a And &h00ff 'инкремент и маска
Tmw = Pwm1a * 100                     'умножить на 100
Tmp = Low(Tmw)                        'делить на 256!

Lcd Chr(5) ; ":"                      'вывод заголовка

If Tmp < 10 Then                      'форматирование добавлением
   Lcd "0"                            'лидирующих нулей
End if
If Tmp < 100 Then
   Lcd "0"
End if
   Lcd Tmp

0

5

dmm, спасибо большое! :cool:

0


Вы здесь » Программирование ATMEL в BASCOM. » Дисплеи и индикация » Значение ШИМ в процентах на LCD дисплей