LCD1602液晶屏+DS1302时钟芯片的电子时钟

发布者:之敖赵先生最新更新时间:2012-08-04 来源: 61ic关键字:LCD1602  DS1302  电子时钟 手机看文章 扫描二维码
随时随地手机看文章

点击浏览下一页
 程序源代码下载地址:http://www.51hei.com/f/1320dsf.rar

#include
#define uchar unsigned char
#define uint unsigned int

uchar code tab1[]="DS1302";
uchar code tab2[]="Week-";
uchar code tab3[]="0123456789";
uchar xdw[13];

sbit SCK=P2^0;
sbit AB=P2^1;
sbit RS=P2^2;
sbit RW=P2^3;
sbit EN=P2^4;
sbit RST=P2^5;
sbit SCLK=P2^6;
sbit DS=P2^7;


void DS1302_xie_hs(uchar dat);
void DS1302_xie_1byte(uchar add,uchar tdat);
uchar DS1302_du_hs(void);
uchar DS1302_du_1byte(uchar add);
void LCM1602_xie_cmd_hs(uchar cmd);
void LCM1602_xie_dat_hs(uchar dat);
void display();
void dushuju();
void inti();
void delay(uint z);

void DS1302_xie_hs(uchar dat)
{
 uint i,num;
 num=dat;
 for(i=0;i<8;i++)
 {
  DS=(bit)(num&0x01);
  SCLK=1;
  SCLK=0;
  num>>=1;
 }
}

void DS1302_xie_1byte(uchar add,uchar tdat)
{
 RST=0;
 SCLK=0;
 RST=1;
 DS1302_xie_hs(add);
 DS1302_xie_hs(tdat);
 SCLK=1;
 RST=0;
}

uchar DS1302_du_hs(void)
{
 uchar i,num;
 for(i=0;i<8;i++)
 {
  num>>=1;
  if(DS)
  num|=0x80;
  SCLK=1;
  SCLK=0;
 }
 return(num);
}

uchar DS1302_du_1byte(uchar add)
{
 uchar tmp;
 RST=0;
 SCLK=0;
 RST=1;
 DS1302_xie_hs(add);
 tmp=DS1302_du_hs();
 SCLK=1;
 RST=0;
 return(tmp);
}

void LCM1602_xie_cmd_hs(uchar cmd)
{
 uchar i,num;
 RS=0;
 RW=0;
 EN=0;
 
 RS=0;
 RW=0;
 EN=1;
 num=cmd;
 for(i=0;i<8;i++)
 {
  AB=(bit)(num&0x01);
  SCK=0;
  SCK=1;
  num>>=1;
 }
 EN=0;
}
void LCM1602_xie_dat_hs(uchar dat)
{
 uchar i,num;
 RS=0;
 RW=0;
 EN=0;
 
 RS=1;
 RW=0;
 EN=1;
 num=dat;
 for(i=0;i<8;i++)
 {
  AB=(bit)(num&0x01);
  SCK=0;
  SCK=1;
  num>>=1;
 }
 EN=0;
}

void display()
{
 uchar i,j,tmp;

 LCM1602_xie_cmd_hs(0x80+0x08);
 for(i=0;i<3;i++)
 {
  for(j=0;j<2;j++)
  {
   LCM1602_xie_dat_hs(tab3[xdw[i*2+j]]);
   delay(2);
  }

 }
}

void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
 for(y=110;y>0;y--);
}

void inti()
{
 RS=0;
 RW=0;
 EN=0;
 SCLK=0;

 LCM1602_xie_cmd_hs(0x38);
 LCM1602_xie_cmd_hs(0x0c);
 LCM1602_xie_cmd_hs(0x06);

 DS1302_xie_1byte(0x8e,0x00);
 DS1302_xie_1byte(0x80,0x00);
 DS1302_xie_1byte(0x82,0x29);
 DS1302_xie_1byte(0x84,0x22);
 DS1302_xie_1byte(0x86,0x24);
 DS1302_xie_1byte(0x88,0x01);
 DS1302_xie_1byte(0x8a,0x02);
 DS1302_xie_1byte(0x8c,0x12);
 DS1302_xie_1byte(0x8e,0x80);
}

void dushuju()
{
uchar seg;
seg=DS1302_du_1byte(0x8d);
xdw[0]=seg>>4;
xdw[1]=seg&0x0f;

seg=DS1302_du_1byte(0x89);
xdw[2]=seg>>4;
xdw[3]=seg&0x0f;

seg=DS1302_du_1byte(0x87);
xdw[4]=seg>>4;
xdw[5]=seg&0x0f;

seg=DS1302_du_1byte(0x85);
xdw[6]=seg>>4;
xdw[7]=seg&0x0f;

seg=DS1302_du_1byte(0x83);
xdw[8]=seg>>4;
xdw[9]=seg&0x0f;

seg=DS1302_du_1byte(0x81);
xdw[10]=seg>>4;
xdw[11]=seg&0x0f;

seg=DS1302_du_1byte(0x8b);
xdw[12]=seg&0x0f;
}

void main()
{
 inti();
 while(1)
 {
  dushuju();
  display();
 }
}
关键字:LCD1602  DS1302  电子时钟 引用地址:LCD1602液晶屏+DS1302时钟芯片的电子时钟

