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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

初學時的密碼鎖分享出來吧(multisum的原理圖+源代碼+論文)

[復制鏈接]
跳轉到指定樓層
樓主
初學單片機時候自己做出來的密碼鎖。供各位 大蝦、少蝦來參考提供意見吧

所有東西.zip (1.08 MB, 下載次數: 66)

評分

參與人數 2黑幣 +55 收起 理由
莫子棟 + 5 很給力!
admin + 50 共享資料的積分獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:98640 發表于 2015-12-7 10:32 | 只看該作者
各位做參考吧。代碼已經很傻了啊 初學者也看得懂的哦
回復

使用道具 舉報

板凳
ID:98640 發表于 2015-12-7 10:36 | 只看該作者
附件里里面包含了 multisum的原理圖(截圖),以及源代碼。以及外觀圖(雖然有點丑)。
回復

使用道具 舉報

地板
ID:1 發表于 2015-12-7 18:03 | 只看該作者
樓主的源碼如下:
  1. //*********單片機各I/O的說明****************
  2. //P2和P0口用于12864顯示器
  3. //P1口用于矩陣鍵盤
  4. //P3口的高四位用于步進電機信號的傳入電機
  5. //P3^2口用于室內控制門的關
  6. //P3^3口用于室內控制門的開
  7. //P2^7控制蜂鳴器
  8. //A---用于顯示家中無人這個提示界面
  9. //B---用于門鈴
  10. //C---用于門外關門
  11. //D---無功能
  12. //*---用于密碼的重置
  13. //#---用于門外開門---需經過密碼驗證
  14. #include<reg52.h>
  15. #include<intrins.h>
  16. #define uint unsigned int
  17. #define uchar unsigned char
  18. #define N 3                                          //步進電機中需要用的宏
  19. uchar y=0x00;                                          //input函數中調用
  20. static uchar cs=0,gs=0;
  21. //***********************************************************
  22. static uchar mima[6]={"123456"};                                            //密碼數組---可通過密碼重置修改
  23. uchar lsmima[6];                                                       //臨時密碼數組--用于開門時的密碼驗證
  24. uchar newmima1[6];
  25. uchar newmima2[6];
  26. uchar dizhi1[8]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87};
  27. uchar dizhi2[8]={0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97};
  28. uchar dizhi3[8]={0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F};
  29. uchar dizhi4[8]={0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F};
  30. uchar panduan_zhi=0;
  31. uchar i,enter;                            //在6位密碼輸入和密碼重置時需要使用的變量
  32. uchar control_gn='Z';                                  //在非數字按鍵的控制函數中使用
  33. uchar newhaoma[11];                                         //重新設定預留號碼-------
  34. //****************信息提示語*************************
  35. uchar code mimazq[]={"密碼沒問題"};                                         //密碼正確
  36. uchar code mimacw[]={"密碼錯誤"};                               //密碼有誤提示
  37. uchar code xiugaicg[]={"修改成功"};                                //密碼,號碼重置顯示
  38. uchar code mimawsts[]={"請輸入六位密碼"};                //密碼位數提示
  39. uchar code shurucw[]={"輸入錯誤"};                              //選擇時的提示
  40. uchar code newsr[]={"請重新輸入"};                             //選擇時的提示
  41. //            *********功能提示**********
  42. uchar code kaimen[]={"馬上為您開門"};             //開門提示語
  43. uchar code yuanshimima[]={"請輸入原始密碼"}; //原始密碼
  44. uchar code newmima[]={"請輸入新密碼"};                //新密碼
  45. uchar code ruqints[]={"有不法者試圖入侵"};
  46. uchar code ruqinjb[]={"警報已經開啟"};
  47. uchar code different[]={"兩次輸入不一致"};

  48. //***************界面提示語*****************************
  49. uchar code wenhou[]={"您好"};
  50. uchar code wr[]={"主人不在家"};
  51. uchar code lianxi[]={"有事請聯系:"};                //界面_mr--->家中無人
  52. uchar code haoma[]={"18700596632"};                        //界面_mr--->家中無人
  53. uchar code yr[]={"主人在家"};                                //界面_yr--->家中有人
  54. uchar code menling[]={"有事請按門鈴"};                //界面_yr--->家中有人
  55. uchar code huanying[]={"歡迎您的到訪"};                //界面_yr--->家中有人
  56. //**********************函數聲明***********************
  57. uchar key_scan();                                               //按鍵檢測函數
  58. void delay_50us(uint u);                                                        //50us延時
  59. void write_zl(uchar cmd);                                                        //12864寫指令
  60. void write_sj(uchar dat);                                                        //12864寫數據
  61. void inti1();                                                                                //12864初始化                            
  62. void disp_dzf(uchar b,uchar zddz);                                        //12864單字符顯示
  63. void delay_50ms(uint u);                                        //1286450ms延時
  64. void delay(uint x);                                                                           //步進電機延時函數
  65. void bjzz();                                                                               //步進電機正轉---開門
  66. void bjdz();                                                                               //步進電機反轉----關門
  67. void disp_hzi(uchar a[],uchar num,uchar cmd);       //12864字符串顯示函數
  68. uchar input() reentrant;                            //按鍵輸入
  69. void baojingsy();                                                                    //報警聲音編碼函數
  70. void anmenlingsy();                                 //按門鈴的門鈴聲音編碼函數                                        
  71. void control();                                     //流程控制函數
  72. void control_A();                                   //家中無人時的界面控制,按鍵A所對應的的功能
  73. void control_C() ;                                                         //家中無人時的界面控制,按鍵C所對應的的功能
  74. void panduankg() reentrant;                                                        //#號所對應的功能函數
  75. void tishiyin1();                                    //提示音1
  76. void tishiyin2();                                    //提示音2
  77. uchar open(uchar x);                                                                //open函數
  78. uchar mimashuru_6()        reentrant;                                                //密碼重置
  79. void panduancz() reentrant;                                                        //#號所對應的功能函數
  80. uchar bijiao(uchar x) reentrant;                                   //密碼重置時的二次比對
  81. void mimashuru1_6()reentrant;                                           //二次輸入第一次
  82. void mimashuru2_6()reentrant;                                           //二次輸入第一次
  83. void duizhao() reentrant ;
  84. //*********************************************************
  85. sbit RS=P2^2;
  86. sbit RW=P2^1;
  87. sbit E=P2^0;
  88. sbit PSB=P2^3;
  89. sbit RESET=P2^5;
  90. sbit beep=P2^7;
  91. //********************位 定 義**********************************
  92. void jiemian_mr()
  93. {       
  94.     write_zl(0x01);                                            //-----清屏
  95.         disp_hzi(wenhou,4,dizhi1[0]);    //第二行開始顯示  您好主人不在家
  96.         disp_hzi(wr,10,dizhi2[2]);
  97.         disp_hzi(lianxi,12,dizhi3[0]);      // 顯示  有事請聯系:
  98.         disp_hzi(haoma,11,dizhi4[2]);       //顯示  18700596632
  99. }
  100. //*********************家里有人時的界面*****************
  101. void jiemian_yr()
  102. {  inti1();
  103.     write_zl(0x01);
  104.         disp_hzi(wenhou,4,dizhi1[0]);                                                    //-----清屏
  105.         disp_hzi(yr,8,dizhi2[2]);                //顯示 您好主人在家
  106.         disp_hzi(menling,12,dizhi3[0]);            //顯示  有事請按門鈴B鍵
  107.         disp_dzf('B',dizhi3[6]);                  //在有事按門鈴之后顯示B                                                          
  108.         disp_hzi(huanying,12,dizhi4[1]);          //顯示歡迎您的到訪
  109. }
  110. //************50us延時***************
  111. void delay_50us(uint u)
  112. {
  113.   uchar j;
  114.   uint i;
  115.   for(i=0;i<u;i++)
  116.           for(j=19;j>0;j--)
  117.         ;
  118. }
  119. //**************50us延時************
  120. void delay_50ms(uint u)
  121. {
  122.   uchar j;
  123.   uint i;
  124.   for(i=0;i<u;i++)
  125.           for(j=6245;j>0;j--)
  126.         ;
  127. }
  128. //********步進電機延時函數**********
  129. void delay(uint x)
  130. {
  131. uchar i;
  132. while(x--)
  133.   for(i=0;i<100;i++);
  134. }
  135. //********步進電機正轉********
  136. void bjzz()   
  137. {
  138. uchar x;
  139. for(x=0;x<200;x++)
  140. {                          
  141. P3=0x3f;          
  142. delay(N);          
  143. P3=0x6f;
  144. delay(N);
  145. P3=0xcf;
  146. delay(N);
  147. P3=0x9f;
  148. delay(N);
  149. }
  150. }
  151. //********步進電機倒轉********
  152. void bjdz()
  153. {
  154. uchar x;
  155. for(x=0;x<200;x++)
  156. {                          
  157. P3=0x9f;          
  158. delay(N);          
  159. P3=0xcf;
  160. delay(N);
  161. P3=0x6f;
  162. delay(N);
  163. P3=0x3f;
  164. delay(N);
  165. }
  166. }
  167. //**********寫指令函數********
  168. void write_zl(uchar cmd)
  169. {
  170. RW=0;
  171. RS=0;
  172. delay_50us(1);
  173. P0=cmd;
  174. E=1;
  175. delay_50us(10);
  176. E=0;
  177. delay_50us(2);
  178. }
  179. //**********寫數據函數********
  180. void write_sj(uchar dat)
  181. {
  182. RW=0;
  183. RS=1;
  184. delay_50us(1);
  185. P0=dat;
  186. E=1;
  187. delay_50us(10);
  188. E=0;
  189. delay_50us(2);
  190. }
  191. //**********初始化函數*********
  192. void inti1()
  193. {  
  194. delay_50us(2);
  195. write_zl(0x30);
  196. delay_50us(4);
  197. write_zl(0x30);
  198. delay_50us(4);
  199. write_zl(0x0c);//開顯示,關光標……
  200. delay_50us(2);
  201. write_zl(0x01);
  202. delay_50us(240);
  203. write_zl(0x06);
  204. delay_50us(10);
  205. write_zl(0x64);
  206. delay_50us(10);
  207. }
  208. //*******12864單字符顯示函數*****
  209. void disp_dzf(uchar b,uchar zddz)
  210. {
  211.   write_zl(zddz);
  212.   delay_50us(1);
  213.   write_sj(b);
  214.   delay_50us(1);
  215. }
  216. //*********12864字符串顯示函數******
  217. void disp_hzi(uchar a[],uchar num,uchar cmd)
  218. {
  219. uchar *p=a;
  220. write_zl(cmd);
  221. for(p=a;p<a+num;p++)
  222. {
  223.         write_sj(*p);
  224.         delay_50us(1);
  225. }
  226. }
  227. //*****按鍵掃描函數返回mz值去顯示********
  228. uchar key_scan()
  229. {
  230.   uchar t,key=0x99;//t臨時變量
  231.   P1=0x7f;  
  232.   t=P1;          
  233.   t=t&0x07f;
  234.   if(t!=0x7f)
  235.   {
  236.   delay_50us(200);
  237.   t=P1;
  238.   t=t&0x7f;
  239.   if(t!=0x7f)
  240.   {
  241.    t=P1;
  242.    switch(t)
  243.    {
  244.    case 0x77:key='D';break;       
  245.    case 0x7b:key='C';break;       
  246.    case 0x7d:key='B';break;       
  247.    case 0x7e:key='A';break;       
  248.    }
  249.   }
  250.   }
  251. //第一行
  252. P1=0xbf;
  253.   t=P1;
  254.   t=t&0xbf;
  255.   if(t!=0xbf)
  256.   {
  257.   delay_50us(200);
  258.   t=P1;
  259.   t=t&0xbf;
  260.   if(t!=0xbf)
  261.   {
  262.    t=P1;
  263.    switch(t)
  264.    {
  265.    case 0xb7:key='#';break;
  266.    case 0xbb:key='9';break;
  267.    case 0xbd:key='6';break;
  268.    case 0xbe:key='3';break;
  269.    }
  270.   }
  271.   }
  272.   //第二行
  273.   P1=0xdf;
  274.   t=P1;
  275.   t=t&0xdf;
  276.   if(t!=0xdf)
  277.   {
  278.   delay_50us(200);
  279.   t=P1;
  280.   t=t&0xdf;
  281.   if(t!=0xdf)
  282.   {
  283.    t=P1;
  284.    switch(t)
  285.    {
  286.    case 0xd7:key='0';break;
  287.    case 0xdb:key='8';break;
  288.    case 0xdd:key='5';break;
  289.    case 0xde:key='2';break;
  290.    }
  291.   }
  292.   }
  293.   //第三行
  294.   P1=0xef;
  295.   t=P1;
  296.   t=t&0xef;
  297.   if(t!=0xef)
  298.   {
  299.   delay_50us(200);
  300.   t=P1;
  301.   t=t&0xef;
  302.   if(t!=0xef)
  303.   {
  304.    t=P1;
  305.    switch(t)                                                                   
  306.    {
  307.    case 0xe7:key='*';break;
  308.    case 0xeb:key='7';break;       
  309.    case 0xed:key='4';break;       
  310.    case 0xee:key='1';break;         
  311.    }
  312.   }
  313.   }
  314.   return(key);
  315. }
  316. //可重載的利用按鍵掃描函數的輸入函數
  317. uchar input() reentrant//返回按下的按鍵,沒有按鍵按下的時候等待
  318. {
  319. y=key_scan();
  320. if(y==0x99)//key=0x99代表沒有按鍵按下
  321. input();
  322. else
  323. return (y);
  324. }
  325. //******6密碼連續的輸入并在屏幕顯示*********
  326. //****6位密碼顯示,與已設進行比對的函數*****
  327. uchar mimashuru_6()reentrant
  328. {
  329.   write_zl(0x01);
  330.   disp_hzi(mimawsts,14,dizhi1[0]);  //input的功能是,當有按鍵按下的時候才返回這個數值
  331.                                     //6位密碼的輸入,而且每輸入一個數字顯示幾ms后顯示*
  332.   for(i=0;i<6;i++)
  333.   {
  334.         enter=input();
  335.         lsmima[i]=enter;                           //將返回的密碼值儲存在lsmima數組中
  336.         disp_dzf(enter,dizhi2[i]);     //在第二行顯示剛剛輸入的字符
  337.         delay_50ms(2000);
  338.         switch(lsmima[i])
  339.         {
  340.         case 'A':write_zl(0x01);mimashuru_6();break;//A的按鍵在這里的作用:如果有輸入錯誤了重新輸入。是重新輸入
  341.         }
  342.         disp_dzf('*',dizhi2[i]);          //在第二行用*號掩蓋剛剛的輸入結果
  343.           delay_50ms(20);
  344.   }
  345. for(i=0;i<6;i++)
  346. {
  347.          if(lsmima[i]!=mima[i])
  348.          {
  349.          write_zl(0x01);
  350.          tishiyin1();
  351.          disp_hzi(mimacw,8,dizhi2[2]);
  352.          delay_50ms(1000);
  353.          break;
  354.          }
  355. }
  356. return(i);
  357. }
  358. //這個函數的作用是輸入密碼并且進行輸入的密碼與預置密碼進行比對
  359. //如果二者相符返回6.不相符返回非6
  360. //open函數是根據mimashuru_6的返回值是不是6而進行開門和提示密碼錯誤
  361. uchar open(uchar x)
  362. {
  363. if(x==6)
  364. {
  365.     tishiyin2();
  366.         disp_hzi(kaimen,12,dizhi3[0]);
  367.         delay_50ms(10000);
  368.         bjzz();
  369.         delay_50ms(5000);
  370.         return(0);
  371.         }
  372. else
  373. {
  374.         delay_50ms(6000);
  375.         tishiyin1();
  376.         delay_50ms(100);
  377.         write_zl(0x01);                  //進行清屏
  378.         return(1);
  379.         }
  380. }
  381. //********密碼輸錯三次報警程序******
  382. //在報警響之后,經過連續的十次的響報警嚇走圖謀不軌者,然后重新回到control所控制的界面  
  383. void panduankg() reentrant
  384. {       
  385. delay_50ms(1000);            
  386.   panduan_zhi=open(mimashuru_6());
  387.   if(panduan_zhi==1)  //返回值是1說明輸入密碼錯誤
  388.      {
  389.          cs++;
  390.          if(cs==3)
  391.                  baojingsy();
  392.          else
  393.             panduankg();
  394.         }
  395.   else
  396.     cs=0;

  397.   }
  398. void mimashuru1_6()reentrant
  399. {
  400.   write_zl(0x01);
  401.   disp_hzi(newmima,14,dizhi1[0]);  //input的功能是,當有按鍵按下的時候才返回這個數值
  402.                                     //6位密碼的輸入,而且每輸入一個數字顯示幾ms后顯示*
  403.   for(i=0;i<6;i++)
  404.   {
  405.         enter=input();
  406.         newmima1[i]=enter;                           //將返回的密碼值儲存在lsmima數組中
  407.         disp_dzf(enter,dizhi2[i]);     //在第二行顯示剛剛輸入的字符
  408.         delay_50ms(2000);
  409.         switch(newmima1[i])
  410.         {
  411.         case 'A':write_zl(0x01);mimashuru1_6();break;//A的按鍵在這里的作用:如果有輸入錯誤了重新輸入。是重新輸入
  412.         }
  413.         disp_dzf('*',dizhi2[i]);          //在第二行用*號掩蓋剛剛的輸入結果
  414.           delay_50ms(20);
  415.   }
  416. }
  417. void mimashuru2_6()reentrant
  418. {
  419.   write_zl(0x01);
  420.   disp_hzi(newsr,10,dizhi1[0]);  //input的功能是,當有按鍵按下的時候才返回這個數值
  421.                                     //6位密碼的輸入,而且每輸入一個數字顯示幾ms后顯示*
  422.   for(i=0;i<6;i++)
  423.   {
  424.         enter=input();
  425.         newmima2[i]=enter;                           //將返回的密碼值儲存在lsmima數組中
  426.         disp_dzf(enter,dizhi2[i]);     //在第二行顯示剛剛輸入的字符
  427.         delay_50ms(2000);
  428.         switch(newmima2[i])
  429.         {
  430.         case 'A':write_zl(0x01);mimashuru2_6();break;//A的按鍵在這里的作用:如果有輸入錯誤了重新輸入。是重新輸入
  431.         }
  432.         disp_dzf('*',dizhi2[i]);          //在第二行用*號掩蓋剛剛的輸入結果
  433.           delay_50ms(20);
  434.        
  435.   }
  436. }
  437. void panduancz() reentrant
  438. {       
  439. delay_50ms(1000);            
  440.   panduan_zhi=mimashuru_6();
  441.   if(panduan_zhi!=6)  //返回值是1說明輸入密碼錯誤
  442.      {
  443.          cs++;
  444.          if(cs==3)
  445.          {
  446.          write_zl(0x01);
  447.                  baojingsy();
  448.          }
  449.          else
  450.             panduancz();
  451.         }
  452.   else
  453.   {
  454.    cs=0;
  455.    duizhao();
  456.   }
  457. }
  458. void duizhao() reentrant
  459. {
  460.    mimashuru1_6();
  461.    delay_50ms(200);
  462.    write_zl(0x01);
  463.    mimashuru2_6();
  464.    for(gs=0;gs<6;gs++)
  465.             {
  466.          if(newmima1[gs]!=newmima2[gs])
  467.          break;
  468.          }
  469.          
  470. if(gs<6)
  471.    {
  472.    write_zl(0x01);
  473.    disp_hzi(different,14,dizhi1[0]);
  474.    disp_hzi(newsr,10,dizhi2[1]);
  475.    delay_50ms(10000);
  476.    duizhao();
  477.    }
  478. else
  479.   {       
  480.         for(gs=0;gs<6;gs++)
  481.         {
  482.         mima[gs]=newmima1[gs];
  483.        
  484.         }
  485.       write_zl(0x01);
  486.       disp_hzi(xiugaicg,8,dizhi1[0]);         
  487.       delay_50ms(10000);  
  488. }
  489. }
  490. //**********報警聲音**************
  491. void baojingsy()
  492. {
  493. uint i,j;
  494. disp_hzi(ruqints,16,dizhi1[0]);
  495. disp_hzi(ruqinjb,12,dizhi3[1]);
  496. for(j=0;j<60;j++)
  497. for(i=0;i<10000;i++)
  498. {
  499. beep=0;
  500. delay_50us(1);
  501. beep=1;
  502. delay_50us(1);
  503. }
  504. }
  505. //************門鈴聲音*************
  506. void anmenlingsy()
  507. {
  508. uint j;
  509. for(j=0;j<500;j++)
  510. {
  511. beep=0;
  512. delay_50us(1);
  513. beep=1;
  514. delay_50ms(10);
  515. }
  516. }
  517. //提示音
  518. void tishiyin1()
  519. {
  520. uint i;
  521. for(i=0;i<100;i++)
  522. {
  523. beep=0;
  524. delay_50us(5);
  525. beep=1;
  526. delay_50us(5);
  527. }
  528. }
  529. //提示音2
  530. void tishiyin2()
  531. {
  532. uint i;
  533. for(i=0;i<1000;i++)
  534. {
  535. beep=0;
  536. delay_50us(1);
  537. beep=1;
  538. delay_50us(1);
  539. }
  540. }
  541. //A函數的作用:當沒有按鍵按下的時候停在這個界面,當有按鍵按下的時候返回
  542. //control控制的界面
  543. void  control_A()
  544. {

  545.   uchar temp1;
  546. delay_50ms(1000);
  547. write_zl(0x01);
  548. jiemian_mr();
  549. temp1=input();
  550. if(temp1!=0x99)
  551. ;
  552. }
  553. //在control控制界面下C按鍵所確定的函數
  554. //按下C之后步進電機關門,然后經過短暫延時重新回到control所確定的界面
  555. void  control_C()
  556. {
  557.    bjzz();
  558.    delay_50ms(500);
  559. }
  560. //***************非密碼按鍵的控制函數***************************
  561. //***此函數的作用即判斷A,B,D,E,F,*,#這幾個按鍵的按下************
  562. void control()//流程控制函數
  563. {
  564.   control_gn='Z';
  565.   jiemian_yr();                                                                                   //顯示家中有人的界面
  566.   control_gn=input();
  567.   if(control_gn!='Z')
  568.   {
  569.   delay_50ms(100);
  570.   switch(control_gn)
  571.   {
  572.   case 'A':{control_A();delay_50ms(100);break;}                  //人離開家的時候按下A使得顯示界面換成家中無人的界面                                                                                                                  // 否則默認的都是家中有人
  573.   case 'B':{anmenlingsy();delay_50ms(10);break;}                //B鍵用于門外按門鈴
  574.   case 'C':{control_C();delay_50ms(10);break;}                  //C鍵的作用是室外的關門,僅用于關門
  575.   case 'D':{control();break;}       
  576.   case '*':{write_zl(0x01);panduancz();delay_50ms(10);break;}   //*鍵的作用 清除原有界面 后密碼重置
  577.   case '#':{write_zl(0x01);delay_50ms(100);panduankg();break;}   //#鍵的作用是門外經過密碼驗證后開門                                               
  578.   default: {break;}
  579.   }
  580.   }                                         
  581. }
  582. void mnkai() interrupt 0//門內開
  583. {
  584. delay_50ms(100);
  585. bjzz();
  586. }
  587. void mnguan() interrupt 2//門內關
  588. {
  589. delay_50ms(100);
  590. bjdz();
  591. }
  592. void main()
  593. {         
  594.         EA=1; //打開終端總開關
  595.         EX0=1;//打開外部中斷0
  596.         EX1=1;
  597.         IT0=0;//外部中斷0是低電平觸發
  598.         IT1=0;
  599.         P3=0x0f;//使步進電機的ABCD端的初始化都為低電平
  600.          while(1)
  601.          {
  602.          inti1();
  603.           control();     
  604.          }               
  605. }
