基于ATmega16单片机的电子时钟设计_第1页
基于ATmega16单片机的电子时钟设计_第2页
基于ATmega16单片机的电子时钟设计_第3页
基于ATmega16单片机的电子时钟设计_第4页
基于ATmega16单片机的电子时钟设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于 ATmega16单片机的电子时钟设计物理与电子工程学院 电子信息科学与技术专业(职教) 2009 级 罗德龙指导教师 宋培森摘 要: 随着科学技术的发展电子时钟在日常的生活中应用的相当的多。本文介绍了一 款基于 ATmega16单片机为主控芯片的数字电子时钟设计。其中主要包括ATmega16单片机、独立键盘、 DS1302芯片、 LCD1602液晶显示、以及相关外围电路并在 PROTUE仿S真平台上运 行。 矚慫润厲钐瘗睞枥庑赖。关键词: ATmega16单片机; DS1302芯片;独立键盘; LCD1602Abstract : With the development of scien

2、ce and technology electronic clock in the daily life of the application is quite long. This paper introduces a single chip processor as the main control chip based on ATmega16 digital electronic clock design. Include ATmega16 microcontroller, independent keyboard, DS1302 chip LCD1602, liquid crystal

3、 display (LCD), and related peripheral circuit and in PROTUES simulation platform operation. 聞創沟燴鐺險爱氇谴净。Key words:ATmega16 microcontroller ;DS1302 chip ;Independent keyboard ;LCD1602 残 骛楼諍锩瀨濟溆塹籟。1 前言液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧等许多优点,在 袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。 本文中详细介绍了基于 ATmega16单片机控制下的 162液晶屏显示设计, 此设

4、计基于 ds1302的时钟电路 方便实用,电路设计简单。 酽锕极額閉镇桧猪訣锥。2 AVR 单片机介绍第 1 页 (共 32 页)2.1 AVR 单片机简介AVR单片机是 1997年由 ATMEL公司研发出的增强型内置 Flash 的 RISC精简指 令集高速 8 位单片机。 AVR的单片机可以广泛应用于计算机外部设备、 工业实时控 制、仪表仪器、通讯设备、家用电器等各个领域。 1997年,由 Atmel 公司挪威设 计中心的 A 先生和 V先生,利用 Atmel 公司的 Flash 新技术,共同研发出 RISC精 简指令集高速 8 位单片机,简称 AVR。彈贸摄尔霁毙攬砖卤庑。2.2 Atm

5、ega16 简介ATmega16是基于增强的 AVR RISC结构的低功耗 8 位 CMOS微控制器。由于其 先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达 1MIPS/MHz,从而可以减缓系统在功耗和处理速度之间的矛盾。 謀荞抟箧飆鐸怼类蒋薔。ATmega16 AVR内 核具有丰富的指令集和 32 个通用工作寄存器。所有的寄存 器都直接与运算逻单元 (ALU) 相连接,使得一条指令可以在一个时钟周期内同时 访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的 CISC 微控制器最高至 10 倍的数据吞吐率。 厦礴恳蹒骈時盡继價骚。ATmega16 有

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

7、功耗的 8位 AVR微处理器先进的 RISC 结构131 条指令第 2 页 (共 32 页)大多数指令执行时间为单个时钟周期32 个 8 位通用工作寄存器全静态工作工作于 16MHz时性能高达 16MIPS 只需两个时钟周期的硬件乘法器 非易失性程序和数据存储器16K 字节的系统内可编程 Flash ,擦写寿命 : 10,000 次 具有独立锁定位的可选 Boot 代码区,通过片上 Boot 程序实现系统内编程, 真正的同时读写操作512 字节的 EEPRO,M擦写寿命 : 100,000 次1K 字节的片内 SRAM 可以对锁定位进行编程以实现用户程序的加密JTAG 接口( 与 IEEE 1

8、149.1 标准兼容 )符合 JTAG 标准的边界扫描功能 支持扩展的片内调试功能通过 JTAG 接口实现对 Flash 、EEPRO、M熔丝位和锁定位的编程外设特点 鹅娅尽 損鹌惨歷茏鴛賴。两个具有独立预分频器和比较器功能的 8位定时器 /计数器籟丛妈羥为贍偾蛏练淨。 一个具有预分频器、比较功能和捕捉功能的 16 位定时器 / 计数器 預頌圣鉉儐歲龈讶 骅籴。具有独立振荡器的实时计数器 RTC四通道 PWM8路 10位 ADC,8个单端通道, 2个具有可编程增益( 1x, 10x, 或200x)的 差分通道面向字节的两线接口 两个可编程的串行 USART第 3 页 (共 32 页)可工作于主

