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 |