IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机对DS1302(实时时钟芯片)的仿真 -> 正文阅读

[嵌入式]51单片机对DS1302(实时时钟芯片)的仿真

51单片机对DS1302(实时时钟芯片)的仿真

  • 仿真效果
    在这里插入图片描述

  • 源代码

#include <reg51.h>
#include <intrins.h>  //因为要调用nop函数,所以添加了这个库NOP,延时作用
sbit RS=P3^0;    //NOP指令本身的含义是空操作,即此时CPU什么也不做,仅仅是等待,直到下一个机器周期的到来。
sbit RW=P3^1;
sbit E=P3^2;
sbit T_RST=P3^3;
sbit T_CLK=P3^4;
sbit T_IO=P3^5;
unsigned char datechar[]={"DATE:"};
unsigned char timechar[]={"TIME:"};
unsigned char datebuffer[10]={0x32,0x30,0,0,0x2d,0,0,0x2d,0,0};//0x32表示2,0x30表示0,0x2d表示—
unsigned char timebuffer[8]={0,0,0x3a,0,0,0x3a,0,0};//0x3a表示:
unsigned char weekbuffer={0x30};

void  WriteB(unsigned char  dat)//单字节写
{ 
   unsigned char  i;
   for(i=8; i>0; i--)
  {
        T_IO=dat&0x01;
        T_CLK = 1;
        T_CLK = 0;
        dat = dat >> 1; 
   } 
}

unsigned char  ReadB(void) //单字节读
{ 
	unsigned char i,readdat=0;
	for(i=8; i>0; i--)
	{
		readdat=readdat>>1;
		if(T_IO)
		{
			readdat|=0x80;
		}
		T_CLK = 1;
		T_CLK = 0;            
	} 
	return(readdat); 
}

void  W1302(unsigned char address,unsigned char dat)
{
	T_RST = 0;
	T_CLK = 0;
	_nop_();
	_nop_();
	T_RST = 1;
	_nop_();
	_nop_();
	WriteB(address);         
	WriteB(dat);           
	T_CLK = 1;
	T_RST =0;
} 

unsigned char  R1302(unsigned char  address)//上面的是DS1302的函数
{
	unsigned char dat=0;
	T_RST = 0;
	T_CLK = 0;
	T_RST = 1;
	WriteB(address);           
	dat = ReadB();           
	T_CLK = 1;
	T_RST =0;
	return(dat);
}

void delay(unsigned int n)//延时函数
{
  unsigned i=0,j=0;
	for(i=0;i<n;i++)
	{
	  for(j=0;j<120;j++);
	}
}
void writedat(unsigned char dat)//写数据函数lcd的下面这些函数
{
  RS=1;  //  RS:数据/命令选择端
	RW=0;  //  R/W :读/写选择端 
	E=0;   //  使能端:下降沿有效 
	P2=dat;
	delay(5);
	E=1;
	E=0;
}

void writecom(unsigned char com)//写命令函数 
{
  RS=0;  //  RS:数据/命令选择端 
	RW=0;  //  R/W :读/写选择端  
	E=0;   //使能端:下降沿有效 
	P2=com;
	delay(5);
	E=1;
	E=0; 
}
void initlcd()//初始化LCD1602
{
  writecom(0x38);  //0x38;设置16×2显示
	writecom(0x0c);  //0x0C:设置开显示,不显示光标
	writecom(0x06);  //0x06:写一个字符后地址指针加1
	writecom(0x01);  //0x01:显示清0,数据指针清0
}


void display()//显示函数
{
	int i=0,temp=0;
	temp=R1302(0x8d);  //读年
	datebuffer[2]=0x30+temp/16;
	datebuffer[3]=0x30+temp%16;
	
	temp=R1302(0x8b);  //读星期
	weekbuffer=0x30+temp;
	
	temp=R1302(0x89);  //读月
	datebuffer[5]=0x30+temp/16;
	datebuffer[6]=0x30+temp%16;
	
	temp=R1302(0x87);  //读日
	datebuffer[8]=0x30+temp/16;
	datebuffer[9]=0x30+temp%16;
	
	temp=R1302(0x85);  //读时
  temp=temp&0x7f;
	timebuffer[0]=0x30+temp/16;
	timebuffer[1]=0x30+temp%16;
	
	temp=R1302(0x83);  //读分
	timebuffer[3]=0x30+temp/16;
	timebuffer[4]=0x30+temp%16;
	
	temp=R1302(0x81);  //读秒
	temp=temp&0x7f;
	timebuffer[6]=0x30+temp/16;
	timebuffer[7]=0x30+temp%16;
	
	writecom(0x80);  //0x80:LCD第一行的起始地址
	for(i=0;i<5;i++)
	{
	  writedat(datechar[i]);
	}
	writecom(0xc0);
	for(i=0;i<5;i++)
	{
	  writedat(timechar[i]);
	}
	
	writecom(0x86);//显示日历
	for(i=0;i<10;i++)
	{
	  writedat(datebuffer[i]);
	}
	writecom(0xc6);//显示时间
	
	for(i=0;i<8;i++)
	{
	  writedat(timebuffer[i]);
	}
	writedat(' ');
	writedat(weekbuffer);//显示星期
}


void main()
{
	initlcd();
	W1302(0x8e,0);   //打开写保护
	W1302(0x8c,0x21);//打开年,BCD码
	W1302(0x8a,0x04);//写入星期
	W1302(0x88,0x07);//写入月
	W1302(0x86,0x15);//写入日
	W1302(0x84,0x22);//写入时
	W1302(0x82,0x42);//写入分
	W1302(0x80,0x30);//写入秒
	W1302(0x8e,0x80);//关闭写保护
	while(1)
	{
	  display();
	}
}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:27:52  更:2021-07-16 11:27:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:50:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码