9、机 / 从机模式的 SPI 串行接口 渗釤呛俨匀谔鱉调硯錦。 具有独立片内振荡器的可编程看门狗定时器 铙誅卧泻噦圣骋贶頂廡。片内模拟比较器特殊的处理器特点上电复位以及可编程的掉电检测片内经过标定的 RC振荡器片内/ 片外中断源 擁締凤袜备訊顎轮烂蔷。6 种睡眠模式 : 空闲模式、 ADC 噪声抑制模式、 省电模式、 掉电模式、 Standby 模式以及扩展的 Standby 模式 u I/O 和封装 贓熱俣阃歲匱阊邺镓騷。32 个可编程的 I/O 口2.4 工作电压 :ATmega16:L 2.7 - 5.5VATmega1:6 4.5 - 5.5V2.5 ATmega16 引脚功能 坛摶乡囂

10、忏蒌鍥铃氈淚。VCC 电源正GND 电源地 蜡變黲癟報伥铉锚鈰赘。端口 A (PA7.PA0) 做为 A/D 转换器的模拟输入端。端口 A 为8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具 買鲷鴯譖昙膚遙闫撷凄。ATmega引脚图綾镝鯛駕櫬鹕踪韦辚糴。有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉 第 4 页 (共 32 页) 电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还 未起振,端口 A 处于高阻状态。 驅踬髏彦浃绥譎饴憂锦。端口 B(PB7.PB0) 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输 出缓冲器具有对称

11、的驱动特性,可以输出和吸收大电流。作为输入使用时,若内 部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统 时钟还未起振,端口 B 处于高阻状态。端口 B也可以用做其他不同的特殊功能 . 猫 虿驢绘燈鮒诛髅貺庑。端口 C(PC7.PC0) 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。 其输 出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内 部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统 时钟还未起振,端口 C 处于高阻状态。如果 JTAG 接口使能,即使复位出现引脚 PC5(TDI) 、 PC3(TMS)与 PC2(T

12、CK)的上拉电阻被激活。端口 C 也可以用做其他不 同的特殊功能。 锹籁饗迳琐筆襖鸥娅薔。端口 D(PD7.PD0)为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输 出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内 部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系 统时钟还未起振, 端口 D 处于高阻状态。 端口 D 也可以用做其他不同的特殊功能 . 構氽頑黉碩饨荠龈话骛。RESET复 位输入引脚。持续时间超过最小门限时间的低电平将引起系统复 位。持续时间小于门限间的脉冲不能保证可靠复位。 輒峄陽檉簖疖網儂號泶。XTAL1 反向振荡放大器与

13、片内时钟操作电路的输入端。XTAL2 反向振荡放大器的输出端。AVCC AVCC是端口A与A/D转换器的电源。不使用 ADC时,该引脚应直接 与 VCC连接。使用 ADC时应通过一个低通滤波器与 VCC 连接。 尧侧閆繭絳闕绚勵蜆贅。AREF A/D 的模拟基准输入引脚。 识饒鎂錕缢灩筧嚌俨淒。2.6 AVR 单片机的应用区域第 5 页 (共 32 页)AVR单片机应用区域包括: 空调控制板、 打印机控制板、 智能电表、智能手电 筒、 LED控制屏和医疗设备等领域。 凍鈹鋨劳臘锴痫婦胫籴。3 162 液晶显示屏介绍162液晶模块是一种用 5x7 点阵图形来显示字符的液晶显示器, 根据显示的容

