AT89C51 VỚI MÀN HÌNH LCD KÈM THEO KHÓA CỬA

AT89C51 VỚI MÀN HÌNH LCD KÈM THEO KHÓA CỬA


Thẻ điều khiển L293D được sử dụng để điều khiển các bộ phận (motor, relay) với các yêu cầu điện áp cao và dòng điện. Nếu động cơ cần dòng điện lớn hơn so với bảng điều khiển có thể, các mạch dẫn động phải được sử dụng để tăng điện áp và dòng điện, nếu không bảng điều khiển có thể bị cháy.
Encrypted Door Lock Circuit Schematic
AT89C51 mã hóa-cửa-lock
L293D Thông số kỹ thuật
  • Hoạt động độc lập bên phải hoặc tay trái
  • 1 x L293D có thể điều khiển hai động cơ hai chiều
Thiết lập ma quỷ
  • Đầu tiên, chân ở giữa 4-5-12-13 chân nên được kết hợp và sử dụng làm đất.
  • Các động cơ, 3-6 và 11-14, được kết nối với chân.
  • 1-16-9 chân được cho 5 volts (có sẵn từ BASIC Stamp).
  • Chân thứ 2 và thứ 7 Động cơ thứ 1, chân thứ 10 và chân thứ 15 bắt đầu.
  • 8, điện áp được áp dụng cho động cơ được đưa ra (nó không nên được nhiều hơn 36 V)
Mã chương trình C
/ ************************************************* *********************** /
/ * Tên ứng dụng: Khóa cửa bí mật * /
/ * Tên tệp: sif_kapikilidi * /
/ * Ngày: tháng 5 năm 2006 * /
/ * Bộ xử lý đích: MCS-51 * /
/ ************************************************* *********************** /
#include <89c51rd2 .h="">
#include 

/ * Mã ký tự của ký tự Thổ Nhĩ Kỳ * /
/ * mã định nghĩa mã bảng trong bộ nhớ * /
mã const char TurkceKar [8] [8] = {
                          {143,144,144,142,129,129,158,132}, // S
                          {128, 128, 142, 144, 144, 145, 142, 132}
                          {128, 128, 143, 144, 142, 129, 158, 132}
                          {128, 128, 140, 132, 132, 132, 142, 128}
                          {138,128,145,145,145,145,145,142}, // Ü
                          {138,132,143,145,145,143,129,142}, //
                          {138,142,145,145,145,145,142,128}, // Ö
                          {132,142,132,132,132,132,142,128} // tôi
 					      };

#define KLAV P2 // Nút ấn

mã dài int password = 2402; // xóa bộ nhớ mã

số bit;
int g = 20;
int k = 10000;
/ ************************************************* ************************************************** ********
************************************************** ************************************************** ********
                             ĐỌC TỪ KEYPAD
************************************************** ************************************************** ********
************************************************** ************************************************** ******* /

unsigned char keyboardOut (void)
{// Xác định số đã nhập trên bàn phím
  unsigned char i = 0;
  unsigned char x = 0;
 / * Để gửi số không đến cột thứ nhất, thứ hai và thứ ba tương ứng
    bảng bắt buộc * /
  bảng chưa được ký [] = {0x7f, 0xbf, 0xdf};
  KLAV = 0x0F; // Tất cả các hàng 1  
  trong khi ((KLAV & 0x0F) == 0x0F); // Quay lại đầu khóa

  cho (i = 0; i & lt; 3; i ++)
  {
    KLAV = bảng [i]; // Gửi số không đến cột
    x = KLAV & 0x0F; // Bốn lần cuối để phát hiện hàng
                         // lấy bit
    switch (x)
    {
      trường hợp 7: // dòng D hoạt động (một trong số *, 0 hoặc #) 
      {
        while ((KLAV & 0x0F)! = 0x0F); // Quay lại cho đến khi nút được nhả
        if (i! = 1) // Nếu phím bấm không phải là 0 (nếu bấm # hoặc *)        
        count = 1; // Ủy quyền đếm	
        trả về 0; // Gửi số không
      }	
      break;

      trường hợp 11: // dòng C hoạt động (một trong 7, 8 hoặc 9 phím) 
      {
        while ((KLAV & 0x0F)! = 0x0F); // Quay lại cho đến khi nút được nhả
        trở về 7 + i; // (gửi 7,8 hoặc 9 theo i)
      }	
      break;

      trường hợp 13: // dòng B hoạt động (một trong 4, 5 hoặc 6 phím)
      {	
        while ((KLAV & 0x0F)! = 0x0F); // Quay lại cho đến khi nút được nhả
	 trả về 4 + i; // (gửi giá trị 4,5 hoặc 6 theo i)
      }	
      break;

      trường hợp 14: // Dòng đang hoạt động (một trong 1, 2 hoặc 3 phím) 
      {	
        while ((KLAV & 0x0F)! = 0x0F); // Quay lại cho đến khi nút được nhả
        trả về 1 + i; // (gửi 1, 2 hoặc 3 theo i)
      }	
      break;
    }	
  }
}

/ ************************************************* ************************************************** *******
************************************************** ************************************************** *******
                                     KEYPAD ĐỌC BiTTi
************************************************** ************************************************** *******
************************************************** ************************************************** ****** /

/ ************************************************* ************************************************** *******
************************************************** ************************************************** *******
                              GIỚI THIỆU HOẠT ĐỘNG HOẠT ĐỘNG SỬ DỤNG TRONG MÀN HÌNH LCD
************************************************** ************************************************** *******
************************************************** ************************************************** ****** /

#define Xóa 1 // Xóa màn hình
#define BasaDon 2 // con trỏ di chuyển đến góc trên bên trái
#define SolaYaz 4 // địa chỉ được chỉ định bởi con trỏ sẽ giảm
#define SagaYaz 6 // con trỏ chỉ định địa chỉ
#define ImlecGizle 12 // Mở chỉ báo, làm cho con trỏ hiển thị
#define ImlecYanSon 15 // Nhấp nháy con trỏ khối
#define ImlecGeri 16 // Con trỏ sao lưu một ký tự
#define SlideSaga 24 // Trượt một saga nhân vật trên màn hình                   
#define SlideSolve 28 // Trượt hiển thị một ký tự sang bên trái   
#define DisplayClose 8 // Đóng màn hình (dữ liệu sẽ không bị xóa)
#define FirstSection 128 // Địa chỉ bắt đầu dòng đầu tiên của màn hình LCD       
                          // (địa chỉ DDRAM)
#define SecondaryFirst 192 // Địa chỉ đầu tiên của hàng thứ hai
#define KarakUretAdres 64 // Đặt địa chỉ của trình tạo ký tự  
                          // (địa chỉ CGRAM)

/ * Chức năng lựa chọn trên màn hình LCD * /
#define CiftSatir8Bit 56 // giao diện 8 bit, 2 dòng, 5 * 7 pixel
#define CiftSatir4Bit 48 // giao diện 8 bit, 1 dòng, 5 * 7 pixel
#define TekSatir8Bit 40 // giao diện 4 bit, 2 dòng, 5 * 7 pixel
#define TekSatir4Bit 32 // giao diện 4 bit, 1 dòng, 5 * 7 pixel

/ * Xác định đầu vào LCD * /
#define Dữ liệu P1 // Gán cổng cho các mục Dữ liệu LCD
#define RS P0_0 // Đăng ký lựa chọn đầu vào RS = 0 lệnh, RS = 1 dữ liệu
#define RW P0_1 // Đọc / ghi đầu vào Viết RW = 0, ghi RW = 1
#define VI P0_2 // Mục ủy quyền 

/ * Chức năng trễ LCD * /
void delay (dài int chắc chắn)
{
  dài int i;
  cho (i = 1; i <= chắc chắn; i + +)
    {;}
}

/ * Chức năng chờ sẵn sàng LCD * /
void LcdHead ()
{
   Data = 0xFF; // Chuẩn bị nhận dữ liệu LCD 	  	
   RS = 0; // chế độ lệnh
   RW = 1; // Đọc trên màn hình LCD
   EN = 1; // cài đặt cạnh cắt cho phép
   Delay (200); // thời gian chờ đợi ngắn
   trong khi (Dữ liệu & 0x7F == 0x80); // kiểm tra bit bận.
}

