DS1302LCD1602显示
在学习的过程 这个网站帮了很多忙 虽然很多资料都要下载 我就把代码直接贴出来吧
#include <reg52.h>
#include <intrins.h>typedef unsigned char uchar;#define DS1302_W_ADDR 0x80
#define DS1302_R_ADDR 0x81
/*******************DS1302********************/
// Ãë ·Ö Ê±
uchar TIME[3] = {35,16,23};sbit SCLK = P1^0;
sbit IO = P1^1;
sbit RST = P1^2;//д×Ö½Ú
void DS1302write_byte(uchar byte)
{uchar i;for(i = 0; i < 8; i++){SCLK = 0; //ÀµÍʱÖÓÏßIO = byte & 0x01; byte >>= 1; SCLK = 1; //À¸ßʱÖÓÏß ²úÉúÉÏÉýÑØ Ð´ÈëÊý¾Ý}
}
//¶Á×Ö½Ú
uchar DS1302read_byte()
{uchar i,dat;for(i = 0; i < 8; i++){SCLK = 0;dat >>= 1;if(IO) dat |= 0x80;SCLK = 1; } return dat;
}
//дÊý¾Ý
void DS1302write_dat(uchar addr,uchar dat)
{DS1302write_byte(addr);DS1302write_byte(dat);}
//¶ÁÊý¾Ý
uchar DS1302read_dat(uchar addr)
{uchar dat;DS1302write_byte(addr);dat = DS1302read_byte();return dat;
}//Çå³ýд±£»¤
void DS1302clear_wp()
{RST = 0;SCLK = 0;RST = 1;DS1302write_dat(0x8e,0x00);}
//ÉèÖÃд±£»¤
void DS1302set_wp()
{DS1302write_dat(0x8e,0x80);SCLK = 0;RST = 0;
}
// ÉèÖÃÆðʼʱ¼ä
//Ê®½øÖÆתBCD
void DS1302set_time(uchar addr)
{uchar i,j;DS1302clear_wp();for(i = 0; i < 3; i++){j=TIME[i]/10;TIME[i]=TIME[i]%10;TIME[i]=TIME[i]+j*16; DS1302write_dat(addr,TIME[i]); addr += 2;}DS1302set_wp();
}
//¶ÁDS1302µÄÊý¾Ý
//¶ÁÈ¡BCDÂë
void DS1302read_time(uchar addr)
{uchar i;DS1302clear_wp();for(i = 0; i < 3; i++){TIME[i] = DS1302read_dat(addr);addr += 2;}DS1302set_wp();
}
/*********************LCD1602ÏÔʾ***********************************/
sbit RS = P3^5;
sbit RW = P3^6;
sbit EN = P3^4;//ÅÐæ
void read_busy()
{uchar busy;RS = 0;RW = 1;P0 = 0xff;do{EN = 1;busy = P0;EN = 0; }while(busy & 0x80);
}
//дÃüÁî
void write_cmd(uchar cmd)
{read_busy();RS = 0;RW = 0;P0 = cmd;EN = 1;EN = 0;
}
//дÊý¾Ý
void write_dat(uchar dat)
{read_busy();RS = 1;RW = 0;P0 = dat;EN = 1;EN = 0;
}
//ÏÔʾһ¸ö×Ö·û
void dis_onechar(uchar x,uchar y,uchar dat)
{if(y) x |= 0xc0;x |= 0x80;write_cmd(x);write_dat(dat);
}
//ÏÔʾһ¸ö×Ö·û´®
void dis_str(uchar x,uchar y,uchar *str)
{if(y) x |= 0xc0;x |= 0x80;write_cmd(x);while(*str != '\0'){P0 = *str;str++;}
}
void LCD1602_init()
{write_cmd(0x38);write_cmd(0x0c);write_cmd(0x06);write_cmd(0x01);//ÇåÆÁ
}
/**********************Ö÷º¯Êý****************************************/
void main()
{DS1302set_time(0x80);LCD1602_init();while(1){DS1302read_time(0x81);dis_onechar(7,0,TIME[2]/16 + '0'); //ʱdis_onechar(8,0,TIME[2]%16 + '0');dis_onechar(9,0,':');dis_onechar(10,0,TIME[1]/16 + '0'); //·Ödis_onechar(11,0,TIME[1]%16 + '0');dis_onechar(12,0,':');dis_onechar(13,0,TIME[0]/16 + '0');//Ãëdis_onechar(14,0,TIME[0]%16 + '0');}
}
DS1302LCD1602显示相关推荐
- ORACLE-SQL笔记
-- 首先,以超级管理员的身份登录oracle <span id="172_nwp" style="width: auto; height: auto; float ...
- Android开发从入门到精通
Android开发从入门到精通 --Android经典教程 目 录 目 录 1 第一章 什么是Android 1 什么是Android - 嵌入式设备编程的历史-第一章(1) 1 开放手机联盟和And ...
- java操作跨页的word cell,“excle如何打印不出现断行“EXCEL中,如何不跨页断行打印或显示,谢谢...
EXCEL中,如何不跨页断行打印或显示,谢谢 打印预览--页面设置--工作表--网格线(打勾) 试试! java导入excel 判断当前行有没有数据 工作中用到入excel一个方法,你还可以通过一些插 ...
- 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行
1. shell 相关 1.1 默认 shell Makefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的. 多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 ...
- Git 常用操作(3)- 本地分之显示、创建、切换、合并和删除操作
1. 分支简介 Git 的 "master" 分支并不是一个特殊分支.它就跟其它分支完全没有区别.之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创 ...
- Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装、图片加载、显示和保存
Ubuntu 16.04 下安装 Opencv sudo apt-get install libopencv-dev sudo apt-get install python-opencv 或者使用 p ...
- Linux df -h 显示磁盘空间满,但实际未占用满——问题分析
问题现象 工作中遇到一个问题,在 TX2 系统上,告警提示磁盘空间不够,如图所示 wohu@wohu:/$ df -h Filesystem Size Used Avail Use% Mounted ...
- 1 用python进行OpenCV实战之用OpenCV3实现图片载入、显示和储存
code 将下面文档存为load_display_save.py #-*- coding:utf-8 -*- from __future__ import print_function #1 impo ...
- Visual Studio 中文显示乱码问题
今天在码云上Fork了一个开源工程,编译环境是Visual Studio C++, 由于自己本地平台主要是进行Linux开发,平时文档编码格式都是utf-8的,编译没问题,但运行起来就是乱码,就像下图 ...
最新文章
- LeetCode 1024. 视频拼接
- python学习19--生成器
- java实现迷宫算法--转
- Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(一)
- NAnt简单介绍和我第一个例子
- BZOJ-2194 快速傅立叶之二
- 23种设计模式之门面模式
- 百度google关键字优化的小技巧
- 7-2 个位数统计 (15 分)
- Apollo使用ConfigBean装载配置
- C++函数调用时堆栈的变化情况
- @ControllerAdvice + @ExceptionHandler 处理 全部Controller层异常
- 理解图像中的低频分量和高频分量
- 【译】2021年国外十大AI自动写作软件评测
- win10分辨率设置正确但屏幕却被拉伸了,如何处理
- 如何留住你的员工——员工流失分析
- vue中使用ajax全局配置,jQuery和vue 设置ajax全局请求
- Apple Pay支付分享
- 怎么在数学表达式里输入小数点
- RXD与TXD如何连接