14、量可以分为 1行 16个字、 2行 16个字等。恥諤銪灭萦欢煬鞏鹜錦。3.1 162 液晶屏显示屏的引脚定义首先,我们来看 162的引脚定义, 162的引脚是很整齐的 SIP 单列直插封装。表 1 是液晶屏的引脚定义。表 1 接口信号说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data 1/02VDD电源正极10D3Data 1/03VEE液晶显示偏压信号11D4Data 1/04RS数据命令 /选择端 (H/L)12D5Data 1/05R/W读/写信号 (H/L)13D6Data 1/06E使能信号14D7Data 1/07D0Data 1/015LEDA背光源正极8D1Da

15、ta 1/016LEDK背光源该液晶屏采用标准的 16 脚接口,我们只需要关注一下几个管脚1 脚: VSS 为地电源。2 脚: VDD 接 5V 正电源。3 脚:VEE, 液晶屏显示偏压信号,用于调整液晶屏的显示对比度,一般会外界 电位器用以调整偏压信号,接正电源时对比度最弱,接地电源时对比度最高,对 比度过高时会产生“阴影”,使用时可以通过一个 10K 的电位器调整对比度。 鯊腎鑰诎褳鉀沩懼統庫。第 6 页 (共 32 页)4 脚:RS,数据/ 命令选择端,即对寄存器进行选择, 高电平时选择数据寄存器、 低电平时选择指令寄存器。5 脚 :R/W, 读写选择端,高电平时进行读操作,低电平时进行

16、写操作。6 脚:E ,使能信号,其实时 162 的逐句控制时钟信号,利用该信号的上升沿实 现对液晶屏的数据传输。714 脚:8 位双向数据线。15 脚:背光阳极。16 脚:背光阴极。3.2 162 液晶显示屏的指令说明 162液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 (说明: 1为高电平、 0为低电平)。162液晶屏内部模块共有 11条控制指令,如表 2 所示。 硕癘鄴颃诌攆檸攜驤蔹。表 2 控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清屏00000000012光标返回0000000013输入方式00000001I/DS4显示开关0000001DCB5移

17、位000001S/CR/L6功能设置00001DLNF7CGRAM地址设置0001A5 A4 A3 A2 A1 A08DDRAM地址设置001A6 A5 A4 A3 A2 A1 A09忙标志 / 读地址计数器01BFAC6 AC5 AC4 AC3 AC2 AC1 AC010CGRAM/DDRA数M据写10写数据11CGRAM/DDRA数M据读11读数据指令 1:清显示,指令码 01H,光标复位到地址 00H位置第 7 页 (共 32 页)指令 2:光标复位,光标返回到地址 00H指令 3:光标和显示模式设置I/D :光标移动方向,高电平右移,低电平左移S: 屏幕上所有文字是否左移或者右移。高电

18、平表示有效,低电平则无效 指令 4:显示开关控制。D :控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令 5:光标或显示移位 S/C :高电平时移动显示的文字,低电平时移动光标 指令 6:功能设置命令DL:高电平时为 4 位总线,低电平时为 8位总线N:低电平时为单行显示,高电平时双行显示F: 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符指令 7:字符发生器 RAM地址设置指令 8:DDRAM地址设置指令 9:读忙信号和光标地址 BF:忙标志位,高电平表示忙

19、,此时模块不能接收 命令或者数据,如果为低电平表示不忙。 阌擻輳嬪諫迁择楨秘騖。指令 10:写数据指令 11:读数据3.3 162 液晶显示屏的时序在操作液晶屏,我们应该对它的工作时序非常熟悉,这里介绍了 162 液晶显 示屏的两个写时序:写指令和写入数据。 氬嚕躑竄贸恳彈瀘颔澩。写指令,即设置 162液晶显示屏的工作方式:需要把 RS置为低电平, RW置为 低电平,然后将数据送到数据口 D0D7,最后 E 引脚一个高脉冲将数据写入。 釷鹆資 贏車贖孙滅獅赘。第 8 页 (共 32 页)写数据,即在液晶屏上实现显示时:需要把 RS置为高电平, RW置为低电平,然后将数据送到 D0D7,最后 E

20、 引脚一个高脉冲将数据写入。 怂阐譜鯪迳導嘯畫長凉。图1 162 液晶显示屏时序图注意:162 液晶显示模块是一个慢显示器件, 所以在执行每条指令之前一定要 确认模块的忙标志为低电平,表示不忙,否则此指令失效。当然, 162 提供了读忙 信号的方法:当 RS和 RW共同为低电平时可以写入指令或者显示地址,当 RS为低 电平 RW为高电平时可以读忙信号。 谚辞調担鈧谄动禪泻類。3.4 162 液晶屏的 RAM地址映射及标准字库表液晶模块内部的字符发生存储器( CGRO)M已经存储了 128 个不同的点阵字符 图形,这些字符有:阿拉伯数字、英文字母的大小写和常用的符号等,每一个字 符都有一个固定的

21、代码,比如大写的英文字母“ A”的代码是 01000001B( 41H), 显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母“ A” 。 要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。液晶屏 第一行的首地址是 80H,第二行的首地址是 C0H。表 3 是液晶屏的 GROM中的字符 代码与图形对应关系。 嘰觐詿缧铴嗫偽純铪锩。表 3 字符代码与图形对应表低 高位位00000010001101000101011001110000GRAM0Pp第 9 页 (共 32 页)0001!1AQaQ00102BRbR0011#3CScS0100$4DTdt0101%5E

22、Ueu0110&6FVfv01117GWgw1000(8HXhx1001)9IYiy1010JZjZ1011+Kk1100Nn1111/?Oo4 ds1302 芯片介绍DS1302 是美国 DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加 31 字节静态 RAM,采用 SPI 三线接口与 CPU进行同步通信,并可采用突发方式一 次传送多个字节的时钟信号和 RAM数据。实时时钟可提供秒、分、时、日、星期、 月和年,一个月小与 31 天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5 5.5V 。采用双电源供电(主电源和备用电源) ,可设置备用电源充电方式, 提供了对后背电源进行

23、涓细电流充电的能力。 DS1302的外部引脚分配如图 2 所示 及内部结构如图 3 所示。 DS1302用于数据记录,特别是对某些具有特殊意义的数 据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量 系统中。 熒绐譏钲鏌觶鷹緇機库。第 10 页 (共 32 页)各引脚的功能为:Vcc1 :主电源; Vcc2:备份电源。当 Vcc2Vcc1+0.2V时,由 Vcc2向 DS1302 供电,当 Vcc2 Vcc1 时,由 Vcc1 向 DS1302供电。 鶼渍螻偉阅劍鲰腎邏蘞。SCLK:串行时钟,输入,控制数据的输入与输出;I/O :三线接口时的双向数据线;CE :输入信号,在

24、读、写数据期间,必须为高。该引脚有两个功能:第一, CE开始控制字访问移位寄存器的控制逻辑;其次, CE提供结束单字节或多字节数 据传输的方法。 纣忧蔣氳頑莶驅藥悯骛。DS1302有下列几组寄存器: DS1302 有关日历、时间的寄存器共有 12 个,其中有 7 个寄存器(读时 81h 8Dh ,写时 80h 8Ch ),存放的数据格式为 BCD码形式。 颖刍莖蛺饽亿顿裊赔泷。表 4 Ds1302 有关日历、时间的寄存器度寄存器写寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0范围81h80hCH10 秒秒005983h82h10 分分005985h84h12/ 2401

25、0A/P时时1-12/0-23第 11 页 (共 32 页)87h86h0010 日日13189h88h00010月月1128Bh8Ah00000周日178Dh8Ch10 年年00998Fh8EhWP00000 0 0小时寄存器( 85h 、84h )的位 7 用于定义 DS1302是运行于 12 小时模式还 是 24 小时模式。当为高时,选择 12 小时模式。在 12 小时模式时,位 5 是 ,当 为 1 时,表示 PM。在 24 小时模式时,位 5 是第二个 10 小时位。 濫驂膽閉驟羥闈詔 寢賻。秒寄存器(81h 、80h )的位 7 定义为时钟暂停标志 ( CH)。当该位置为 1 时,