復制代碼
回復

使用道具 舉報

5#
ID:1 發表于 2015-12-7 18:03 | 只看該作者
出現的問題:
問題1: 不能新建數組的問題解決
       原來好好的但是只要新建一個數組就會全部顯示出錯
   
解決方法:   
        只需在新建數組前加上 code即可

問題2:  步進電機發熱嚴重

解決方法:
        步進電機的數據口,初始化都設為低電平

問題3:
       鍵盤的掃描函數出現問題
解決方法   按部進行排查。自己模擬

問題4:
      蜂鳴器的發聲聲音小
解決方法, 經過排查發現沒有給驅動電路加偏置電壓,加偏壓后解決
問題5:   單片機不能燒錄進去程序
解決方法:
        不能燒錄進去程序的原因是,加上了步進電機,使得單片機不能得到足夠的電壓以寫入程序
        去掉步進電機,再次燒錄-----ok
問題6:
   在LCD上的顯示地址都不能更改了?
解決方法:------


問題7:不能新建數組
解決方法:
由以下,在每個新建數組的前面加上一個code將其放在 ROM里便可
單片機中c語言中的code
        的code:程序存儲區
        data: 固定指前0x00--0x7f的128個RAM,可以用ACC直接讀寫的,速度快,生成的代碼也小
        idata: 固定指前面0x00--0xff的256個RAM,其中前128和data的完全一樣,只是因為訪問方式不同。
        idata類似于c語言中的指針訪問方式。匯編中的語言為 MOX ACC(c中的idata做指針式訪問效果很好)
        xdata: 外部的RAM,一般指外部的0x0000---0xffff空間,用DPTR訪問
        Pdata: 外部擴展RAM的低256字節,地址出現在A0--A7的上時讀寫,用M0VX ACC,@Rx讀寫。這個比較特殊。而且c51對此有bug建議不用
