📄 -ͦ
字号:
#include <iom16.h> //包含头文件
#include <inavr.h>
#include<intrinsics.h>
#include "lcd1602_8bit.c"
#define uchar unsigned char //变量类型的宏定义
#define uint unsigned int
#define D8_0 (PORTB=PORTB&0x7f) //端口定义
#define D8_1 (PORTB=PORTB|0x80)
#define S1 (PIND&0x10)
#define S2 (PIND&0x20)
#define S3 (PIND&0x40)
#define S4 (PIND&0x80)
#define INT1 (PIND&0x08)
#define time 200
/*******************************/
uchar __flash str0[]={" Hello everyone "};//待显字符串
uchar __flash str1[]={" EEPROM Testing "};//待显字符串
uchar __flash str2[]={" "};
uchar __flash str3[]={" Set password "};//待显字符串
uchar __flash str4[]={" Input password "};//待显字符串
uchar a[9],b[9];
uchar cnt,flag,s;
#define CLR_LCM(x,y); {for(s=x;s<16;s++)DisplayOneChar(s,y,0x20);}
/*******************************/
void port_init(void)
{
PORTA = 0x00;
DDRA = 0xFF;
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x03;
PORTD = 0xFF;
DDRD = 0x00;
}
//******************************************
void main(void) // 定义主函数
{
uchar val=0,i,status=0;
port_init();
Delay_nms(400);
InitLcd();
ePutstr(0,0,str0); //第一行显示
ePutstr(0,1,str1); //第二行显示
for(i=0;i<9;i++)
{__EEGET(a[i],i+100);Delay_nms(20);}
__EEGET(flag,200);Delay_nms(20);
Delay_nms(2000);
ePutstr(0,0,str2);
ePutstr(0,1,str2);
/********************************************/
while(1) //无限循环
{
switch (status)
{
case 0:ePutstr(0,0,str2);
ePutstr(0,1,str2);
if(S3==0){while(S3==0);if(flag==88)status=10;cnt=0;}
if(S4==0){while(S4==0);status=30; }
Delay_nms(time);
break;
case 10:ePutstr(0,0,str4); //第一行显示
if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S3==0){while(S3==0);status=11;b[0]=val;}
CLR_LCM(1,1);
DisplayOneChar(0,1,val+0x30);
Delay_nms(time);
break;
case 11:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S3==0){while(S3==0);status=12;b[1]=val;}
if(INT1==0){while(INT1==0);status=10;val=b[0];}
CLR_LCM(2,1);
DisplayOneChar(1,1,val+0x30);
Delay_nms(time);
break;
case 12:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S3==0){while(S3==0);status=13;b[2]=val;}
if(INT1==0){while(INT1==0);status=11;val=b[1];}
CLR_LCM(3,1);
DisplayOneChar(2,1,val+0x30);
Delay_nms(time);
break;
case 13:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S3==0){while(S3==0);status=14;b[3]=val;}
if(INT1==0){while(INT1==0);status=12;val=b[2];}
CLR_LCM(4,1);
DisplayOneChar(3,1,val+0x30);
Delay_nms(time);
break;
case 14:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S3==0){while(S3==0);status=15;b[4]=val;}
if(INT1==0){while(INT1==0);status=13;val=b[3];}
CLR_LCM(5,1);
DisplayOneChar(4,1,val+0x30);
Delay_nms(time);
break;
case 15:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S3==0){while(S3==0);status=16;b[5]=val;}
if(INT1==0){while(INT1==0);status=14;val=b[4];}
CLR_LCM(6,1);
DisplayOneChar(5,1,val+0x30);
Delay_nms(time);
break;
case 16:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S3==0){while(S3==0);status=17;b[6]=val;}
if(INT1==0){while(INT1==0);status=15;val=b[5];}
CLR_LCM(7,1);
DisplayOneChar(6,1,val+0x30);
Delay_nms(time);
break;
case 17:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S3==0){while(S3==0);status=18;b[7]=val;}
if(INT1==0){while(INT1==0);status=16;val=b[6];}
CLR_LCM(8,1);
DisplayOneChar(7,1,val+0x30);
Delay_nms(time);
break;
case 18:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S3==0){while(S3==0);status=19;b[8]=val;}
if(INT1==0){while(INT1==0);status=17;val=b[7];}
CLR_LCM(9,1);
DisplayOneChar(8,1,val+0x30);
Delay_nms(time);
break;
case 19:if(cnt==0)
{
for(i=0;i<9;i++)
{
if(a[i]==b[i]){cnt++;}
}
}
if(cnt==9){D8_0;}
else D8_1;
Delay_nms(5000);
D8_1;status=0;cnt=0;val=0;
break;
//-----------------------------------------------------------
case 30:ePutstr(0,0,str3); //第一行显示
if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S4==0){while(S4==0);status=31;a[0]=val;}
CLR_LCM(1,1);
DisplayOneChar(0,1,val+0x30);
Delay_nms(time);
break;
case 31:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S4==0){while(S4==0);status=32;a[1]=val;}
if(INT1==0){while(INT1==0);status=30;val=a[0];}
CLR_LCM(2,1);
DisplayOneChar(1,1,val+0x30);
Delay_nms(time);
break;
case 32:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S4==0){while(S4==0);status=33;a[2]=val;}
if(INT1==0){while(INT1==0);status=31;val=a[1];}
CLR_LCM(3,1);
DisplayOneChar(2,1,val+0x30);
Delay_nms(time);
break;
case 33:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S4==0){while(S4==0);status=34;a[3]=val;}
if(INT1==0){while(INT1==0);status=32;val=a[2];}
CLR_LCM(4,1);
DisplayOneChar(3,1,val+0x30);
Delay_nms(time);
break;
case 34:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S4==0){while(S4==0);status=35;a[4]=val;}
if(INT1==0){while(INT1==0);status=33;val=a[3];}
CLR_LCM(5,1);
DisplayOneChar(4,1,val+0x30);
Delay_nms(time);
break;
case 35:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S4==0){while(S4==0);status=36;a[5]=val;}
if(INT1==0){while(INT1==0);status=34;val=a[4];}
CLR_LCM(6,1);
DisplayOneChar(5,1,val+0x30);
Delay_nms(time);
break;
case 36:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S4==0){while(S4==0);status=37;a[6]=val;}
if(INT1==0){while(INT1==0);status=35;val=a[5];}
CLR_LCM(7,1);
DisplayOneChar(6,1,val+0x30);
Delay_nms(time);
break;
case 37:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S4==0){while(S4==0);status=38;a[7]=val;}
if(INT1==0){while(INT1==0);status=36;val=a[6];}
CLR_LCM(8,1);
DisplayOneChar(7,1,val+0x30);
Delay_nms(time);
break;
case 38:if(S1==0){if(val<9)val++;}
if(S2==0){if(val>0)val--;}
if(S4==0){while(S4==0);status=39;a[8]=val;}
if(INT1==0){while(INT1==0);status=37;val=a[7];}
CLR_LCM(9,1);
DisplayOneChar(8,1,val+0x30);
Delay_nms(time);
break;
case 39:for(i=0;i<9;i++)
{__EEPUT(i+100,a[i]);Delay_nms(10);}
flag=88;__EEPUT(200,flag);
Delay_nms(time);
status=0;val=0;
break;
default:break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -