реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> avr и lcd, подскажите где я не так сделал
Viktor110668
сообщение Mar 19 2011, 13:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 31-03-08
Пользователь №: 36 364



пишу на cvavr вывод из переменной на дисплей а дисплей чистый и ничего некажет


#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x12; PORTD /* ÆÊÈ äèñïëåé ïîäêëþ÷èëè ê ïîðòó I/O D */
#endasm
unsigned int s = 5000;
int tmp;

void main(void)
{

lcd_init( 16 );
lcd_clear( );
lcd_gotoxy( 1,0 );

DDRB = 0x00; //ñòàâèì âñå ëàïêè ïîðòà B íà âõîä
PORTB = 0x00;

DDRD = 0xff; //ñòàâèì âñå ëàïêè ïîðòà D íà âûõîä
PORTD = 0x00;
DDRC = 0xff; //ñòàâèì âñå ëàïêè ïîðòà D íà âûõîä
PORTC = 0x00;
lcd_init(16);
delay_ms(100);
while(1) //áåñêîíå÷íûé öèêë
{
#asm("cli")
tmp = s;
#asm("sei")
if (PINB.1==0) {
(s=s++) ;
}
if (PINB.2==1) {
(s=s--);
}

if (PINB.0==0) /* "ÅÑËÈ íà ïîðò Á îáíàðóæåíî íàïðÿæåíèå"; '==' - îçíà÷àåò ñðàâíåíèå, à '=' - ïðèñâàèâàíèå çíà÷åíèÿ. Êîãäà ëàïêà ïîðòà íàçíà÷åíà íà âõîä, òî â óñëîâèè ìû óæå ïèøåì íå PORT, à PIN.*/
{
PORTC.0=1;
}
else
{
PORTC.0=0;
};
if (PINB.0==0) {
delay_ms(tmp);
PORTC.1=1;
}
else {
PORTC.1=0;
}


lcd_gotoxy( 1,1 ); /* çàïîëíÿåì ñèìâîëîì 2-óþ ñòðîêó îò 0 äî 15 */
lcd_putchar( tmp ); /* Ñèìâîë çàïîëíåííîãî çíàêîìåñòà èç òàáëèöû êîäîâ ñèìâîëîâ */
delay_ms( 50 );
} ;
}
Go to the top of the page
 
+Quote Post
Vetal-Soft
сообщение Mar 19 2011, 14:51
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 16-06-05
Пользователь №: 6 074



RTFM
В lcd_putchar( tmp ) переменная tmp должнабыть типа char и должна содержать в себе код символа в соответствии с таблицей знакогенератора вашего дисплея. Эта функция используется для вывода одного символа!

Если хотите вывести переменную на экран в читаемом виде надо использовать printf или sprintf.
Go to the top of the page
 
+Quote Post
Viktor110668
сообщение Mar 19 2011, 16:06
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 31-03-08
Пользователь №: 36 364



непойдет !!!
функция printf сразу задействует usart и в протеусе выдает кучу ошибок
Go to the top of the page
 
+Quote Post
Vetal-Soft
сообщение Mar 20 2011, 04:27
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 16-06-05
Пользователь №: 6 074



Используйте sprintf:
Код
char lcd_buffer[33];

sprintf(lcd_buffer,"%i",tmp);
lcd_puts(lcd_buffer);


ну и еще надо начать пользоваться хэлпом к вашему компилятору.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 20 2011, 11:57
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



АВР и ЛЦД...
Мартышко и очко ...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 01:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016