ATMEGA48与DS1302组成的定时控制系统

发布者:Changsheng520最新更新时间:2006-07-26 来源: 电子设计应用关键字:寄存器  读取  时钟 手机看文章 扫描二维码
随时随地手机看文章

  Atmel公司的ATMEGA48是一款高性能、低功耗的8 位AVR微处理器,使用先进的RISC 结构,大多数指令的执行时间为单个时钟周期,所以运算速度更快。两个具有独立预分频器和比较器功能的8 位定时器/ 计数器;一个具有预分频器、比较功能和捕捉功能的16 位定时器/ 计数器;具有独立振荡器的实时计数器RTC;六通道PWM;8路10 位ADC(TQFP 与MLF 封装)[ 6路10 位ADC( PDIP 封装)];可编程的串行USART 接口;可工作于主机/ 从机模式的SPI 串行接口;面向字节的两线串行接口;具有独立片内振荡器的可编程看门狗定时器;片内模拟比较器;引脚电平变化可引发中断及唤醒MCU等。

  其具有的下面特点无论从编程、自编程和加密等方面都给用户提供了很大的方便。4K字节的系统内可擦写10,000 次的可编程Flash;具有独立锁定位的可选Boot 代码区,通过片上Boot程序实现系统内编程;256字节的擦写100,000 次的EEPROM;512字节的片内SRAM,可以对锁定位进行编程以实现用户程序的加密。

  Maxim公司的8脚串行实时时钟日历芯片DS1302,体积小、与单片机接口简单、工作电压范围宽(2.5~5.5V)、功耗低、接口容易、占用CPU I/O口线少、可对时钟芯片备份电池进行涓流充电等特点。所以应用方便,被很多设计者所青睐。


图1 ATMEGA48与DS1302的电路连接


  笔者利用这两种芯片,设计了实时时钟,实时数据采集和定时控制系统。现就DS1302与ATMEGA48的应用介绍给大家。

  由于ATMEGA48有可选的内部振荡器,所以只需接通电源即可;DS1302需要一个32768Hz的晶振,和一个备用电池。可以看出结构很简单(由于本文只介绍ATMEGA48和DS1302的应用,所以其余的显示电路和数据采集电路均省略。)。

ATMEGA48与DS1302的通讯程序(ASM)


图2 DS1302的时序

图3 DS1302充电原理图



DS1302的时序如图2。
根据时序图,给出下面的读/写程序:
读出数据子程序如下:
 ;sbi portd,7;假设调用子程序以前已经保持rst为高
RDS: clr r17  ;将取到的数据保存到R17中
 ldi r24,8
 sbi portd,6 ;sclk
RDS1:cbi portd,6 ;sclk 下降沿读取数据
 nop
 IN R16,pind    ;从CPU I/O读取数据
 nop
 sbi portd,6 ;sclk
 BST R16,5 ;复制PIND.5到T
 LSR R17
 BLD R17,7 ;复制T到R17.7
 dec r24
 CPI R24,0
 BRNE  RDS1
 RET

  注:ATMEGA48 I/O口有三个寄存器分别是:数据寄存器- PORTx、数据方向寄存器- DDRx 和端口输入引脚- PINx。I/O作为数据输入使用时,读取数据命令应为 IN Rd,PINx,如果使用IN Rd,PORTx则读取到的是I/O口的状态,尽管将DDRx设置成数据输入。特别注意的是,读取软件赋予引脚电平和执行读取指令in 之间至少有一个时钟周期的间隔,文中用nop间隔。

写入数据(命令/地址)子程序如下:
 ;ldi R17,data;假设要写入的数据已经存放到R17中
 ;sbi portd,7;假设调用子程序以前已经保持rst为高
WDS: ldi r24,8
WDS1:cbi portd,6 ;sclk
 in r16,portd ;读入D口状态
 BST R17,0 ;将R17.0复制到T
 BLD R16,5 ;将T复制到R16.5
 nop
 out portd,r16;写数据到portd(R16.5->portd.5)
 sbi portd,6 ;sclk
 lsr r17
 dec r24
 CPI R24,0
 BRNE WDS1
 RET

  关于命令字节的说明。DS1302命令字节由8位组成,BIT 0 为1时,读取数据,为0时写入数据。BIT 1-5 为地址。BIT 6 为1时指向31个RAM,为0 时指向时钟寄存器。BIT 7 必须为1,为0时将使DS1302停止。

  DS1302的控制寄存器的第七位是写保护位,所以在写入数据前应该将其关闭,并在写数据完毕后将其使能。下面是一段完整的设置分的程序。
......
ldi r19,0x43 ;假设当前时间为43分,DS1302时间寄存器保存的数据为10进制数十六进制存储。
ldi r18,0x82 ;写分 命令
ldi r27,0x00 ;x H
ldi r26,19 ;x L   在这里使用间接寻址,所以只需改变R19的数据即可。
......
WRITE_DS1302:
 cbi portd,7
 cbi portd,6
 sbi portd,7
 ldi r17,0x8e   ;控制寄存器en_WRITE
 rCALL  WDS
 ldi r17,0   ;写操作前WP=0
 rCALL  WDS
 mov r17,r18   写秒 分 时 日 月 星期 年 地址
   rCALL  WDS
 ld r17,x   写秒 分 时 日 月 星期 年(R19中的数据)
   rCALL  WDS
 cbi portd,7
 cbi portd,6
 sbi portd,7
 di r17,0x8e   ;控制寄存器un_en_WRITE
 rCALL  WDS
 ldi r17,0x80  ;写操作前WP=1
 rCALL  WDS 
 cbi portd,7  
 RET

  同样,下面给出了一个完整的读取分的程序
ldi r18,0x83 ;读分 命令
ldi r27,0x00 ;x H
ldi r26,19 ;x L   将取到的数据存储到R19中。
READ_DS1302:
 cbi portd,7
 cbi portd,6
 sbi portd,7
 mov r17,r18      ;写秒 分 时 日 月 星期 年 地址
  rCALL  WDS
  rCALL  RDS
 st x,r17 ; 保存数据到R19
 cbi portd,7
 RET

  整合写和读分的程序,改变R18的内容就可以实现“秒、分、时、日、月、星期、年”的读写,写操作时只需改变R19的内容就可以将新的数据写入,读操作时直接读取R19的内容即可。也可以通过此程序直接来对31个RAM进行数据读取。

DS1302的充电功能

  DS1302的涓流充电功能也是非常方便的,同时又是其非常重要的一个功能,所以简单介绍一下其使用。其原理框图如图3。

  DS1302有一个单独的寄存器控制涓流充电。BIT7:BIT4是涓流充电功能的选择器,只有当它们被设置成1010才能够将其使能。使用DS(BIT3和BIT2)可以在一个和两个二极管之间选择;使用RS(BIT1和BIT0)可以选择两个电源(Vcc1和Vcc2)之间的电阻,这两个选择器共同使用来帮助您得到所需要的电流。

结语

  通过这一实践,表明应用DS1302在测控系统中的数据记录,其软硬件设计简单,时间记录准确。同时由于ATMEGA48的高速度,大数据吞吐,给实际应用带来了很大方便。由于笔者水平有限,仅将应用笔记供大家参考。

参考文献
1. 8-bit AVR Microcontroller with 4K Bytes In-System Programmable Flash (data sheet)
2. DS1302 - Trickle Charge Timekeeping Chip (data sheet)

关键字:寄存器  读取  时钟 引用地址:ATMEGA48与DS1302组成的定时控制系统

上一篇:AD9833型高精度可编程波形发生器及其应用
下一篇:嵌入式系统中USB主机控制器的实现

推荐阅读最新更新时间:2024-03-30 21:22

具有复杂处理功能的总线分析仪
  最令人兴奋,给人深刻印象的标题的例子是,“美国AMD公司击败英特尔的里程碑是1GHz微处理器。”即使胜利是暂时的,这个消息却是事实。不过,现在的印象是1GHz PC似乎很容易得到。你也许没认识到微处理器时钟频率和PC性能之间的区别。另外,也许你没有认真考虑从上述的任意一个公司中大量买这些生产很有限的装置。   尽管完成1GHz时钟频率的微处理器值得称赞,系统的体系结构在决定PC最终的速度的过程中也是至关重要的。现代的PC应用至少2个独立的总线来(例如存储器总线)保证微处理器本身在数据传送和与外围装置相互作用时,不会降低速度。   扩展总线提供扩展的功能。所谓的本地总线处理类似高速的视频或图形卡以及100Base-T以太网适配器,
