闹钟实验报告 下载本文

**/

void delay(unsigned char ms); //延时函数 void cbusy(); //测试lcd忙碌状态函数 void wrcom(unsigned char cmd); //写指令函数 void wrdat(unsigned char dat); //写数据函数 void lcdinit(); //lcd初始化函数 void protime(); //时间处理函数 void display(); //时间显示函数 unsigned char scankey(); //按键扫描 void keywork(); // 按键功能处理函数 void naoling1(); void naoling2(); void naoling3();

/*********************************************************************

延时函数

**********************************************************************/

void delay(unsigned char ms) {

unsigned char i; unsigned char m=4;

while(ms--) {

for(i=0;i<20;i++) { do

{}while(m--); } } }

/*********************************************************************

测试lcd忙碌状态函数

**********************************************************************/

void cbusy() { do

{ P0=0xff; RS=0; RW=1; E=0;

E=0;

busy=P0&0x80; E=1;

}while(busy!=0); }

/*********************************************************************

写指令函数

**********************************************************************/

void wrcom(unsigned char cmd) {

P0=cmd; RS=0; RW=0; E=0; cbusy(); E=1; }

/*********************************************************************

写数据函数

**********************************************************************/

void wrdat(unsigned char dat) {

P0=dat; RS=1; RW=0; E=0; cbusy(); E=1; }

/*********************************************************************

lcd初始化函数

**********************************************************************/

void lcdinit() {

wrcom(0x01); //清屏

wrcom(0x38); //8位总线,5*7点阵 wrcom(0x14); //文字不动光标自动右移 wrcom(0x0c); //开显示光标不显不闪