历史上的今天
返回首页

历史上的今天

今天是:2025年02月13日(星期四)

正在发生

2020年02月13日 | 单片机驱动19264液晶大数字时钟程序

2020-02-13 来源:51hei

弄了个简单的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);       //调整

                        }

                           while(K1 == 0);        //等待键松开 

                }

//确认,返回键-------------------------------------------------------------------                

                if (K2 == 0)               //在调时状态时就退出调时

                {

                        DelayM(20);            //按键消抖

                        if(K2 == 0 && w == 1)

                        {                                

                                w = 0;                   //退出调时

推荐阅读

史海拾趣

CLAIREX公司的发展小趣事

随着订单的不断增加,Clairex意识到必须提升生产能力以满足市场需求。于是,公司投入大量资金引进了先进的生产设备和技术,并对生产线进行了优化改造。同时,Clairex还建立了严格的质量控制体系,从原材料采购到产品出厂的每一个环节都进行严格把关。这些措施确保了Clairex产品的质量和稳定性,赢得了客户的信任和好评。

灿科盟(Ckmtw)公司的发展小趣事

灿科盟电子实业有限公司成立于2003年8月,注册资金100万。公司创始人凭借在电子行业多年的积累,决定创立自有品牌“CKMTW”,专注于连接器产品的研发与生产。在初创阶段,公司面临着资金紧张、市场竞争激烈等挑战,但凭借坚定的信念和不断的技术创新,逐渐在市场中站稳脚跟。

ELPIDA公司的发展小趣事

2012年,由于无法承受巨大的财务压力和市场竞争压力,ELPIDA宣布破产保护。随后,美国美光科技公司(Micron Technology)以较低的价格收购了ELPIDA。这一事件标志着日本在DRAM领域的彻底失败,同时也为美光公司带来了重要的技术和市场资源。

HEICO Corporation公司的发展小趣事

自1957年成立以来,HEICO Corporation不断扩展其电子技术领域的业务。公司电子技术部门专注于设计、制造电子、数据和微波以及光电产品,涵盖了从红外模拟和测试设备到激光测距接收器、电源转换产品等多个方面。这种多元化的产品组合不仅满足了航空、国防等行业的特定需求,也逐渐在医疗、电信等电子行业中占据了一席之地。通过持续的技术创新和研发投入,HEICO在电子市场上建立了稳固的地位。

Cybernetic Micro Systems公司的发展小趣事

随着业务的不断发展,CMS开始将目光投向国际市场。他们通过设立海外研发中心和生产基地,积极拓展海外市场。同时,CMS还加强了与国际知名企业的合作与交流,共同推动电子行业的发展。如今,CMS的产品已经遍布全球多个国家和地区,成为电子行业中不可忽视的一股力量。

Chemtronics公司的发展小趣事

为满足电子行业对无铅应用的需求,Chemtronics专门设计了完整的无铅产品线,并成为业内第一个向市场提供此类产品的公司。这一创新不仅满足了市场对环保和高效产品的需求,也进一步巩固了Chemtronics在电子行业的领先地位。

问答坊 | AI 解惑

新型显示系统引领汽车仪表技术新潮流

加拿大一家企业最近推出可取代现有汽车液晶显示器的显示系统。该系统在仪表盘内部设置小型投影机,可以向整个仪表盘投射内容并显示,既可使画面尺寸大型化,又可在仪表盘之类的曲面上显示。另外,如只需改变投影图像,就能更改仪表盘的外形,以满足 ...…

查看全部问答>

请帮忙推荐一款元器件I-V曲线测试仪

请帮忙推荐一款元器件I-V曲线测试仪,用作手机领域电子器件的失效分析用,要求价格适中。 我们工厂现在用的是Sony 370A programmable curve tracer,我需要与之功能类似的I-V曲线测试仪。 我的邮箱为liuping_davy@yahoo.com.cn 谢谢大家。 [ 本 ...…

查看全部问答>

LED3216电子钟硬件电路正式版

看到坛子里正在带着大家做电子钟,看到了一个博客,写的很清晰,引用过来供大家参考:        LED3216电子钟是由LED3216点阵显示系统升级过来的,在这个过程中硬件电路也有过几次变动,如果不是跟着我一起升级过来的爱好者, ...…

查看全部问答>

好家伙,TI又推了个6核DSP TMS320C6472

这是我找到的一些信息,供大家参考下~~~~ 日前,德州仪器 (TI) 宣布推出业界最低功耗 6 核 DSP,该款 TMS320C6472 器件旨在满足要求极低功耗的处理密集型应用的需求。此外,为了更便捷、更经济地评估 C6472 器件的性能,TI 还同步推出了一款多核处 ...…

查看全部问答>

SPI 使用DMA方式如何来做?

需要一些提示! 因为对数据的传输要求高!    我是利用SPI 来实现向设备写数据的,而且写数据时在设备触发的IST中的! 我想用DMA的方式来做!   【平台】 2440 wince5.0…

查看全部问答>

跪求compactPCI 相关规范

急需compactPCI 相关规范,尤其compactPCI hot swap specification 哪个好心人给发一份吧, 邮箱:dashu124@yahoo.com.cn QQ: 277642914…

查看全部问答>

请教一个ARM网络方面的问题

ARM通过网络访问指定网站的内容,并将内容显示在ARM上,请问该在实现?实在没分了,谢谢!我想知道大概的思路…

查看全部问答>

请问如何比较简单地产生负电源?

请教各位大侠,如何快速地利用板子上已有的+5V和+12V产生-5v和-12v电压?   采用什么芯片或者电路构建比较简单合理呢?   补充: -12v负电压没什么要求,只要引到LF353的4脚给他做负电源就行了~ 板子上的+5v和+12v是通过PC104总线 ...…

查看全部问答>

由地下停车场到“地下城市”

—地下停车场LED智能灯应用及前景展望 经过数年的理论积淀、技术研发及产品推广,华威凯德照明科技(北京)有限公司在半导体照明领域取得了显著成绩。公司率先提出的“按需照明”理念已为业内专家、同行及社会各界广泛接受,以地下停车场LED智能 ...…

查看全部问答>

13号综合测评要用什么系统板?有消息吗?

本帖最后由 paulhyde 于 2014-9-15 03:52 编辑 RT,大家有知道内幕的吗?  …

查看全部问答>