📄 lcd.c
字号:
#define F_CPU 4000000UL // Extern 4 Mhz Kristal
#define lcdcommand(a) (lcdwrite((a), PORTB&0xFE)); //RS laag - commando instructie
#define lcdverzend(a) (lcdwrite((a), PORTB|0x01)); //RS hoog - schrijf instructie
#define lcdverzendslow(a) (lcdwrite((a), PORTB|0x01)); //RS hoog - verzend op lagere snelheid
#define clearlcd lcdcommand(0x01); // Maak display leeg
#include <avr/interrupt.h>
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
void lcdwrite(char a, char type)
{
PORTB = type; // RS signaal hoog of laag
PORTB |= 0x02; // maak enable hoog
PORTD = a; // wijs data aan poort d toe
_delay_us(0.5); // voor de zekerheid: Enable moet voor 500nS hoog zijn
PORTB &= 0xFD; // maak enable laag
_delay_ms(1.64); // worst case delay 1,64 ms
}
void lcd_init(void)
{
DDRB = DDRB|0x03; // Enable en RS zijn uitgangen, INT2 is ingang
DDRD = 0xFF; // 8 bit uitgangen
_delay_ms(15);
lcdcommand(0x38)
lcdcommand(0x38)
lcdcommand(0x38);
lcdcommand(0x38); //8 data bits, 2 lijnen, 5x8 Font
lcdcommand(0x0C); // Display aan, cursor uit, blink uit
lcdcommand(0x02); // Beweeg cursor naar home
lcdcommand(0x01); // maak display leeg
_delay_ms(1.64);
}
void lcdstring(char *s) // Geef woord mee als parameter
{
while(*s != '\0' ){ // zolang pointer S ongelijk is aan end of string
lcdverzend(*s); // verzend pointer s
s++; // verhoog pointer
}
}
void lcdstringslow(char *s)
{
while(*s != '\0' ){
lcdverzendslow(*s);
_delay_ms(100);
s++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -