• 回答数

    6

  • 浏览数

    253

阳光365家具
首页 > 学术期刊 > 51单片机毕业论文设计

6个回答 默认排序
  • 默认排序
  • 按时间排序

鹤顶红IF

已采纳

8051单片机共有7种寻址方式。寻址方式是指令中确定操作数的形式,用来确定操作数所处的存储空间。 1.立即寻址:在指令中直接给出操作数 MOV A, #80H 8位操作数 MOV A, #2000H 16位操作数 2.直接寻址:指令中直接给出操作数地址 (1)SFR,这一存储空间只能使用直接寻址 MOV PSW, #50H (2)内部数据RAM,这一存储空间可以使用直接寻址和寄存器间接寻址 MOV A, 30H 3.寄存器寻址:以通用寄存器的内容作为操作数(通用寄存器包括A, B, DPTR, R0~R7) INC DPTR 注意:A、B既是通用寄存器,也是SFR(直接寻址) 4.寄存器间接寻址:以寄存器中的内容作为操作数的地址 能够用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP 区分内部数据RAM寻址和外部数据RAM寻址:外部数据RAM寻址指令上采用MOVX 对内部数据RAM寻址:使用8位的R0或者R1即可 MOV @R0, A 对外部数据RAM寻址:使用P2端口提供高8位地址,使用R0或者R1提供低8位地址;或者使用16位的DPTR提供地址 MOVX A, @R1 MOVX @DPTR, A 5.变址寻址:以基址寄存器PC或者DPTR与变址寄存器A中的内容之和作为操作数的地址 变址寻址只能对程序存储器中的数据进行寻址,由于程序存储器是只读的,因此变址寻址只有读操作,指令上采用MOVC MOVC A, @A+DPTR MOVC A, @A+PC 6.相对寻址:用于修改PC的值,使得PC加上指令中给出的一字节的偏移量 由于转移指令有两字节和三字节这两种形式,因此偏移量的范围分别为-126~+129和-125~+130 SJMP 80H 7.位寻址:以位地址中的内容为操作数 SETB 20H MOV 32H, C 总结一下各种寻址方式的使用场合: 立即寻址:常数 直接寻址:SFR和内部数据RAM 寄存器寻址:寄存器区 寄存器间接寻址:内部数据RAM和外部数据RAM 变址寻址:程序存储器 相对寻址:PC 位寻址:位地址区

130 评论

调皮捣蛋妈

电子密码锁摘要 本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安工作,有极高的安全系数。关键词 电子密码锁 电压比较器 555单稳态电路 计数器 JK触发器 UPS电源。1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。

273 评论

xuliduruixue

新款的单片机都可以设置密码

86 评论

dp73711528

程序设计内容

(1). 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。

(2). 密码的输入问题:  由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。