26、 时钟振荡器停止, DS1302处于低功耗状态;当该位置为 0 时,时钟开始运行。 銚 銻縵哜鳗鸿锓謎諏涼。控制寄存器( 8Fh 、8Eh )的 位7 是写保护位( WP),其它 7 位均置为 0 。 在任何的对时钟和 RAM的写操作之前, WP位必须为 0 。当 WP位为 1 时,写保护 位防止对任一寄存器的写操作。 挤貼綬电麥结鈺贖哓类。 DS1302 有关 RAM的地址DS1302 中附加 31 字节静态 RAM的地址见表所示。表 5 静态 RAM读地址写地址数据范围C1hC0h00FFhC3hC2h00FFhC5hC4h00FFh、FDhFCh00FFh DS1302的工作模式寄存器

27、所谓突发模式是指一次传送多个字节的时钟信号和 RAM数据表 6 工作模式工作模式寄存器读寄存器写寄存器时钟突发模式寄存器CLOCK BURSTBFhBEhRAM 突发模式寄存器RAM BURSTFFhFEh此外, DS1302还有充电寄存器等。第 12 页 (共 32 页)2 读写时序说明DS1302是 SPI 总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与 DS1302通信,首先要先了解 DS1302的控制字1RAMA4A3 CKA2A1A0RDWR控制字(即地址及命令字节)控制字的最高有效位(位 7 )必须是逻辑 1 ,如果它为 0 ,则不能把数据 写入到 D

28、S1302中。 位 6 :如果为 0 ,则表示存取日历时钟数据,为 1 表示存 取 RAM数据; 位 5 至位 1 ( A4A0):指示操作单元的地址; 位 0 (最低有效 位):如为 0 ,表示要进行写操作,为 1 表示进行读操作。 控制字总是从最低位 开始输出。在控制字指令输入后的下一个SCLK 时钟的上升沿时,数据被写入DS1302,数据输入从最低位( 0 位)开始。同样,在紧跟 8 位的控制字指令后的 下一个 SCLK 脉冲的下降沿,读出 DS1302的数据,读出的数据也是从最低位到最 高位。数据读写时序如图 4 。赔荊紳谘侖驟辽輩袜錈。图4 数据读写时序5 仿真软件介绍5.1 PRO

29、TUES简介第 13 页 (共 32 页)Protues 软件是英国 Labcenter electronics 公司出版的 EDA工具软件。它不仅具有其它 EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最 好的仿真单片机及外围器件的工具。 Proteus 是世界上著名的 EDA工具(仿真软件 ), 从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到 PCB设计, 真正实现了从概念到产品的完整设计。 目前世界上唯一将电路仿真软件、 PCB设计 软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、 HC11、PIC10/12/16/18/24/30/DsPI

30、C33 、AVR、ARM、8086和 MSP430等。塤礙籟馐决穩賽釙冊庫。 5.2 PROTUES的特点1. 原理布图2. PCB自动或人工布线3. SPICE电路仿真 裊樣祕廬廂颤谚鍘羋蔺。4. 互动的电路仿真。用户甚至可以实时采用诸如 RAM,ROM,键盘,马达, LED, LCD, AD/DA,部分 SPI 器件,部分 IIC 器件。 仓嫗盤紲嘱珑詁鍬齊驁。5. 仿真处理器及其外围电路。可以仿真 51 系列、 AVR、PIC、ARM、等常用主流单 片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看 到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等, Pr

31、otues 建立了完备的电子设计开发环境。 绽萬璉轆娛閬蛏鬮绾瀧。5.3 PROTUES工作界面介绍PROTUE的S 工作界面是一种标准的 windows 界面,如下图所示,包括标题栏、 主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制 按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。 骁顾燁鶚巯 瀆蕪領鲡赙。第 14 页 (共 32 页)图 5 PROTUES界面图6 硬件设计6.1 系统框图键盘指示灯ATmega16DS1302电源图6LCD1602本系统所包含模块: 主控芯片 ATmega16、LCD1602液晶 显示模块、独立键盘模块、指示灯 电路

