12864LCD显示倒计时程序

  • 格式:doc
  • 大小:35.00 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简介:第一行显示,距离系统爆炸时间

第二行显示,还剩

第三行显示,00时,00分,00秒

第四行显示,周林

按下旋钮开关,开始设定秒,秒编辑位闪动。左右旋转设定数值,

在按下开关,秒确定,设定分,分编辑位闪动左右调数值,

再按下,分确定,小时位闪动。左右转调小时,再按一下。时间确定,开始倒计时。到达定时时间后停止,并闪动。

#include

#include

/********************* 定义********************************/

#define LCD_data P0 //数据口

sbit LCD_RS = P2 ^ 0; //寄存器选择输入

sbit LCD_RW = P2 ^ 1; //液晶读/写控制

sbit LCD_EN = P2 ^ 2; //液晶使能控制

sbit LCD_PSB = P2 ^ 3; //串/并方式控制

sbit LCD_RST = P2 ^ 5; //液晶复位端口

sbit sset=P3^4;//设置按钮

sbit spk=P1^4;

sbit sadd=P2^7;

sbit sdel=P2^6;

signed char second=0,minute=0,hour=0,count=0,keycount=0;

signed char key=0;

unsigned char code DIS1[] =

{

"距离系统爆炸时间"

};

unsigned char code DIS2[] =

{

"还剩:"

};

unsigned char code DIS31[] =

{

"时"

};

unsigned char code DIS32[] =

{

"分"

};

unsigned char code DIS33[] =

{

"秒"

};

unsigned char code DIS4[] =

{

"周林"

};

unsigned char code table2[]="0123456789";

char code reserve[3]_at_ 0x3b; //保留0x3b开始的3个字节

/*********************延时子函数**************************/

void delayNOP()//us延时子函数(4.34us)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

void delayms(unsigned int ms)//ms延时子函数

{

unsigned char y;

while (ms--)

{

for (y = 0; y < 114; y++)

;

}

}

//******************检查LCD忙状态**************************

bit lcd_busy()//检查LCD忙状态1忙,0闲

{

bit result;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

delayNOP();

result = (bit)(P0 &0x80);

LCD_EN = 0;

return (result);

//***********************写指令数据***********************

void lcd_wcmd(unsigned char cmd)//写指令数据到LCD

{

while (lcd_busy())

{

;

}

LCD_RS = 0;

LCD_RW = 0;

LCD_EN = 1;

P0 = cmd;

delayNOP();

LCD_EN = 0;

}

void lcd_wdat(unsigned char dat)//写显示数据到LCD

{

while (lcd_busy())

;

LCD_RS = 1;

LCD_RW = 0;

LCD_EN = 1;

P0 = dat;

delayNOP();

LCD_EN = 0;

}

void writesmh(unsigned char add,unsigned char date)//显示个位和十位数据{

unsigned char shi,ge;

shi=date/10;

ge=date%10;

lcd_wcmd(0x80+add);

delayms(5);

lcd_wdat(table2[shi]);

delayms(5);

lcd_wdat(table2[ge]);

delayms(5);

}

//*********************初始化设定****************************