单片机驱动19264液晶大数字时钟程序

2020-02-13来源: 51hei关键字:单片机驱动  19264液晶  大数字时钟

新疆快3_[官网入口]弄了个简单的19264液晶时钟,采用大数字显示,用DS1302和ds12cr887时钟芯片,分别两个对应程序。只有时、分、秒和温度显示。

仿真原理图如下

单片机源程序如下:

/*系统头文件--------------------------------------------------------------------*/

#include

#include

/*包含的文件--------------------------------------------------------------------*/

#include "MODEL.h"

#include "LCD19264.h"

#include "DS12CR887.h"

#include "DS18B20.h"

/*定义变量名--------------------------------------------------------------------*/

#define uchar unsigned char

#define uint  unsigned int

/*定义变量----------------------------------------------------------------------*/

bit  q=0,w=0;     //调时标志位

/*定义时间变量——————————————————————————————————————————————————————————————————*/

uchar sec,min,hour;

/*定义按键----------------------------------------------------------------------*/

sbit K1  = P1^7;  //按键K1-设置

sbit K2  = P1^4;  //按键K2-确认、返回

sbit K3  = P1^6;  //按键K3-加

sbit K4  = P1^5;  //按键K4-减

sbit K5  = P1^3;  //液晶背光控制按键,按一下亮,再按一下灭

sbit BEEP= P1^2;  //蜂鸣器

sbit BLA = P1^0;  //液晶背光控制输出,低电平有效,PNP三极管控制。

/*显示时、分、秒————————————————————————————————————————————————————————————————*/

void displaytime(void)

{

//往液晶屏填写"小时"数据-----------------------------------------------

        hour=ds_read(4);         //读取DS12CR887的小时数据

        if((hour/10)==0){Show3264(0,0,11);}

                else        {Show3264(0,0,(hour/10));} //小时十位

        Show3264(0,1,(hour%10)); //小时个位

        Show3264(0,2,10);        //时钟分隔符":"

//往液晶屏填写"分钟"数据-----------------------------------------------

        min=ds_read(2);          //读取DS12CR887的分数据

        Show3264(0,3,(min/10));         //分钟十位

        Show3264(0,4,(min%10));         //分钟个位                                        

//往液晶屏填写"秒"数据-------------------------------------------------

        sec=ds_read(0);          //读取DS12CR887的秒数据

        Show1632(2,10,(sec/10)); //秒钟十位

        Show1632(2,11,(sec%10)); //秒钟个位                                        

}

/*设置日期、时间函数------------------------------------------------------------*/

void Set_time(uchar sel)  

        signed char address,item;

        signed char max,mini;

        ds_write(0x0a,0x00);     //开始调时,DS12CR887关闭时钟振荡器         

        ShowHZ(0,10,0);          //显示"设"

        ShowHZ(0,11,1);          //显示"置"

        if(sel==2) {ShowHZ(1,10,6);ShowHZ(1,11,3);address=0; max=59;mini=0;}//秒钟          

        if(sel==1) {ShowHZ(1,10,2);ShowHZ(1,11,3);address=2; max=59;mini=0;}//分钟 

        if(sel==0) {ShowHZ(1,10,4);ShowHZ(1,11,5);address=4; max=23;mini=0;}//小时                  

        item=ds_read(address);         //读取DS12CR887某地址上的数值赋给item 

        if(K3 == 0) {item++;}    //K3-加数:1

        if(K4 == 0) {item--;}    //K4-减数:1

        if(item>max) item=mini;  //限制数值最大有效范围   

        if(item

        ds_write(address,item);         //将调整好的item值写入DS12CR887

        displaytime();                         //显示时间

}

/*主函数------------------------------------------------------------------------*/

void main()

{

        uchar e=0;

        K1=1;K2=1;K3=1;K4=1;K5=1;           //按健复位

        BLA=0;                                           //打开液晶、按键背光

        BEEP=0;                                                   //蜂鸣器响50毫秒

        DelayM(50);

        BEEP=1;

        ds_int();                                           //DS12CR887初始化

        InitLCD();                                           //液晶屏初始化

        while(1)

        {

                if(w==0)

                {

                        displaytime();        

                        read_temp();                  //读取温度

                    ds1820disp();                 //显示温度

                }   //正常走时

                else {}                    //否则启动调时

//设置键------------------------------------------------------------------------                

                if (K1 == 0)               // 设置时间

                {

                        DelayM(20);                   //按键消抖

                        if(K1 == 0 && w == 1)  //当是调时状态 本键用于调整下一项

                        {

                                e++;

                                if (e >= 3 ){e = 0;}

                                Set_time(e);       //调整                                

                        }                        

                        if(K1 == 0 && w == 0)  //当是正常状态时就进入调时状态

                        {

                                ClearScreen(0);

                                ClearScreen(1);

                                ClearScreen(2);    //清除左中右屏显示

                                w=1;                   //进入调时                                

                                Set_time(e);       //调整

                        }

[1] [2]
关键字:单片机驱动  19264液晶  大数字时钟 编辑:什么鱼 引用地址:http://news.estoresdeals.com/mcu/ic488114.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:单片机学校打铃系统
下一篇:单片机指针学习

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

单片机驱动LED数码管,按键TM1638芯片学习心得
;    TM1638_Write(DATA);        STB=1;}2.按键获取:注意这儿是从低位开始读的, 理解 的时候把B0~B7反过来理解就更好理解下面这个按键程序。在这儿花了很多时间来想这个。新疆快3_[官网入口]得到的 i 值就是按的第几个键。这儿真的这个程序写得太妙了,这个大神绝对的高手。单片机程序unsigned char Read_key(void){        unsigned char c[4],i,key_value=0;        STB=0; 
发表于 2020-02-20
单片机驱动LED数码管,按键TM1638芯片学习心得
单片机驱动EC11编码器
EC11编码器EC11编码器通常又被称为旋转编码器,一般主要是用于亮度,温度,频率,音量调节等参数控制。新疆快3_[官网入口]三只脚中的C脚接地,AB脚接上拉电阻后,当左转或右转时,AB脚就有脉冲信号输出。S1和S2脚为按压开关,按下时导通。旋转编码器的引脚图和原理图为:             顺时针和逆时针旋转AB引脚输出波形图和单片机通信的程序为:EC11.h#ifndef EC11#define EC11EC11.c#include<All.h>uchar EC11_Value = 125; // 获取旋转的值
发表于 2020-02-16
单片机驱动EC11编码器
单片机驱动16X192点阵程序及proteus仿真
下面是16X192点阵取模软件的设置截图 下面是16X192点阵的仿真原理图:单片机源程序:#include<AT89X52.H>sbit ST=P3^5;sbit E1=P3^4;sbit MR=P3^7;char cashe[12];char code wd[12][16]={{0xFF,0xC0,0xFE,0xFE,0xFE,0xFE,0x80,0xFE,0xFD,0xFD,0xFB,0xF7,0xEF,0xDF,0x3F,0xFF},{0xFF,0x03,0xFF,0xFF,0xFF,0xFF,0x01,0x7F,0x7F,0x7F,0x7F,0x7F,0x7D,0x7D,0x81
发表于 2020-02-16
单片机驱动16X192点阵程序及proteus仿真
51单片机驱动YL-69土壤湿度传感器
YL-69的资料内程序有51单片机和Arduino的测试程序,我用的是51的程序。先说我的模块吧,四线制的,如果你买的是三线制的也没关系,看完就懂。VCC GND的连线就不说了。DO —— 自己定于一个IO口,程序定义的是   key1=P0^1  ,AO ——  J9  4 (AIN1)  这个要对照单片机原理图自己找                   模拟量转数字量,用于LCD1602 显示准确数值
发表于 2020-02-12
51单片机驱动YL-69土壤湿度传感器
如何使用单片机驱动标准PC机键盘?C51程序详细说明
(noshift[i][0]==temp[1]) //功能键的通码在缓冲区的第二位  {  key=noshift[i][1];  ie=0x83;  return;  }  }  }  else //普通按键  {  for(i=0;i《80;i++)  {  if(noshift[i][0]==temp[0]) //普按键的通码在缓冲区的第一位  {  key=noshift[i][1];  ie=0x83;  return;  }  }  }  for(i=0;i《5;i++)  {  temp[i]=0;  }  }  PC机键盘按键通码与ASCII对照表  这个库要配合 单片机驱动标准pc机键盘的c51程序使用  unsigned
发表于 2020-02-02
如何使用单片机驱动标准PC机键盘?C51程序详细说明
AVR 单片机小学期 12864液晶 双人贪吃蛇游戏
新疆快3_[官网入口]12864液晶屏和初始化相关参数。  •      write_welcome();//欢迎界面  •      choose(1);//选择难易程度  •      choose(2);//选择单人或者双人模式  •      DisplayCLR();//清屏  •      Frame();//显示边框  •     
发表于 2020-02-15
小广播
何立民专栏 单片机及嵌入式宝典

新疆快3_[官网入口]北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 estoresdeals.com, Inc. All rights reserved

页面底部区域 foot.htm