当前位置: 首页 > news >正文

原生态旅游网站开发需求分析专业的网站制作专业公司

原生态旅游网站开发需求分析,专业的网站制作专业公司,简单的公司网页制作,如何做网站微信小程序本文是关于DS1302时钟芯片的相关介绍。 文章目录 一、 DS1302时钟芯片介绍二、DS1302的使用2.1、DS1302的控制寄存器2.2、DS1302的日历/时钟寄存器2.3、片内RAM2.4、DS1302的读写时序 三、SPI总线介绍四、DS1302使用示例 一、 DS1302时钟芯片介绍 DS1302是DALLAS公司推出的涓流… 本文是关于DS1302时钟芯片的相关介绍。 文章目录 一、 DS1302时钟芯片介绍二、DS1302的使用2.1、DS1302的控制寄存器2.2、DS1302的日历/时钟寄存器2.3、片内RAM2.4、DS1302的读写时序 三、SPI总线介绍四、DS1302使用示例 一、 DS1302时钟芯片介绍 DS1302是DALLAS公司推出的涓流充电时钟芯片内部含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信。该芯片是3线SPI接口。 实时时钟/日历电路提供秒、分、时、日、周、月、年的信息每月的天数和闰年的天数可以自动调整。 时钟操作通过AM/PM只是决定采用24或12小时格式。 DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需要用到三根通信线 ① RES复位② I/O数据线③ SCLK串行时钟。 时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。 DS1302工作时功耗很低保持数据个时钟信息时功率小于1mW。 DS1302的双电源管脚用于主电源和备份电源供应Vcc1为可编程涓流充电电源附加七个字节存储器。它广泛应用与电话、传真、便携式仪器以及电池供电的仪器仪表等产品领域下面。 DS1302主要的性能指标 实时时钟具有能计算2100年之前的秒、分、时、日、周、月、年的能力还有闰年调整能力。31个8位暂存数据存储RAM。串行I/O口方式使得管脚数量最少。宽范围工作电压3.0~5.5V。工作在2.0V时电流小于300nA。读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送方式。8脚DIP封装或可选的8脚SOIC封装根据表面装配。简单3线接口。与TTL兼容Vcc5V。可选工业级温度范围-40~85。具有涓流充电能力。采用主电源和备份电源双电源供应备份电源可用电池或大容量电容实现。 DS1302芯片管脚如下 芯片管脚功能 管脚名称管脚标号说明Vcc21备用电源引脚接入电池断电时提供1302电源X1、X22、3外部晶振引脚通常需要外接32.768K晶振GND4电源地CE5使能引脚也是复位引脚RST低电平有效操作时置为高电平I/O6串行数据引脚数据输出或输入都使用该引脚具有三态功能SCLK7串行时钟引脚Vcc18工作电源引脚 二、DS1302的使用 操作DS1302的大致过程就是将各种数据写入DS1302的寄存器来设置它当前的时间的格式然后使DS1302开始运作DS1302时钟会按照设置情况运转再用单片机将其寄存器内的数据读出最后用液晶显示就是常说的简易电子时钟。 简单来说DS1302的操作分2步显示部分属于液晶显示的内容不属于DS1302本身的内容。 首先了解下寄存器DS1302有一个控制寄存器、12个日历/时钟寄存器和31个RAM。 2.1、DS1302的控制寄存器 控制寄存器用于存放DS1302的控制命令字DS1302的RST引脚回到高电平后写入的第一个字节为控制命令它用于对DS1302读写过程进行控制格式如下 765432101RAM/CKA4A3A2A1A0RD/WR 第7位固定是1。第6位1表示片内RAM0表示日历、时钟寄存器选择位。第5到1位地址位用于选择进行读写的日历、时钟寄存器或片内RAM。第0位1表示RD即下一步的操作是读0表示WR即下一步的操作是写。 第5到1位取值代表的RAM或寄存器如下表所示。根据下表可以知道如果要读秒寄存器命令为1000 0001如果要写秒寄存器命令为1000 0000。 寄存器名称D71D6RAM/CKD5A4D4A3D3A2D2A1D1A0D0RD/WR寄存器值秒寄存器10000000或180H/81H分寄存器10000010或182H/83H时寄存器10000100或184H/85H日寄存器10000110或186H/87H月寄存器10001000或188H/89H星期寄存器10001010或18AH/8BH年寄存器10001100或18CH/8DH写保护寄存器10001110或18EH/8FH慢充电寄存器10010000或190H/91H时钟突发模式10111110或1BEH/BFHRAM011000000或1C0H/C1H…11……………0或1…RAM3011111100或1FCH/FDHRAM突发模式11111110或1FEH/FFH 2.2、DS1302的日历/时钟寄存器 DS1302共有12个寄存器其中7个与日历、时钟有关存放的数据为BCD码形式格式如下 寄存器名称取值范围D7D6~D4D3~D0秒寄存器00~59CH秒的十位秒的个位分寄存器00~590分的十位分的个位时寄存器01 ~ 12或00 ~ 2312或24D6-D5-D40-A/P-HR时的个位日寄存器01~310D6-D5D40-日的十位日的个位月寄存器01~120D6-D5-D40-0-1或0月的个位周寄存器01~070D6-D5-D40-0-0星期几年寄存器01~99年的十位年的十位年的个位写保护寄存器WP0-0-00-0-0-0慢充电寄存器TCSTCS-TCS-TCSDS-DS-RS-RS时钟突发寄存器 寄存器说明 秒寄存器低四位为SEC高的次三位为10SEC。CH位为时钟暂停位当CH1时时钟暂停CH0时时钟开始启动。 时寄存器最高位为12/24小时的格式选择位1表示12小时格式0表示24小时格式 当设置为12小时显示格式时D5的高电平表示上午AMD5低电平表示下午PM当设置为24小时格式时D5、D4表示小时的十位。 写保护寄存器最高位WP为1时DS1302只读不写一般在往DS1302写数据之前确保WP为0。 慢充电寄存器TCS位为控制慢充电的选择当为1010时才能使慢充电工作。 DS为二极管选择位。DS01表示选择一个二极管DS10表示选择二个二极管DS11或00表示充电器被禁止与TCS无关。 RS用于选择连接在Vcc2和Vcc1之间的电阻RS00充电器被禁止与TCS无关电阻选择如下 RS位电阻器阻值00无无01R12K10R24K11R38K 从DS1302中读取出来的时钟数据均为BCD码格式需要转换为习惯的十进制。 BCD码是通过4位二进制码来表示1位十进制中的0~9这10个数码。 二进制码转换为BCD码的方式为4位二进制码大于1001时加6。比如BCD码00001100的二进制码为0000110060010010。 如下所示 十进制码二进制码00000100012001030011401005010160110701118100091001 2.3、片内RAM DS1302片内有31个RAM单元对片内RAM的操作方式有两种单字节方式和多字节方式。 当控制命令字位C0H~FDH时为单字节读写方式命令字中的D5 ~ D1用于选择对应的RAM单元。 当控制命令字为FEH、FFH时为多字节操作表中的RAM突发模式多字节操作可一次把所有的RAM单元内容进行读写。FEH为写操作FFH为读操作。 2.4、DS1302的读写时序 在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302数据输入从低位开始。在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据读出数据时从低位到高位。时序图如下。 DS1302通过SPI串行总线跟单片机通信当进行一次读写操作时最少得读写两个字节第一个字节是控制字节就是一个命令告诉DS1302是读还是写操作是对RAM还是CLOCK寄存器操作。第二个字节是要读或要写的数据。单字节读写只有在SCLK为低电平时才能将CE置为高电平。所以在进行操作之前需要先将SCLK置低电平然后将CE置为高电平接着开始在IO上放入要传送的电平信号。然后跳变SCLK。数据在SCLK上升沿时DS1302读写数据在SCLK下降沿时DS1302放置数据到IO上。 上图是DS1302的三个时序复位时序、单字节写时序、单字节读时序。 CERST复位时序在RST引脚产生一个正脉冲在整个读写期间RST保持高电平一次字节读写完毕后把RST返回低电平准备下次读写周期。 单字节读时序读之前要先对寄存器写命令从最低位开始写可以看到写数据时在SCLK的上升沿实现读数据在SCLK的下降沿实现。在单字节读时序中写命令的第八个上升沿结束后紧接着的第八个下降沿就将要读寄存器的第一位数据读到数据线上了。读出来的数据也是最低位开始。 单字节写时序两个字节的数据配合16个上升沿将数据写入即可。 需要注意的是 在操作DS1302之前需要关闭写保护。用延时来降低单片机的速度以配合器件时序。DS1302读出来的数据是BCD码形式要转换成常用的10进制。读取字节之前将IO设置为输入口读取完之后将IO改回输出口。写程序时建议开辟数组集放置DS1302的一系列数据方便扩展键盘输入。 三、SPI总线介绍 SPISerial Peripheral Interface串行外围接口。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器、数字信号处理器和数字信号解码器之间。 SPI接口是在CPU和外围低速器件之间进行同步串行数据传输在主器件的移位脉冲下数据按位传输高位在前低位在后为全双工通信数据传输速度总体来说比I2C总线要快可达几Mbps。 SPI接口以主从方式工作这种方式下通常有一个主器件和一个或多个从器件其接口包括以下四种信号 MOSI——主器件数据输出从器件数据输入MISO——主器件数据输入从器件数据输出SCLK——时钟信号由主器件产生/CE——从器件使能信号由主器件控制 SPI接口内部硬件如下 SPI没有指定的流控制没有应答机制确认是否接收到数据。 四、DS1302使用示例 本示例实现的功能是系统运行时数码管上显示电子时钟格式为xx-xx-xx。 使用到的资源有数码管以及DS1302时钟芯片DS1302时钟模块设计如下DS1302芯片的控制管脚接至单片机的P3.4~P3.6口上在芯片的X1、X2管脚处外接了一个32.768KHz晶振为时钟运行提供一个稳定的时钟频率。 软件实现按照上面介绍的时序编写DS1302的读、写时序代码如下 sbit DSIOP3^4; sbit RSTP3^5; sbit SCLKP3^6;// DS1302读时、分、秒等寄存器的地址命令依次是秒分时日月周年 uchar code READ_RTC_ADDR[]{0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; // DS1302写时、分秒等寄存器的地址命令依次是秒分时日月周年 uchar code WRITE_RTC_ADDR[]{0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};// 时钟初始化2023-12-26星期二12点0分0秒存储顺序按照秒分时日月周年 // 存储格式使用BCD吗 uchar TIME[7]{0, 0, 0x12, 0x26, 0x12, 0x02, 0x23};// 向DS1302发送命令向地址addr写入数据dat void DS1302Write(uchar addr, uchar dat) {uchar i;RST0; // RST拉低_nop_(); // 延时SCLK0; // 拉低SCLKSCLK为低时才可拉高RST_nop_(); // 延时RST1; // RST拉高整个读写期间保持RST高电平_nop_(); // 延时for(i0;i8;i) // 从低位开始传送八位地址addr{DSIOaddr0x01;addr1;SCLK1; // 上升沿向DS1302写数据_nop_();SCLK0; // SCLK拉低为下一位传送做准备_nop_();}for(i0;i8;i) // 从低位开始传送八位数据dat{DSIOdat0x01;dat1;SCLK1; // 上升沿向DS1302写数据_nop_();SCLK0; // SCLK拉低为下一位传送做准备_nop_();}// 数据传送结束将RST拉低为下一次传送做准备RST0;_nop_(); }// 从DS1302中读取地址addr的数据dat uchar DS1302Read(uchar addr) {uchar i;uchar dat, bi;RST0; // RST拉低_nop_(); // 延时SCLK0; // 拉低SCLKSCLK为低时才可拉高RST_nop_(); // 延时RST1; // RST拉高整个读写期间保持RST高电平_nop_(); // 延时for(i0;i8;i) // 从低位开始传送八位地址addr{DSIOaddr0x01;addr1;SCLK1; // 上升沿向DS1302写数据_nop_();SCLK0; // SCLK拉低为下一位传送做准备_nop_();}_nop_();for(i0;i8;i) // 从低位开始读取八位数据dat{biDSIO;dat(dat1)|(bi7);SCLK1; // 上升沿向DS1302写数据_nop_();SCLK0; // SCLK拉低为下一位传送做准备_nop_();}// 数据传送结束将RST拉低为下一次传送做准备RST0;_nop_();// DS1302复位稳定时间SCLK1;_nop_();DSIO0;_nop_();DSIO1;_nop_();return dat; }在读取之前需要对DS1302初始化写入设置的时间然后可以读取时间代码如下 // DS1302初始化 // 1. 在对DS1302操作之前需要关闭写保护0x8e写0x00 // 2. 写入设置的时间 // 3. 打开写保护功能 void DS1302Init() {uchar i;DS1302Write(0x8E, 0x00); // 关闭写保护for(i0;isizeof(WRITE_RTC_ADDR);i) // 设置时间{DS1302Write(WRITE_RTC_ADDR[i], TIME[i]);}DS1302Write(0x8E, 0x80); // 打开写保护}// 从DS1302中读取时间信息 void DS1302ReadTime() {uchar i;for(i0;isizeof(READ_RTC_ADDR);i){TIME[i] DS1302Read(READ_RTC_ADDR[i]);} }主程序中数据处理函数中读取时间并将时间处理后赋值给显示数据的数组如下 void DataPros() {DS1302ReadTime(); // 首先读取时间信息display[0]smg[TIME[2]/16]; // 时display[1]smg[TIME[2]0x0f];display[2]0x40; // - 号display[3]smg[TIME[1]/16]; // 分display[4]smg[TIME[1]0x0f]; display[5]0x40; // - 号display[6]smg[TIME[0]/16]; // 秒display[7]smg[TIME[0]0x0f]; }数码管显示函数与温度传感器使用示例中类似。主函数如下 void main() {DS1302Init(); // 初始化第一次初始化后可以注释掉while(1){DataPros();DigDisplay();} }第一次初始化仿真结果 当注释调初始化函数时会显示当前时间如下
http://www.zqtcl.cn/news/197497/