上一篇:51单片机普通IO口模拟串行口之查询方式
下一篇:stc单片机不断电下载程序

推荐阅读最新更新时间:2024-03-16 13:04

基于51单片机的多功能电子时钟设计
设计任务: 1、设计任务:利用单片机、时钟芯片 DS1302、温度传感器 DS18B20、1602 液晶 等实现日期、时间、温度的显示即一个简单的万年历。 2、设计要求 (1)通过 DS1302 能够准确的计时,时间可调并在液晶上显示出来。 (2)通过 DS18B20 能够实时、准确的检测当前环境温度。 (3)利用单片机自身功能实现闹钟 总体方案论证与设计 总体方案论证与设计 本系统以 AT89S52 单片机为控制核心,通过与 DS1302 和 DS18B20 通信获取实时时间和实时环境温度,并将得到的数据通过 1602 液晶 显示出来,同时通过相应的按键调整相应的值。因此本设计可分为一 下模块:显示模块、实时时间计算模块、实
[单片机]
基于51单片机的多功能<font color='red'>电子时钟</font>设计
LCD1602动态显示
仿真元原理图如下: /*------------------------------------- 功能:LCD1602局部动态显示 描述:在屏幕的第二行固定位置显示count: 后面接着动态显示按键次数(00 ~ 99) Author: Zhang Kaizhou Date: 2019-6-5 10:50:22 -------------------------------------*/ #include reg52.h #include string.h #define uchar unsigned char #define uint unsigned int uchar code table0 = { Press
[单片机]
<font color='red'>LCD1602</font>动态显示
avr单片机ds1302时钟程序详解
ds1302是一个时钟芯片,和avr没关系,这里用mega32操作该芯片,关于这个芯片网上资料很多,我简单说一下,通信方式是SPI模式,芯片内部有几个寄存器存放年月日时分秒,还有写保护等。 ***************************************************************** //CPU:mega32 //编译器:iar //DS1302 //main函数中调用lcd显示函数 #include ioavr.h #include lcd.h void Write1302 ( unsigned char addr,unsigned char dat ); unsigned char Re
[单片机]
avr单片机<font color='red'>ds1302</font>时钟程序详解
时钟芯片DS1302+AT89C2051的红外遥控LED电子钟电路设计与制作
自制LED电子钟在很多电子报刊杂志上都可以见到,但大多数在断电后都要重新设置时间等参数,给使用带来很多不便。也有用后备电池作为备用电源的,但往往体积较大。本文介绍的LED电子钟克服了以往的弊端,而且采用了家电通用的红外遥控器进行控制,方便使用。有一路闹铃输出,可以通过遥控器设置闹铃时间及允许与否。 一.工作原理 DS1302为达拉斯公司的一种实时时钟芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32768 Hz 晶振 。 AT89C2051作为主控芯片,一是对接收到的红外遥控编码进行判断识别,并执行相应的处理;第二就是定期的读取时钟芯片DS1302中的时间并把小时和肥
[单片机]
时钟芯片<font color='red'>DS1302</font>+AT89C2051的红外遥控LED电子钟电路设计与制作
基于AVR单片机的DS1302子程序
摘要: 目 的: 建立DS1302操作库 目标系统: 基于AVR单片机 应用软件: ICCAVR /********************************************************************* 目 的: 建立DS1302操作库 目标系统: 基于AVR单片机 应用软件: ICCAVR *********************************************************************/ /*01010101010101010
[单片机]
51单片机 LCD1602调试工具
本章博客讲述的是关于LCD1602的调试,使用它是为了更加直观的表示出代码所要实现的功能 1.首先,需要添加两份驱动文件到新建的工程中来,再插入到新建的工程中来 将其复制到新建文件的同一目录下,在进行添加 2.写出以下代码进行编译查看效果 #include REGX52.H #include LCD1602.h void main() { LCD_Init(); LCD_ShowChar(1,1,'A'); LCD_ShowString(1,3, Hello ); LCD_ShowNum(1,9,123,3); //高位补零,如果最后一位是2则显示23 LCD_
[单片机]
51单片机 <font color='red'>LCD1602</font>调试工具
基于51单片机+DS18B20温度测温器+LCD1602显示
DS18B20特性 1.独特的单总线接口,就需一条线则可实现双向通信(测温) 2.测温范围:-55℃~+125℃,可通过编程设定9—12位分辨率,对应分辨温度分别为0.5、0.25、0.125、0.0625℃。 3.支持多点组网(可连接多个DS18B20温度传感器),多个DS18B20可以并联(3或2线)实现多个组网测温,但注意超过8个要解决好供电问题,否则电压过低会导致传输不稳定,从而数据不准确。 4.工作电压:3.0~5.5V (寄生电源方式下可由数据线供电) 5.在使用过程中不需要外围电路,全部传感元件及转换电路都在芯片内了。(上拉电阻) 6.测温结果直接是数字量输出,单总线串行传送方式,同时可传送CRC校验码(校验数据采集
[单片机]
基于51单片机+DS18B20温度测温器+<font color='red'>LCD1602</font>显示
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved