- 32
- 0
- 约5.1千字
- 约 7页
- 2016-10-23 发布于浙江
- 举报
1602显示汉字加时间
/**********************************************************************
功能 :1602显示汉字(年月日)走时
WEB :WWW.QXMCU.COM
QQ :863888999
测试单片机 :STC89C52RC
外部晶振 :11.0592M
调试环境 :KEIL3
调试硬件平台:使用 清翔电子科技 QX-MCS51单片机开发板测试通过
备注 :张强提供
日期 :
文件名 :
//-------------------------程序功能-------------------------//
利用定时器0走时,1602显示,按键可调时间。
//---------------------------备注---------------------------//
//-------------------------使用说明-------------------------//
硬件平台:QX-X3;
KEY13选择调节时分秒,KEY14加,KEY15减。
硬件平台:QX-MCS;
S2选择调节时分秒,S3加,S4减,S5确认。
**********************************************************************/
#include reg52.h
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs = P3^5; //液晶引脚定义
sbit led_cs = P3^6;
sbit lcden = P3^4;
sbit dx = P2^7;//数码管引脚定义
sbit wx = P2^6;
sbit key1 = P3^0;
sbit key2 = P3^1;
sbit key3 = P3^2;
sbit keyE = P3^3;
uchar num,key1num,count,hour,min,sec;
uchar code cg_1602[]={ 0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,
0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,
0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00};//年月日
/*延时函数*/
void delay(uint xms)
{
uint i,j;
for(i=xms;i0;i--)
for(j=114;j0;j--);
}
/*1602液晶*/
void write_com(uchar com)//写命令
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)//写数据
{
lcdrs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_by_xy(uchar x,uchar y)//坐标定位
{
uchar address;
if(y==0)
address=0x80+x;//y=0,写第一行
else
address=0xc0+x;//y=1,写第二行
write_com(address);
}
/*void write_char(uchar x,uchar y,uchar date)//坐标定位显示
{
write_by_xy(x,y);//先定位
write_data(date);//后写数
}*/
void write_string(uchar x,uchar y,uchar *s)//写字符串
{
write_by_xy(x,y);//设定显示位置
while(*s)//write character
{
P0=*s;
write_data(*s);
s++;
}
}
void write_sfm(uchar add,uchar date)//写时分秒函数
{
uchar hour,ge;
hour=date/10;//分解一个2位数的十位和个位
ge=date%10;
write_com(0x80+0x40+add);//设置显示位置
write_data(0x30+hour);//送去液晶显示十位
write_data(0x30+ge); //送去液晶显示个位
}
void write_cg()//写
原创力文档

文档评论(0)