单片机实习报告_第1页
单片机实习报告_第2页
单片机实习报告_第3页
单片机实习报告_第4页
单片机实习报告_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机应用系统设计实践汇报专业:电气工程及其自动化学生姓名:班级:学号:指导教师:实习时间:一、简朴I/O口控制1.训练目的和内容熟悉并掌握对MSP430单片机的I/O口的操作以及定期器/计数器的使用措施,设计由8个LED灯构成的“流水灯”,实现每隔相似的时间,循环点亮一种灯,一种方向结束后,反向循环。2.硬件电路图图1.1为msp430最小系统电路图,图1.2为8个LED灯的硬件连接图。图1.1msp430最小系统电路图图1.2LED硬件连接图3.措施运用定期器设置延时,并在中断服务程序中使P2口输出的值向一种方向移一位,且在末位补‘1’(低电平点亮);判断到‘0’移位到该方向第一位后,设置成向另一方向移位,且在末位(沿本次移位方向数是末位)补‘1’。图1.3即为流水灯程序流程图。图1.3流水灯程序流程图4.成果程序调试成功,“流水灯”正常运行,预设功能都可实现。5.分析与讨论初次接触MSP430单片机,体会到了其独特的内部构造,以及由此带来的新奇的编程路线,例如使用I/O口之前要先设置其输入输出方向。该设计属于基础类型,轻易掌握。6.附录:源程序#include"msp430x14x.h"voidTimerA_Init(void);voidmain(void){WDTCTL=WDTPW+WDTHOLD;//StopWDTP2DIR|=0xFF;P2OUT=0xfe;//给初始化值TimerA_Init();_EINT();//Enableinterruptswhile(1);}voidTimerA_Init(void){TACTL=TASSEL0+TACLR+ID_3;//ACLK,clearTAR,8分频TACCTL0=CCIE;//CCR0interruptenabledTACCR0=4096;//定期一秒TACTL|=MC0;//StartTimer_ainupmode}#pragmavector=TIMERA0_VECTOR__interruptvoidTimer_A(void){staticinti=0;if(i){ P2OUT>>=1;//右移一位 P2OUT|=0x80;//最终一位补1if(P2OUT==0xfe)i=0;}else{P2OUT<<=1;//左移一位P2OUT|=0x01;//最终一位补1if(P2OUT==0x7f)//检测与否移到LED7i=1;}}二、键盘扫描1.训练目的和内容巩固MSP430单片机I/O口的操作措施,熟悉并掌握数码管的使用措施,设计实现按下某一按键后,用数码管显示对应的键值。2.硬件连接图图2.1为键盘电路原理图,图2.2为数码管电路原理图。图2.1键盘电路图图2.2数码管电路图3.措施采用行扫描的方式。图2.3即为键盘扫描程序流程图。图2.3键盘扫描程序流程图4.成果表2.1列出了执行成果。表2.1执行成果表数值第一列第二列第三列第四列第一行123F第二行4560第三行789E第四行ABCD5.分析与讨论在编程与调试过程中碰到的问题有如下几种。问题1:显示数值与按键值不一致。分析原因:没有去抖程序,各管脚接受到的高下电平不稳定。处理措施:加上去抖程序。调试成果:显示数值与所按键值一致,程序正常运行。问题2:估计每按一次按键,使数码管各片显示的内容左移一片,并使最终一片数码管显示新读入的按键值,成果每按一次按键所有数码管都显示新读入的按键值。分析原因:在按键按下的有效时间内足够程序多次运行,即多次读入该按键值,数码管显示内容多次移位。处理措施:在键盘扫描函数定义内部变量i,初始化为零。仅当i=0时容许读数。每次确认有键按下(延时去抖)后,若i为0,则返回键值并置i为1;否则返回0XFF(无效按键值)。确认按键松开(也须有延时去抖)后,i复0。调试成果:数码管显示内容随按键正常移位,程序修改成功。6.附录:程序/程序功能:实现按键读值,数码管显示/#include<msp430x44x.h>#defineucharunsignedchar#defineuintunsignedintucharconstcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};inta=0;voiddelayms(uintms){uinti=0,j=0;for(i=ms;i>0;i--)for(j=500;j>0;j--);}intkeyscan(void){intkey;charsccode,recode;P3OUT=0x00;if((P3IN&0xf0)!=0xf0){delayms(20);if((P3IN&0xf0)!=0xf0){sccode=0xfe;while((sccode&0x0f)!=0x0f){P3OUT=sccode;if((P3IN&0xf0)!=0xf0){recode=(P3IN&0xf0)|0x0f;key=(sccode&recode);returnkey;}elsesccode=(sccode<<1)|0x01;}}return0xff;}return0xff;}intgetkeyval(intnumm){intnum;switch(numm){case0xe7:num=15;break;case0xeb:num=0;break;case0xed:num=14;break;case0xee:num=13;break;case0xd7:num=3;break;case0xdb:num=6;break;case0xdd:num=9;break;case0xde:num=12;break;case0xb7:num=2;break;case0xbb:num=5;break;case0xbd:num=8;break;case0xbe:num=11;break;case0x77:num=1;break;case0x7b:num=4;break;case0x7d:num=7;break;case0x7e:num=10;break;default:num=255;}returnnum;}voidmain(){intkey;WDTCTL=WDTPW+WDTHOLD;P1DIR=0xFF;P6DIR=0xFF;P1OUT=0x00;P1OUT=0x00;P1SEL=0;P3DIR=0x0f;P6OUT=0x04;P1OUT=0x01;P6OUT=0x02;delayms(10);while(1){key=getkeyval(keyscan());if(key!=255)P1OUT=code[key];}}3.A/D转换的应用1.训练目的和内容熟悉并掌握MSP430内部ADC12芯片的运行原理和操作措施,设计实现一种满量程为2.5v的数字电压表,用数码管显示采集到的电压值。2.硬件原理图Msp430最小系统原理图参照试验一,数码管电路原理图参照试验二。图3.1为ADC12内部构造图。图3.1ADC12内部构造图3.措施(1)图3.2即为运用ADC12采集电压的程序流程图。图3.2ADC12采集电压程序流程图(2)计算公式参见公式3.1。寄存器中的值/4096*2500=电压值(mv)(3.1)4.成果表3.1列出了执行成果。表3.1执行成果表最小值(V)最大值(V)转动电位器旋钮(V)0.0032.4990.003—2.4995.分析与讨论采集到的电压值的计算原理为:寄存器中的值/寄存器满值*电压表满量程(mv)=电压值(mv)。故,当选用不一样的电压参照源时,要根据不一样的电压表量程值修改程序中的计算公式。6.附录:程序/ADC采集程序/#include"msp430x44x.h"unsignedintAD_Value;voidADC_Init(void);unsignedintADC_Simple_Shift(void);voiddelayms(inta){inti=500;for(;a>0;a--)while(i--);}voidmain(void){unsignedcharconstcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};WDTCTL=WDTPW+WDTHOLD;P6DIR=0xff;P1DIR=0xff;P6OUT=0x00;P1OUT=0x00;ADC_Init();while(1){AD_Value=ADC_Simple_Shift();AD_Value=AD_Value*2500;AD_Value=AD_Value/4096;P6OUT=0x04;P1OUT=0x01;P6OUT=0x02;P1OUT=code[AD_Value/1000]&0x7f;P6OUT=0x00;P1OUT=0x00;delayms(1);P6OUT=0x04;P1OUT=0x02;P6OUT=0x02;P1OUT=code[AD_Value/100%10];P6OUT=0x00;P1OUT=0x00;delayms(1);P6OUT=0x04;P1OUT=0x04;P6OUT=0x02;P1OUT=code[AD_Value/10%10];P6OUT=0x00;P1OUT=0x00;delayms(1);P6OUT=0x04;P1OUT=0x08;P6OUT=0x02;P1OUT=code[AD_Value%10];P6OUT=0x00;P1OUT=0x00;delayms(1);}}voidADC_Init(void){P6SEL|=BIT0;ADC12CTL0=ADC12ON+SHT0_8+MSC;ADC12CTL1=SHP+CONSEQ_2;//单通道多次转换ADC12MCTL0=INCH_0+SREF_1;//设置存储控制寄存器//ADC12CTL0|=ENC;//使能转换//ADC12CTL0|=ADC12SC;}unsignedintADC_Simple_Shift(void){unsignedintad_result;ADC12CTL0|=ENC;//使能转换ADC12CTL0|=ADC12SC;if(ADC12CTL1&0x01);ad_result=ADC12MEM0;ADC12CTL0&=~ENC;//取消使能转换,为下次做准备returnad_result;}4、数字密码锁的设计与实现1.训练目的和内容巩固MSP430单片机试验箱各个基础模块的运行原理和操作措施,设计实现一种可输入密码开锁,按某一按键三次可提醒密码,并有修改密码功能、出错报警功能的数字密码锁。2.硬件连接图Msp430最小系统原理图和LED灯原理图参照试验一,键盘电路原理图参照试验二。3.措施图4.1即为数字密码锁的程序流程图。图4.1数字密码锁程序流程图4.成果密码锁预期功能都可实现,程序运行正常。5.分析与讨论密码锁功能复杂,编程过程中先完毕基本的可开锁功能,然后一项一项加功能,最终实现了预设的所有内容。密码锁功能多,实现起来编程任务量大。程序中有大量的控制字变量和条件判断语句,用以保证各个功能界面之间正常跳转,不发生错串。要实现密码锁预设的所有功能,需要对系统性的程序有精确把握的能力。6.附录:程序#include<string.h>#include<msp430x44x.h>#include"ascii.h"//用于寄存ascii码的头文献#include"ziku.h"//用于寄存中文字库的头文献#defineucharunsignedchar#defineuintunsignedint#defineDIN_HP6DIR|=BIT6,P6OUT|=BIT6#defineDIN_LP6DIR|=BIT6,P6OUT&=~BIT6#defineCLK_HP6DIR|=BIT7,P6OUT|=BIT7#defineCLK_LP6DIR|=BIT7,P6OUT&=~BIT7#defineDC_HP6DIR|=BIT5,P6OUT|=BIT5#defineDC_LP6DIR|=BIT5,P6OUT&=~BIT5#defineCE_HP6DIR|=BIT4,P6OUT|=BIT4#defineCE_LP6DIR|=BIT4,P6OUT&=~BIT4#defineRST_HP6DIR|=BIT3,P6OUT|=BIT3#defineRST_LP6DIR|=BIT3,P6OUT&=~BIT3intt=2;/************************************************名称:write_command(ucharcmd)**功能:向液晶中写命令**阐明:cmd:要写的命令**********************************************/voidwrite_command(ucharcmd){uchari;CE_L;//容许写入数据DC_L;//DC=0写入命令for(i=0;i<8;i++){if(cmd&0x80)DIN_H;elseDIN_L;CLK_L;//上升沿采样cmd<<=1;CLK_H;}CE_H;//严禁写入}/************************************************名称:write_data(uchardat)**功能:向液晶中写入数据**阐明:dat:待写入的数据**********************************************/voidwrite_data(uchardat){uchari;CE_L;//DC_H;for(i=0;i<8;i++){if(dat&0x80)DIN_H;elseDIN_L;CLK_L;dat<<=1;CLK_H;}CE_H;}/************************************************名称:set_pos(ucharx,uchary)**功能:设置RAM地址**阐明:x:0-83y:0-5**********************************************/voidset_pos(ucharx,uchary){write_command(0x40|y); write_command(0x80|x); }/************************************************名称:LCD_clear(void)**功能:清屏**********************************************/voidLCD_clear(void){unsignedinti;write_command(0x80);//起始列地址0 write_command(0x40);//起始行地址0 for(i=0;i<504;i++)write_data(0); }/************************************************名称:LCD_Init(void)**功能:初始化液晶**********************************************/voidLCD_Init(void){P5DIR=BIT0+BIT1+BIT2+BIT3+BIT4;//设置P5口的方向RST_L;//复位_NOP();RST_H;write_command(0x21);//工作模式,水平寻址,扩展指令write_command(0x13);//设置偏置系统(BSx)1:48write_command(0xc8);//设置电压VLCD=3.06+0.06*Vop,对比度调整write_command(0x06);//VLCD温度系数2write_command(0x20);//工作模式,水平寻址,常规指令write_command(0x0c);//一般模式write_command(0x40);//起始页地址0write_command(0x80);//起始列地址0LCD_clear();//清全屏}/************************************************名称:display(ucharx,uchary,ucharc)**功能:液晶输出字符(6*8字符)**阐明:x:0-83y:0-5 c:待显示的字符**备注:每行最多只能显示14个字符(6*n<=84)**********************************************/voiddisplay_char(ucharx,uchary,ucharc){uchari;c-=32;//地址x*=8;//字宽y*=1;//两行显示set_pos(x,y);//设置显示地址for(i=0;i<6;i++)write_data(font6x8[c][i]);//写入点阵数据}/************************************************名称:display_string(ucharx,uchary,uchar*str)**功能:液晶输出字符串(6*8字符)**阐明:x:0-83y:0-5 str:字符串的首地址**备注:每行最多只能显示14个字符(6*n<=84)**********************************************/voiddisplay_string(ucharx,uchary,char*str){while((*str!='\0')&&x<14){ display_char(x++,y,*str++);}}/************************************************名称:show_char(ucharx,uchary,ucharc)**功能:在任意位置输出一种8*16的ASCII字符**阐明:x:0-9y:0-2 c:字符的首地址**备注:每行最多只能显示10个字符(n*8<=84)**********************************************/voidshow_char(ucharx,uchary,ucharc){uchari,j;c-=32;//地址x*=8;//字宽y*=2;//两行显示for(i=0;i<2;i++){set_pos(x,y+i);//设置地址for(j=0;j<8;j++)write_data(nAsciiDot[c][j+8*i]);}}/************************************************名称:show_string(ucharx,uchary,uchar*str)**功能:在任意位置输出一串8*16的ASCII字符**阐明:x:0-9y:0-2 *str:字符串的首地址**备注:每行最多只能显示10个字符(n*8<=84)**********************************************/voidshow_string(ucharx,uchary,uchar*str){while(*str!='\0'){show_char(x++,y,*str++);}}/**********************************************函数名称:图片显示模式第一行中文显示************************************************/voidWrite_hanzis1_5110(){uchari,j;for(i=0;i<10;i=i+2){for(j=0;j<16;j++){write_data(hanzi[i][j]);}}}voidWrite_hanzis2_5110(){uchari,j;for(i=1;i<11;i=i+2){for(j=0;j<16;j++){write_data(hanzi[i][j]);}}}voiddelayms(uintms)//延时ms{uinti=0,j=0;for(i=ms;i>0;i--)for(j=500;j>0;j--);}intkeyscan(void)//键盘扫描{intkey;staticinti=0;charsccode,recode;P3OUT=0xf0;if((P3IN&0xf0)!=0xf0){delayms(20);if((P3IN&0xf0)!=0xf0){if(i==0){sccode=0xfe;//****检测第一行while((sccode&0x0f)!=0x0f){P3OUT=sccode;if((P3IN&0xf0)!=0xf0){recode=(P3IN&0xf0)|0x0f;key=(sccode&recode);i=1;returnkey;}elsesccode=(sccode<<1)|0x01;}}}}else{delayms(20);if((P3IN&0xf0)==0xf0)i=0;}return0xff;}uintgetkeyval(intnumm)//键盘扫描生成液晶码值{uintnum;switch(numm){case0xe7:num=70;break;case0xeb:num=48;break;case0xed:num=69;break;case0xee:num=68;break;case0xd7:num=51;break;case0xdb:num=54;break;case0xdd:num=57;break;case0xde:num=67;break;case0xb7:num=50;break;case0xbb:num=53;break;case0xbd:num=56;break;case0xbe:num=66;break;case0x77:num=49;break;case0x7b:num=52;break;case0x7d:num=55;break;case0x7e:num=65;break;default:num=257;}returnnum;}voidTimerA_Init(void)//启动定期器A,并启动中断{TACTL=TASSEL0+TACLR+ID_3;//ACLK,clearTAR,8分频TACCTL0=CCIE;_EINT();//CCR0interruptenabledTACCR0=4096;//定期一秒TACTL|=MC0;//StartTimer_ainupmodeP2OUT=0xfe;}#pragmavector=TIMERA0_VECTOR//定期器A中断服务程序__interruptvoidTimer_A(void){staticinti=8;i--;P2OUT=P2OUT<<1;P2OUT|=0x01;if(i==0){TACTL=0x0004;//定期器停止,定期器复位TACCTL0&=~CCIE;//关中断i=8;//中断次数反复初值t=1;P2OUT=0xff;}}voidmain(){charss[11]="input";charbb[11]="password";charaa[11]="";charcc[11]="";chardd[11]="";charee[11]="";charff[11]="";charxx[11]="----------";charyy[11]="----------";intd=56,m=56,i=0,n=0,k=0,h=3,r=0;P3DIR=0x0f;P2DIR=0xff;WDTCTL=WDTPW+WDTHOLD;LCD_Init();aa[10]='\0';bb[10]='\0';cc[10]='\0';ss[10]='\0';while(1){m=getkeyval(keyscan());if(m!=257){if(n==0)//*****输入密码界面**************************{if(i==0){strcpy(ss,"");strcpy(bb,"----------");strcpy(xx,"----------");strcpy(yy,"----------");}if(i<10){if(m!=69)if(m!=70){d=m;i++;aa[0]=aa[1];aa[1]=aa[2];aa[2]=aa[3];aa[3]=aa[4];aa[4]=aa[5];aa[5]=aa[6];aa[6]=aa[7];aa[7]=aa[8];aa[8]=aa[9];aa[9]=d;ss[0]=ss[1];ss[1]=ss[2];ss[2]=ss[3];ss[3]=ss[4];ss[4]=ss[5];ss[5]=ss[6];ss[6]=ss[7];ss[7]=ss[8];ss[8]=ss[9];ss[9]=42;}else{d=32;i--;aa[9]=aa[8];aa[8]=aa[7];aa[7]=aa[6];aa[6]=aa[5];aa[5]=aa[4];aa[4]=aa[3];aa[3]=aa[2];aa[2]=aa[1];aa[1]=aa[0];aa[0]=d;ss[9]=ss[8];ss[8]=ss[7];ss[7]=ss[6];ss[6]=ss[5];ss[5]=ss[4];ss[4]=ss[3];ss[3]=ss[2];ss[2]=ss[1];ss[1]=ss[0];ss[0]=d;}if(i==3){if(strcmp(aa,"555")==0)n=3;}}elseif(m==70){d=32;i--;aa[9]=aa[8];aa[8]=aa[7];aa[7]=aa[6];aa[6]=aa[5];aa[5]=aa[4];aa[4]=aa[3];aa[3]=aa[2];aa[2]=aa[1];aa[1]=aa[0];aa[0]=d;ss[9]=ss[8];ss[8]=ss[7];ss[7]=ss[6];ss[6]=ss[5];ss[5]=ss[4];ss[4]=ss[3];ss[3]=ss[2];ss[2]=ss[1];ss[1]=ss[0];ss[0]=d;}elseif(m==69)if(strcmp(aa,cc)==0)//*****密码输入对的***************{strcpy(ss,"isright");strcpy(bb,"password");strcpy(xx,"-*-*-*-*-*");strcpy(yy,"*-*-*-*-*-");P2OUT=0x7e;n=1;i=0;h=3;}else//*****密码输入不对的*******************{if(h>1){strcpy(ss,"timesleft");strcpy(bb,"ERROR!!!");strcpy(aa,"");h--;bb[9]=h+48;strcpy(xx,"##########");strcpy(yy,"##########");i=0;}else{strcpy(ss,"Roomalarm");strcpy(bb,"ERROR!!!");strcpy(xx,"##########");strcpy(yy,"##########");P2OUT=0xe7;n=2;TimerA_Init();//*****定期8秒,锁键盘***************}}}elseif(n==1)//*****密码输入对的后********************************、{if(i==0){if(m==70)//*****回删键,返回输入密码初始界面*****************{n=0;strcpy(ss,"input");strcpy(bb,"password");strcpy(xx,"----------");strcpy(yy,"----------");strcpy(aa,"");P2OUT=0xff;}elseif(m==69)//*****确认键,进入修改密码界面**********************{strcpy(ss,"wordinput");strcpy(bb,"Newpass-");strcpy(xx,"-.-.-.-.-.");strcpy(yy,".-.-.-.-.-");i++;}}else//*****开始输入新密码***********************{if(k==0)//*****初次输入新密码********************{if(i==1){strcpy(ss,"");strcpy(aa,"");strcpy(bb,"----------");strcpy(xx,"-.-.-.-.-.");strcpy(yy,".-.-.-.-.-");}if(i<11){if(m!=69)if(m!=70){d=m;i++;aa[0]=aa[1];aa[1]=aa[2];aa[2]=aa[3];aa[3]=aa[4];aa[4]=aa[5];aa[5]=aa[6];aa[6]=aa[7];aa[7]=aa[8];aa[8]=aa[9];aa[9]=d;ss[0]=ss[1];ss[1]=ss[2];ss[2]=ss[3];ss[3]=ss[4];ss[4]=ss[5];ss[5]=ss[6];ss[6]=ss[7];ss[7]=ss[8];ss[8]=ss[9];ss[9]=42;}else{d=32;i--;aa[9]=aa[8];aa[8]=aa[7];aa[7]=aa[6];aa[6]=aa[5];aa[5]=aa[4];aa[4]=aa[3];aa[3]=aa[2];aa[2]=aa[1];aa[1]=aa[0];aa[0]=d;ss[9]=ss[8];ss[8]=ss[7];ss[7]=ss[6];ss[6]=ss[5];ss[5]=ss[4];ss[4]=ss[3];ss[3]=ss[2];ss[2]=ss[1];ss[1]=ss[0];ss[0]=d;}}elseif(m==70){d=32;i--;aa[9]=aa[8];aa[8]=aa[7];aa[7]=aa[6];aa[6]=aa[5];aa[5]=aa[4];aa[4]=aa[3];aa[3]=aa[2];aa[2]=aa[1];aa[1]=aa[0];aa[0]=d;ss[9]=ss[8];ss[8]=ss[7];ss[7]=ss[6];ss[6]=ss[5];ss[5]=ss[4];ss[4]=ss[3];ss[3]=ss[2];ss[2]=ss[1];ss[1]=ss[0];ss[0]=d;}elseif(m==69)//*****新密码初次确认***************{strcpy(dd,aa);strcpy(ss,"again");strcpy(bb,"input");k=1;i=1;}}else//*****再次输入新密码**********************{if(i==1){strcpy(ss,"");strcpy(aa,"");strcpy(bb,"----------");}if(i<11){if(m!=69)if(m!=70){d=m;i++;aa[0]=aa[1];aa[1]=aa[2];aa[2]=aa[3];aa[3]=aa[4];aa[4]=aa[5];aa[5]=aa[6];aa[6]=aa[7];aa[7]=aa[8];aa[8]=aa[9];aa[9]=d;ss[0]=ss[1];ss[1]=ss[2];ss[2]=ss[3];ss[3]=ss[4];ss[4]=ss[5];ss[5]=ss[6];ss[6]=ss[7];ss[7]=ss[8];ss[8]=ss[9];ss[9]=42;}else{d=32;i--;aa[9]=aa[8];aa[8]=aa[7];aa[7]=aa[6];aa[6]=aa[5];aa[5]=aa[4];aa[4]=aa[3];aa[3]=aa[2];aa[2]=aa[1];aa[1]=aa[0];aa[0]=d;ss[9]=ss[8];ss[8]=ss[7];ss[7]=ss[6];ss[6]=ss[5];ss[5]=ss[4];ss[4]=ss[3];ss[3]=ss[2];ss[2]=ss[1];ss[1]=ss[0];ss[0]=d;}}elseif(m==70){d=32;i--;aa[9]=aa[8];aa[8]=aa[7];aa[7]=aa[6];aa[6]=aa[5];aa[5]=aa[4];aa[4]=aa[3];aa[3]=aa[2];aa[2]=aa[1];aa[1]=aa[0];aa[0]=d;ss[9]=ss[8];ss[8]=ss[7];ss[7]=ss[6];ss[6]=ss[5];ss[5]=ss[4];ss[4]=ss[3];ss[3]=ss[2];ss[2]=ss[1];ss[1]=ss[0];ss[0]=d;}elseif(m==69)//*****新密码再次确认***************{strcpy(ee,aa);if(strcmp(dd,ee)==0)//*****新密码两次输入一致******{strcpy(cc,ee);strcpy(ss,"successful");strcpy(bb,"Resetis");strcpy(xx,"-*-*-*-*-*");strcpy(yy,"*-*-*-*-*-");i=0;k=0;}else//*****新密码两次输入不一致*****{i=1;k=0;strcpy(ss,"Rsetagain");strcpy(bb,"ERROR!!!");strcpy(xx,"##########");strcpy(yy,"##########");}}}}}elseif(n==2)//*****密码输错3次后来*****************{if(t==1){if(m==70)//*****进入解除警报界面**************{strcpy(ss,"Roomalarm");strcpy(bb,"Release");strcpy(xx,"----------");strcpy(yy,"input");i=0;t--;}}elseif(t==0)//*****开始输入警报解除密码************{if(i==0){strcpy(ss,"");strcpy(aa,"");strcpy(bb,"-----input");strcpy(xx,"Release---");strcpy(yy,"----------");}if(i<10){if(m!=69)if(m!=70){d=m;i++;aa[0]=aa[1];aa[1]=aa[2];aa[2]=aa[3];aa[3]=aa[4];aa[4]=aa[5];aa[5]=aa[6];aa[6]=aa[7];aa[7]=aa[8];aa[8]=aa[9];aa[9]=d;ss[0]=ss[1];ss[1]=ss[2];ss[2]=ss[3];ss[3]=ss[4];ss[4]=ss[5];ss[5]=ss[6];ss[6]=ss[7];ss[7]=ss[8];ss[8]=ss[9];ss[9]=42;}else{d=32;i--;aa[9]=aa[8];aa[8]=aa[7];aa[7]=aa[6];aa[6]=aa[5];aa[5]=aa[4];aa[4]=aa[3];aa[3]=aa[2];aa[2]=aa[1];aa[1]=aa[0];aa[0]=d;ss[9]=ss[8];ss[8]=ss[7];ss[7]=ss[6];ss[6]=ss[5];ss[5]=ss[4];ss[4]=ss[3];ss[3]=ss[2];ss[2]=ss[1];ss[1]=ss[0];ss[0]=d;}}elseif(m==70){d=32;i--;aa[9]=aa[8];aa[8]=aa[7];aa[7]=aa[6];aa[6]=aa[5];aa[5]=aa[4];aa[4]=aa[3];aa[3]=aa[2];aa[2]=aa[1];aa[1]=aa[0];aa[0]=d;ss[9]=ss[8];ss[8]=ss[7];ss[7]=ss

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论