(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。

C语言源程序

#include unsigned char code ps[]={1,2,3,4,5};

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,                               

0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

unsigned char pslen=9; unsigned char templen;

unsigned char digit; unsigned char funcount;

unsigned char digitcount;

unsigned char psbuf[9];

bit cmpflag;

bit hibitflag;

bit errorflag;

bit rightflag;

unsigned int second3;

unsigned int aa;

unsigned int bb;

bit alarmflag;

bit exchangeflag;

unsigned int cc;

unsigned int dd;

bit okflag;

unsigned char oka;

unsigned char okb;

void main(void)

{  

unsigned char i,j;  

P2=dispcode[digitcount];  

TMOD=0x01;  

TH0=(65536-500)/256;  

TL0=(65536-500)%6;  

TR0=1;  

ET0=1;  

EA=1;  

while(1)   

  {      

if(cmpflag==0)        

{          

if(P3_6==0) //function key           

  {              

for(i=10;i>0;i--)              

for(j=248;j>0;j--);      

         if(P3_6==0)                

{                

   if(hibitflag==0)       

              {     

                  funcount++;  

                     if(funcount==pslen+2)

                        {  

                         funcount=0;

                          cmpflag=1;

                         }

                       P1=dispcode[funcount];

                    }

                    else

                      {

                         second3=0;

                      }  

                 while(P3_6==0);

                }

            }

          if(P3_7==0) //digit key

            {

              for(i=10;i>0;i--)

              for(j=248;j>0;j--);

              if(P3_7==0)

                {

                  if(hibitflag==0)

                    {

                      digitcount++; 

                  if(digitcount==10)

                        {

                          digitcount=0;

                        }

                      P2=dispcode[digitcount];

                      if(funcount==1)

                        {

                          pslen=digitcount;                          

templen=pslen;

                        }

                        else if(funcount>1)

                          {  

                           psbuf[funcount-2]=digitcount;

                          }

                    }

                    else

                      {

                        second3=0;

                      }

                  while(P3_7==0);

                }

            }

        }  

       else

          {

            cmpflag=0;

            for(i=0;i

              {  

               if(ps[i]!=psbuf[i])

                  {

                    hibitflag=1;

                    i=pslen;

                    errorflag=1;

                    rightflag=0;

                    cmpflag=0;

                    second3=0;

                    goto a;  

                 }

              }   

          cc=0;  

           errorflag=0;  

           rightflag=1;

            hibitflag=0;

a:   cmpflag=0;

          }

}

}

void t0(void)

interrupt 1 using 0 {   TH0=(65536-500)/256;  

TL0=(65536-500)%6;  

if((errorflag==1) && (rightflag==0))  

{

      bb++;

      if(bb==800)

        {

          bb=0;

          alarmflag=~alarmflag;

        }

      if(alarmflag==1)

        {

          P0_0=~P0_0;

        }

      aa++;

      if(aa==800)

        {

          aa=0;

          P0_1=~P0_1;

        }

      second3++;

      if(second3==6400)

        {

          second3=0;

          hibitflag=0;

          errorflag=0;

          rightflag=0;

          cmpflag=0;

          P0_1=1;  

         alarmflag=0;

          bb=0;  

         aa=0;  

       }

    }

  if((errorflag==0) && (rightflag==1))

    {

      P0_1=0;

      cc++;

      if(cc<1000)

        {

          okflag=1;

        }

        else if(cc<2000)

          {

            okflag=0;

          }

          else

            {

              errorflag=0;

              rightflag=0;

              hibitflag=0;

              cmpflag=0;

              P0_1=1;

              cc=0;  

             oka=0;

              okb=0;

              okflag=0;  

             P0_0=1;  

           }

      if(okflag==1)

        {  

         oka++;  

         if(oka==2)

            {

              oka=0;

              P0_0=~P0_0;

            }

        }

        else

          {

            okb++;

            if(okb==3)

              {

                okb=0;

                P0_0=~P0_0;

              }  

         }

    }

}

322 评论

葉落罒無痕

你先想一个用89C51.做一个什么系统..例如闪灯阿.广告灯阿..什么得..你用51把接法..和怎么接..还有.你用汇编还是用C语言.程序怎么样...写在一起.就可以啦.

324 评论

一杯清茶NJ

用汇编还是用C语言.

90 评论

相关问答

  • 单片机设计类毕业论文题目

    单片机控制自动恒温箱的设计(电路图+原理图+程序)双坐标步进电机控制系统的设计(论文) 原材料仓物位智能检测系统的设计 单片机多用宽频转速计的设计智能家居安防红

    SevenLikeSmile 2人参与回答 2023-12-09
  • 单片机论文设计

    单片机是经历长期开发与应用的嵌入式系统电子设备,与计算机相比,它具有许多显著的特点。这是我为大家整理的单片机科技论文,仅供参考! 单片机在现代科技中的应用与前景

    打怪兽789 2人参与回答 2023-12-12
  • 单片机的毕业设计论文题目

    单片机控制自动恒温箱的设计(电路图+原理图+程序) 双坐标步进电机控制系统的设计(论文) 原材料仓物位智能检测系统的设计 单片机多用宽频转速计的设计 智能家居安

    橙橙小狐狸 4人参与回答 2023-12-09
  • 单片机毕业论文设计资料库

    目录摘 要 IAbstract II目录 III第一章 绪 论 - 1 -1.1课题的背景 - 1 -1.2课题意义 - 2 -1.3本章小结 - 3 -第二

    程Celeste 3人参与回答 2023-12-09
  • 51单片机篮球计分器毕业论文

    篮球赛计时记分器 论文编号:JD805 论文字数:10012,页数:24 篮球赛计时记分器 摘要:本文介绍一种由AT89C51编程控制LED七段数码管作显示的球

    让我爱你 6人参与回答 2023-12-11