C-LiBRARY für LCD display



  • Hi,

    ich möchte gern wissen wie ich die beiden datein in eine LIB packen kann
    ty

    lcd.h

    #ifndef __LCD
    #define __LCD
    
    void LCD_write4bit(unsigned char);	//Schreibt ein Byte hinaus(4bit Datenbus)
    void LCD_init(void);
    void LCD_reset(void);
    void LCD_out(char);					//Schreibt einen string auf das LCD
    void LCD_wait_ms(unsigned int);		//LCD_wait_ms(Zeit in ms)
    void LCD_wait_us(unsigned int);		//LCD_wait_us(Zeit in �s)
    void LCD_movexy(unsigned char,unsigned char);
    void LCD_on(void);
    void LCD_clear();
    
    #endif
    

    lcd.c

    #include <stdio.h>
    #include <string.h>
    #include "reg51xd2.H"
    #include "LCD.h"
    
    #define REG 0
    #define DAT 1
    
    //Enable
    sbit LCD_E=P1^0;
    
    //Register Select
    sbit LCD_RS=P1^1;
    
    //datenbits
    sbit LCD_D4=P1^4;
    sbit LCD_D5=P1^5;
    sbit LCD_D6=P1^6;
    sbit LCD_D7=P1^7;
    
    void LCD_clear()
    {
    	LCD_RS=REG;
    	LCD_write4bit(0x01);	//clear display
    }
    
    void LCD_out(char *text)
    {
    	LCD_RS=DAT;
    	while(*text!='\0')
    		{
    		LCD_write4bit(*text++);
    		}
    }
    
    void LCD_write4bit(unsigned char zeichen)
    {
    	LCD_E=1;	//high
    
    	LCD_D7=zeichen&0x80;	//HIGH NIBBL
    	LCD_D6=zeichen&0x40;
    	LCD_D5=zeichen&0x20;
    	LCD_D4=zeichen&0x10;
    
    	LCD_E=1;
    	LCD_E=0;
    
    	LCD_wait_us(50);
    
    	LCD_D7=zeichen&0x08;	//LOW NIBBL
    	LCD_D6=zeichen&0x04;
    	LCD_D5=zeichen&0x02;
    	LCD_D4=zeichen&0x01;
    
    	LCD_E=1;
    	LCD_E=0;
    
    	LCD_wait_us(50);		//ca.50�s
    }
    
    void LCD_init(void)
    {
    	LCD_reset();
    
    	LCD_E=0;
    	LCD_RS=REG;
    
    	LCD_D7=0;		//4bit datenbus
    	LCD_D6=0;
    	LCD_D5=1;
    	LCD_D4=0;		//DL=0--> 4bit datenbus
    
    	LCD_E=1;
    	LCD_E=0;
    
    	LCD_wait_ms(2);		//ca.2ms
    
    	LCD_write4bit(0x28);	//0010 1000 4bit d.b. ;zweizeilig; 5x7 Punkte
    
    	LCD_wait_ms(2);		//ca.2ms
    
    	LCD_write4bit(0x0c);	//0000 1100	Disply an
    
    	LCD_wait_ms(2);		//ca.2ms
    
    	LCD_write4bit(0x01);	//clear display
    
    	LCD_wait_ms(2);		//ca.2ms
    }
    
    void LCD_reset(void)
    {
    	LCD_E=0;
    	LCD_RS=REG;
    	LCD_D7=0;
    	LCD_D6=0;
    	LCD_D5=1;
    	LCD_D4=1;
    	LCD_E=1;
    	LCD_E=0;
    	LCD_wait_ms(5);
    
    	LCD_D7=0;
    	LCD_D6=0;
    	LCD_D5=1;
    	LCD_D4=1;
    	LCD_E=1;
    	LCD_E=0;
    	LCD_wait_us(100);
    
    	LCD_D7=0;
    	LCD_D6=0;
    	LCD_D5=1;
    	LCD_D4=1;
    	LCD_E=1;
    	LCD_E=0;
    	LCD_wait_ms(1);
    }
    
    void LCD_movexy(unsigned char row,unsigned char col)
    {
    	unsigned char address;
    
    	if(row==1)
    		{
    		address=0x80+col;	//1 Zeile
    		}
    	else
    		{
    		address=0xc0+col;
    		}
    
    	LCD_RS=REG;
    	LCD_write4bit(address);
    	LCD_wait_ms(1);
    }
    
    void LCD_on(void)
    {
    LCD_RS=REG;
    LCD_write4bit(0x0c);
    LCD_wait_us(50);
    }
    
    void LCD_wait_ms(unsigned int value)
    {
    unsigned int i;
    for(i=0;i<(4*value);i++)
    	{
    	LCD_wait_us(238);
    	}
    }
    void LCD_wait_us(unsigned int value)
    {
    unsigned char dummy;
    unsigned int i;
    for(i=0;i<(value/4);i++)
    	{
    	dummy++;
    	dummy++;
    	}
    }
    

    mfg
    SeBi 😃



  • noObz schrieb:

    ...

    Könntest du beim nächsten mal vor dem Posten auch darauf achten das du das richtige Forum erwischst? "C-LiBRARY" gehört wohl eindeutig in das C, nicht das C++ Forum.



  • sorry, aber hättest du da ne ahnung wie der code für ne library ausschauen muss wäre echt n1 🙂

    ty


Anmelden zum Antworten