久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3122|回復: 1
打印 上一主題 下一主題
收起左側

單片機按鍵密碼鎖源代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:85764 發表于 2015-7-15 23:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
電路圖:http://www.zg4o1577.cn/f/51hei-5.pdf


源代碼:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int

  4. #define KeyPort P1

  5. sbit Dula=P2^2;   //段選
  6. sbit Wela=P2^3;   //位選
  7. sbit Led =P2^0;

  8. uchar code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   //段碼
  9. uchar code smg_we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};      //位碼
  10. uchar password[8];
  11. uchar dis_smg[8];
  12. bit Flag=0;

  13. uchar KeyScan(void);
  14. uchar KeyPro(void);

  15. /**********************************************************************************
  16. *************************  延 時 函 數   ******************************************
  17. ***********************************************************************************/
  18. void delayus(uchar t)
  19. {
  20. while(--t);
  21. }

  22. void delayms(uchar t)
  23. {
  24. while(t--)
  25. {
  26.   delayus(245);
  27.   delayus(245);
  28. }
  29. }

  30. /**********************************************************************************
  31. *************************  顯 示 函 數   ******************************************
  32. ***********************************************************************************/
  33. void Display(uchar Firstbit ,uchar Num)
  34. {
  35. static uchar i;

  36. P0=0x00;
  37. Dula=1;Dula=0;

  38. P0=smg_we[i+Firstbit];
  39. Wela=1;Wela=0;

  40. P0=dis_smg[i];
  41. Dula=1;Dula=0;

  42. i++;
  43. if(i==Num)
  44.   i=0;
  45. }

  46. /**********************************************************************************
  47. ***************************  定時初始化   ******************************************
  48. ***********************************************************************************/
  49. void Timer0_Init(void)
  50. {
  51. TMOD|=0X01;
  52. TR0=1;
  53. ET0=1;
  54. EA=1;
  55. }

  56. /**********************************************************************************
  57. *************************  設 置 密 碼   ******************************************
  58. ***********************************************************************************/
  59. void SetPassword(uchar KeyNum)
  60. {
  61. static uchar i=0;
  62. uchar j,n;
  63. uchar tempcode[8];
  64. if((KeyNum>=0)&&(KeyNum<=9))
  65. {
  66.   Led=1;
  67.   if(i==0)
  68.   {      
  69.    for(j=0;j<8;j++)
  70.    tempcode[j]=0;
  71.   }
  72.   if(i<8)
  73.   {
  74.    tempcode[i]=smg_du[KeyNum];
  75.    for(j=0;j<=i;j++)
  76.      dis_smg[7-i+j]=tempcode[j];
  77.   }
  78.   i++;
  79.   if(i==8)
  80.    i=0;
  81. }
  82. if(KeyNum==15)      //密碼修改確認鍵
  83. {
  84.   KeyNum=0xff;
  85.   for(n=0;n<8;n++)
  86.   {
  87.     password[n]=tempcode[n];
  88.     dis_smg[n]=0;
  89.   }
  90.   dis_smg[0]=0x3f;
  91.   dis_smg[1]=0x76;
  92.   Flag=0;
  93.   i=0;      //靜態變量清零,下次進入時可以從新開始
  94. }
  95. }

  96. /**********************************************************************************
  97. *************************  輸 入 密 碼   ******************************************
  98. ***********************************************************************************/
  99. void KeyControl(uchar Keynum)
  100. {
  101. static uchar i=0;
  102. uchar j;
  103. uchar temp[8];
  104. bit flag;
  105. if((Keynum>=0)&&(Keynum<=9))    //數字輸入按鍵
  106. {
  107.   Led=0;
  108.   if(i==0)
  109.   {   
  110.    
  111.    for(j=0;j<8;j++)
  112.    dis_smg[j]=0;
  113.   }
  114.   if(i<8)
  115.   {
  116.    temp[i]=smg_du[Keynum];
  117.    for(j=0;j<=i;j++)
  118.     dis_smg[7-i+j]=temp[j];
  119.   }
  120.   i++;
  121.   if(i==8)
  122.    i=0;
  123. }
  124. if(Keynum==15)       //確認鍵
  125. {
  126.   Keynum=0xff;
  127.   flag=1;
  128.   for(j=0;j<8;j++)
  129.   {
  130.    flag=flag&&(temp[j]==password[j]);//比較八位密碼數字是否全正確
  131.    dis_smg[j]=0;
  132.   }
  133.   if(flag)
  134.   {
  135.     dis_smg[0]=0x3f; // "o"
  136.           dis_smg[1]=0x73; // "p"
  137.     dis_smg[2]=0x79; // "E"
  138.     dis_smg[3]=0x37; // "n"
  139.   }
  140.   else
  141.   {
  142.     dis_smg[0]=0x79; // "E"
  143.           dis_smg[1]=0x50; // "r"
  144.     dis_smg[2]=0x50; // "r"
  145.   }
  146.   i=0;   //清零,準備下次輸入密碼
  147. }
  148. if(Keynum==14)        //修改密碼鍵
  149. {
  150.   Flag=1;
  151.   for(i=0;i<8;i++)
  152.   {
  153.    dis_smg[i]=0x40;
  154.   }
  155.   i=0;      //靜態變量清零,下次進入時可以從新開始
  156. }
  157. }

  158. /**********************************************************************************
  159. *************************  控 制 函 數   ******************************************
  160. ***********************************************************************************/
  161. void Dominate(void)
  162. {
  163. uchar keynum;
  164. keynum=KeyPro();
  165. if(keynum!=0xff)
  166. {
  167.   if(Flag==0)
  168.    KeyControl(keynum);
  169.   else
  170.    SetPassword(keynum);
  171. }
  172. }

  173. /**********************************************************************************
  174. *************************   main 函 數   ******************************************
  175. ***********************************************************************************/
  176. void main()
  177. {
  178. Timer0_Init();
  179. while(1)
  180. {
  181.    Dominate();
  182. }
  183. }

  184. /**********************************************************************************
  185. ************************* 中斷服務函數   ******************************************
  186. ***********************************************************************************/
  187. void Timer0(void) interrupt 1
  188. {
  189. TH0=0XF8;
  190. TL0=0X30; //2ms

  191. Display(0,8);
  192. }

  193. /**********************************************************************************
  194. *************************  按 鍵 掃 描(反復式掃描法)   **************************
  195. ***********************************************************************************/
  196. uchar KeyScan(void)
  197. {
  198. uchar cord_h,cord_l;
  199. KeyPort=0x0f;
  200. cord_l=KeyPort&0x0f;
  201. if(cord_l!=0x0f)
  202. {
  203.   delayms(10);
  204.   if((KeyPort&0x0f)!=0x0f)
  205.   {
  206.    cord_l=KeyPort&0x0f;
  207.    KeyPort=cord_l|0xf0;
  208.    cord_h=KeyPort&0xf0;
  209.    while((KeyPort&0xf0)!=0xf0);

  210.    return (cord_h+cord_l);
  211.   }
  212. }return (0xff);
  213. }

  214. uchar KeyPro(void)
  215. {
  216.   switch(KeyScan())
  217.   {
  218.     case 0x7e:return 0;break;//0 按下相應的鍵顯示相對應的碼值
  219.     case 0x7d:return 1;break;//1
  220.     case 0x7b:return 2;break;//2
  221.     case 0x77:return 3;break;//3
  222.     case 0xbe:return 4;break;//4
  223.     case 0xbd:return 5;break;//5
  224.     case 0xbb:return 6;break;//6
  225.     case 0xb7:return 7;break;//7
  226.     case 0xde:return 8;break;//8
  227.     case 0xdd:return 9;break;//9
  228.     case 0xdb:return 10;break;//a
  229.     case 0xd7:return 11;break;//b
  230.     case 0xee:return 12;break;//c
  231.     case 0xed:return 13;break;//d
  232.     case 0xeb:return 14;break;//e
  233.     case 0xe7:return 15;break;//f
  234.     default:return 0xff;break;
  235.   }
  236. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:96742 發表于 2015-11-23 08:49 | 只看該作者
那原始密碼是多少?程序一進去的是輸入密碼而不是設置密碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜在线 | 久久久精品一区二区三区四季av | 日韩国产精品一区二区三区 | 天堂一区二区三区 | www.亚洲一区 | 国产99视频精品免费视频7 | 欧美八区| 国产精品1区2区 | 亚洲黄色一级 | 九九综合 | 久久久久久久久淑女av国产精品 | 在线观看久草 | 亚洲国产成人精品久久久国产成人一区 | 精品国产欧美一区二区 | 欧美日韩在线免费 | 亚洲精品一区二区另类图片 | 在线看日韩av | 影音先锋中文字幕在线观看 | 91精品国产91久久久久久最新 | 久久国产精品一区二区 | av国产精品| 久久精品一区二区三区四区 | 国产精品日日做人人爱 | 一级片在线播放 | aaaa日韩 | 久久一区二区三区四区 | 一区二区三区四区免费视频 | h视频在线观看免费 | 午夜不卡一区二区 | 精品久久国产老人久久综合 | 欧美一区二区免费电影 | 夏同学福利网 | 国产毛片毛片 | 成年人黄色小视频 | 国产xxx在线观看 | 亚洲导航深夜福利涩涩屋 | 欧美色性| 日韩中文字幕视频 | 中文字幕亚洲精品在线观看 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 午夜在线影院 |