diff options
| author | William Harrington <kb0iic@berzerkula.org> | 2019-07-27 22:16:27 -0500 | 
|---|---|---|
| committer | William Harrington <kb0iic@berzerkula.org> | 2019-07-27 22:16:27 -0500 | 
| commit | e6bffe23c87a9f6de8abdec747600f674b9cab62 (patch) | |
| tree | 1da4dc68a918f969f3354f1d70c2aa58b588fabd /lcd.c | |
| parent | 1dd364ccc6fb4447d89cbc965655b895def8e97b (diff) | |
Copy project files into repo
Diffstat (limited to 'lcd.c')
| -rwxr-xr-x | lcd.c | 110 | 
1 files changed, 110 insertions, 0 deletions
| @@ -0,0 +1,110 @@ +#include "lcd.h"
 +#include "conf.h"
 +
 +//LCD Functions Developed by electroSome
 +
 +void Lcd_Port(char a) {
 +    if (a & 1)
 +        D4 = 1;
 +    else
 +        D4 = 0;
 +
 +    if (a & 2)
 +        D5 = 1;
 +    else
 +        D5 = 0;
 +
 +    if (a & 4)
 +        D6 = 1;
 +    else
 +        D6 = 0;
 +
 +    if (a & 8)
 +        D7 = 1;
 +    else
 +        D7 = 0;
 +}
 +
 +void Lcd_Cmd(char a) {
 +    RS = 0; // => RS = 0
 +    Lcd_Port(a);
 +    EN = 1; // => E = 1
 +    __delay_ms(4);
 +    EN = 0; // => E = 0
 +}
 +
 +void Lcd_Clear() {
 +    Lcd_Cmd(0);
 +    Lcd_Cmd(1);
 +}
 +
 +void Lcd_Set_Cursor(char a, char b) {
 +    char temp, z, y;
 +    if (a == 1) {
 +        temp = 0x80 + b - 1;
 +        z = temp >> 4;
 +        y = temp & 0x0F;
 +        Lcd_Cmd(z);
 +        Lcd_Cmd(y);
 +    } else if (a == 2) {
 +        temp = 0xC0 + b - 1;
 +        z = temp >> 4;
 +        y = temp & 0x0F;
 +        Lcd_Cmd(z);
 +        Lcd_Cmd(y);
 +    }
 +}
 +
 +void Lcd_Init() {
 +    Lcd_Port(0x00);
 +    __delay_ms(20);
 +    Lcd_Cmd(0x03);
 +    __delay_ms(5);
 +    Lcd_Cmd(0x03);
 +    __delay_ms(11);
 +    Lcd_Cmd(0x03);
 +    /////////////////////////////////////////////////////
 +    Lcd_Cmd(0x02);
 +    Lcd_Cmd(0x02);
 +    Lcd_Cmd(0x08);
 +    Lcd_Cmd(0x00);
 +    Lcd_Cmd(0x0C);
 +    Lcd_Cmd(0x00);
 +    Lcd_Cmd(0x06);
 +}
 +
 +void Lcd_Write_Char(char a) {
 +    char temp, y;
 +    temp = a & 0x0F;
 +    y = a & 0xF0;
 +    RS = 1; // => RS = 1
 +    Lcd_Port(y >> 4); //Data transfer
 +    EN = 1;
 +    __delay_us(40);
 +    EN = 0;
 +    Lcd_Port(temp);
 +    EN = 1;
 +    __delay_us(40);
 +    EN = 0;
 +}
 +
 +void Lcd_Write_String(char *a) {
 +    int i;
 +    for (i = 0; a[i] != '\0'; i++)
 +        Lcd_Write_Char(a[i]);
 +}
 +
 +void Lcd_Shift_Right() {
 +    Lcd_Cmd(0x01);
 +    Lcd_Cmd(0x0C);
 +}
 +
 +void Lcd_Shift_Left() {
 +    Lcd_Cmd(0x01);
 +    Lcd_Cmd(0x08);
 +}
 +
 +// For some VFD's like Noritake
 +void Vfd_Set_Brightness(int level) {
 +    
 +}
\ No newline at end of file | 