32、、DS1302时钟模块、 以及电源。 另外还有背光电压显示电路。 瑣钋濺 暧惲锟缟馭篩凉。6.2 PROTUES仿真图及电路原理图第 15 页 (共 32 页)PROTUES仿真图电路原理图6.3 独立键盘1k010k5V1k0PD2PD1PD0K3K2 K1该键盘是三路独立的按键回路,当 D 端口读取的 电平为高电平时不动作,说明没有按键按下;当 任意一个电路的按键按下时,该段口读取的电平 就为低电平执行相应的操作。 鎦诗涇艳损楼紲鯗餳類。 按钮主要功能:K1:按下此按钮可以执行对时间的更改且相应的 时间指示灯点亮;对应键值为: 00001011 。K2:按下此按钮可以实现时间地址的切换并且

33、相 应的指示灯点亮;对应键值为: 00001101 。 K3:按下此按钮可以执行对时间的增1 操作,对应键值为: 00001110 。图76.4 背光电压显示第 16 页 (共 32 页)电位器的中间分为两路, 一路接液晶的 Vee 端,另一路接单 片机 PA3 端。经过软件处理后将值显示在液晶屏上。栉缏歐锄棗鈕种鵑瑶锬。模数转换:AD转换结果: ADC=Vin*1024/VrefADC 多工选择寄存器 ADMUX图8图9Bit 7:6 REFS1:0: 参考电压选择如 Table 83 所示,通过这几位可以选择参考电压。如果在转换过程中改变了 它们的设置,只有等到当前转换结束 (ADCSRA

34、 寄存器的 ADIF 置位 ) 之后改 变才会起作用。如果在 AREF引脚上施加了外部参考电压,内部参考电压就不 能被选用了。 辔烨棟剛殓攬瑤丽阄应。表 7 参考电压选择REFS1REFS0参考电压选择00AREF,内部 Vref 关闭01AVCC,AREF引脚外加滤波电容10保留112.56V 的片内基准电压源, AREF引脚外加滤波电容在本文我们选择 AVCC,AREF引脚外加滤波电容。ADLAR置位时转换ADC数据寄存器的P207“ ADC数Bit 5 ADLAR: ADC 转换结果 左对齐ADLAR影响 ADC转换结果在 ADC数据寄存器中的存放形式。 结果为左对齐,否则为右对齐。AD

35、LAR的改变将立即影响内容,不论是否有转换正在进行。关于这一位的完整描述请见 据寄存器 ADCL 及 ADCH” 。 峴扬斕滾澗辐滠兴渙藺。Bits 4:0 MUX4:0: 模拟通道与增益选择位通过这几位的设置,可以对连接到ADC的模拟输入进行选择。也可对差分通道增益进行选择。如果在转换过程中改变这几位的值,那么只有到转换结束 (ADCSRA寄存器的 ADIF 置位 ) 后新的设置才有效。 詩叁撻訥烬忧毀厉鋨骜。表8 模拟通道与增益选择MUX4.0单端输入正差分输入负差分输入增益00000ADC0N/A00001ADC100010ADC200011ADC300100ADC400101ADC50

36、0110ADC600111ADC7第 17 页 (共 32 页)01000N/AADC0ADC010x01001ADC1ADC010x01010ADC0ADC0200x01011ADC1ADC0200x01100ADC2ADC210x01101ADC3ADC210x01110ADC2ADC2200x01111ADC3ADC2200x10000ADC0ADC11x10001ADC1ADC11x10010ADC2ADC11x10011ADC3ADC11x10100ADC4ADC11x10101ADC5ADC11x10110ADC6ADC11x10111ADC7ADC11x11000ADC0ADC2

