万年历程序加入农历c语言,大神们日历程序里面怎么加农历(附程序)
时钟的时钟线引脚*/
sbit T_IO=P2^1; /* 实时时钟的数据线*/
sbit T_RST=P2^2; /* 实时时钟的复位线引脚*/
uchar bdata datbyte;
sbit datbyte0=datbyte^0;
sbit datbyte7=datbyte^7;
/*----------键盘相关声明-------------------------------------*/
sbit key=P1^0; //功能键
sbit key1=P1^1; //只有加1键
sbit key2=P1^2;
uchar sum,keyflag=0; //调用时,分,秒,标志,调用键盘处理标志.
/*--------------以下为LCD12864相关函数--------------------------*/
/**************************************************************
函数名称:void delay1ms(uint x)
函数功能: 延时1MS
***************************************************************/
void delay1ms(uint x)
{
uint i,j;
for(i=0;i
for(j=0;j<120;j++);
}
/**************************************************************
函数名称:void w_12864byte(uchar byte)
函数功能: 写字节
**************************************************************/
void w_12864byte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
sck=0;
byte<<=1;
sid=CY;
sck=1;
}
}
/**************************************************************
函数名称:uchar r_12864byte(void)
函数功能: 读字节
***************************************************************/
uchar r_12864byte(void)
{
uchar i,temp1,temp2;
temp1 = 0;
temp2 = 0;
for(i=0;i<8;i++)
{
temp1=temp1<<1;
sck = 0;
sck = 1;
sck = 0;
if(sid) temp1++;
}
for(i=0;i<8;i++)
{
temp2=temp2<<1;
sck = 0;
sck = 1;
sck = 0;
if(sid) temp2++;
}
return ((0xf0&temp1)+(0x0f&temp2));
}
/**************************************************************
函数名称:void c_12864busy( void )
函数功能: 检测忙函数
**************************************************************/
void c_12864busy( void )
{
do
w_12864byte(0xfc); //11111,RW(1),RS(0),0
while(0x80&r_12864byte());
}
/**************************************************************
函数名称:void w_12864(bit dat_com,uchar byt)
函数功能: 写入函数
***************************************************************/
void w_12864(bit dat_com,uchar byt)
{
uchar temp;
if(dat_com==0) //为零,写入指令
temp=0xf8; //11111,RS(0),RW(0),0
else //否则,写入数据
temp=0xfa; //11111,RS(1),RW(0),0
cs=1;
c_12864busy();
w_12864byte(temp);
w_12864byte(byt&0xf0); //写入高四位
w_12864byte(byt<<4); //写入低四位
cs=0;
}
/**************************************************************
函数名称:void init_12864(void)
函数功能:初始化12864
***************************************************************/
void init_12864(void)
{
w_12864(com,0x30); //基本指令功能.
w_12864(com,0x0c); //显示打开,关光标,反白关.
w_12864(com,0x01); //清屏指令.
w_12864(com,0x06); //AC自动加一
}
/*----------------以下为DS1302相关函数-------------------------*/
/**************************************************************
函数名称:void w_1302byte(uchar date)
函数功能:写一个字节(上升沿)
***************************************************************/
void w_1302byte(uchar date)
{ uchar i;
datbyte=date;
for(i=0;i<8;i++)
{ T_IO=datbyte0; //写最低位
T_CLK=0;
T_CLK=1;
datbyte>>=1;
}
}
/**************************************************************
函数名称:uchar r_1302byte(void)
函数功能:读一个字节(下降沿)
***************************************************************/
uchar r_1302byte(void)
{ uchar i;
datbyte=0;
for(i=0;i<8;i++)
{ datbyte7=T_IO; //读最低位
T_CLK=1;
T_CLK=0;
datbyte>>=1;
}
return(datbyte);
}
/***************************************************************
函数名称:void write_1302(uchar addr,uchar date)
函数功能: 指定位置写数据
****************************************************************/
void write_1302(uchar addr,uchar date)
{ T_RST=0;
T_CLK=0;
T_RST=1;
w_1302byte(addr);
w_1302byte(date);
T_CLK=0;
T_RST=0;
}
/**************************************************************
函数名称:uchar read_1302(uchar addr)
函数功能: 指定位置读数据
****************************************************************/
uchar read_1302(uchar addr)
{ uchar dat1,dat2,temp;
T_RST=0;
T_CLK=0;
T_RST=1;
w_1302byte(addr);
temp=r_1302byte();
T_RST=0;
T_CLK=0;
dat1=temp/16;
dat2=temp%16;
temp=dat1*10+dat2;
return(temp);
}
/***************************************************************
函数名称:void init_1302(void)
函数功能: 初始化
*****************************************************************/
void init_1302(void)
{ uchar i;
uchar addr=0x80;
write_1302(0x8e,0x00);
for(i=0;i<7;i++)
{
write_1302(addr,TAB_1302);
addr+=2;
}
write_1302(0x8e,0x80);
}
/****************************************************************
函数名称:void get_1302(void)
功能说明:读取DS1302时钟信息.
*****************************************************************/
void get_1302(void)
{ uchar i,addr=0x81;
for(i=0;i<7;i++)
{ TAB_1302=read_1302(addr);
addr+=2;
}
}
/*---------------以下为显示相关函数--------------------------*/
/******************************
函数名称: void fenli(uchar x,uchar y,uchar val)
功能描述: 指定位置写入数据
********************************/
void fenli(uchar x,uchar y,uchar val)
{ uchar ge,shi,addr,i=0;
if(val==5)//这里把星期数字显示的转换为中文
{
w_12864(com,0x88+2);
for(i=0;i<2;i++)
{ //一个汉字写两次
if(TAB_1302[5]==0)w_12864(dat,TAB_XQ);
if(TAB_1302[5]==1)w_12864(dat,TAB_XQ[2+i]); //
if(TAB_1302[5]==2)w_12864(dat,TAB_XQ[3+i]); //!!??星期三显示没规律,不知咋回事.
if(TAB_1302[5]==3)w_12864(dat,TAB_XQ[5+i]);
if(TAB_1302[5]==4)w_12864(dat,TAB_XQ[7+i]);
if(TAB_1302[5]==5)w_12864(dat,TAB_XQ[9+i]);
if(TAB_1302[5]==6)w_12864(dat,TAB_XQ[11+i]);
}
}
else
{
shi=TAB_1302[val]/10;//分离十位
ge=TAB_1302[val]%10;
if(x==1)x=0x80;
if(x==2)x=0x90;
if(x==3)x=0x88;
if(x==4)x=0x98;
addr=x+y;
w_12864(com,addr);//指定位置
w_12864(dat,0x30+shi);//写入
w_12864(dat,0x30+ge);
}
}
/*************************************************************
函数名称:void display(void)
功能描述: 显示函数
**************************************************************/
void display(void)
{ get_1302(); //读1302
fenli(3,7,0); //读秒
fenli(3,5,1); //读分
fenli(3,3,2); //读时
fenli(2,5,3); //读日
fenli(2,3,4); //读月
fenli(3,2,5); //读星期
fenli(2,1,6); //读年
}
/*---------------按键处理相关函数--------------------------*/
/************************************************************
函数名称:void scanner()
功能描述: 按键函数
*************************************************************/
void scanner()
{ uchar i,j;
if(!key) //功能键按下
{ delay1ms(500); //延时500MS
if(!key) //还按下,退出时间调整
{ keyflag=0; //标志位为0
sum=0; //清0
w_12864(com,0x0c);//清闪烁
for(i=0;i<7;i++)//十进制转十六进制
{ j=TAB_1302/10;
TAB_1302=TAB_1302%10;
TAB_1302=TAB_1302+16*j;
}
init_1302(); //写入1302
while(!key); //等待释放
delay1ms(10); //延时消抖
}
else //500MS内放开
{ keyflag=1; //标志为1,进行时间调整
sum++; //功能键加1
if(sum==8)
sum=0;
switch(sum)
{ case 1: //
{ w_12864(com,0x98+7);
w_12864(com,0x0f);
break;
}
case 2: //为2,年闪烁
w_12864(com,0x90+1);
break;
case 3: //月闪烁
w_12864(com,0x90+3);
break;
case 4: //日闪烁
w_12864(com,0x90+5);
break;
case 5: //分闪烁
w_12864(com,0x88+5);
break;
case 6: //时闪烁
w_12864(com,0x88+3);
break;
}
}
}
if(sum) //功能键按下
{
if(!key1)
{ delay1ms(10);
if(!key1)
{ while(!key1);//等待加1键释放
delay1ms(10);
if(sum==1)
{ //备用
}
if(sum==2)
{ TAB_1302[6]++;
if(TAB_1302[6]==100)
TAB_1302[6]=0;
fenli(2,1,6);
w_12864(com,0x90+1);//闪烁归位
}
if(sum==3)
{ TAB_1302[4]++;
if(TAB_1302[4]==13)
TAB_1302[4]=1;
fenli(2,3,4);
w_12864(com,0x90+3);
}
if(sum==4)
{ TAB_1302[3]++;
if(TAB_1302[3]==32)
TAB_1302[3]=1;
fenli(2,5,3);
w_12864(com,0x90+5);
}
if(sum==5)
{ TAB_1302[1]++;
if(TAB_1302[1]==60)
TAB_1302[1]=0;
fenli(3,5,1);
w_12864(com,0x88+5);
}
if(sum==6)
{ TAB_1302[2]++;
if(TAB_1302[2]==24)
TAB_1302[2]=0;
fenli(3,3,2);
w_12864(com,0x88+3);
}
}
}
if(sum) //功能键按下
{
if(!key2)
{ delay1ms(10);
if(!key2)
{ while(!key2);//等待加1键释放
delay1ms(10);
if(sum==1)
{
}
if(sum==2)
{ TAB_1302[6]--;
if(TAB_1302[6]==0)
TAB_1302[6]=100;
fenli(2,1,6);
w_12864(com,0x90+1);//闪烁归位
}
if(sum==3)
{ TAB_1302[4]--;
if(TAB_1302[4]==0)
TAB_1302[4]=12;
fenli(2,3,4);
w_12864(com,0x90+3);
}
if(sum==4)
{ TAB_1302[3]--;
if(TAB_1302[3]==0)
TAB_1302[3]=31;
fenli(2,5,3);
w_12864(com,0x90+5);
}
if(sum==5)
{ TAB_1302[1]--;
if(TAB_1302[1]==0)
TAB_1302[1]=60;
fenli(3,5,1);
w_12864(com,0x88+5);
}
if(sum==6)
{ TAB_1302[2]--;
if(TAB_1302[2]==0)
TAB_1302[2]=24;
fenli(3,3,2);
w_12864(com,0x88+3);
}
}
}
}
}
}
//=============================================================
void init(void)
{
uchar i;
init_12864();
init_1302();
while(TAB1!='\0')
{
w_12864(dat,TAB1);
i++;
}
i=0;
w_12864(com,0x90);
while(TAB2!='\0')
{
w_12864(dat,TAB2);
i++;
}
i=0;
w_12864(com,0x88);
while(TAB3!='\0')
{
w_12864(dat,TAB3);
i++;
}
i=0;
w_12864(com,0x98);
}
/*************************************************************
函数名称:主函数
函数功能:
**************************************************************/
main()
{
init();
while(1)
{
scanner(); //检测键盘
if(!keyflag) //标志为0
{ display(); //调用显示
delay1ms(500);
}
}
}
0
万年历程序加入农历c语言,大神们日历程序里面怎么加农历(附程序)相关推荐
- 用c语言求元素移动的次数T(n),悬赏!求C语言大神帮忙,写一个数字推盘游戏的程序(N-puzzle) 具体的要求看图片...
满意答案 zcloj 2013.10.14 采纳率:56% 等级:12 已帮助:5505人 这是我在网上收藏在本地的数独游戏代码.看能否符合你的要求 #include int fun(int a ...
- Java程序员日常积累-向大神学习(三)
前言 <Java程序员日常积累-向大神学习>系列是本人根据日常工作中碰到的问题写的一个问题记录,比较琐碎零散. 主要用于记录和忘记时可以有个地方查询.现分享给大家,这是这个系列的第三篇. ...
- 【任务脚本】0530更新淘宝618活动领喵币脚本,OrangeJs基于autojs全自动程序稳定运行,向大神致敬...
公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 0530: 更新一下文章内容,除了苹果手机用户最近没有收到其他手机不能 ...
- python代码少的作品_原创 8行python代码展示程序员从入门到大神(或跑路)的全部状态...
一行python代码可以做什么? 人生苦短,我用python.python的世界里无处不在的简洁和短小,往往一行代码可以实现很多有意思功能. 你敢想象你从入门python代码.网络达人.反重力怪才.爱 ...
- 8行python代码展示程序员从入门到大神(或跑路)的全部状态
一行python代码可以做什么? 人生苦短,我用python.python的世界里无处不在的简洁和短小,往往一行代码可以实现很多有意思功能. 你敢想象你从入门python代码.网络达人.反重力怪才.爱 ...
- 饭店菜单选择c语言,求C语言大神,帮忙做一下这个题,要源代码设计实现一个餐厅点餐系统? 爱问知识人...
求C语言大神,帮忙做一下这个题,要源代码 设计实现一个餐厅点餐系统,实现电子点餐.要求实现二级菜单: 一级菜单: 请选择: 1.点餐 2.查看已点菜品 3.添菜 求C语言大神,帮忙做一下这个题,要源代 ...
- php输出后以密文显示,加密解密,_求大神帮看一下,如何根据下面的程序,把明文生成密文谢谢,加密解密 - phpStudy...
求大神帮看一下,如何根据下面的程序,把明文生成密文谢谢 求大神帮看一下,如何根据下面的程序,把明文生成密文谢谢 def parserLicense(self,encCode): data = base ...
- 三菱R系列PLC程序 全部采用ST语言编写,内部使用函数块和结构体,程序思路清晰
三菱R系列PLC程序 全部采用ST语言编写,内部使用函数块和结构体,程序思路清晰,简洁明了. 通过结构体和函数块的使用,可以使您在程序编写水平得到很大提高. ST语言是PLC后续的主流语言,是日后编程 ...
- .net4.0 使用低版本生成的dll, 混合模式程序集市针对V1.1.4322,无法在 4.0 运行时中加载该程序解决办法
使用.net4.0开发DirectX,运行时报错:混合模式程序集市针对V1.1.4322,无法在 4.0 运行时中加载该程序 原因是DirectX是由.net1.1生成的,不能直接在.net4.0使用 ...
最新文章
- 学python好不好-学历低可以学python吗?好不好就业?
- POJ 3258 River Hopscotch(二分查找答案)
- FPGA(2)--例化语句--1位全加器
- android 获取文件夹的字节数,android java file 清理垃圾获取文件大小 删除文件等操作...
- javascript时间函数
- 三码合一方法 制作QQ、微信、支付宝收款码合一
- OPENWRT:编译E8820V2总结
- 第一次用vc写的文件切割小软件_CutFile
- 一文述说人工智能(AI)发展史,几经沉浮!
- 申请公网IP实战 #华北天津联通
- 带省略号的比喻句_标点符号往往能引发人们的联想,例如:“省略号像一条漫长的人生道路,等着你去书写它留下的空白。”请以一种标点符号(省略号除外)为描述对象,写一个比喻句,形象地阐发某种生活道理。...
- 达梦数据库如何把EXCEL的数据导入到表中?
- js 获取当前日期的前三个月
- 03 day2--javascript笔记pink老师--对象
- txt文件字符在计算机,(35)在C盘当前文件夹下有一个已经建立好的顺序文件Alph.txt,文件内容为只含有字母的一个字符去、...
- Java计算连续自交杂合概率代系变化
- 芯片IC失效分析测试
- 《安富莱嵌入式周报》第227期:2021.08.23--2021.08.29
- Error: Your CLT does not support macOS 11.
- 安利一下断言利器AssertJ
热门文章
- Android驱动USB摄像头
- 在Word中插入几何画板图形的方法
- 阿里云重磅发布业务中台产品 BizWorks,中台发展进入下一个阶段
- 自定义Counter使用 与
- OneNote丢失笔记分区后找回
- 弹球游戏关卡的实现(二)
- No @Intercepts annotation was found in interceptor com.example.config.MPConfig$$EnhancerBySpringCGLI
- [vue3+ts]方法一:使用vuex的mapState和mapGetters
- 晨控带您了解RFID发展历史
- STM32F103软件模拟SPI接口驱动ILI9486液晶屏