微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于PIC16F877A的万年历程序

基于PIC16F877A的万年历程序

时间:11-13 来源:互联网 点击:
本代码在Proteus上仿真通过,在单片机上也测试成功,暂时还未加入更改时间的模块,有时间会加入的,另外有关如何将公历转为农历,请参阅http://www.qylk.blog.163.com/blog/static/13468735620108284232791/

另外还可参考他人一篇博文,写的挺多的:http://wujieflash.blog.163.com/blog/static/5024751920080226525471/

代码包下载:http://qylk2011.googlecode.com/files/time.rar

代码如下:

//使用4M晶振

#include
__CONFIG(XT&WDTDIS);
#define Rssp_On 0x3f//显示开指令
#define Rssp_Off 0x3e//显示关指令
#define Col_Add 0x40//列
#define Page_Add 0xb8//页
#define Start_Line 0xc0//起始行

#define Rs RC2 //定义12864液晶接口
#define RW RC1
#define Ce RC0
#define Cs1 RC3
#define Cs2 RC4

#define T_CLK RA1 //实时时钟时钟线引脚
#define T_IO RA2 //实时时钟数据线引脚
#define T_RST RA0 //实时时钟复位线引脚
#define TRI TRISA2 //I/O作为输入

#define DQ RA3 //定义18B20数据端口
#define DQ_DIR TRISA3 //定义18B20D口方向寄存器
#define DQ_HIGH() DQ_DIR =1 //设置数据口为输入
#define DQ_LOW() DQ = 0; DQ_DIR = 0 //设置数据口为输出
unsigned char temp1; //采集到的温度高8位
unsigned char temp2; //采集到的温度低8位,转换后的温度值BCD码形式
const unsigned char tablexiao[16]={0,0,1,2,2,3,4,4,5,6,6,7,8,8,9,9};
unsigned char moon[3];
unsigned char m_temp[3];
unsigned char timebuf[7];
bit display_time; //刷新时间显示标志位
bit display_tem; //刷新温度显示标志位
bit tem_en; //启动温度显示标志位
unsigned char n; //辅助于timer1
unsigned char n2; //辅助于timer1
const unsigned char shuzi[]={
/*-- 文字: 0 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,

/*-- 文字: 1 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x20,0x30,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

/*-- 文字: 2 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x60,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x20,0x00,

/*-- 文字: 3 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x30,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x18,0x20,0x20,0x21,0x21,0x1E,0x00,

/*-- 文字: 4 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x3F,0x04,

/*-- 文字: 5 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xF8,0x48,0x48,0x48,0x48,0x88,0x00,0x00,0x18,0x20,0x20,0x20,0x20,0x1F,0x00,

/*-- 文字: 6 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x88,0x30,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,

/*-- 文字: 7 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x08,0x08,0x08,0x08,0xC8,0x38,0x00,0x00,0x00,0x00,0x30,0x0E,0x01,0x00,0x00,

/*-- 文字: 8 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x60,0x90,0x08,0x08,0x08,0x90,0x60,0x00,0x0C,0x12,0x21,0x21,0x21,0x12,0x0C,

/*-- 文字: 9 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x19,0x22,0x22,0x22,0x11,0x0F,0x00,

/*-- 文字: : --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,

/*-- 文字: . --11*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
};

const unsigned char hanzi[]=
{
/*-- 文字: 年 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x30,0xDC,0xCF,0xCF,0xCC,0xCC,0xFC,0xFC,0xCC,0xCC,0xCC,0x0C,0x00,0x00,
0x0C,0x0C,0x0C,0x0F,0x0F,0x0C,0x0C,0x0C,0x7F,0x7F,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,

/*-- 文字: 月 --*/
/*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0xFE,0xFE,0x26,0x26,0x26,0x26,0x26,0x26,0xFE,0xFE,0x00,0x00,0x00,
0x00,0x40,0x70,0x3F,0x0F,0x03,0x03,0x03,0x03,0x23,0x63,0x7F,0x3F,0x00,0x00,0x00,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top