/ * Chức năng in lệnh LCD * /
void Command (lệnh int) 
{
  lcdhaz là (); // Đợi cho đến khi màn hình LCD sẵn sàng
  RS = 0; // RS trong chế độ lệnh
  RW = 0; // Chế độ ghi RW
  WIDTH = 1; // cài đặt cạnh giảm đối với ủy quyền quy trình           
  Data = lệnh; // Chuyển thông tin lệnh tới đầu vào dữ liệu LCD
  EN = 0; // cạnh giảm cho phép được cấp
  Delay (1000); // chậm trễ
}	
/ * Chức năng in ký tự đơn trên màn hình LCD * /
void Dữ liệu (dữ liệu char, dài int nhanh)	
{
  lcdhaz là (); // Đợi cho đến khi màn hình LCD sẵn sàng
  RS = 1; // RS trong chế độ lệnh
  RW = 0; // Chế độ ghi RW
  WIDTH = 1; // xử lý cạnh nhàn rỗi để ủy quyền
  Data = dữ liệu; // Chuyển thông tin dữ liệu sang đầu vào dữ liệu LCD
  EN = 0; // cạnh giảm cho phép được cấp
  Chậm trễ (vận tốc); // Thời gian giữa hiển thị các ký tự trên màn hình
}

/ * Chuỗi ký tự LCD (Chuỗi) Chức năng in * /
void DataDizi (dữ liệu char [], dài int nhanh)	
{
  int i = 0;
  while (dữ liệu [i]! = 0)
  {
    lcdhaz là (); // Đợi cho đến khi màn hình LCD sẵn sàng
    RS = 1; // RS trong chế độ lệnh
    RW = 0; // Chế độ ghi RW
    WIDTH = 1; // xử lý cạnh nhàn rỗi để ủy quyền
    Data = dữ liệu [i]; // Chuyển thông tin dữ liệu sang đầu vào dữ liệu LCD
    EN = 0; // cạnh giảm cho phép được cấp
    i ++; // tăng mảng bằng 1 để nhận bit dữ liệu tiếp theo
    Chậm trễ (vận tốc); // thời gian giữa các ký tự xuất hiện
  }
}
/ * Chức năng tạo cài đặt ban đầu cho LCD * /
void LcdAc (void)            
{ 	
  Command (ımlecgizl A);
  Command (ciftsatir8bit);
  Command (sagayaz);
}

/ ************************************************* ************************************************** ******
************************************************** ************************************************** ******
                           GIỚI THIỆU CÁC LỆNH SỬ DỤNG TRONG HÌNH LCD BiTTi
************************************************** ************************************************** ******
************************************************** ************************************************** ***** /

/ ************************************************* ************************************************** *******
************************************************** ************************************************** *******
                                     ỨNG DỤNG LCD METIN
************************************************** ************************************************** *******
************************************************** ************************************************** ****** /

/ * Chức năng Shift chỉ trên dòng * /
void UstSatirSagaKay (char kayan_yazi [], long int kayma_hizi)
{
  int i;
  Command (Delete);
  Command (birincisat là + 16);
  VeriDizi (kayan_yazi, 100); // Nhập văn bản để cuộn
  cho (i = 0; i & lt; 40; i ++)
  {
    Command (kaydirsag A); // Di chuyển màn hình một ký tự sang bên phải
    Chậm trễ (kayma_hiz a);
  }
}

/ * Chỉ chức năng phía trên bên trái Shift * /
void UstSatirSolaKay (char kayan_yazi [], long int kayma_hizi)
{
  int i;
  Command (Delete);
  Command (birincisat là + 16);
  VeriDizi (kayan_yazi, 100); // Nhập văn bản để cuộn
  cho (i = 0; i & lt; 40; i ++)
  {
    Command (kaydirsol A); // Di chuyển màn hình một ký tự sang bên trái
    Chậm trễ (kayma_hiz a);
  }
}
/ * Chỉ chức năng Shift bên phải dòng phụ * /
void AltSatirSagaKay (char kayan_yazi [], long int kayma_hizi)
{
  int i;
  Command (Delete);
  Command (ıkincisat là + 16);
  VeriDizi (kayan_yazi, 100); // Nhập văn bản để cuộn
  cho (i = 0; i & lt; 40; i ++)
  {
    Command (kaydirsag A); // Di chuyển màn hình một ký tự sang bên phải
    Chậm trễ (kayma_hiz a);
  }
}
/ * Chương trình con Chỉ có chức năng Shift trái * /
void SubSatShortKay (char slat_yazi [], dài int slat_hizi)
{
  int i;
  Command (Delete);
  Command (ıkincisat là + 16);
  VeriDizi (kayan_yazi, 100); // Nhập văn bản để cuộn
  cho (i = 0; i & lt; 40; i ++)
  {
    Command (kaydirsol A); // Di chuyển màn hình một ký tự sang bên trái
    Chậm trễ (kayma_hiz a);
  }
}
/ * Cả hai dòng chức năng Shift tương tự và phải * /
void TumSatirlarSagaKay (char ust_satir [], char alt_satir [], long int kayma_hizi)
{
  int i;
  Command (Delete);
  Command (birincisat là + 16);
  DataDisplay (ust_satir, 100); // Nhập văn bản hàng trên cùng để cuộn
  Command (ıkincisat là + 16);
  veridiana của (alt_sat +, 100); // Nhập văn bản dòng dưới cùng để cuộn
  cho (i = 0; i & lt; 40; i ++)
  {
    Command (kaydirsag A);
    Chậm trễ (kayma_hiz a);
  }
}
/ * Cả hai dòng chức năng tương tự và trái Shift * /
void TumSatirlarSolaKay (char ust_satir [], char alt_satir [], long int kayma_hizi)
{
  int i;
  Command (Delete);
  Command (birincisat là + 16);
  DataDisplay (ust_satir, 100); // Nhập văn bản dòng trên cùng để được dịch chuyển
  Command (ıkincisat là + 16);
  veridiana của (alt_sat +, 100); // Nhập văn bản dòng dưới cùng để cuộn
  cho (i = 0; i & lt; 40; i ++)
  {
    Command (kaydirsol A);
    Chậm trễ (kayma_hiz a);
  }
}
/ * Chức năng nhân vật đặc biệt Giới thiệu màn hình LCD * / 
void ozelKarTanit (void) 
{
  int x, y;
  Command (karakuretadres); // Địa chỉ CGRAM
  Command (karakuretadres); // Địa chỉ CGRAM
  Command (karakuretadres); // Địa chỉ CGRAM = 0 = 0 = 0 = 0
  cho (x = 0; x & lt; 8; x ++) 
  {
    cho (y = 0; y <8 font="" y="">
    {
      Dữ liệu (ngôn ngữ Turkic là [x] [y], 10);
    }
  }
   Command (birincisat); // Địa chỉ DDRAM = 0	

}

void encrypted () ngắt 0
{

/ ************************************************* ************************************************** *********
************************************************** ************************************************** *********
                               MỞ HÌNH DẠNG
************************************************** ************************************************** *********
************************************************** ************************************************** ******** /

int m = 0;
int f = 0;
int, bin, khuôn mặt, chúng, là một;
long int input_say;
int bắt đầu;
int sayac;

	Command (Delete); 
    VeriDizi ("HOSGELDINIZ", g); // Ghi vào màn hình LCD
	Chậm trễ (k);
	Command (Delete);
	DataDizi ("LUTFEN DOOR", g); // In phông chữ LCD
	Command (ıkincisat); // Công tắc dòng thứ hai của LCD
	DataDizi (& quot; ACMAK iCiN & quot;, g); 
	Chậm trễ (k);
	Command (Delete);
	VeriDizi ("YÊU CẦU", g);  
	Command (ıkincisat);
	VeriDizi ("4 HANELI", g);   
	Chậm trễ (k);
	Command (Delete);	
	VeriDizi (& quot; SiFREYi GiRiNiZ & quot;, g);
	Chậm trễ (k);
	Command (Delete);

    counter = 0; start = 1; // chỉ định số chữ số được yêu cầu cho một số
                            // bắt đầu nhập mật khẩu

	trong khi (bắt đầu)
	{   

	    // Nhập khóa trên bàn phím
		klavyeok ngàn = (); // Đọc hàng ngàn chữ số từ bàn phím
		DataDizi ("*", g);
		klavyeok khuôn mặt = (); // đọc hàng trăm chữ số từ bàn phím
		veridiana (the "*", g);
		klavyeok trong số họ = (); // đọc khóa tại bàn phím
		veridiana (the "*", g);
		= Klavyeok của một on (); // đọc phím trên bàn phím
		veridiana (the "*", g);
		Command (Delete);
		girilen_sa a = (1000 * ngàn) + (100 * khuôn mặt) + (10 * chúng) + một trên; // nhận số lượng
        // Đã nhập mật khẩu

		VeriDizi ("LUTFEN", g); // In phông chữ LCD
		Command (ıkincisat);
		DataDizi ("WAITING", g);   
		Chậm trễ (k);
		Command (Delete);  
    	VeriDizi (& quot; KIỂM SOÁT SiFRENIZ & quot;, g);   
	    Command (ıkincisat);
   	    VeriDizi (& quot; EDILYOR & quot;, g);   
		Chậm trễ (k);
		Delay (5000); // Cung cấp độ trễ
   	    Command (Delete);	
		truy cập ++;

		if (password == input_server) // kiểm tra số đã nhập
			{
			start = 0; // bắt đầu thoát khỏi chu kỳ mở cửa nếu mật khẩu chính xác
			f = 1; // Cung cấp không vào cửa mà không cần nhập mật khẩu chính xác
			m = 1; // để mở cửa và nhập phân vùng tương ứng    
			DataDizi (& quot; DOGRU SiFRE & quot;, g);
			Command (ıkincisat);
			VeriDizi ("CỬA GATE", g);
			Chậm trễ (k);
			P3_0 = P3_0!; // Động cơ mở cửa bằng chân 1
			Chậm trễ (10000);
			P3_0 = P3_0!; // động cơ dừng lại
			Chậm trễ (100.000);
			Command (Delete);
			}
	        khác
 		        if (counter <= 3) // Cho phép người dùng nhập mật khẩu chính xác cho một bộ đếm cụ thể {DATADIZI ("ONLY SiFRE", g); Command (ıkincisat); VeriDizi ("RETURN EXPERIENCE", g); Chậm trễ (k); Command (Delete); } if (counter> = 4) // Cho phép người dùng nhập mật khẩu chính xác
			{
			start = 0; // ngăn không cho nhập hơn bốn mật khẩu
			Command (Delete);
    		DataDizi (& quot; SiFREY & quot;, g);
			Command (ıkincisat);
   		    VeriDizi (& quot; BiLMiYORSUNUZ & quot;, g);
			Chậm trễ (k);
		    Command (Delete);
    		VeriDizi (& quot; iCERI & quot;, g);
		    Command (ıkincisat);
    		VeriDizi (& quot; GiREMEZSiNiZ & quot;, g);
			Chậm trễ (k);
    		Command (Delete);
			}
	}
/ ************************************************* ************************************************** ******
************************************************** ************************************************** ******
                                        CỬA BÌA
************************************************** ************************************************** ******
************************************************** ************************************************** ***** /

    if (m == 1) // cho phép không thấy dữ liệu nếu cửa không mở
	    {
    	girilen_sa = 0; // Đặt lại số chính xác trong khi mở cửa
		VeriDizi ("LUTFEN DOOR", g); // In phông chữ LCD
		Command (ıkincisat); // Công tắc dòng thứ hai của LCD
		DataDizi ("CLOSE", g);
		Chậm trễ (k);
		Command (Delete); // Vệ sinh màn hình LCD
    	VeriDizi ("DOOR", g);
		Command (ıkincisat);
		VeriDizi ("ĐÓNG iCiN", g);
		Chậm trễ (k);
		Command (Delete);
		VeriDizi ("YÊU CẦU", g);
		Command (ıkincisat);
		VeriDizi ("4 HANELI", g);
		Chậm trễ (k);
		Command (Delete);	
		VeriDizi (& quot; SiFREYi GiRiNiZ & quot;, g);
		Chậm trễ (k);
		Command (Delete);
		m = 0;
		}	

	counter = 0, bắt đầu = 1;  

	while (basla && f)
	{

		klavyeok ngàn = (); // Đọc hàng ngàn chữ số từ bàn phím
		DataDizi ("*", 1000);
		klavyeok khuôn mặt = (); // đọc hàng trăm chữ số từ bàn phím
		veridiana (the "*", 1000);
		klavyeok trong số họ = (); // đọc khóa tại bàn phím
		veridiana (the "*", 1000);
		= Klavyeok của một on (); // đọc một trong các phím từ bàn phím
		veridiana (the "*", 1000);
		Command (Delete);
		girilen_sa a = (1000 * ngàn) + (100 * khuôn mặt) + (10 * chúng) + một trên; // nhận số lượng

		VeriDizi ("LUTFEN", g);
		Command (ıkincisat);
		DataDizi ("WAITING", g);
		Chậm trễ (k);
		Command (Delete);  
    	VeriDizi (& quot; KIỂM SOÁT SiFRENIZ & quot;, g);
		Command (ıkincisat);
   	    VeriDizi (& quot; EDILYOR & quot;, g);
		Chậm trễ (k);
		Delay (5000);
   	    Command (Delete);	
		truy cập ++;

		if (password == input_server) 
			{
			start = 0; // bật cửa để thoát sau khi đóng cửa
			f = 0; // bật cửa để thoát sau khi đóng cửa
			DataDizi (& quot; DOGRU SiFRE & quot;, g);
			Command (ıkincisat);
			VeriDizi ("DOOR CLOSE", g);
			Chậm trễ (k);
			P3_1 = P3_1!; // đang quay về hướng đóng động cơ
			Chậm trễ (10000);
			P3_1 = P3_1!; // động cơ dừng lại
			Chậm trễ (100.000);
			Command (Delete);

			}
	        khác
 		        if (counter <= 3) {DataDisci ("CHỈ SiFRE", g); Command (ıkincisat); VeriDizi ("RETURN EXPERIENCE", g); Chậm trễ (k); Command (Delete); } if (counter> = 4) // Cho phép người dùng nhập mật khẩu chính xác
			{
			start = 0;
			Command (Delete);
    		VeriDizi ("DOOR COVER", g);
		    Command (ıkincisat);
   		    DataDizi ("POI", g);
			Chậm trễ (k);
		    Command (Delete);
    		VeriDizi (& quot; GOREVLi KiSiYi & quot;, g);
			Command (ıkincisat);
   		    VeriDizi ("ÇAGIRINIZ", g);
			Chậm trễ (k);
		    Command (Delete);
			f = 0;
	        }

	   }
/ ************************************************* ************************************************** *******
************************************************** ************************************************** *******
                                        CỬA BÌA
************************************************** ************************************************** *******
************************************************** ************************************************** ****** /

DataDizi ("GOODLER", g * 2);
Chậm trễ (k);
Command (Delete);

}

void chính (void)
{
  EX0 = 1; // ngắt 0 hoạt động
  E = 1; // tất cả các lần cắt đang hoạt động
  P3_0 = 0; // giá trị ban đầu của động cơ kết thúc đặt lại
  P3_1 = 0; // giá trị ban đầu của động cơ kết thúc đặt lại
  lcdac (); / * Quá trình mở màn hình LCD * /
  ozelkartanit (); // Tải ký tự tiếng Thổ Nhĩ Kỳ trên LCD

  while (1)
  {
    Command (Delete); // Vệ sinh màn hình LCD
	VeriDizi ("KOCAELI", g);
	Command (ıkincisat); // Công tắc dòng thứ hai của LCD
	VeriDizi ("ĐẠI HỌC", g);
	Chậm trễ (k);
    Command (Delete); // Vệ sinh màn hình LCD
	VeriDizi (& quot; ĐIỆN TỬ & quot ;, g);
	Command (ıkincisat); // Công tắc dòng thứ hai của LCD
	DataDizi (& quot; OGRETMENLiGi & quot;, g);
	Chậm trễ (k);
	Command (Delete); // Vệ sinh màn hình LCD
	VeriDizi ("Fatih", g);
	Command (ıkincisat); // Công tắc dòng thứ hai của LCD
	VeriDizi (& quot; BAYRAMCAVUS & quot;, g);
	Chậm trễ (k);
	Command (Delete);
	DataDizi (& quot; 010303032 & quot;, g);
	Command (ıkincisat);
	VeriDizi (& quot; Elo.4 & quot;, g);
	Chậm trễ (k);
	Command (Delete);
	VeriDizi ("DỰ ÁN", g);
	Command (ıkincisat);
	VeriDizi ("ADI", g);
	Chậm trễ (k);
	Command (Delete);
	VeriDizi ("Cửa được mã hóa", g);
	Command (ıkincisat);
	VeriDizi ("Khóa", g);
	Chậm trễ (k);
	Command (Delete);

  }
}
Dự án được chuẩn bị bởi: Fatih Bayram Sergeant Projenin Files AT89C51 Lcd hiển thị khóa cửa được mã hóa
Tải xuống danh sách LINK (ở định dạng TXT) link-3594.zip mật khẩu-pass: 320volt.com Cảm ơn bạn

Post a Comment

[disqus] [facebook] [blogger]

MKRdezign

Biểu mẫu liên hệ

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget
Hỗ trợ trực tuyến