完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子密码锁程序代码感觉是没错的,不过也附上 #include #define uchar unsigned char #define uint unsigned int #define LCDDataBus P2 //定义LCD数据总线 ***it RS = P0^1; ***it RW = P0^2; ***it EP = P0^3; ***it unlock = P3^0; uchar Keyword[6]="111211"; //初始密码 // 延时函数 void delay(uint k) { unsigned char i; for(; k > 0; k--) for(i = 121; i > 0; i--); } //=================================== // LCD部分 //=================================== // 写数据函数 void LCDWriteData(uchar Data) { RS=1; //传输数据 RW=0; //写 LCDDataBus=Data; EP=1; delay(1); EP=0; } // 写指令函数 void LCDWriteCmd(uchar Cmd) { RS=0; //传输指令 RW=0; LCDDataBus=Cmd; EP=1; delay(1); EP=0; } // ========将坐标转换为LCD的坐标=========== void LCDPosition(uchar row,uchar column) { char position; if(row == 1) // row = 0x00在第一行显示,row = 0x01在第二行显示 position = 0x80 + column - 1; // column = 0~15在LCD上的可见域显示 else if(row == 2) position = 0xC0 + column - 1; LCDWriteCmd(position); delay(10); } // ==========在指定位置写数据函数=========== void writeChar(uchar row,uchar column, char c) // row指定行,column指定列位置,c为待写入的数据。 { LCDPosition(row,column); LCDWriteData(c); delay(200); } // ============写字符串函数================= void writeString(uchar row,uchar column1,uchar column2, char *s) // row表示行,column1表示第一行起始地址,column2表示下一行起始地址,均从1开始。 { char i; if((*s)==' |