[测试测量]
第5章 什么是寄存器—零死角玩转STM32-F429系列
本章参考资料:《STM32F4xx 中文参考手册》、《STM32F429xx数据手册》、 学习本章时,配合《STM32F4xx 中文参考手册》 存储器和总线架构 、 嵌入式FLASH接口 及 通用I/O(GPIO) 章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。 5.1 什么是寄存器 我们经常说寄存器,那么什么是寄存器?这是我们本章需要讲解的内容,在学习的过程中,大家带着这个疑问好好思考下,到最后看看大家能否用一句话给寄存器下一个定义。 5.2 STM32长啥样 我们开发板中使用的芯片是176pin的STM32F429IGT6,具体见图 51。这个就是我们接下来要学习的STM32,它讲带领我们进入嵌入式的殿堂
[单片机]
第5章 什么是<font color='red'>寄存器</font>—零死角玩转STM32-F429系列
通讯手持设备的参考时钟设计
参考时钟概述 在通讯手持设备当中,参考时钟的贡献就像心脏对人体的作用一样,丝毫的差异都将导致系统功能的紊乱。之所以定义它为参考,是因为这类产品能否正常工作完全依赖于该时钟的精确度;而且一旦有误差存在,该误差就会随着倍频的增加而介入应用端的工作频段,无论是基带的数字和模拟部分还是射频的上变频和下变频都会受到影响。通常参考时钟所采用的中心频点都在10MHz " 30MHz,而且目前大多数都采用13MHz,20MHz,或26MHz,尤其是当射频和基带共用参考时钟时以13MHz和26MHz最多。 为什么要采用13MHz和26MHz作为参考时钟呢?客观上对射频RF而言,目前手持设备话务通信的频率资源主要集中在以1GHz和2
[网络通信]
STM32 I2C HAL库读取HTU21D
以下代码为使用I2C库函数读取HTU21D温度数据的例程。 ret=HAL_I2C_Mem_Read(&hi2c1,0x80,0xf3,I2C_MEMADD_SIZE_8BIT,rx_buf,2,2000); if(ret == HAL_OK) { rx_buf &= 0xfc; temp = rx_buf ; temp *= 256; //wendu =8; temp += rx_buf ; temp *= 17572; temp /= 65536; temp -= 4685; //保留两位小数 temp /=10; result = (int16_t)temp; pri
[单片机]
使用寄存器点亮第一个LED
一、硬件设计 相同网络标号表示它们是连接在一起的,因此 DS0、DS1 发光二极管阴极是连接在 STM32 的 PB5、PE5 管脚上。 如果要使 DS0 指示灯亮,只需要控制 PB5 管脚输出低电平,如果要使 DS0 指示灯灭,只需控制 PB5 输出高电平。对于其他的 LED 控制方法一样。如果使用的是其他板子,连接 LED 的管脚和极性不一样,那么只需要在程序中修改对应的 GPIO 管脚和输出电平状态即可,原理是一样的。 点亮 DS0 发光二极管,即让 STM32 的 PB5 管脚输出一个低电平。 二、软件设计 2.1、 startup_stm32f10x_hd.s 启动文件 启动文件里边是使用汇编语言写
[单片机]
使用<font color='red'>寄存器</font>点亮第一个LED
MCS-51单片机的程序状态寄存器PSW有什么用?
PSW是一个8位寄存器,用于设定CPU的状态和指示指令执行后的状态。 CY(PSW.7):进位标志。在执行加减运算指令时,如果运算结果的最高位(D7)发生了进位或借位,则CY由硬件自动置1。 AC(PSW.6):半进位标志位,也称为辅助标志位。在执行加减运算指令时,如果运算结果的低半字节(D3)发生了向高半字节进位或借位,则AC由硬件自动置1。 F0、F1(PSW.5 和PSW.1):用户标志位。用户可以根据需要对F0、F1赋予一定的含义,由用户置1和清0,作为软件标志。 RS1、RS0(PSW.4 和PSW.3):工作寄存器组选择控制位。通过对这两位设定,可以从4个工作寄存器组中选择一组作为当前工作寄存器。
[单片机]
MCS-51单片机的程序状态<font color='red'>寄存器</font>PSW有什么用?
STM32寄存器操作方式学习-时钟配置
一、当STM32刚上电启动时,它是从频率为8 MHz 的内部振荡器运行的,假如程序设置外部高速时钟(HSE)为系统时钟源时,在外部高速时钟准备好之前对HSI相关寄存器的操作是无效的,相关位的值将保持在默认值。因此,要想关闭HSI以节能,必须在外部高速时钟准备好之后对HSI相关寄存器操作。 二、当STM32启动时,它是从频率为8 MHz 的内部振荡器运行的,因此内部FLASH 的访问时间不是一个问题。然而,一旦PLL启用并作为时钟源,对于运行在最高性能的Cortex CPU来说,FLASH的速度跟不上CPU。为了允许Cortex CPU 运行在72 MHz具有零等待状态,FLASH 存储器具有由两个64 位缓存器组成的预取缓冲器。这
[单片机]
ARM体系架构—ARMv7-A处理器模式及寄存器
一、ARMv7-A处理器模式 ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(Secure State)和非安全模式(Non-secure State)两个世界。 在非安全模式下,存在三种运行特权PL0,PL1和PL2(privilege level)。 If the Virtualization Extensions are implemented there is a privilege model different to that of previous architectures. In Non-secure state there can be three privilege l
[单片机]
ARM体系架构—ARMv7-A处理器模式及<font color='red'>寄存器</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved