⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 万年历.c

📁 此万年历包括跑表
💻 C
字号:
// cpu at89s52     Focs=11.0592MHz

#include<reg52.h>    //头文件
#define  uchar unsigned  char
#define  uint unsigned int
#define DATA P0                          //定义P0口为数据总线
sbit  rs= P2^0;                          //* rs=1 display RAM data;rs=0 instruction */
sbit  rw= P2^1;                          //* rw=1,e=1,cs=1,read ;rw=0,e=0,cs=1,write */ 
sbit  psb= P2^3;                                //*PSB=1,模式并口12864液晶(自带汉字库)*/ 
sbit  ret= P2^5;                               //定义P2^5为液晶复位线 
sbit  E= P2^2;                                 //定义为液晶的控制线
sbit q=P3^5;                                //定义P3^5为DS18B20的数据口线
uchar jp=0xa3;                               //液晶显示数字的地址编码高字节
uint num;                                           //存放测得的温度值的变量定义
uchar hc[]={0,0};                                  //温度显示缓冲区
uint year=2007;                                   //年月日变量定义
uchar month=1,day=1;                               //年月日变量定义
uchar yr1,yr2,mh1,mh2,dy1,dy2;                     // 处理年月日数据的变量定义
uchar second,minite,hour;                          //时分秒变量定义
uchar jsd1,jsd2,jme1;                             // 处理时钟数据的变量定义 
uchar jme2,jhr1,jhr2;                             // 处理时钟数据的变量定义
uchar mss,mse,mil;                                 //跑表变量定义
uchar pmss1,pmss2,pmse1;                        // 处理跑表数据的变量定义
uchar pmse2,pmil1,pmil2;                        //处理跑表数据的变量定义
uchar v;                                       //定义年月日 时钟 跑表模式选择变量
uchar kk;                                      //年月日与时钟模式选择变量定义
uchar i;                                       //软件延时计数器变量定义
uchar *p;                                      //定义指向显示缓冲区的指针变量                                    
uchar counter;                                 //定义定时器0定时计数器变量
uchar tt;                                      //定义定时器1定时计数器变量
uchar mp=0xa1;                                                        //液晶显示"-"的高字节
uchar code MA[]={0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9};  //液晶显示数字的地址编码低字节
uchar pp[]={0,0,0,0,0,0};                                             //显示缓冲数组
uchar  yf[]={32,29,32,31,32,31,32,32,31,32,31,32};                    //月份数组
void delay(uchar ms);                                                 //软件延时子程序
void lcd_int(void);                                                   //实现对液晶复位,8位数据模式选择子程序
void Wrir(uchar com);                                         //向LCD发送控制命令
void Wrda(uchar da);                                        //向LCD发送数据命令
void Init_Lcd(void);                                         //液晶初始化
void clearlcd(void);                                       //液晶清屏
void Busy(void);                                           //判液晶是否在忙子程序
void delay0(uint d);                                       //软件延时子程序
void CL_data(uint i,uchar *z);                             //温度数据处理子程序
void Display(void);                                        //液晶上显示实测温度子程序 
void int_18b20(void);                                      //初始化18b20子程序
void yingda();                                             //接收18b20应答信号子程序
void wrone(uchar da);                                      //写给18b20一字节数据子程序
uint chuli18b20(void);                                     //测温子程序
uchar rdone(void);                                         //读取18b20一字节数据子程序
void zh_0(void);                                           //时钟数据处理子程序
void zh_1(void);                                           //年月日数据处理子程序
void zh_2(void);                                           //跑表数据处理子程序
void display_0(uchar k,uchar *q);                          //液晶上显示时钟子程序
void display_1(uchar a,uchar *u);                          //液晶上显示年月日子程序
void display_y(void);                                      //液晶上显示时钟 年月日 跑表三模式选择子程序
void wd();                                                 //实测温度并在液晶上显示测得的温度值子程序
void process(void);                                        //时钟 年月日 跑表三模式数据处理 显示子程序
void key1(void);                                          //对年月日,时钟调整,起动时钟子程序
void key2(void);                                          //实现对跑表暂停,清零,跑表调整子程序
void key_y(void);                                         //实现进入时钟调整模式,年月日,时钟,跑表三种模式的选择
void ch();                                               //定时器初始化子程序
uchar keyscan(void);                                     //动态扫描键盘子程序
/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :万年历
** 调试说明 :
*********************************************************************************************************
*/
void main(void)
{
  ch();     //定时器初始化
 lcd_int();   //复位与数据模式选择
Init_Lcd();   //液晶初始化
while(1)
   {
 key_y();    //一直调键扫
   }
}
/*
*********************************************************************************************************
** 函数名称 :zh_0()
** 函数功能 :时钟数据处理子程序
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
void zh_0(void)
{ 
  pp[5]=jsd1;            //秒个位
  pp[4]=jsd2;            //秒十位
  pp[3]=jme1;            //分个位
  pp[2]=jme2;            //分十位
  pp[1]=jhr1;            //时个位
  pp[0]=jhr2;            //分十位
}
/*
*********************************************************************************************************
** 函数名称 :zh_1()
** 函数功能 :年月日数据处理子程序
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
void zh_1(void) 
{
 pp[1]=yr1;pp[0]=yr2;pp[3]=mh1;pp[2]=mh2;pp[5]=dy1;pp[4]=dy2;
}
/*
*********************************************************************************************************
** 函数名称 :zh_2()
** 函数功能 :跑表数据处理子程序
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
void zh_2(void)
{
 pp[5]=pmss1;pp[4]=pmss2;pp[3]=pmse1;pp[2]=pmse2;pp[1]=pmil1;pp[0]=pmil2;
}
/*
*********************************************************************************************************
** 函数名称 :delay(uchar ms)
** 函数功能 :延时
** 入口参数 :ms
** 出口参数 :无
*********************************************************************************************************
*/
void delay(uchar ms)
{
 while(ms--)
 {
  for(i=120;i>0;i--);     //软件延时      
 }
}
/*
*********************************************************************************************************
** 函数名称 :display_0(uchar k,uchar *q)
** 函数功能 :液晶上显示时钟与跑表
** 入口参数 :uchar k,uchar *q
** 出口参数 :无
*********************************************************************************************************
*/
void display_0(uchar k,uchar *q)
{   
     uchar l,j;
      Wrir(k);          //送显示开始地址
 for(l=0;l<2;l++)
  {
   for(j=0;j<2;j++)
  {
   Wrda(jp);
   Wrda(MA[*q]);     
   q++;
   }
  Wrda(mp);
  Wrda(0xaa);         //显示"-"
  }
for(j=0;j<2;j++)
  {
   Wrda(jp);
   Wrda(MA[*q]); 
   q++;
   }
}
/*
*********************************************************************************************************
** 函数名称 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -