资源简介
//简介:第一行显示,距离系统爆炸时间
//第二行显示,还剩
//第三行显示,00时,00分,00秒
//第四行显示, 周林
//按下旋钮开关,开始设定秒,秒编辑位闪动。左右旋转设定数值,
//在按下开关,秒确定,设定分,分编辑位闪动左右调数值,
//再按下,分确定,小时位闪动。左右转调小时,再按一下。
//时间确定,开始倒计时。到达定时时间后停止,并闪动。
代码片段和文件信息
//简介:第一行显示,距离系统爆炸时间
//第二行显示,还剩
//第三行显示,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=0minute=0hour=0count=0keycount=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 addunsigned char date)//显示个位和十位数据
{
unsigned char shige;
shi=date/10;
ge=date%10;
lcd_wcmd(0x80+add);
delayms(5);
lcd_wdat(table2[shi]);
delayms(5);
lcd_wdat(table2[ge]);
delayms(5);
}
//*********************初始化设定****************************
void lcd_init()
{
LCD_PSB = 1; //并口方式
LCD_RST = 0; //液晶复位
delayms(5); //液晶复位
LCD_RST = 1; //液晶复位
delayms(5); //液晶复位
lcd_wcmd(0x34); //扩充功能设定,扩充指令,选8位数据
delayms(5);
lcd_wcmd(0x30); //功能设定,基本指令操作,选8位数据
delayms(5);
lcd_wcmd(0x0C); //显示开,关光标,关光标反白允许。
delayms(5);
lcd_wcmd(0x04); //光标的移动方向
delayms(5);
lcd_wcmd(0x01); //清除LCD的显示内容
delayms(5);
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
EA=1;
ET0=1;
TR0=0;
EX0=0; //外部中断0允许
IT0=1; //外部中断0为边沿触发方式
}
//*********************设定显示位置子函数**********************
void lcd_pos(unsigned char X unsigned char Y)//设定显示位置
{
unsigned char pos;
if (X == 1)
{
X = 0x80;
}
else if (X == 2)
{
X = 0x90;
}
else if (X ==
相关资源
- 第四章 畅学多功能实验箱液晶资源详
- proteus仿真、keil4、DHT11、LCD1602
- DS18B20温度+DHT11湿度+LCD1602
- 基于FPGA的LCD1602实时显示DS18b20温度
- STM32+ZE08-CH2O甲醛传感器+LCD1602显示.r
- 基于51单片机的电机转速监测
- FPGA VGA lcd1602 显示时钟 闹钟 按键控制
- STM32f103电压采样并用LCD1602显示
- STM32CubeMX+LCD1602 + PCF8574AT
- 基于STM32的LCD1602驱动程序
- 基于stm32的lcd1602
- LCD1602硬件结构及程序设计
- 基于stm32 和LCD1602的电子密码锁课程设
- STM32-串口能显示-超声波测距SR04 - LC
- VHDL利用PCF8591采集4个电压在LCD1602上进
- STM32F407VET6_SMART_LCD1602显示
- 基于STM32单片机的饮水机水位控制系统
- stm32F103C8T6+LCD1602.rar
- 51单片机时钟电路LCD1602显示完整源码
- 基于stm32的lcd1602显示C程序源码
- 基于51单片机的超声波测距LCD1602显示
- lcd1602.zip
- STM32-LCD1602显示proteus仿真实验
- LCD1602 Verilog实现源代码
- STM32F103 驱动四路MAX6675 采集温度 LC
- STM32F103驱动ADS1255以及lcd1602
- 基于DS18B20传感器的数字温度监控系统
- 基于STM32F103(C51)芯片的液晶显示屏
- STM32板LCD1602的配置代码
- 基于STM32F103的LCD1602的IIC显示程序
评论
共有 条评论