hallo,
ich weiß nich,wo ich das hinposten sollte,deswegen tat ichs hier rein
ich bin neu hier un wollte gerne meinen code hier reinstellen, der aber leider nich so ganz funktioniert.
dieser soll auf dem LCD-Display die Uhrzeit zählen,leider zeigt dieser nur einen strich an
könnt ihr mir bitte da weiterhelfen,ich wäre sehr dankbar
ich habe einen atmel avr atmega 8 mit den dazugehörigen display
EDIT von Cassio: C-Code in den Beitrag eingefügt!
CodeBox c
ich weiß nich,wo ich das hinposten sollte,deswegen tat ichs hier rein
ich bin neu hier un wollte gerne meinen code hier reinstellen, der aber leider nich so ganz funktioniert.
dieser soll auf dem LCD-Display die Uhrzeit zählen,leider zeigt dieser nur einen strich an
könnt ihr mir bitte da weiterhelfen,ich wäre sehr dankbar
ich habe einen atmel avr atmega 8 mit den dazugehörigen display
EDIT von Cassio: C-Code in den Beitrag eingefügt!
CodeBox c
//-------------------------------------------------------------------------
// Funktion : Augabe der aktuellen Zeit über UART und LCD
//-------------------------------------------------------------------------
// Prozessor : ATmega8
// Takt : 3686400 Hz
// Sprache : C++
// Datum : 8.02.2011
// Programmer: mySmartUSB
//-------------------------------------------------------------------------
//
#define F_CPU 3686400
#include <avr\io.h>
#include <avr\interrupt.h>
#include <util\delay.h>
#include <stdio.h>
#include <string.h>
void lcd_send(char data)
{
char rs=PORTD;
rs&=4;
char tmp=data;
tmp&=0xf0;
tmp|=rs;
PORTD=tmp;
PORTD |= (1<<PD3);
PORTD &= ~(1<<PD3);
tmp=data;
tmp&=0x0f;
tmp*=16;
tmp|=rs;
PORTD=tmp;
PORTD |= (1<<PD3);
PORTD &= ~(1<<PD3);
_delay_ms(1);
}
void lcd_cmd(char cmd)
{
PORTD &= ~(1<<PD2);
lcd_send(cmd);
}
void lcd_write(char text)
{
PORTD |= (1<<PD2);
lcd_send(text);
}
void lcd_writez(char*pText)
{
while(pText[0]==0)
{
lcd_write(pText[0]);
pText++;
}
}
void lcd_home()
{
lcd_cmd(0x02);
_delay_ms(2);
}
void lcd_clear()
{
lcd_cmd(0x01);
_delay_ms(2);
}
void lcd_on()
{
lcd_cmd(0x0E);
}
void lcd_off()
{
lcd_cmd(0x08);
}
void lcd_goto(int row, int col)
{
row--;
row&=0x01;
row*=0x40;
col--;
col&=0x0f;
char tmp=row|col;
tmp|=0x80;
lcd_cmd(tmp);
}
void lcd_init()
{
DDRD=0xff;
PORTD=0;
_delay_ms(50);
PORTD = 0x30;
PORTD |= (1<<PD3);
PORTD &= ~(1<<PD3);
_delay_ms(5);
PORTD = 0x30;
PORTD |= (1<<PD3);
PORTD &= ~(1<<PD3);
_delay_us(100);
PORTD = 0x30;
PORTD |= (1<<PD3);
PORTD &= ~(1<<PD3);
_delay_ms(5);
PORTD=0x20;
PORTD |= (1<<PD3);
PORTD &= ~(1<<PD3);
_delay_ms(5);
lcd_cmd(0x28);
lcd_cmd(0x06);
lcd_on();
lcd_clear();
}
int sekunden_count;
int minuten_count;
int stunden_count;
char str1[5];
char str2[5];
char str3[5];
int main (void)
{
_delay_ms(200);
lcd_init();
sekunden_count=0;
minuten_count=0;
stunden_count=0;
while(1) //Endlose Schleife
{
_delay_ms(1000); //Funtion warten 1 Sekunde
sekunden_count++; //Sekunden Zuwachs um 1 s
}
if(sekunden_count == 60) //Wenn 1 Minute
{
sekunden_count = 0; //Sekunden auf Null
minuten_count++; //Minuten Zuwachs
if(minuten_count==60) //Wenn 1 Stunde
{
minuten_count =0; //Minuten auf Null
stunden_count++;
if(stunden_count>23) // Um Mitternacht die Uhr soll 0:00
{
stunden_count =0; //Stunden Zahler auf Null
}
}
sprintf(str1, "%d", sekunden_count);
sprintf(str2, "%d", minuten_count);
sprintf(str3, "%d", stunden_count);
lcd_writez(str3);
lcd_writez(str2);
lcd_writez(str1);
_delay_ms(100);
}
return 0;
}