基于单片机的电子密码锁设计(8)

2019-04-09 08:18

本科毕业设计说明书(论文)

}

// ========将坐标转换为LCD的坐标=========== void LCDPosition(uchar row,uchar column) { 示 }

// ==========在指定位置写数据函数===========

void writeChar(uchar row,uchar column, char c) c为待写入的数据。 { }

// ============写字符串函数=================

void writeString(uchar row,uchar column1,uchar column2, char *s) {

LCDPosition(row,column); LCDWriteData(c); delay(200);

LCDWriteCmd(position); delay(10); else if(row == 2)

position = 0xC0 + column - 1; char position; if(row == 1)

//

RW=0;

LCDDataBus=Cmd; EP=1; delay(1); EP=0;

第 32 页 共 41页

row = 0x00在第一行显示,row

= 0x01在第二行显示

position = 0x80 + column - 1;

//

column = 0~15在LCD上的可见域显

// row指定行,column指定列位置,

// row表示行,

column1表示第一行起始地址,column2表示下一行起始地址,均从1开始。

本科毕业设计说明书(论文)

}

// 移动字符串函数 void moveString(char *s) { }

// 液晶初始化函数 void LCDInit(void) {

LCDWriteCmd(0x38); //设置16*2显示,5*7点阵,8位数据接口

uchar i;

writeString(1,25,25,s); for(i = 16; i > 0; i--) { }

LCDWriteCmd(0x18); //屏幕移动 delay(900);

char i; if((*s)=='\\0') { }

if((*(s+i)) == '\\0') { }

if(i > 15 && i< 32) { }

writeChar(row + 1,column2,*(s+i)); delay(2); column2++;

writeChar(row,column1,*(s+i)); delay(2); column1++; break; if(i <= 15) return; for(i = 0; ; i++)

第 33 页 共 41页

本科毕业设计说明书(论文)

delay(30);

LCDWriteCmd(0x01);//清屏 delay(30);

LCDWriteCmd(0x06);//地址加一,整屏右移 delay(30);

LCDWriteCmd(0x0f);//开显示,光标闪烁,显示光标 }

//外部中断初始化 void InuptInit(void) { IT0=1; }

//=================================== // 键盘部分

//===================================

uchar code rowScan[]={0xFE,0xFD,0xFB,0xF7}; uchar

//行扫描码

//uchar code columnScan[]={0xEF,0xDF,0xBF,0x7F};

EX0=1; EA =1;

第 34 页 共 41页

code

key12[]={0xEE,0xDE,0xBE,0xED,0xDD,0xBD,0xEB,0xDB,0xBB,0xE7,0xD7,0xB7}; // 1 2 3 4 5 6 7 8 9 * 0 # uchar code keyValue[]=\

#define KEY P1

//=====键盘扫描函数========== uchar keyScan(void) 键按下时返回字符?$? {

uchar k = 0,flag = 0; for(k = 0;k < 4; k++) {

KEY = rowScan[k];

//逐行扫描

//返回值:有键按下时获得的键盘值(1234567890*#),无

本科毕业设计说明书(论文)

}

//=================================== // 警铃部分

//==================================== sbit Beep = P3^1;

} return '$';

delay(10); { }

uchar i=0;

for(i = 0; i < 12; i++) { }

while(KEY != rowScan[k]); //等待按键释放 if(flag)

return keyValue[i]; if(KEY == key12[i]) { }

//比较键码 flag=1; break;

//按键扫描

if(KEY != rowScan[k])

第 35 页 共 41页

uchar code scalesH[] = {0xf7,0xf8,0xfc,0xf9,0xfa,0xfa,0xfb}; //7个音符所对应的计数器初值 uchar code scalesL[] = {0x20,0x88,0x44,0x59,0x13,0x67,0x04}; uchar note;

//初始化函数 void AlarmInit()

{ TMOD = 0x01; //T/C0工作在方式一 ET0 = 1; EA = 1; }

//播放声音 void play(uchar c)

TR0 = 0;

//开定时器中断 //开总中断 //关闭定时器0

本科毕业设计说明书(论文)

{ uint i; }

//定时器0的中断服务函数 void time0() interrupt 1 {

TH0 = scalesH[note]; TL0 = scalesL[note]; Beep = ~Beep; }

//==================================== // 主函数

//====================================

switch( c ) {

case 0 : note = 6;

for(i=0;i<3;i++) {

TR0 = 1; delay(300); TR0 = 0; delay(300); }

break;

for(note=2;note<6;note++)

case 1 :

第 36 页 共 41页

{

TR0 = 1; delay(300); TR0 = 0; delay(300); } }

Beep = 1;

break;


基于单片机的电子密码锁设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南村小学安全工作考核及奖惩制度

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: