ШИМ отображение на LCD индикаторе!
|
|
ATMEL | Дата: Среда, 02.04.2014, 19:41 | Сообщение # 1 |
Группа: Front-rank users
Сообщений: 6
| Недавно начал изучать программирование микроконтроллеров AVR на языке C в программе Codevisionavr и вот пытаюсь написать программу управление ШИМ-ом двумя кнопками, и отображении на LCD индикаторе. И вот что у меня получилось:
Я желаю добавить туда вот такую полоску прогресс - бар:
Я что то не догоняю как это реализовать в программу...
вот и сам код: Код /***************************************************** 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-
}; }
Сообщение отредактировал 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.
|
|
| |
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
| Да вот пожалуйста:
|
|
| |
C@at | Дата: Четверг, 03.04.2014, 15:56 | Сообщение # 6 |
Группа: Hegemoniс
Сообщений: 12345714
| В протеусе не очень красиво, все таки экран символьный, а не графический Остальное в архиве. P.S. скачайте с http://sunduk.radiokot.ru/loadfile/?load_id=1299612587&turbo=1 нормальную версию компилятора
Всемирное признание пУТИН ХУЙЛО http://uk.wikipedia.org/wiki/ Россия, при нынешнем президенте, источник войны и терроризма. ПРЕЗИРАЮ.
|
|
| |
ATMEL | Дата: Четверг, 03.04.2014, 19:00 | Сообщение # 7 |
Группа: Front-rank users
Сообщений: 6
| Спасибо вам ОГРОМНОЕ!!!! ВСЁ РАБОТАЕТ!!! вот только мерцает часто, подскажите пожалуйста где подправить? Я пробовал ставить больше задержку -медленно опрашивает кнопки... Добавлено (03.04.2014, 19:00) --------------------------------------------- фьюзы установлены были на 8MHz , устанавливал меньше задержку - ещё быстрее мерцает Сейчас сижу и думаю чё делать...
|
|
| |
C@at | Дата: Четверг, 03.04.2014, 21:45 | Сообщение # 8 |
Группа: Hegemoniс
Сообщений: 12345714
| Очистку экрана случайно не раскомметировали?
Всемирное признание пУТИН ХУЙЛО 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) --------------------------------------------- Всё очень хорошо работает!!! я удалил очистку дисплея, и задержку. Спасибо вам огромное за помощь. Сейчас работаю над пьезо - динамиком что бы короткий сигнал издавал, при нажатии на любую из кнопок.
Сообщение отредактировал ATMEL - Пятница, 04.04.2014, 18:27 |
|
| |