• 回答数

    7

  • 浏览数

    331

玉米卧熊
首页 > 职称论文 > 单片机密码锁毕业论文专科

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

华鑫绿创

已采纳

这个啊,很容易哦,我有四五个样本的,譬如说按密码锁的密码位分有六位八位的,按显示方式分有数码管和液晶的等等。我今年毕业时给舍友做的是六位的好像,ddb文件现在好像没有了,不过资料还在。发给你了,年轻人。记住,毕业设计的目的不是为了难住谁,而是为了让你们多学点只是而已,既然你们做这种毕业设计,那你肯定是电子、电气、计科、通信中的一种。找工作还是需要真本事的。资料发送中......请查收

333 评论

littleCargod

这东西一般用RMB衡量

149 评论

尝试新鲜

程序设计内容

(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;

              }  

         }

    }

}

165 评论

cll19880211

哈哈。快点回答吧。好几天了

138 评论

剪刀手七七

智能化多路串行数据采集/传输模块的设计广州市光机电工程研究中心 行联合 广州市方统生物科技有限公司 关 强引言 随着电子技术的不断发展,目前对各种物理量的检测和控制都可得以实现。微机检测控制系统不仅运用到航天航空、机器人技术、纺织机械、食品加工等工业过程控制,而且已经成为日常各种家用电器当中的主要组成部分。其中,A/D(模拟数字转换)设备起着十分重要的作用。这样,一个系统中就会需要更多的A/D设备。一般是用扩展一块或多块A/D采集卡的方法去实现。当模拟量较少或是温度、压力等缓变信号场合,采用总线型A/D卡并不是最合适、最经济的方案。这里介绍一种以AT89C2051单片机为核心,采用TLC2543L 12位串行A/D转换器构成的采样模块,该模块的采样数据由单片机串口经电平转换后送到上位机(PC机)的串口COM1或COM2,形成一种串行数据采集串行数据传输的方式。主要元件功能介绍AT89C2051单片机AT89C2051是ATMEL公司推出的一种性能价格比极高的 8位单片机,其指令系统与MCS-51系列完全兼容。引脚排列如图1所示。TLC2543L串行A/D转换器 TLC2543L 采用SPI串行接口总线,SPI串行接口总线由Motorola公司提出,它是一种三线同步接口,分别为同步信号、输入信号和输出信号。另外芯片还有一根片选线,单片机通过片选线选通TLC2543L。其中,CLK为同步时钟脉冲,CS为片选线,DIN为单片机的数据输出和TLC2543L的数据输入线,DOUT为单片机的数据输入线和TLC2543L的数据输出线。图2为TLC2543L时序图。TLC2543L 是全双工的,即数据的发送和接收可同时进行。如果只是对TLC2543L写数据,单片机可以丢弃同时读入的数据;反之,如果只读数据,可以在命令字节后,写入任意数据。数据传送以字节为单位,并采用高位在前的格式。模块采用TI公司的TLC2543L 12位串行A/D转换器,使用开关电容逐次逼近法完成A/D转换过程。串行输入结构,能够大大节省51系列单片机I/O资源,且价格适中。其特点有: (1) 11个模拟输入通道; (2) 转换时间10 s;(3) 12位分辨率A/D转换器;(4) 3路内置自测试方式;(5) 采样率为66kbps;(6) 线性误差+1LSB(max)(7) 有转换结束(EOC)输出;(8) 具有单、双极性输出;(9) 可编程的MSB或LSB前导;(10)可编程的输出数据长度。 TLC2543L的引脚排列如图3所示。图3中AIN0~AIN10为模拟输入端; 为片选端;DIN 为串行数据输入端;DOUT为A/D转换结果的三态串行输出端;EOC为转换结束端;CLK为I/O时钟;REF+为正基准电压端;REF-为负基准电压端;VCC为电源;GND为地。电平转换器MAX232C MAX232C为RS-232收发器,简单易用,单+5V电源供电,仅需外接几个电容即可完成从TTL电平到RS-232电平的转换,引脚排列如图4所示。硬件设计 硬件电路如图5所示。单片机AT89C2051是整个系统的核心,TLC2543L对输入的模拟信号进行采集,转换结果由单片机通过(9脚)接收,AD芯片的通道选择和方式数据通过(8脚)输入到其内部的一个8位地址和控制寄存器,单片机采集的数据通过串口(3、2脚)经MAX232C转换成RS232电平向上位机传输。 单片机软件设计单片机程序主要包括串行数据采集/传输模块的系统信息、通道数、采集周期和通讯协议定义,以及数据采集和传输的标准子程序。TLC2543L的通道选择和方式数据为8位,其功能为:D7、D6、D5和D4用来选择要求转换的通道,D7D6D5D4=0000时选择0通道,D7D6D5D4=0001时选择1通道,依次类推;D3和D2用来选择输出数据长度,本程序选择输出数据长度为12位,即D3D2=00或D3D2=10;D1,D0选择输入数据的导前位,D1D0=00选择高位导前。TLC2543L在每次I/O周期读取的数据都是上次转换的结果,当前的转换结果在下一个I/O周期中被串行移出。第一次读数由于内部调整,读取的转换结果可能不准确,应丢弃。数据采集程序如下:sbit DATAIN=P1^1;sbit CLOCK=P1^0;sbit DATAOUT=P1^2;sbit CS=P1^3;bit datain_a_bit0(){ bit m=0;DATAOUT=1;m=DATAOUT;DATAIN=0;Nop();CLOCK=1;Nop();CLOCK=0;Return(m); }bit datain_a_bit1(){ bit m=0;DATAOUT=1;m=DATAOUT;DATAIN=1;Nop();CLOCK=1;Nop();CLOCK=0;Return(m); }单片机通过编程产生串行时钟,并按时序发送与接收数据位,完成通道方式/通道数据的写入和转换结果的读出,程序如下:unsigned int Tlc2543L(unsigned char ch){unsigned char i,chch=0;
unsigned int xdata xxx=0;
unsigned int xdata y=0;
CS=0;
Chch=ch<<4;
Y=chch;
Y<<=8;
I=0;
While(I<12)
{if((y&0x8000)==0)
{if(datain_a_bit0()==0) xxx&=0xfffe;
else xxx|=0x0001;
if(I!=11) xxx<<=1;
}else{if(datain_a_bit1()==0) xxx&=0xfffe;
else xxx|=0x0001;
if(I!=11) xxx<<=1;
}y<<=1;I+=1;}CS=1;Return(xxx);}串行数据传输模块包括串行口初始化子程序和数据传输子程序,各子程序分别如下。其中数据传输采用查询方式,也可以方便地改为中断方式。Void rs232init(){TMOD=0x20;
TH1=0xfd;
TR1=1;
SCON=0x50;
}void receandtran(){unsigned char da;
while(!RI)
RI=0;
Da=SBUF;
SBUF==da;
While(!TI);
TI=0;
}上位机接收数据所用C语言程序包括初始化子程序和接收子程序。各子程序分别如下:void cominit(void) {outportb(0x3fb,0x80); outportb(0x3f8,0x18); /与单片机波特率一致为9600bps*/outportb(0x3f9,0x00); outportb(0x3fb,0x03); /8位数据位,1位停止位,无奇偶校验*/outportb(0x3fc,0x03); /*Modem控制寄存器设置,使DTR和RTS输出有效*/outportb(0x3f9,0x00); /*设置中断允许寄存器,禁止一切中断*/}void data_rece(void) /*查询方式接收数据子程序*/{while(!kbhit()){while(!(inportb(0x3fd)&0x01));/*若接收寄存器为空,则等待*/printf("%x ",inportb(0x3f8)); /*读取结果并显示*/}getch();}智能化串行采集/传输模块在PCR仪中的应用在PCR仪的电路设计中,因需要检测的信号很多,包括热盖的温度检测,散热器的温度检测,腔体内部的温度检测,气流的温度检测,光信号的检测等等,为了简化电路,节约成本,减小体积,在选择A/D转换电路时选用了SPI总线的TLC2543,该芯片有多达11路的模拟信号输入端,完全满足PCR仪电路设计的需要,一个芯片既能完成检测多个信号的功能,又能节约单片机的资源,图6是其硬件原理图。结论 本文所述的智能化串行数据模块,可直接用于任何微机控制和检测系统中以取代原来的模数转换设计。经过实践检验,该模块功耗低、采样精度高、可靠性好、接口简便,有很高的实用价值。该智能模块的软件和硬件成功应用于生命科学仪器“热循环仪”的设计和实践中,使用方便,简单可行,节约成本,能够满足大多数数据采样的应用场合。资料来源:

352 评论

细毛1015

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

250 评论

dreamy8594

我今年我也是这个题目啊

97 评论

相关问答

  • 实用密码锁毕业论文

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

    sophialili 4人参与回答 2023-12-11
  • 专科单片机毕业论文题目

    单片机的毕业设计题目推荐:一个简单的指纹识别或者刷脸程序。 要完成单片机系统的开发,用户不仅需要掌握编程技术,还需要针对实际应用选择合理的单片机芯片和外围器件,

    宜木构思家具 4人参与回答 2023-12-06
  • 毕业论文单片机电子密码锁教案

    功能键S6---S15 数字键0-9S16---更改密码 S17---更改密码完毕后确认S18---重试密码、重新设定 S19---关闭密码锁初始密码:000

    虾虾虾虾酱 6人参与回答 2023-12-08
  • 单片机密码锁设计毕业论文

    第一节课

    优优来来 5人参与回答 2023-12-09
  • 单片机密码锁毕业论文专科

    这个啊,很容易哦,我有四五个样本的,譬如说按密码锁的密码位分有六位八位的,按显示方式分有数码管和液晶的等等。我今年毕业时给舍友做的是六位的好像,ddb文件现在好

    玉米卧熊 7人参与回答 2023-12-09