37、1x11001ADC1ADC21x11010ADC2ADC21x11011ADC3ADC21x11100ADC4ADC21x11101ADC5ADC21x111101.22 V (VBG)N/A111110 V (GND)ADC 控制和状态寄存器 A ADCSRA图 10Bit 7 ADEN: ADC 使能ADEN置位即启动 ADC,否则 ADC功能关闭。在转换过程中关闭ADC将立即中止正在进行的转换。Bit 6 ADSC: ADC 开始转换在单次转换模式下, ADSC置位将启动一次 ADC转换。在连续转换模式下, ADSC 置位将启动首次转换。第一次转换 ( 在 ADC 启动之后置位 ADS

38、C,或者在使能 ADC的同时置位 ADSC)需要 25 个 ADC时钟周期,而不是正常情况下的13 个。第一次转换执行 ADC初始化的工作。 在转换进行过程中读取 ADSC的返回值为 1 ”,直到转换结束。 ADSC清零不产生任何动作。 则鯤愜韋瘓賈晖园栋泷。Bit 5 ADATE: ADC 自动触发使能ADATE置位将启动 ADC自动触发功能。触发信号的上跳沿启动ADC转换。触发信号源通过 SFIOR 寄存器的 ADC触发信号源选择位 ADTS设置。 胀鏝彈奥秘孫戶 孪钇賻。第 18 页 (共 32 页)Bit 4 ADIF: ADC 中断标志在 ADC转换结束,且数据寄存器被更新后,ADI

39、F 置位。如果 ADIE 及 SREG中的全局中断使能位 I 也置位, ADC 转换结束中断服务程序即得以执行,同时 ADIF 硬件清零。此外,还可以通过向此标志写 1 来清 ADIF。要注意的是,如 果对 ADCSRA进行读修改写操作,那么待处理的中断会被禁止。这也适用 于 SBI 及 CBI 指令。 鳃躋峽祷紉诵帮废掃減。Bit 3 ADIE: ADC 中断使能若 ADIE 及 SREG的位 I 置位, ADC转换结束中断即被使能。Bits 2:0 ADPS2:0: ADC 预分频器选择位由这几位来确定 XTAL 与 ADC输入时钟之间的分频因子。表 9 预分频ADPS2ADPS1ADPS

40、0分频因子0002001201040118100161013211064111128ADC 数据寄存器 ADCL 及 ADCHADLAR = 0图 11ADLAR = 1图 12ADC转换结束后,转换结果存于这两个寄存器之中。如果采用差分通道,结 果由 2 的补码形式表示。读取 ADCL 之后, ADC数据寄存器一直要等到 ADCH 也被读出才可以进行数据更新。因此,如果转换结果为左对齐,且要求的精 度不高于 8 比特,那么仅需读取 ADCH就足够了。否则必须先读出 ADCL再读 ADCH。ADMUX寄存器的 ADLAR及 MUXn会影响转换结果在数据寄存器中的表示方式。如果 ADLAR为 1

41、,那么结果为左对齐;反之( 系统缺省设置 ) ,结果为右对齐。 稟虛嬪赈维哜妝扩踴粜。第 19 页 (共 32 页)6.5 指示灯电路 每路指示灯指示功能:PC0 路:秒寄存器显示PC1 路:分寄存器显示PC2 路:时寄存器显示PC3路:日寄存器显示PC4 路:月寄存器显示PC5路:星期寄存器显示PC6路:年寄存器显示PD4 路:是否允许调节时间显示, 灯亮为允许。ATmega160图 13 陽簍埡鲑罷規呜旧岿錟。106.6 DS1302 外围电路22pX1SCL32768HzRSX2VCCVCCX2 VCC122pPA0PA1PA25V3V22pf 电容和 32768Hz 晶振组成振荡电路,

42、 提供 ds1302 正常工作频率。 VCC2为主电源, VCC1为辅助电源。 Rst 为读写使能端, I/O 为三线接口时的双向数据线, SCLK为串行时 钟,输入,控制数据的输入与输出。 沩氣嘮戇苌 鑿鑿槠谔應。图 146.7 单片机外围电路X1 RESET1008MHzATmega16AREFX2 AVCC22p 5V22p22pf 电容和 8MHz晶振组成振荡电路,提供 单片机正常工作频率。 Reset 为上电复位端, 当通电 后单片即 不管以前的 程序工作 在哪 里,一切复位从“零”开始。AVCC是端口 A与 A/D 转换器的电源。 钡嵐縣緱虜荣 产涛團蔺。AREF是 A/D 的模拟

