vead
Full Member level 5
Hello
I want to display Alpha-numeric Numbers on screen but I am not getting number on screen
8051- keil - LCD 16*2
Please look at design and program. whats reason why Its not working?
I want to display Alpha-numeric Numbers on screen but I am not getting number on screen
8051- keil - LCD 16*2
Please look at design and program. whats reason why Its not working?
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 #include<reg51.h> #define Data_Port_Pins (P0) sbit Register_Select_Pin = P2^0; sbit Read_Write_Pin = P2^1; sbit Enable_Pin = P2^2; sbit Column_1 = P1^0; sbit Column_2 = P1^1; sbit Column_3 = P1^2; sbit column_4 = P1^3; sbit Row_1 = P1^4; sbit Row_2 = P1^5; sbit Row_3 = P1^6; sbit Row_4 = P1^7; void delay(int a) { int i; for(i=0;i<a;i++); } /* send data */ void LCD_Data (unsigned char Data) { Data_Port_Pins = Data; Register_Select_Pin=1; Read_Write_Pin=0; Enable_Pin =1; delay(150); Enable_Pin =0; delay(150); } /* Send command */ void LCD_Command (unsigned char command) { Data_Port_Pins = command; Register_Select_Pin =0; Read_Write_Pin=0; Enable_Pin =1; delay (150); Enable_Pin =0; delay(150); } void LCD_Initialization(void) { delay(15000); LCD_Command(0x30); delay(4500); LCD_Command(0x30); delay(300); LCD_Command(0x30); delay(650); LCD_Command(0x38); //function set LCD_Command(0x0c); //display on,cursor off,blink off LCD_Command(0x01); //clear display LCD_Command(0x06); //entry mode, set increment } void Return(void) //Return to 0 location on LCD { LCD_Command(0x02); delay(1500); } void Port_Initialization(void) { P0 = 0x00; //used as data port for LCD P1 = 0x00; //used for generating outputs and taking inputs from Keypad } char READ_SWITCHES(void) { Row_1 = 0; Row_2 = 1; Row_3 = 1; Row_4 = 1; //Test Row 1 if (Column_1 == 0) { delay(10000); while (Column_1==0); return '1'; } if (Column_2 == 0) { delay(10000); while (Column_2==0); return '2'; } if (Column_3 == 0) { delay(10000); while (Column_3==0); return '3'; } Row_1 = 1; Row_2 = 0; Row_3 = 1; Row_3 = 1; //Test Row B if (Column_1 == 0) { delay(10000); while (Column_1==0); return '4'; } if (Column_2 == 0) { delay(10000); while (Column_2==0); return '5'; } if (Column_3 == 0) { delay(10000); while (Column_3==0); return '6'; } Row_1 = 1; Row_2 = 1; Row_3 = 0; Row_4 = 1; //Test Row C if (Column_1 == 0) { delay(10000); while (Column_1==0); return '7'; } if (Column_2 == 0) { delay(10000); while (Column_2==0); return '8'; } if (Column_3 == 0) { delay(10000); while (Column_3==0); return '9'; } Row_1 = 1; Row_2 = 1; Row_3 = 1; Row_4 = 0; //Test Row D if (Column_1 == 0) { delay(10000); while (Column_1==0); return '*'; } if (Column_2 == 0) { delay(10000); while (Column_2==0); return '0'; } if (Column_3 == 0) { delay(10000); while (Column_3==0); return '#'; } return 'n'; // Means no key has been pressed } char get_key(void) //get key from user { char key = 'n'; //assume no key pressed while(key=='n') //wait untill a key is pressed key = READ_SWITCHES(); //scan the keys again and again return key; //when key pressed then return its value } int main(void) { char key; // key char for keeping record of pressed key Port_Initialization(); LCD_Initialization(); // Initilize LCD while(1) { key = get_key(); // Get pressed key LCD_Command(0x01); // Clear screen LCD_Data(key); // Echo the key pressed to LCD } }