Форум
Приветствую Вас, Гость · RSS Вторник, 24.12.2024, 03:17

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
ШИМ отображение на LCD индикаторе!
ATMELДата: Среда, 02.04.2014, 19:41 | Сообщение # 1
Группа: Front-rank users
Сообщений: 6
Недавно начал изучать программирование микроконтроллеров AVR на языке C в программе Codevisionavr  и вот пытаюсь написать  программу управление ШИМ-ом двумя кнопками,  и отображении на LCD индикаторе.
И вот что у меня получилось:


Я желаю добавить туда вот такую полоску прогресс - бар:
  

Я что то не догоняю как это реализовать в программу... wacko

вот и сам код:
Код
/*****************************************************
Project :
Version :
Date    : 31.03.2014
Author  : Alexander Victorovich
Company : Home pc
Comments:

Chip type           : ATmega16
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm

unsigned char lcd_buffer[16];
unsigned int tmp=0;

void main(void)
{

PORTA=0b00000011;
DDRA=0b00000000;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0b00000000;
DDRD=0b00100000;

TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0b10000001;
TCCR1B=0b00001100;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

MCUCR=0x00;
MCUCSR=0x00;

TIMSK=0x00;

ACSR=0x80;
SFIOR=0x00;

lcd_init(16);

while (1)
{

if (PINA.0==0&OCR1A<255) {
delay_ms(10);
OCR1A++;
tmp++;
};

if (PINA.1==0&OCR1A>0) {
delay_ms(10);
OCR1A--;
tmp--;
};

OCR1A=tmp;
#pragma rl+
sprintf(lcd_buffer, "ШИМ = %d%%\n ",tmp*100/255);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(150);

#pragma rl-

};
}
Прикрепления: 0019107.jpg (15.0 Kb) · 8215067.jpg (20.2 Kb) · 3596947.jpg (21.8 Kb)


Сообщение отредактировал ATMEL - Четверг, 03.04.2014, 11:27
 
C@atДата: Четверг, 03.04.2014, 12:25 | Сообщение # 2
Группа: Hegemoniс
Сообщений: 12345714
ATMEL, такой прогресс - бар будет очень грубо отражать настройку всего 10 ступеней, приложите проект полностью с протеусом,

Всемирное признание пУТИН ХУЙЛО http://uk.wikipedia.org/wiki/
Россия, при нынешнем президенте, источник войны и терроризма. ПРЕЗИРАЮ.
 
ATMELДата: Четверг, 03.04.2014, 13:07 | Сообщение # 3
Группа: Front-rank users
Сообщений: 6
Здравствуйте Chief!  Я выкладываю проект :
я ещё добавил сохранение в EEPROM.
Прикрепления: _PWM_Atmega16_L.rar (14.4 Kb)
 
C@atДата: Четверг, 03.04.2014, 14:28 | Сообщение # 4
Группа: Hegemoniс
Сообщений: 12345714
Цитата ATMEL ()
Я выкладываю проект :

Его ведь еще как-то и скомпилировать нужно. Полностью можно?


Всемирное признание пУТИН ХУЙЛО http://uk.wikipedia.org/wiki/
Россия, при нынешнем президенте, источник войны и терроризма. ПРЕЗИРАЮ.
 
ATMELДата: Четверг, 03.04.2014, 14:38 | Сообщение # 5
Группа: Front-rank users
Сообщений: 6
Да вот пожалуйста:
Прикрепления: bin.rar (42.4 Kb)
 
C@atДата: Четверг, 03.04.2014, 15:56 | Сообщение # 6
Группа: Hegemoniс
Сообщений: 12345714
В протеусе не очень красиво, все таки экран символьный, а не графический

Остальное в архиве.
P.S. скачайте с http://sunduk.radiokot.ru/loadfile/?load_id=1299612587&turbo=1 нормальную версию компилятора
Прикрепления: 6796599.rar (139.7 Kb) · 1245128.png (0.7 Kb)


Всемирное признание пУТИН ХУЙЛО http://uk.wikipedia.org/wiki/
Россия, при нынешнем президенте, источник войны и терроризма. ПРЕЗИРАЮ.
 
ATMELДата: Четверг, 03.04.2014, 19:00 | Сообщение # 7
Группа: Front-rank users
Сообщений: 6
Спасибо вам ОГРОМНОЕ!!!! ВСЁ РАБОТАЕТ!!!  smile вот только мерцает часто, подскажите пожалуйста где подправить?  Я пробовал ставить больше задержку -медленно опрашивает кнопки... sad

Добавлено (03.04.2014, 19:00)
---------------------------------------------
фьюзы установлены были на 8MHz , устанавливал  меньше задержку - ещё быстрее мерцает wacko Сейчас сижу и думаю чё делать...

 
C@atДата: Четверг, 03.04.2014, 21:45 | Сообщение # 8
Группа: Hegemoniс
Сообщений: 12345714
Очистку экрана случайно не раскомметировали?
Код
  //     //lcd_clear();


Всемирное признание пУТИН ХУЙЛО http://uk.wikipedia.org/wiki/
Россия, при нынешнем президенте, источник войны и терроризма. ПРЕЗИРАЮ.
 
ATMELДата: Четверг, 03.04.2014, 22:18 | Сообщение # 9
Группа: Front-rank users
Сообщений: 6
у меня записано так:
sprintf(lcd_buffer, "ШИМ = %d%%\n ",tmp*100/255);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(100);
 
C@atДата: Пятница, 04.04.2014, 09:11 | Сообщение # 10
Группа: Hegemoniс
Сообщений: 12345714
Цитата ATMEL ()
у меня записано так:
sprintf(lcd_buffer, "ШИМ = %d%%\n ",tmp*100/255);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(100);

Сделай так
Код
sprintf(lcd_buffer, "ШИМ = %d%%\n ",tmp*100/255);  

lcd_puts(lcd_buffer);  
delay_ms(100);


Всемирное признание пУТИН ХУЙЛО http://uk.wikipedia.org/wiki/
Россия, при нынешнем президенте, источник войны и терроризма. ПРЕЗИРАЮ.
 
ATMELДата: Пятница, 04.04.2014, 18:26 | Сообщение # 11
Группа: Front-rank users
Сообщений: 6
Добавлено (04.04.2014, 18:26)
---------------------------------------------
Всё очень хорошо работает!!! smile я удалил очистку дисплея, и задержку. Спасибо вам огромное за помощь. smile
Сейчас работаю над пьезо - динамиком что бы короткий сигнал издавал, при нажатии на любую из кнопок.


Сообщение отредактировал ATMEL - Пятница, 04.04.2014, 18:27
 
  • Страница 1 из 1
  • 1
Поиск:

Конструктор сайтов - uCoz
Copyright MyCorp © 2024