43、基准输入引脚。 懨俠劑鈍触乐鹇 烬觶騮。图 157 软件设计在前面几节中, 我们了解了 ATmega16单片机、 162液晶显示屏与 ds1302 的接口设 计以及液晶屏的时序,那么这部分阐述的是单片机对液晶屏显示和ds1302 的驱动控制。软件工作流程如下: 謾饱兗争詣繚鮐癞别瀘。第 20 页 (共 32 页)程序流程图8 结束语经过几个月的研究与实验, 终于完成了这篇论文。 在做这个课题的时侯遇到了许多 困难, 大部分通过查阅资料和看书以及研究别人成功的例子就能解决了, 但少部分问题 任不能解决,通过老师和同学的帮助终于解决。感谢帮助我的老师和同学。 呙铉們欤谦鸪 饺竞荡赚。参考文献:1

44、HS162-4 液晶显示使用说明资料 .2 DS1302_ 数据手册 .3 ATmega16 中文资料 .4 Proteus 中文入门教程 .5 贺敬凯,刘德新,管明祥 . 单片机系统设计、仿真与应用。西安电子科技大学 出版社, 2011.6 沈文. AVR 单片机 C语言开发入门指导 . 清华大学出版社, 2003年.7 丁化成,耿德根,李军凯 . AVR 单片机应用设计 . 北京航空航天大学出版社, 2002年.8 金春林,邱慧芳, 张皆喜. AVR系列单片机 C语言编程与应用实例 . 清华大学出版社, 2003 年.第 21 页 (共 32 页)附件:莹谐龌蕲賞组靄绉嚴减。/*设计介绍:

45、使用 8MHz 的晶振, ds1302 芯片以及 1602 液晶屏。使用 独立键盘设置或者调节时间。 13 个 10k 的电阻, 1 个 100 欧的电阻, 8 个 led 指示灯。 2 个 22pf 的电容。*/#include #define io PORTA.0#define sclk PORTA.1#define rst PORTA.2#define rs PORTA.5#define rw PORTA.6#define e PORTA.7#define uchar unsigned char#define uint unsigned int/*uchar l_dat = BASE O

46、N ;uchar f_dat = ATMEGA16 DESIGN;*/麸肃鹏镟轿騍镣缚縟糶。第 22 页 (共 32 页)/ 初始时间缓冲区 納畴鳗吶鄖uchar address=0x7e;uchar QIEHUAN;uchar n=0;uchar INT0=0;uchar time8 =0x00;uchar day8=0x00;int d3=0,0,0;uchar set_time 7 = 0x00,0x00,0x13,0x21,0x07,0x06,0x12; 禎銣腻鰲锬。/ 时间地址中间变量/ 切换时间标志位/ 定义时间调节变量/ 定义中断变量/ 定义时、分、秒显示缓冲区/ 定义年、月、日

47、、星期显示缓冲区/ 定义电压显示缓冲区延时函数void delayus(uint us) /1us 延时函数uint i;us=us*5/4; /5/4 是在 8MHz 晶振下,通过软件仿真反复实验得到的数值 for(i=0;ius;i+);void delayms(uint ms) /1ms 延时函数uint i,j;for( i=0;ims;i+)風撵鲔貓铁for(j=0;j1141;j+); /1141 是在 8MHz 晶振下, 通过软件仿真反复实验得到的数值 频钙蓟纠庙。/* 液晶屏判断忙函数 */ void lcd_busy()uchar temp;/ 定义中间变量存取从 lcd 读

48、取的值DDRB=0x00;/ 定义 B 端口为输入rs=0;/ 选择指令寄存器rw=1;/ 进行读操作doe=1;delayms(1); / 延时 1ms temp=PINB; / 读取 B 端口信号 e=0;delayms(1); / 延时 1ms while(temp&0x80); / 判断忙标志位是否为 1 DDRB=0xff; /B 端口置为输出,为想液晶屏写数据准备写指令函数 */void lcd_wcmd(uchar cmd)lcd_busy(); / 判断液晶屏是否忙第 23 页 (共 32 页)delayms(1); / 延时 1ms rs=0;/ 选择指令寄存器rw=0; / 进行写操作 e=0;delayms(1); / 延时 1msPORTB=cmd; / 把数据赋值给

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论