問題8:
為什么必須是全局變量gs?
而i,j不行呢?

問題9

為什么 xiugaicg的顯示地址不能更改?
回復

使用道具 舉報

6#
ID:98640 發表于 2015-12-8 13:33 | 只看該作者
admin 發表于 2015-12-7 18:03
出現的問題:
問題1: 不能新建數組的問題解決
       原來好好的但是只要新建一個數組就會全部顯示出錯
...

也是辛苦你了啊 本想著rar文件里面有就行了,沒想到居然給扒了出來。
回復

使用道具 舉報

7#
ID:98924 發表于 2015-12-9 01:50 | 只看該作者
劃過星空 發表于 2015-12-8 13:33
也是辛苦你了啊 本想著rar文件里面有就行了,沒想到居然給扒了出來。

哈哈 拔一拔更清楚 謝謝2樓主
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级做a爰片久久毛片免费看 | 91精品综合久久久久久五月天 | 亚洲伦理自拍 | 国产午夜精品福利 | 欧美亚洲一区二区三区 | 婷婷不卡 | 99久久精品国产一区二区三区 | 91精品国产综合久久久久久丝袜 | 久热精品在线 | 黄色欧美大片 | 伊大人久久 | 日韩精品一区二区三区在线 | 日本久久综合 | 亚洲第一免费播放区 | 亚洲视频欧美视频 | 国产综合久久 | 日韩精品成人免费观看视频 | 一级高清 | 天天操天天摸天天干 | 九色在线 | 亚洲免费在线观看 | 欧美激情亚洲 | www.亚洲免费| a视频在线观看 | 欧美在线a | 亚洲高清电影 | 亚洲色综合 | 精品国产一区二区在线 | 亚洲精品视频一区 | 久草久草久草 | 欧美成人一区二区 | 亚洲小视频 | 久久r免费视频 | 精品欧美在线观看 | 精品欧美乱码久久久久久1区2区 | 亚洲国产成人av好男人在线观看 | 日韩精品一区中文字幕 | 视频二区在线观看 | 亚洲综合天堂网 | 天堂一区二区三区四区 | 精品国产乱码久久久久久闺蜜 |