AVR单片机作业——实时时钟的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

全院选修课程

A VR单片机

嵌入式系统入门

作业题目带校时和音乐报时功能实时时钟的设计学生姓名

专业班级

学号

院(系)

硬件原理图:

Atmega16单片机结构与特点

ATMEL公司的AVR单片机是一种基于增强RISC结构的、低功耗、CMOS技术、8位微控制器(Enhanced RISC Microcontroller),目前有Tiny、Mega两个系列50多种型号。它们的功能和外部的引脚各有不同,小到8-12个引脚,多到100个引脚,但它们内核的基本结构是一样的,指令系统相容。尽管A VR单片机系列有几十种的型号,但它们有着相同的内核结构,指令兼容。ATmega16单片机的Flash程序存储器空间可以分成两段:引导程序段(Boot program section)和应用程序段(Application program section)。两个段的读写保护可以分别通过设置对应的锁定位(Lock bits)来实现。在引导程序段内驻留的引导程序中,可以使用SPM指令,实现对应用程序段的写操作(实现在应用自编程IAP功能,使系统能够自己更新系统程序)。在AVR中,所有的存储器空间都是线性的。数据存储器(SRAM)可以通过5种不同的寻址方式进行访问。AVR的中断控制由I/O 寄存器空间的中断控制寄存器和状态寄存器中的全局中断允许位组成。每个中断都分别对应一个中断向量(中断入口地址)。所有的中断向量构成了中断向量表,该中断向量表位于Flash程序存储器空间的最前面。中断的中断向量地址越小,其中断的优先级越高。

ATmega16 有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。

ATmega16单片机有三种形式的封装:40脚双列直插PDIP、44脚方形的TQFP 和MLF形式(贴片形式)。其外部引脚封装如图所示。

数码管的原理

数码管按段数分为七段数码[9]管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。

7段LED数码管显示原理

7段LED数码管,在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。

LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。

将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同

原理电路:

原理电路如图1所示,PA口为LED数码管的8段码输出,PC0-PC5共6个I/O 口,作为控制时间显示的6个LED数码管的位扫描线。PC6、PC7分别接连接两个按键,用于设置时钟的工作状态和校时时间的设置。

图1 带校时功能的实时时钟电路图

图中音乐报时电路部分如图2,由端口PD5输出产生音乐的脉冲信号,经三极管驱动蜂鸣器发声。PD5为ATmega16的T/C1匹配输出脚OC1A。编写程序在该脚上输出脉冲波,输出经三极管放大驱动蜂鸣器发声。图中的发声部分位于A VR-51多功能实验板的M区。BZ为一个无源蜂鸣器,作为发声器件(有源蜂鸣器的发声频率固定,不能使用),I/O口的脉冲输出经三极管放大驱动蜂鸣器发声)。

图2 采用T/C0的PWM功能产生正弦波

定义两个按键的功能为:K1用于设置转换时钟工作状态,K2用于设置校时时间(加1操作)。时钟工作状态转换图如图3所示,具体每个状态的定义和功能如下:

✓平时时钟工作在时钟显示状态,每按一下K1键,时钟依次进入校时时间的设置状态。

✓时钟由“时钟显示”进入“秒低位设置”时,校时时间的初始值为转换时刻的时钟值。

✓时钟由“时高位设置”回到(K1作用下)“时钟显示”时,时钟时间由校时时间代替,确认完成校时的设置。

✓当时钟处在时间设置的6个状态时,每按一次K2键,相应的位上的数值加1,并且要能根据具体所在的位置自动做相应的调整。如秒高位的数

字只能在0-5之间,而时高位的数值要限制在0、1、2(时个位数小于3

时),或时高位的数值要限制在0、1(时个位数大于3时)。

✓当时钟处在时间设置的6个状态时,在20秒内无任何键按下,系统自动返回“时间显示”状态,设置的时间无效,不改变原时钟的计时时间。

✓在效时时间设置的操作过程中,时钟不停止其前时间的计时过程,除非当时钟由“时高位设置”回到(K1作用下)“时钟显示”时,时钟的计

时时间由确认的校时时间代替而改变。

✓时钟显示亮度均匀、无闪烁。当设置相应时间位时,该位应闪烁提示。

单片机编程代码:

/*********************************************

File name : demo_11_4.c

Chip type : ATmega16

Program type : Application

Clock frequency : 1.000000 MHz

Memory model : Small

External SRAM size : 0

Data Stack size : 256

*********************************************/

#include

flash char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

flash char position[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

flash unsigned int t[9] = {0,956,865,759,716,638,568,506,470};

flash unsigned char d[9] = {0,105,116,132,140,157,176,198,209};

#define Max_note 32

flash unsigned char music[Max_note] =

相关文档
最新文档