0.png (26.38 KB, 下載次數: 45)
下載附件
2016-9-27 12:25 上傳
0.png (67.88 KB, 下載次數: 54)
下載附件
2016-9-27 12:26 上傳
這是一個可以設定新密碼的單片機電子密碼鎖設計
所有資料下載:
密碼鎖程序設計.rar
(61.02 KB, 下載次數: 21)
2016-9-27 12:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
密碼鎖源程序:
- #include <reg51.h>
- #define uint unsigned int
- #define uchar unsigned char //宏定義
- uchar code LEDData[] ={0xc0,0xf9,0xa4,0xb0,0x99,
- 0x92,0x82,0xf8,0x80,0x90,0xff,0xBF}; //共陽數碼管
- sbit weixuan1 = P2 ^ 7; //數碼管位選定義
- sbit weixuan2 = P2 ^ 6;
- sbit weixuan3 = P2 ^ 5;
- sbit weixuan4 = P2 ^ 4;
- //sbit hongse = P2 ^ 2;
- //sbit lvse = P2 ^ 1;
- //sbit lanse = P2 ^ 0;
- sbit K7 = P1 ^ 0; //按鍵
- sbit K8 = P1 ^ 1;
- sbit K9 = P1 ^ 2;
- sbit K4 = P1 ^ 3;
- sbit K5 = P1 ^ 4;
- sbit K6 = P1 ^ 5;
- sbit K1 = P1 ^ 6;
- sbit K2 = P1 ^ 7;
- sbit K3 = P3 ^ 0;
- sbit K0 = P3 ^ 1;
- sbit K10 = P3 ^ 2;
- sbit K11 = P3 ^ 3;
- int a, b, c, d, moshi = 0, jishu = 0;
- uint mi[4] = {1, 2, 3, 4};
- uint ma[4] = {10, 10, 10, 10};
- /*****延時子程序*****/
- void Delay(uint i)
- {
- while( i-- );
- }
- void qudou(void) //去抖延遲
- {
- int i;
- for(i = 0; i < 2400; i++);
- }
- /*****顯示溫度子程序*****/
- void xianshi()
- {
- weixuan1 = 0;
- weixuan2 = 0;
- weixuan3 = 0;
- weixuan4 = 0;
- P0 = LEDData[a];
- weixuan1 = 1;
- weixuan2 = 0;
- weixuan3 = 0;
- weixuan4 = 0;
- Delay(300);
- weixuan1 = 0;
- weixuan2 = 0;
- weixuan3 = 0;
- weixuan4 = 0;
- P0 = LEDData[b];
- weixuan1 = 0;
- weixuan2 = 1;
- weixuan3 = 0;
- weixuan4 = 0;
- Delay(300);
- weixuan1 = 0;
- weixuan2 = 0;
- weixuan3 = 0;
- weixuan4 = 0;
- P0 = LEDData[c];
- weixuan1 = 0;
- weixuan2 = 0;
- weixuan3 = 1;
- weixuan4 = 0;
- Delay(300);
- weixuan1 = 0;
- weixuan2 = 0;
- weixuan3 = 0;
- weixuan4 = 0;
- P0 = LEDData[d];
- weixuan1 = 0;
- weixuan2 = 0;
- weixuan3 = 0;
- weixuan4 = 1;
- Delay(300);
- }
- void key_guan()
- {
- if (K0 == 0) //按鍵0按下
- {
- qudou();
- if(K0 == 0)
- {
- jishu = 1;
- ma[0] = 0;
- moshi = 1;
- }
- while(K0 == 0);
- }
- if (K1 == 0) //按鍵1按下
- {
- qudou();
- if(K1 == 0)
- {
- jishu = 1;
- ma[0] = 1;
- moshi = 1;
- }
- while(K1 == 0);
- }
- if (K2 == 0) //按鍵2按下
- {
- qudou();
- if(K2 == 0)
- {
- jishu = 1;
- ma[0] = 2;
- moshi = 1;
- }
- while(K2 == 0);
- }
- if (K3 == 0) //按鍵3按下
- {
- qudou();
- if(K3 == 0)
- {
- jishu = 1;
- ma[0] = 3;
- moshi = 1;
- }
- while(K3 == 0);
- }
- if (K4 == 0) //按鍵4按下
- {
- qudou();
- if(K4 == 0)
- {
- jishu = 1;
- ma[0] = 4;
- moshi = 1;
- }
- while(K4 == 0);
- }
- if (K5 == 0) //按鍵5按下
- {
- qudou();
- if(K5 == 0)
- {
- jishu = 1;
- ma[0] = 5;
- moshi = 1;
- }
- while(K5 == 0);
- }
- if (K6 == 0) //按鍵6按下
- {
- qudou();
- if(K6 == 0)
- {
- jishu = 1;
- ma[0] = 6;
- moshi = 1;
- }
- while(K6 == 0);
- }
- if (K7 == 0) //按鍵7按下
- {
- qudou();
- if(K7 == 0)
- {
- jishu = 1;
- ma[0] = 7;
- moshi = 1;
- }
- while(K7 == 0);
- }
- if (K8 == 0) //按鍵8按下
- {
- qudou();
- if(K8 == 0)
- {
- jishu = 1;
- ma[0] = 8;
- moshi = 1;
- }
- while(K8 == 0);
- }
- if (K9 == 0) //按鍵9按下
- {
- qudou();
- if(K9 == 0)
- {
- jishu = 1;
- ma[0] = 9;
- moshi = 1;
- }
- while(K9 == 0);
- }
- }
- void key_shuru()
- {
- if (K0 == 0) //按鍵0按下
- {
- qudou();
- if(K0 == 0)
- {
- ma[jishu] = 0;
- jishu++;
- }
- while(K0 == 0);
- }
- if (K1 == 0) //按鍵1按下
- {
- qudou();
- if(K1 == 0)
- {
- ma[jishu] = 1;
- jishu++;
- }
- while(K1 == 0);
- }
- if (K2 == 0) //按鍵2按下
- {
- qudou();
- if(K2 == 0)
- {
- ma[jishu] = 2;
- jishu++;
- }
- while(K2 == 0);
- }
- if (K3 == 0) //按鍵3按下
- {
- qudou();
- if(K3 == 0)
- {
- ma[jishu] = 3;
- jishu++;
- }
- while(K3 == 0);
- }
- if (K4 == 0) //按鍵4按下
- {
- qudou();
- if(K4 == 0)
- {
- ma[jishu] = 4;
- jishu++;
- }
- while(K4 == 0);
- }
- if (K5 == 0) //按鍵5按下
- {
- qudou();
- if(K5 == 0)
- {
- ma[jishu] = 5;
- jishu++;
- }
- while(K5 == 0);
- }
- if (K6 == 0) //按鍵6按下
- {
- qudou();
- if(K6 == 0)
- {
- ma[jishu] = 6;
- jishu++;
- }
- while(K6 == 0);
- }
- if (K7 == 0) //按鍵7按下
- {
- qudou();
- if(K7 == 0)
- {
- ma[jishu] = 7;
- jishu++;
- }
- while(K7 == 0);
- }
- if (K8 == 0) //按鍵8按下
- {
- qudou();
- if(K8 == 0)
- {
- ma[jishu] = 8;
- jishu++;
- }
- while(K8 == 0);
- }
- if (K9 == 0) //按鍵9按下
- {
- qudou();
- if(K9 == 0)
- {
- ma[jishu] = 9;
- jishu++;
- }
- while(K9 == 0);
- }
- }
- void key_xinmima()
- {
- if (K0 == 0) //按鍵0按下
- {
- qudou();
- if(K0 == 0)
- {
- ma[jishu] = 0;
- jishu++;
- }
- while(K0 == 0);
- }
- if (K1 == 0) //按鍵1按下
- {
- qudou();
- if(K1 == 0)
- {
- ma[jishu] = 1;
- jishu++;
- }
- while(K1 == 0);
- }
- if (K2 == 0) //按鍵2按下
- {
- qudou();
- if(K2 == 0)
- {
- ma[jishu] = 2;
- jishu++;
- }
- while(K2 == 0);
- }
- if (K3 == 0) //按鍵3按下
- {
- qudou();
- if(K3 == 0)
- {
- ma[jishu] = 3;
- jishu++;
- }
- while(K3 == 0);
- }
- if (K4 == 0) //按鍵4按下
- {
- qudou();
- if(K4 == 0)
- {
- ma[jishu] = 4;
- jishu++;
- }
- while(K4 == 0);
- }
- if (K5 == 0) //按鍵5按下
- {
- qudou();
- if(K5 == 0)
- {
- ma[jishu] = 5;
- jishu++;
- }
- while(K5 == 0);
- }
- if (K6 == 0) //按鍵6按下
- {
- qudou();
- if(K6 == 0)
- {
- ma[jishu] = 6;
- jishu++;
- }
- while(K6 == 0);
- }
- if (K7 == 0) //按鍵7按下
- {
- qudou();
- if(K7 == 0)
- {
- ma[jishu] = 7;
- jishu++;
- }
- while(K7 == 0);
- }
- if (K8 == 0) //按鍵8按下
- {
- qudou();
- if(K8 == 0)
- {
- ma[jishu] = 8;
- jishu++;
- }
- while(K8 == 0);
- }
- if (K9 == 0) //按鍵9按下
- {
- qudou();
- if(K9 == 0)
- {
- ma[jishu] = 9;
- jishu++;
- }
- while(K9 == 0);
- }
- }
- void guan()
- {
- // hongse = 0;
- // lvse = 1;
- // lanse = 1;
- a = 11;
- b = 11;
- c = 11;
- d = 11;
- key_guan();
- }
- void shuru()
- {
- // hongse = 1;
- // lvse = 1;
- // lanse = 0;
- switch(jishu)
- {
- case 1:
- a = 10;
- b = 10;
- c = 10;
- d = 11;
- break;
- case 2:
- a = 10;
- b = 10;
- c = 11;
- d = 11;
- break;
- case 3:
- a = 10;
- b = 11;
- c = 11;
- d = 11;
- break;
- case 4:
- a = 11;
- b = 11;
- c = 11;
- d = 11;
- break;
- }
- if(jishu < 4)
- key_shuru();
- else
- {
- if (K10 == 0) //按鍵4按下
- {
- qudou();
- if(K10 == 0)
- {
- if(mi[0] == ma[0])
- if(mi[1] == ma[1])
- if(mi[2] == ma[2])
- if(mi[3] == ma[3])
- {
- moshi = 2;
- jishu = 0;
- ma[0] = 10;
- ma[1] = 10;
- ma[2] = 10;
- ma[3] = 10;
- }
- else
- {
- moshi = 0;
- jishu = 0;
- ma[0] = 10;
- ma[1] = 10;
- ma[2] = 10;
- ma[3] = 10;
- }
- else
- {
- moshi = 0;
- jishu = 0;
- ma[0] = 10;
- ma[1] = 10;
- ma[2] = 10;
- ma[3] = 10;
- }
- else
- {
- moshi = 0;
- jishu = 0;
- ma[0] = 10;
- ma[1] = 10;
- ma[2] = 10;
- ma[3] = 10;
- }
- else
- {
- moshi = 0;
- jishu = 0;
- ma[0] = 10;
- ma[1] = 10;
- ma[2] = 10;
- ma[3] = 10;
- }
- }
- while(K10 == 0);
- }
- }
- }
- void kai()
- {
- // hongse = 1;
- // lvse = 0;
- // lanse = 1;
- a = 0;
- b = 0;
- c = 0;
- d = 0;
- if (K11 == 0) //按鍵9按下
- {
- qudou();
- if(K11 == 0)
- {
- moshi = 3;
- a = 10;
- b = 10;
- c = 10;
- d = 10;
- }
- while(K11 == 0);
- }
- }
- void xinmima()
- {
- // hongse = 0;
- // lvse = 0;
- // lanse = 0;
- switch(jishu)
- {
- case 1:
- a = 10;
- b = 10;
- c = 10;
- d = ma[0];
- break;
- case 2:
- a = 10;
- b = 10;
- c = ma[0];
- d = ma[1];
- break;
- case 3:
- a = 10;
- b = ma[0];
- c = ma[1];
- d = ma[2];
- break;
- case 4:
- a = ma[0];
- b = ma[1];
- c = ma[2];
- d = ma[3];
- break;
- }
- if(jishu < 4)
- key_xinmima();
- else
- {
- if (K11 == 0) //按鍵4按下
- {
- qudou();
- if(K11 == 0)
- {
- mi[0] = ma[0];
- ma[0] = 10;
- mi[1] = ma[1];
- ma[1] = 10;
- mi[2] = ma[2];
- ma[2] = 10;
- mi[3] = ma[3];
- ma[3] = 10;
- jishu = 0;
- moshi = 0;
- }
- while(K11 == 0);
- }
- }
- }
- void zhuangtai()
- {
- switch(moshi)
- {
- case 0:
- guan();
- break;
- case 1:
- shuru();
- break;
- case 2:
- kai();
- break;
- case 3:
- xinmima();
- break;
- }
- }
- /*****主函數*****/
- void main(void)
- {
- while(1)
- {
- zhuangtai();
- xianshi();
- }
- }
復制代碼 |