找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2102|回复: 12
打印 上一主题 下一主题
收起左侧

51单片机密码锁程序为什么烧录没有成功?

[复制链接]
跳转到指定楼层
楼主
ID:448260 发表于 2018-12-20 12:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的51单片机用的stc89c52的芯片,用下面的密码锁程序为什么烧录没有成功

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar old1,old2,old3,old4,old5,old6; //??????000000
  5. uchar new1,new2,new3,new4,new5,new6;  //???MCU???????????????
  6. uchar a=16,b=16,c=16,d=16,e=16,f=16; //?????????????????
  7. uchar wei,key,temp;
  8. bit allow,genggai,ok,wanbi,retry,close;  //??????λ
  9. sbit dula=P2^6;
  10. sbit wela=P2^7;
  11. sbit beep=P2^3;
  12. unsigned char code table[]=
  13. {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
  14. 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
  15. void delay(unsigned char i)
  16. {
  17. uchar j,k;
  18.   for(j=i;j>0;j--)
  19.     for(k=125;k>0;k--);
  20. }
  21. void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
  22. {
  23.    dula=0;
  24.    P0=table[a];
  25.    dula=1;
  26.    dula=0;
  27.    
  28.    wela=0;
  29.    P0=0xfe;
  30.    wela=1;
  31.    wela=0;
  32.    delay(5);
  33.    
  34.    P0=table[b];
  35.    dula=1;
  36.    dula=0;
  37.    
  38.    P0=0xfd;
  39.    wela=1;
  40.    wela=0;
  41.    delay(5);
  42.    P0=table[c];
  43.    dula=1;
  44.    dula=0;
  45.    
  46.    P0=0xfb;
  47.    wela=1;
  48.    wela=0;
  49.    delay(5);
  50.    
  51.    P0=table[d];
  52.    dula=1;
  53.    dula=0;
  54.    
  55.    P0=0xf7;
  56.    wela=1;
  57.    wela=0;
  58.    delay(5);
  59.    
  60.    P0=table[e];
  61.    dula=1;
  62.    dula=0;
  63.    
  64.    P0=0xef;
  65.    wela=1;
  66.    wela=0;
  67.    delay(5);
  68.    
  69.    P0=table[f];
  70.    dula=1;
  71.    dula=0;
  72.    
  73.    P0=0xdf;
  74.    wela=1;
  75.    wela=0;
  76.    delay(5);
  77. }

  78. void keyscan()
  79. {
  80.   {
  81.     P3=0xfe;
  82.     temp=P3;
  83.     temp=temp&0xf0;
  84.     if(temp!=0xf0)
  85.     {
  86.       delay(10);
  87.       if(temp!=0xf0)
  88.       {
  89.         temp=P3;
  90.         switch(temp)
  91.         {
  92.           case 0xee:
  93.                key=0;
  94.       wei++;
  95.                break;
  96.           case 0xde:
  97.                key=1;
  98.       wei++;
  99.                break;
  100.           case 0xbe:
  101.                key=2;
  102.       wei++;
  103.                break;
  104.           case 0x7e:
  105.                key=3;
  106.       wei++;
  107.                break;
  108.          }
  109.          while(temp!=0xf0)
  110.         {
  111.            temp=P3;
  112.            temp=temp&0xf0;
  113.            beep=0;
  114.          }
  115.          beep=1;
  116.       }
  117.     }
  118.     P3=0xfd;
  119.     temp=P3;
  120.     temp=temp&0xf0;
  121.     if(temp!=0xf0)
  122.     {
  123.       delay(10);
  124.       if(temp!=0xf0)
  125.       {
  126.         temp=P3;
  127.         switch(temp)
  128.         {
  129.           case 0xed:
  130.                key=4;
  131.       wei++;
  132.                break;
  133.           case 0xdd:
  134.                key=5;
  135.       wei++;
  136.                break;
  137.           case 0xbd:
  138.                key=6;
  139.       wei++;
  140.                break;
  141.           case 0x7d:
  142.                key=7;
  143.       wei++;
  144.                break;
  145.          }
  146.          while(temp!=0xf0)
  147.          {
  148.            temp=P3;
  149.            temp=temp&0xf0;
  150.            beep=0;
  151.          }
  152.          beep=1;
  153.       }
  154.       }
  155.     P3=0xfb;
  156.     temp=P3;
  157.     temp=temp&0xf0;
  158.     if(temp!=0xf0)
  159.     {
  160.       delay(10);
  161.       if(temp!=0xf0)
  162.       {
  163.         temp=P3;
  164.         switch(temp)
  165.         {
  166.           case 0xeb:
  167.                key=8;
  168.       wei++;
  169.                break;
  170.           case 0xdb:
  171.                key=9;
  172.       wei++;
  173.                break;
  174.       
  175.           case 0xbb:
  176.                genggai=1;
  177.       wei=0;
  178.                break;
  179.           case 0x7b:
  180.         if(allow)
  181.                ok=1;
  182.                break;
  183.          }
  184.         while(temp!=0xf0)
  185.          {
  186.            temp=P3;
  187.            temp=temp&0xf0;
  188.            beep=0;
  189.          }
  190.          beep=1;
  191.       }
  192.       }
  193.    P3=0xf7;
  194.     temp=P3;
  195.     temp=temp&0xf0;
  196.     if(temp!=0xf0)
  197.     {
  198.       delay(10);
  199.       if(temp!=0xf0)
  200.       {
  201.         temp=P3;
  202.         switch(temp)
  203.         {
  204.           case 0xe7:
  205.         retry=1;
  206.                break;
  207.           case 0xd7:
  208.         close=1;
  209.                break;
  210.          }
  211.         while(temp!=0xf0)
  212.          {
  213.            temp=P3;
  214.            temp=temp&0xf0;
  215.            beep=0;
  216.          }
  217.          beep=1;
  218.       }
  219.       }
  220. }
  221. }
  222. void shumima()  //??????????????????з???
  223. {
  224. if(!wanbi)
  225. {
  226. switch(wei)
  227. {
  228.   case 1:new1=key;
  229.        if(!allow) a=17;
  230.       else a=key; break;
  231.   case 2:new2=key;
  232.     if(a==17) b=17;
  233.     else b=key; break;
  234.   case 3:new3=key;
  235.     if(a==17) c=17;
  236.     else c=key; break;
  237.   case 4:new4=key;
  238.     if(a==17) d=17;
  239.     else d=key; break;
  240.   case 5:new5=key;
  241.     if(a==17) e=17;
  242.     else e=key; break;
  243.   case 6:new6=key;
  244.     if(a==17) f=17;
  245.     else f=key;
  246.     wanbi=1; break;
  247. }
  248. }
  249. }
  250. void yanzheng()   //?????????????
  251. {
  252. if(wanbi)  //??е???λ????????????????????
  253. {
  254. if((new1==old1)&(new2==old2)&(new3==old3)&(new4==old4)&(new5==old5)&(new6==old6))
  255.   allow=1; //????????????????????allowe???
  256. }
  257. }
  258. void main()
  259. {
  260. while(1)
  261. {
  262.   keyscan();
  263.   shumima();
  264.   yanzheng();
  265.   if(allow)  //????????allow?1??????
  266.   {
  267.    P1=0x00;
  268.    if(!genggai)
  269.     wanbi=0;
  270.   }
  271.   if(genggai)   //??S16??????????????£?genggai?????
  272.   {
  273.    if(allow)  //????????????????и???????????
  274.    {
  275.     while(!wanbi) //???μ???λ????????趨???????????????
  276.     {
  277.       keyscan();
  278.      shumima();
  279.      if(retry|close)  //????????????S18??????????????S19???????????????
  280.      { wanbi=1;
  281.       break;
  282.      }
  283.      display(a,b,c,d,e,f);
  284.     }
  285.    }
  286.   }
  287.   if(ok)   //???????????????????λ??????????????????????′???????????????
  288.   {    //????????′????Ч
  289.    ok=0; wei=0;
  290.    genggai=0;
  291.    old1=new1;old2=new2;old3=new3; //??????????????????
  292.    old4=new4;old5=new5;old6=new6;
  293.    a=16;b=16;c=16;d=16;e=16;f=16;
  294.   }
  295.   if(retry) //?????????S18?????£?retry????λ
  296.   {
  297.   retry=0; wei=0;wanbi=0;
  298.   a=16;b=16;c=16;d=16;e=16;f=16;
  299.   new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;  
  300.   }
  301.   if(close)  //????????????????????£?close????λ
  302.   {
  303.    close=0;genggai=0;//???б???????????
  304.    wei=0; wanbi=0;
  305.    allow=0;
  306.    P1=0xff;
  307.    a=16;b=16;c=16;d=16;e=16;f=16;
  308.    new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
  309.   }
  310.   display(a,b,c,d,e,f); //?????
  311. }
  312. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:424598 发表于 2018-12-20 14:18 来自手机 | 只看该作者
报什么错也没贴。就你这一堆?号的代码。报错挺正常的
回复

使用道具 举报

板凳
ID:448597 发表于 2018-12-20 15:06 | 只看该作者
已经检测了你的程序,没有语法错误,也能生成HEX文件。建议作者自己结合硬件原理和程序对照查错。硬件出问题的可能性大。
回复

使用道具 举报

地板
ID:450777 发表于 2018-12-20 15:33 | 只看该作者
哎哟不错啊
回复

使用道具 举报

5#
ID:247041 发表于 2018-12-20 17:02 | 只看该作者
你是烧录有问题    还是编译有问题  还是功能有问题  说清楚  多放两张照片  不用花钱
回复

使用道具 举报

6#
ID:7485 发表于 2018-12-20 18:19 | 只看该作者
是用什么烧录器烧录的?
回复

使用道具 举报

7#
ID:451035 发表于 2018-12-20 20:11 | 只看该作者
烧录失败有很多原因:根据下载方式的不同,会有不同的原因,比如不支持热插拔,要先断一下电。
回复

使用道具 举报

8#
ID:451129 发表于 2018-12-20 21:44 | 只看该作者
应该是硬件问题了,因为检测了你的程序,没有语法错误,也能生成HEX文件。
回复

使用道具 举报

9#
ID:448260 发表于 2018-12-21 21:20 | 只看该作者
ssk7793 发表于 2018-12-20 14:18
报什么错也没贴。就你这一堆?号的代码。报错挺正常的

我是个菜鸟。。。。
回复

使用道具 举报

10#
ID:448260 发表于 2018-12-21 21:21 | 只看该作者
ahshmj 发表于 2018-12-20 18:19
是用什么烧录器烧录的?

stc-isp-15烧录的
回复

使用道具 举报

11#
ID:448260 发表于 2018-12-21 21:22 | 只看该作者
12312312300 发表于 2018-12-20 21:44
应该是硬件问题了,因为检测了你的程序,没有语法错误,也能生成HEX文件。

网购的51单片机
回复

使用道具 举报

12#
ID:494048 发表于 2019-3-22 17:06 | 只看该作者
没有注释看着很麻烦啊
回复

使用道具 举报

13#
ID:491848 发表于 2019-3-23 07:01 来自手机 | 只看该作者
可能吧硬件出了问题,还有你最好写的时候加注释
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表