华鑫绿创
这个啊,很容易哦,我有四五个样本的,譬如说按密码锁的密码位分有六位八位的,按显示方式分有数码管和液晶的等等。我今年毕业时给舍友做的是六位的好像,ddb文件现在好像没有了,不过资料还在。发给你了,年轻人。记住,毕业设计的目的不是为了难住谁,而是为了让你们多学点只是而已,既然你们做这种毕业设计,那你肯定是电子、电气、计科、通信中的一种。找工作还是需要真本事的。资料发送中......请查收
尝试新鲜
程序设计内容
(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;
}
}
}
}
剪刀手七七
智能化多路串行数据采集/传输模块的设计广州市光机电工程研究中心 行联合 广州市方统生物科技有限公司 关 强引言 随着电子技术的不断发展,目前对各种物理量的检测和控制都可得以实现。微机检测控制系统不仅运用到航天航空、机器人技术、纺织机械、食品加工等工业过程控制,而且已经成为日常各种家用电器当中的主要组成部分。其中,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是其硬件原理图。结论 本文所述的智能化串行数据模块,可直接用于任何微机控制和检测系统中以取代原来的模数转换设计。经过实践检验,该模块功耗低、采样精度高、可靠性好、接口简便,有很高的实用价值。该智能模块的软件和硬件成功应用于生命科学仪器“热循环仪”的设计和实践中,使用方便,简单可行,节约成本,能够满足大多数数据采样的应用场合。资料来源:
新款的单片机都可以设置密码
单片机的毕业设计题目推荐:一个简单的指纹识别或者刷脸程序。 要完成单片机系统的开发,用户不仅需要掌握编程技术,还需要针对实际应用选择合理的单片机芯片和外围器件,
功能键S6---S15 数字键0-9S16---更改密码 S17---更改密码完毕后确认S18---重试密码、重新设定 S19---关闭密码锁初始密码:000
第一节课
这个啊,很容易哦,我有四五个样本的,譬如说按密码锁的密码位分有六位八位的,按显示方式分有数码管和液晶的等等。我今年毕业时给舍友做的是六位的好像,ddb文件现在好