相关文章:

  • 织梦网站地图样式中国品牌网站
  • 上海金山区建设局网站临淄信息港发布信息
  • 保定外贸网站建设学生网站建设首页
  • 商城网站备案要求wordpress插件 手机版
  • 北京市网站备案查询石家庄建设信息网必须交费吗
  • 北京优化网站方法四川省建设局网站
  • 怎么做网站能快速赚钱重庆快速建站
  • 河南专业网站建设公司首选培训心得简短200字
  • 销售网站开发业务高端建网站多少钱
  • 几个做ppt的网站知乎青岛高品质网站制作
  • 网站seo插件wordpress模板中文版
  • 夹江移动网站建设手机网站微信登陆
  • 浏阳做网站网易企业邮箱注册官网
  • 东莞网站建设是什么意思自己怎么做企业网站建设
  • 免费的网站申请泰州网站整站优化
  • 毕业设计做企业门户网站过期域名网站
  • 网站建设和风险分析简单网页制作代码模板
  • 照片展示网站那个网站可以做攻略
  • 优秀网站设计赏析万网网站备案多久
  • 网站维护服务有哪些电商网站
  • 部门网站建设总结鼎城网站建设
  • 制作网站的模板下载大型商城购物平台开发
  • wordpress 分类文章置顶整站优化推广品牌
  • 网站手机验证码如何做官方网站在家做兼职
  • 东莞三合一网站制作网站建设 千助
  • 114网站做推广怎么样江苏建设培训网站
  • 如何让网站做网页适配网站上的产品五星怎样做优化
  • 怎么做网站排名优化免费jq网站模板
  • 源码时代培训机构官网自己建网站怎么做seo
  • 宜都网站制作济南比较大的网站制作公司