Search
Search titles only
By:
Search titles only
By:
Log in
Register
Search
Search titles only
By:
Search titles only
By:
Menu
Install the app
Install
Forums
New posts
All threads
Latest threads
New posts
Trending threads
Trending
Search forums
What's new
New posts
New ads
New profile posts
Latest activity
Free Ads
Latest reviews
Search ads
Members
Current visitors
New profile posts
Search profile posts
Contact us
Latest ads
Pure VPN - Up to 27 Months
vgp
Updated:
Friday at 8:10 AM
එක පැකේජ් එකයි මාසෙටම Unlimited Internet. තාමත් DATA CARD දාන්න සල්ලි වියදම් කරනවද? අඩුම මිලට අපෙන්.
sayuru bandara
Updated:
Tuesday at 12:30 PM
Ad icon
ඉන්ටර්නෙට් එකෙන් හරියටම සල්ලි හොයන්න සහ Success වෙන්න කැමතිද? 🚀 (E-Money & Success Stories)
siri sumana
Updated:
May 30, 2026
Gemini AI PRO 18 months Offer
Hawaka
Updated:
May 27, 2026
Ad icon
koko account
DasunEranga
Updated:
May 27, 2026
Electronics
Vehicles
Property
Search
Reply to thread
Forums
General
Education
Microcontroller Programming with MikroC PRO for PIC
Get the App
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Message
<blockquote data-quote="Little DJ" data-source="post: 13235499" data-attributes="member: 320663"><p><strong>Digital Door Lock with PIC18F452</strong></p><p></p><p><img src="http://1.bp.blogspot.com/-gLSzWoKjU2Y/UDDUFGvw4VI/AAAAAAAABPQ/XF_5HcZ6BeY/s320/ezon.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p>Now lets look at how to build a simple digital door lock using PIC 18F452. Here its required 16x2 LCD display to view the user instructions and other massages and also a 4x3 keypad to input unlock password. </p><p></p><p></p><p>Circuit Diagram</p><p></p><p></p><p><img src="http://3.bp.blogspot.com/-9caWMpv0A7U/UDDu261SUuI/AAAAAAAABPg/l5J2U5ZQEkA/s400/D+Lock.JPG" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p></p><p>Here unlock output simulated using a LED</p><p></p><p></p><p></p><p>MikroC Code:</p><p></p><p></p><p>unsigned short kp; </p><p>char code1[10] ,user1[4];</p><p>char msg1[20] = "Initializing......",msg2[12] = "Enter Code";</p><p>char msg3[15] = "Access Granted",msg4[15] = "Access Denied";</p><p>char msg5[15] = "Enter New Code";</p><p>int i=0,j;</p><p></p><p>// Keypad module connections</p><p>char keypadPort at PORTD;</p><p>// End Keypad module connections</p><p></p><p>// LCD module connections</p><p>sbit LCD_RS at RB2_bit;</p><p>sbit LCD_EN at RB3_bit;</p><p>sbit LCD_D4 at RB4_bit;</p><p>sbit LCD_D5 at RB5_bit;</p><p>sbit LCD_D6 at RB6_bit;</p><p>sbit LCD_D7 at RB7_bit;</p><p></p><p>sbit LCD_RS_Direction at TRISB2_bit;</p><p>sbit LCD_EN_Direction at TRISB3_bit;</p><p>sbit LCD_D4_Direction at TRISB4_bit;</p><p>sbit LCD_D5_Direction at TRISB5_bit;</p><p>sbit LCD_D6_Direction at TRISB6_bit;</p><p>sbit LCD_D7_Direction at TRISB7_bit;</p><p>// End LCD module connection</p><p></p><p>void code_enter()</p><p>{</p><p>kp = 0; // Reset key code variable</p><p>// Wait for key to be pressed and released</p><p>do</p><p>//kp = Keypad_Key_Press(); // Store key code in kp variable</p><p>kp = Keypad_Key_Click(); // Store key code in kp variable</p><p>while (!kp);</p><p>// Prepare value for output, transform key to it's ASCII value</p><p>switch (kp)</p><p> {</p><p> case 1: kp = '1'; break; // 1</p><p> case 2: kp = '2'; break; // 2</p><p> case 3: kp = '3'; break; // 3</p><p> case 5: kp = '4'; break; // 4</p><p> case 6: kp = '5'; break; // 5</p><p> case 7: kp = '6'; break; // 6</p><p> case 9: kp = '7'; break; // 7</p><p> case 10: kp = '8'; break; // 8</p><p> case 11: kp = '9'; break; // 9</p><p> case 13: kp = 42; break; // *</p><p> case 14: kp = 48; break; // 0</p><p> case 15: kp = 35; break; // #</p><p> }</p><p>code1<em> = kp;</em></p><p><em>Lcd_Chr(2, i+1, code1<em>); // Print key ASCII value on Lcd</em></em></p><p><em><em>i++;</em></em></p><p><em><em>}</em></em></p><p><em><em></em></em></p><p><em><em>void delay_20ms()</em></em></p><p><em><em>{</em></em></p><p> <em><em>delay_ms(20);</em></em></p><p><em><em>}</em></em></p><p><em><em></em></em></p><p><em><em>void code_read() //Wead data from EEPROM</em></em></p><p><em><em>{</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>user1[0] = EEPROM_Read(0x00); // Read data from address 0</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>user1[1] = EEPROM_Read(0x01); // Read data from address 2</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>user1[2] = EEPROM_Read(0x02); // Read data from address 4</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>user1[3] = EEPROM_Read(0x03); // Read data from address 8</em></em></p><p> <em><em>delay_20ms();</em></em></p><p><em><em>}</em></em></p><p><em><em></em></em></p><p><em><em>void code_write() //Write data from EEPROM</em></em></p><p><em><em>{</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>EEPROM_Write(0x00,code1[0]); // Write some data at address 00</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>EEPROM_Write(0x01,code1[1]); // Write some data at address 02</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>EEPROM_Write(0x02,code1[2]); // Write some data at address 04</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>EEPROM_Write(0x03,code1[3]); // Write some data at address 08</em></em></p><p><em><em></em></em></p><p><em><em>}</em></em></p><p><em><em></em></em></p><p><em><em></em></em></p><p><em><em>void change_code()</em></em></p><p><em><em>{</em></em></p><p> <em><em>Lcd_Cmd(_LCD_CLEAR); // Clear display</em></em></p><p> <em><em>Lcd_Out(1, 1, "Enter New Code");</em></em></p><p><em><em></em></em></p><p> <em><em>i=0;</em></em></p><p> <em><em>code_enter();</em></em></p><p> <em><em>code_enter();</em></em></p><p> <em><em>code_enter();</em></em></p><p> <em><em>code_enter();</em></em></p><p> <em><em>code_write();</em></em></p><p> <em><em>code_read();</em></em></p><p><em><em>}</em></em></p><p><em><em></em></em></p><p><em><em>void main()</em></em></p><p><em><em>{</em></em></p><p> <em><em>ADCON1 |= 0x07; // Configure AN pins as digital</em></em></p><p> <em><em>TRISA = 0x00; // set direction to be output</em></em></p><p> <em><em>PORTA.B0 =1;</em></em></p><p> <em><em>Keypad_Init(); // Initialize Keypad</em></em></p><p> <em><em>Lcd_Init(); // Initialize Lcd</em></em></p><p> <em><em>code_read();</em></em></p><p> <em><em>//If no code is stored then default is 2345</em></em></p><p> <em><em>if(user1[0] == 0xFF && user1[1] == 0xFF && user1[2] == 0xFF && user1[3] == 0xFF )</em></em></p><p> <em><em>{</em></em></p><p> <em><em>EEPROM_Write(0x00,'2'); // Write some data at address 00</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>EEPROM_Write(0x01,'3'); // Write some data at address 02</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>EEPROM_Write(0x02,'4'); // Write some data at address 04</em></em></p><p> <em><em>delay_20ms();</em></em></p><p> <em><em>EEPROM_Write(0x03,'5'); // Write some data at address 08</em></em></p><p> <em><em>}</em></em></p><p> <em><em>code_read();</em></em></p><p> <em><em>Lcd_Cmd(_LCD_CLEAR); // Clear display</em></em></p><p> <em><em>Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off</em></em></p><p> <em><em>Lcd_Out(1, 1,msg1 );</em></em></p><p> <em><em>delay_ms(500);</em></em></p><p> <em><em>Lcd_Cmd(_LCD_CLEAR); // Clear display</em></em></p><p> <em><em>do</em></em></p><p> <em><em>{</em></em></p><p><em><em> i = 0;</em></em></p><p><em><em> code_enter();</em></em></p><p><em><em> if(code1[0] == 42)</em></em></p><p><em><em> {</em></em></p><p><em><em> Lcd_Cmd(_LCD_CLEAR); // Clear display</em></em></p><p><em><em> Lcd_Out(1, 1,msg2);</em></em></p><p><em><em> //delay_ms(500);</em></em></p><p><em><em> i = 0;</em></em></p><p><em><em> code_enter();</em></em></p><p><em><em> code_enter();</em></em></p><p><em><em> code_enter();</em></em></p><p><em><em> code_enter();</em></em></p><p><em><em> code_enter();</em></em></p><p><em><em> if(code1[0] == '2' && code1[1] == '3' && code1[2] == '4' && code1[3] == '5' && code1[4] == '5') //check master code</em></em></p><p><em><em> {</em></em></p><p><em><em> code_enter();</em></em></p><p><em><em> if(code1[5] == 35)</em></em></p><p><em><em> {</em></em></p><p><em><em> change_code();</em></em></p><p><em><em> }</em></em></p><p><em><em> }</em></em></p><p><em><em> if(code1[0] == user1[0] && code1[1] == user1[1] && code1[2] == user1[2] && code1[3] == user1[3] && code1[4] == 35) //compare code with store one</em></em></p><p><em><em> {</em></em></p><p><em><em> Lcd_Cmd(_LCD_CLEAR); // Clear display</em></em></p><p><em><em> Lcd_Out(1, 1, msg3);</em></em></p><p><em><em> PORTA.B0 =0;</em></em></p><p><em><em> delay_ms(2000);</em></em></p><p><em><em> PORTA.B0 =1;</em></em></p><p><em><em> </em></em></p><p><em><em> }</em></em></p><p><em><em> else</em></em></p><p><em><em> {</em></em></p><p><em><em> Lcd_Cmd(_LCD_CLEAR);</em></em></p><p><em><em> Lcd_Out(1, 1,msg4 );</em></em></p><p><em><em> }</em></em></p><p><em><em> }</em></em></p><p> <em><em>}while(1);</em></em></p><p><em><em>}</em></em></p><p><em><em></em></em></p><p><em><em><span style="font-size: 18px"><strong><a href="http://www.electronicworkspace.com/2012/08/digital-door-lock-with-pic18f452.html" target="_blank">Source</a></strong></span></em></em></p><p><em><em></em></em></p><p><em><em>Default Password: 23455</em></em></p></blockquote><p></p>
[QUOTE="Little DJ, post: 13235499, member: 320663"] [b]Digital Door Lock with PIC18F452[/b] [IMG]http://1.bp.blogspot.com/-gLSzWoKjU2Y/UDDUFGvw4VI/AAAAAAAABPQ/XF_5HcZ6BeY/s320/ezon.jpg[/IMG] Now lets look at how to build a simple digital door lock using PIC 18F452. Here its required 16x2 LCD display to view the user instructions and other massages and also a 4x3 keypad to input unlock password. Circuit Diagram [IMG]http://3.bp.blogspot.com/-9caWMpv0A7U/UDDu261SUuI/AAAAAAAABPg/l5J2U5ZQEkA/s400/D+Lock.JPG[/IMG] Here unlock output simulated using a LED MikroC Code: unsigned short kp; char code1[10] ,user1[4]; char msg1[20] = "Initializing......",msg2[12] = "Enter Code"; char msg3[15] = "Access Granted",msg4[15] = "Access Denied"; char msg5[15] = "Enter New Code"; int i=0,j; // Keypad module connections char keypadPort at PORTD; // End Keypad module connections // LCD module connections sbit LCD_RS at RB2_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB2_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; // End LCD module connection void code_enter() { kp = 0; // Reset key code variable // Wait for key to be pressed and released do //kp = Keypad_Key_Press(); // Store key code in kp variable kp = Keypad_Key_Click(); // Store key code in kp variable while (!kp); // Prepare value for output, transform key to it's ASCII value switch (kp) { case 1: kp = '1'; break; // 1 case 2: kp = '2'; break; // 2 case 3: kp = '3'; break; // 3 case 5: kp = '4'; break; // 4 case 6: kp = '5'; break; // 5 case 7: kp = '6'; break; // 6 case 9: kp = '7'; break; // 7 case 10: kp = '8'; break; // 8 case 11: kp = '9'; break; // 9 case 13: kp = 42; break; // * case 14: kp = 48; break; // 0 case 15: kp = 35; break; // # } code1[i] = kp; Lcd_Chr(2, i+1, code1[i]); // Print key ASCII value on Lcd i++; } void delay_20ms() { delay_ms(20); } void code_read() //Wead data from EEPROM { delay_20ms(); user1[0] = EEPROM_Read(0x00); // Read data from address 0 delay_20ms(); user1[1] = EEPROM_Read(0x01); // Read data from address 2 delay_20ms(); user1[2] = EEPROM_Read(0x02); // Read data from address 4 delay_20ms(); user1[3] = EEPROM_Read(0x03); // Read data from address 8 delay_20ms(); } void code_write() //Write data from EEPROM { delay_20ms(); EEPROM_Write(0x00,code1[0]); // Write some data at address 00 delay_20ms(); EEPROM_Write(0x01,code1[1]); // Write some data at address 02 delay_20ms(); EEPROM_Write(0x02,code1[2]); // Write some data at address 04 delay_20ms(); EEPROM_Write(0x03,code1[3]); // Write some data at address 08 } void change_code() { Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Out(1, 1, "Enter New Code"); i=0; code_enter(); code_enter(); code_enter(); code_enter(); code_write(); code_read(); } void main() { ADCON1 |= 0x07; // Configure AN pins as digital TRISA = 0x00; // set direction to be output PORTA.B0 =1; Keypad_Init(); // Initialize Keypad Lcd_Init(); // Initialize Lcd code_read(); //If no code is stored then default is 2345 if(user1[0] == 0xFF && user1[1] == 0xFF && user1[2] == 0xFF && user1[3] == 0xFF ) { EEPROM_Write(0x00,'2'); // Write some data at address 00 delay_20ms(); EEPROM_Write(0x01,'3'); // Write some data at address 02 delay_20ms(); EEPROM_Write(0x02,'4'); // Write some data at address 04 delay_20ms(); EEPROM_Write(0x03,'5'); // Write some data at address 08 } code_read(); Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Out(1, 1,msg1 ); delay_ms(500); Lcd_Cmd(_LCD_CLEAR); // Clear display do { i = 0; code_enter(); if(code1[0] == 42) { Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Out(1, 1,msg2); //delay_ms(500); i = 0; code_enter(); code_enter(); code_enter(); code_enter(); code_enter(); if(code1[0] == '2' && code1[1] == '3' && code1[2] == '4' && code1[3] == '5' && code1[4] == '5') //check master code { code_enter(); if(code1[5] == 35) { change_code(); } } if(code1[0] == user1[0] && code1[1] == user1[1] && code1[2] == user1[2] && code1[3] == user1[3] && code1[4] == 35) //compare code with store one { Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Out(1, 1, msg3); PORTA.B0 =0; delay_ms(2000); PORTA.B0 =1; } else { Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1, 1,msg4 ); } } }while(1); } [SIZE="5"][B][URL="http://www.electronicworkspace.com/2012/08/digital-door-lock-with-pic18f452.html"]Source[/URL][/B][/SIZE] Default Password: 23455[/i][/i] [/QUOTE]
Insert quotes…
Verification
Dahaya deken beduwama keeyada?
Post reply
Top
Bottom