Ⅰ 我刚接触单片机,想用51单片机做一个程序,控制数码管显示时间,时间是要一直走下去,而且尽量准确
用51单片机的定时器是达不到这个
准确
的要求的。。。。有专用的时钟芯片。。DS1302就是最基本的时钟芯片。。
方法也很简单。。找到DS1302芯片的PDF资料。。然后按照资料里面的电路连接,然后编写程序就OK了。。关键在于程序。。基本原理是。。单片机读取DS1302那里面的时钟数据,然后判断是否是你定的时间,如果是继电器工作,不是就等下一次循环。。。就像看手表一样。。看到几点几分,做什么事一样。。。。
Ⅱ 如何在液晶上显示汉字,单片机用的ATmega16,液晶是1602,求详细代码
我给你推荐一款,是我自己用的这款,比较好,开发时自己的机子要有并口,价格是168rmb,免邮
2008-7-7--------2008-9-1 为暑期促销特价期 原价168元 现特价150元!! 配置不变. 锐志电子单片机普及计划 让学习者花最少的钱 学到最多的知识.
此款是有并口电脑所用的配置利用并口ISP线烧写程序
(没有并口的电脑 但是有串口的可以采用STC89C52芯片 利用串口下载程序 购买时请说明 我们会配STC89C52芯片)
本实验板是锐志电子开发的一款多功能51综合学习实验板。 是经过研究和分析市面上的多种实验板后, 取其所长,弊其所短短 研发而成。 所以对于学习者来说, 性价比是很高的。 花最少的钱, 学到最多的知识, 这就是锐志电子单片机普及计划的宗旨。
本实验板是集单片机编程、 仿真(须配仿真芯片)、 实验、下载线 多种功能为一体, 该51单片机学习实验板除了支持ATmel公司的AT89S所有系列之外,还支持STC的所有系列增强型51单片机和SST系列的增强型51单片机的实验、编程与仿真功能,支持的被编程芯片数量达100之多;是一款真正具有物超所值的51单片机多功能板。
功能特点
编程器、仿真器、实验板、ISP下载线四合一
直接支持Atmel 89系列,AVR AT90S8515,Atmega8515系列单片机的烧写,
提供丰富的实验例程,附带C源代码和少量汇编源码,并且附带详细的注解说明(C语言是未来的趋势 所以我们提倡使用C开发 附带汇编源码较少)
编程与实验共享唯一的锁紧插座,串行下载与仿真共享同一串口,操作方便
内置完善的过载、短路保护功能
直接使用计算机USB接口供电,也可以接电源适配器供电板载7805稳压IC 保证其他电源供电时 实验板工作的稳定。
带有电源开关实验更加方便 再也不用频繁拔实验板电源线了 轻轻一按 即可通断。
直接将器件放在开发系统锁紧座上进行编程,可单独作编程器使用
直接在锁紧座上放上仿真芯片连上串口 稍作设置 即可进行仿真。
板载丰富的实验硬件资源,P0 P1 P2 P3 四个IO口 全部可扩展设计 真正的满足学习者的需要通过自己连接IO口线路 可以完成任何复杂的51单片机实验
配有ISP下载口 配合本实验板标配的89S52单片机 就可不用任何编程器 也不用将芯片取下就可直接完成烧写编程工作 十分方便, 烧写完毕即可自动演示。实验过程中无需拔插任何电缆和芯片,也无需切换电源,可轻松地将编绎好的代码下载到实验板上进行验证或演示,整个过程只需利用鼠标操作即可,方便快捷。
实验板资源配置如下:
1、此款采用并口ISP下载线,配AT89S52单片机,可以很方便的下载程序到单片机。下载后不用插拔线缆, 下载好后自动直接运行程序。
2、USB供电系统,直接插接到电脑USB口即可提供电源,不需另接直流电源。
3、8位数码管(可做数码管的静态扫描以及动态扫描显示实验 不如 0-999 计数器实验 18B20温度检测实验 遥控解码实验等都可以用数码管显
示)。
4、8位LED发光二极管(做 跑马灯实验 交通灯实验 )。
5、一路继电器控制(通过继电器可以控制其他电器设备的工作低压控制高压等实验 不过为了安全 建议不要控制电压超过30V的设备)
6、蜂鸣器(做单片机发声实验 播放音乐实验 报警实验等声响实验)
7、DS18B20温度传感器,(初步掌握单片机操作后即可亲自编写程序获知当时的温度 可以配合本站原创的PC与单片机双向温度控制程序 将温
度实时显示在电脑上)
8、AT24C08外部EEPROM存储芯片(IIC总线元件实验)
9、SPI串行实时时钟 DS1302(熟悉SPI总线 用DS1302可以做一个万年历电子时钟 比定时器做的精确很多哦)
10、 板上集成一体化红外接收头(方便学习红外遥控接收 解码实验 还可以通过遥控控制电脑 本站原创的红外遥控解码控制电脑音乐播放实例可以让学习者 学习 体验用遥控器控制电脑的乐趣)
11、MAX232芯片RS232通讯接口(可以做为与计算机通迅的接口同时也可做为STC单片机下载程序的接口及仿真调试的接口)
12、字符液晶1602LCD接口 采用接插件方式方便插拔(可显示两行 每行16个 共计32任意 ASCII码字符 它的功能应用比数码管丰富很多 显示
的信息量更大 我们已经随板附赠了1602LCD 方便学习者开发1602LCD显示的程序)
13、图形点阵液晶12864接口 采用接插件方式方便插拔(可显示任意汉字和图形 是目前单片机 图文显示最常用的显示器件 我们实验板支持带字库的12864液晶 开发程序更方便 12864液晶不随板附赠 需单独购买 我们成本价70元提供带字库的支持对比度调节12864液晶)
14、4*4矩阵键盘(熟悉矩阵键盘编码、解码扫描原理 可作为人机输入接口 编写按键输入程序)
15、4个独立键盘(可做普通独立按键检测试验 本实验板4个独立按键采用跳线设计 考虑周全 可以通过跳线连接任意P口 方便学习者做 外中
断INT0 INT1 外定时器T0 T1 实验)。
16、单片机32个IO口全部引出 端口扩展设计采用双排跳线帽设置,如果跳线帽拔掉,完全可以做最小系统,真正发挥你的开发才能 便于你今后的开发。
17、为方便大家更换晶体振荡器(单片机“超频”)特别采用了镀金晶体插座,做实验时需要不同晶振频率时 可很方便的插拔更换(我们随板赠送三个不同频率的晶振 11.0592MHZ、12MHZ、24MHZ各一个 最大程度上满足了学习者的需要)
18、本实验板带有51单片机 和AVR单片机的切换开关通过开关轻轻波动一下直接就可以使用ATMEGA8515等AVR系列单片机做AVR实验,真正做到物尽其用。为51学习者将来学习AVR单片机节省了再次购买AVR实验板的成本,所以我们的实验板非常超值。
19、ISP下载接口(用并口ISP下载线或者其他的兼容ISP下载线 可以对AT89S51 S52 ATMEGA8515 AT90S8515单片机直接编程。)
20、本实验板采用40PIN锁紧座安放单片机芯片,非常方便单片机芯片的取放。
21、本实验板 板上带有外接电源接口 方便使用外接电源为单片机供电。
22、实验板 带有 +5V 和地线扩展口 方便用户扩展其他外围电路时取电
本实验板附带的试验程序:
产品规格:长X宽X高 = 120x100x20(mm)
产品装箱清单:
RZ-51/AVR实验板一台
USB取电线一条
串口通讯电缆一条
AT89S52单片机一片
1602LCD字符液晶模块一块
并口ISP下载线一条
12M 11.0592M 24M 晶振各一个
10根杜邦连接线
10个备用跳线帽
700MB的51学习资料光盘一张(光盘中含本实验板所有例程 每个例程里都有实验指导文档,方便学习者做实验。实验板PDF格式原理图,实验板使用说明文件、STC单片机程序下载软件,ISP下载线软件 大量KEIL51学习资料及教程 串口调试软件 还有本站原创的串口控制单片机 双向通讯的智能温控报警系统 上位机程序源码 和单片机程序源码)
我们所有器件都采用防静电袋包装 外包装采用泡沫防震包装 邮政标准7#箱 包装专业 避免运输过程出现损坏
发货前每项功能均已严格测试 保证质量 请放心购买。
我们长期从事单片机程序开发 和PC程序开发 可为客户提供很好的技术支持。
每天早上8:00到晚上12:00都会在线 随时为客户提供专业的技术支持。
部分实验图片:
本站原创 单片机温控+VB上位机温度检测实验VB上位机图片
(可设定报警温度 并有实时温度曲线图 附赠全部源码。有很大的应用价值)
本站原创 单片机S52 控制上位机VB 制作成的 VB红外遥控电脑播放器 上位机图片
(可自定义遥控器的键值 支持市面上大部分遥控器 可进行 磁盘选择 目录选择 歌曲选择 音量调节 播放/暂停 静音 还有播放视频时全屏等操作 可以说是一个完整的功能强大的红外遥控播放器 和遥控DVD 没什么区别 非常实用。全部源码 均在光盘中赠送。。)
自定义遥控键值图片
近一个月销售记录 众多买家的选择证明 我们的实验板非常超值。。
Ⅲ 基于MCS-51单片机的数字时钟系统设计
51单片机的PDF 89S52典型的51结构
主要性能
l 与MCS-51单片机产品兼容
l 8K字节在系统可编程Flash存储器
l 1000次擦写周期
l 全静态操作:0Hz~33Hz
l 三级加密程序存储器
l 32个可编程I/O口线
l 三个16位定时器/计数器
l 八个中断源
l 全双工UART串行通道
l 低功耗空闲和掉电模式
l 掉电后中断可唤醒
l 看门狗定时器
l 双数据指针
l 掉电标识符
功能特性描述
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有
8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非
易失性存储器技术制造,与工业80C51 产品指令和引脚完
全兼容。片上Flash允许程序存储器在系统可编程,亦适于
常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统
可编程Flash,使得AT89S52为众多嵌入式控制应用系统提
供高灵活、超有效的解决方案。
AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,
32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位
定时器/计数器,一个6向量2级中断结构,全双工串行口,
片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻
辑操作,支持2种软件可选择节电模式。空闲模式下,CPU
停止工作,允许RAM、定时器/计数器、串口、中断继续工
作。掉电保护方式下,RAM内容被保存,振荡器被冻结,
单片机一切工作停止,直到下一个中断或硬件复位为止。
R
8 位微控制器
8K 字节在系统可编程
Flash
AT89S52
Rev. 1919-07/01
AT89S52
2
引脚结构
AT89S52
3
方框图
引脚功能描述
AT89S52
4
VCC : 电源
GND: 地
P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻
辑电平。对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,
P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验
时,需要外部上拉电阻。
P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个
TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2
的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5 MOSI(在系统编程用)
P1.6 MISO(在系统编程用)
P1.7 SCK(在系统编程用)
P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个
TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)
时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用
8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个
TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
AT89S52
5
引脚号第二功能
P3.0 RXD(串行输入)
P3.1 TXD(串行输出)
P3.2 INT0(外部中断0)
P3.3 INT0(外部中断0)
P3.4 T0(定时器0外部输入)
P3.5 T1(定时器1外部输入)
P3.6 WR(外部数据存储器写选通)
P3.7 RD(外部数据存储器写选通)
RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门
狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上
的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。
ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址
的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或
时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,
ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使
能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而
在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器
读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:振荡器反相放大器的输出端。
AT89S52
6
表1 AT89S52 特殊寄存器映象及复位值
特殊功能寄存器
特殊功能寄存器(SFR)的地址空间映象如表1所示。
并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将
得到一个随机数据;写入的数据将会无效。
用户不应该给这些未定义的地址写入数据“1”。由于这些寄存器在将来可能被赋予新的
功能,复位后,这些位都为“0”。
定时器2 寄存器:寄存器T2CON 和T2MOD 包含定时器2 的控制位和状态位(如表2
和表3所示),寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。
中断寄存器:各中断允许位在IE寄存器中,六个中断源的两个优先级也可在IE中设置。
AT89S52
7
表2 T2CON:定时器/计数器2控制寄存器
T2CON 地址为0C8H 复位值:0000 0000B
位可寻址
TF2 EXF2 RLCLK TCLK EXEN2 TR2
7 6 5 4 3 2 1 0
符号功能
TF2 定时器2 溢出标志位。必须软件清“0”。RCLK=1 或TCLK=1 时,TF2
不用置位。
EXF2
定时器2 外部标志位。EXEN2=1 时,T2EX 上的负跳变而出现捕捉或重
载时,EXF2 会被硬件置位。定时器2 打开,EXF2=1 时,将引导CPU
执行定时器2 中断程序。EXF2 必须如见清“0”。在向下/向上技术模式
(DCEN=1)下EXF2不能引起中断。
RCLK
串行口接收数据时钟标志位。若RCLK=1,串行口将使用定时器2 溢出
脉冲作为串行口工作模式1 和3 的串口接收时钟;RCLK=0,将使用定
时器1计数溢出作为串口接收时钟。
TCLK
串行口发送数据时钟标志位。若TCLK=1,串行口将使用定时器2 溢出
脉冲作为串行口工作模式1 和3 的串口发送时钟;TCLK=0,将使用定
时器1计数溢出作为串口发送时钟。
EXEN2
定时器2外部允许标志位。当EXEN2=1时,如果定时器2没有用作串行
时钟,T2EX(P1.1)的负跳变见引起定时器2 捕捉和重载。若EXEN2
=0,定时器2将视T2EX端的信号无效
TR2 开始/停止控制定时器2。TR2=1,定时器2开始工作
定时器2 定时/计数选择标志位。=0,定时; =1,外部事
件计数(下降沿触发)
捕捉/重载选择标志位。当EXEN2=1时, =1,T2EX出现负脉冲,
会引起捕捉操作;当定时器2溢出或EXEN2=1时T2EX出现负跳变,都
会出现自动重载操作。=0 将引起T2EX 的负脉冲。当RCKL=1
或TCKL=1时,此标志位无效,定时器2溢出时,强制做自动重载操作。
双数据指针寄存器:为了更有利于访问内部和外部数据存储器,系统提供了两路16位
数据指针寄存器:位于SFR中82H~83H的DP0和位于84H~85。特殊寄存器AUXR1
中DPS=0 选择DP0;DPS=1 选择DP1。用户应该在访问数据指针寄存器前先初始化
AT89S52
8
DPS至合理的值。
表3a AUXR:辅助寄存器
AUXR 地址:8EH 复位值:XXX00XX0B
不可位寻址
- - - WDIDLE DISRTO - - DISALE
7 6 5 4 3 2 1 0
- 预留扩展用
DISALE ALE使能标志位
DISALE 操作方式
0 ALE 以1/6晶振频率输出信号
1 ALE 只有在执行MOVX 或MOVC指令时激活
DISRTO 复位输出标志位
DISRTO
0 看门狗(WDT)定时结束,Reset 输出高电平
1 Reset 只有输入
WDIDLE 空闲模式下WDT使能标志位
WDIDLE
0 空闲模式下,WDT继续计数
1 空闲模式下,WDT停止计数
掉电标志位:掉电标志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。上电期
间POF置“1”。POF可以软件控制使用与否,但不受复位影响。
表3b AUXR1:辅助寄存器1
AUXR1 地址:A2H 复位值:XXXXXXX0B
不可位寻址
- - - - - - - DPS
7 6 5 4 3 2 1 0
- 预留扩展用
DPS 数据指针选择位
DPS
0 选择DPTR寄存器DP0L和DP0H
1 选择DPTR寄存器DP1L和DP1H
AT89S52
9
存储器结构
MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以
64K寻址。
程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。
对于89S52,如果EA 接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开
始,接着从外部寻址,寻址地址为:2000H~FFFFH。
数据存储器:AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重
叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特
殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。
例如,下面的直接寻址指令访问0A0H(P2口)存储单元
MOV 0A0H , #data
使用间接寻址方式访问高128 字节RAM。例如,下面的间接寻址方式中,R0 内容为
0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。
MOV @R0 , #data
堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。
看门狗定时器
WDT是一种需要软件控制的复位方式。WDT 由13位计数器和特殊功能寄存器中的看
门狗定时器复位存储器(WDTRST)构成。WDT 在默认情况下无法工作;为了激活
WDT,户用必须往WDTRST 寄存器(地址:0A6H)中依次写入01EH 和0E1H。当
WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部
时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT
溢出,它将驱动RSR引脚一个高个电平输出。
WDT的使用
为了激活WDT,用户必须向WDTRST寄存器(地址为0A6H的SFR)依次写入0E1H
和0E1H。当WDT激活后,用户必须向WDTRST写入01EH和0E1H喂狗来避免WDT
溢出。当计数达到8191(1FFFH)时,13 位计数器将会溢出,这将会复位器件。晶振正
常工作、WDT激活后,每一个机器周期WDT 都会增加。为了复位WDT,用户必须向
WDTRST 写入01EH 和0E1H(WDTRST 是只读寄存器)。WDT 计数器不能读或写。
当WDT 计数器溢出时,将给RST 引脚产生一个复位脉冲输出,这个复位脉冲持续96
个晶振周期(TOSC),其中TOSC=1/FOSC。为了很好地使用WDT,应该在一定时间
内周期性写入那部分代码,以避免WDT复位。
掉电和空闲方式下的WDT
在掉电模式下,晶振停止工作,这意味这WDT也停止了工作。在这种方式下,用户不
必喂狗。有两种方式可以离开掉电模式:硬件复位或通过一个激活的外部中断。通过硬
件复位退出掉电模式后,用户就应该给WDT 喂狗,就如同通常AT89S52 复位一样。
通过中断退出掉电模式的情形有很大的不同。中断应持续拉低很长一段时间,使得晶振
AT89S52
10
稳定。当中断拉高后,执行中断服务程序。为了防止WDT在中断保持低电平的时候复
位器件,WDT 直到中断拉低后才开始工作。这就意味着WDT 应该在中断服务程序中
复位。
为了确保在离开掉电模式最初的几个状态WDT不被溢出,最好在进入掉电模式前就复
位WDT。
在进入待机模式前,特殊寄存器AUXR的WDIDLE位用来决定WDT是否继续计数。
默认状态下,在待机模式下,WDIDLE=0,WDT继续计数。为了防止WDT在待机模
式下复位AT89S52,用户应该建立一个定时器,定时离开待机模式,喂狗,再重新进
入待机模式。
UART
在AT89S52 中,UART 的操作与AT89C51 和AT89C52 一样。为了获得更深入的关于
UART 的信息,可参考ATMEL 网站(http://www.atmel.com)。从这个主页,选择
“Procts”,然后选择“8051-Architech Flash Microcontroller”,再选择“Proct
Overview”即可。
定时器0 和定时器1
在AT89S52 中,定时器0 和定时器1 的操作与AT89C51 和AT89C52 一样。为了获得
更深入的关于UART 的信息,可参考ATMEL 网站(http://www.atmel.com)。从这个主
页,选择“Procts”,然后选择“8051-Architech Flash Microcontroller”,再选择“Proct
Overview”即可。
定时器2
定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作
方式由特殊寄存器T2CON中的C/T2位选择(如表2所示)。定时器2有三种工作模式:
捕捉方式、自动重载(向下或向上计数)和波特率发生器。如表3 所示,工作模式由
T2CON中的相关位选择。定时器2 有2 个8位寄存器:TH2和TL2。在定时工作方式
中,每个机器周期,TL2 寄存器都会加1。由于一个机器周期由12 个晶振周期构成,
因此,计数频率就是晶振频率的1/12。
表3 定时器2工作模式
RCLK+TCLK CP/RL2 TR2 MODE
0 0 1 16位自动重载
0 1 1 16位捕捉
1 × 1 波特率发生器
× × 0 (不用)
在计数工作方式下,寄存器在相关外部输入角T2 发生1 至0 的下降沿时增加1。在这
AT89S52
11
种方式下,每个机器周期的S5P2期间采样外部输入。一个机器周期采样到高电平,而
下一个周期采样到低电平,计数器将加1。在检测到跳变的这个周期的S3P1 期间,新
的计数值出现在寄存器中。因为识别1-0的跳变需要2个机器周期(24个晶振周期),
所以,最大的计数频率不高于晶振频率的1/24。为了确保给定的电平在改变前采样到
一次,电平应该至少在一个完整的机器周期内保持不变。
捕捉方式
在捕捉模式下,通过T2CON中的EXEN2来选择两种方式。如果EXEN2=0,定时器2
时一个16位定时/计数器,溢出时,对T2CON 的TF2标志置位,TF2引起中断。如果
EXEN2=1,定时器2做相同的操作。除上述功能外,外部输入T2EX引脚(P1.1)1至
0的下跳变也会使得TH2和TL2中的值分别捕捉到RCAP2H和RCAP2L中。除此之外,
T2EX 的跳变会引起T2CON 中的EXF2 置位。像TF2 一样,T2EX 也会引起中断。捕
捉模式如图5所示。
图5 定时器的捕捉模式
自动重载
当定时器2 工作于16 位自动重载模式,可对其编程实现向上计数或向下计数。这一功
能可以通过特殊寄存器T2MOD(见表4)中的DCEN(向下计数允许位)来实现。通
过复位,DCEN 被置为0,因此,定时器2 默认为向上计数。DCEN 设置后,定时器2
就可以取决于T2EX向上、向下计数。
如图6 所示,DCEN=0 时,定时器2 自动计数。通过T2CON 中的EXEN2 位可以选择
两种方式。如果EXEN2=0,定时器2计数,计到0FFFFH后置位TF2溢出标志。计数
溢出也使得定时器寄存器重新从RCAP2H 和RCAP2L 中加载16 位值。定时器工作于
捕捉模式,RCAP2H和RCAP2L的值可以由软件预设。如果EXEN2=1,计数溢出或在
外部T2EX(P1.1)引脚上的1到0的下跳变都会触发16位重载。这个跳变也置位EXF2
中断标志位。
如图6所示,置位DCEN,允许定时器2向上或向下计数。在这种模式下,T2EX引脚
控制着计数的方向。T2EX上的一个逻辑1使得定时器2向上计数。定时器计到0FFFFH
AT89S52
12
溢出,并置位TF2。定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到
定时器存储器TH2和TL2中。
T2EX 上的一个逻辑0 使得定时器2 向下计数。当TH2 和TL2 分别等于RCAP2H 和
RCAP2L中的值的时候,计数器下溢。计数器下溢,置位TF2,并将0FFFFH加载到定
时器存储器中。
定时器2上溢或下溢,外部中断标志位EXF2 被锁死。在这种工作模式下,EXF2不能
触发中断。
图6 定时器2重载模式(DCEN=0)
表4 T2MOD-定时器2控制寄存器
T2MOD 地址:0C9H 复位值:XXXXXX00B
不可位寻址
- - - - - - T2OE DCEN
7 6 5 4 3 2 1 0
符号功能
- 无定义,预留扩展
T2OE 定时器2输出允许位
DCEN 置1后,定时器2可配置成向上/向下计数
AT89S52
13
图7 定时器2自动重载(DCEN=1)
图8 定时器2 波特率发生器模式
AT89S52
14
波特率发生器
通过设置T2CON(见表2)中的TCLK或RCLK可选择定时器2 作为波特率发生器。
如果定时器2作为发送或接收波特率发生器,定时器1可用作它用,发送和接收的波特
率可以不同。如图8 所示,设置RCLK 和(或)TCLK 可以使定时器2 工作于波特率
产生模式。
波特率产生工作模式与自动重载模式相似,因此,TH2 的翻转使得定时器2 寄存器重
载被软件预置16位值的RCAP2H和RCAP2L中的值。
模式1和模式3的波特率由定时器2溢出速率决定,具体如下公式:
模式1和模式3波特率=
16
2溢出率定时器
定时器可设置成定时器,也可为计数器。在多数应用情况下,一般配置成定时方式
(CP/T2=0)。定时器2 用于定时器操作与波特率发生器有所不同,它在每一机器周期
(1/12晶振周期)都会增加;然而,作为波特率发生器,它在每一机器状态(1/2晶振
周期)都会增加。波特率计算公式如下:
模式1和模式3的波特率=
)] 2 , 2 ( 65536 [ 32 L RCAP H RCAP - ′
晶振频率*原文少半个括号“(”
其中,(RCAP2H,RCAP2L)是RCAP2H和RCAP2L组成的16位无符号整数。
定时器2 作为波特率发生器,如图8 所示。图中仅仅在T2CON 中RCLK 或TCLK=1
才有效。特别强调,TH2的翻转并不置位TF2,也不产生中断; EXEN2置位后,T2EX
引脚上1~0的下跳变不会使(RCAP2H,RCAP2L)重载到(TH2,TL2)中。因此,
定时器2作为波特率发生器,T2EX也还可以作为一个额外的外部中断。
定时器2处于波特率产生模式,TR2=1,定时器2正常工作。TH2或TL2不应该读写。
在这种模式下,定时器在每一状态都会增加,读或写就不会准确。寄存器RCAP2可以
读,但不能写,因为写可能和重载交迭,造成写和重载错误。在读写定时器2 或RCAP2
寄存器时,应该关闭定时器(TR2清0)。
可编程时钟输出
如图9 所示,可以通过编程在P1.0 引脚输出一个占空比为50%的时钟信号。这个引脚
除了常规的I/O 角外,还有两种可选择功能。它可以通过编程作为定时器/计数器2 的
外部时钟输入或占空比为50%的时钟输出。当工作频率为16MHZ时,时钟输出频率范
围为61HZ到4HZ。
为了把定时器2配置成时钟发生器,位C/T2(T2CON.1)必须清0,位T2OE(T2MOD.1)
必须置1。位TR2(T2CON.2)启动、停止定时器。时钟输出频率取决于晶振频率和定
时器2捕捉寄存器(RCAP2H,RCAP2L)的重载值,如公式所示:
时钟输出频率=
] 2 , 2 65536 [ 4 ) -(
晶振频率
L RCAP H RCAP ′
在时钟输出模式下,定时器2不会产生中断,这和定时器2用作波特率发生器一样。定
AT89S52
15
时器2也可以同时用作波特率发生器和时钟产生。不过,波特率和输出时钟频率相互并
不独立,它们都依赖于RCAP2H和RCAP2L。
图9 定时器2时钟输出模式
中断
AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、
2)和一个串行中断。这些中断如图10所示
每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中
断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。
如表5所示,IE.6位是不可用的。对于AT89S52,IE.5位也是不能用的。用户软件不应
给这些位写1。它们为AT89系列新产品预留。
定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,
这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2 或EXF2激
活中断,标志位也必须由软件清0。
定时器0和定时器1标志位TF0 和TF1在计数溢出的那个周期的S5P2被置位。它们的
值一直到下一个周期被电路捕捉下来。然而,定时器2 的标志位TF2 在计数溢出的那
个周期的S2P2被置位,在同一个周期被电路捕捉下来。
AT89S52
16
表4 中断允许控制寄存器(IE)
(MSB) (LSB)
EA - ET2 ES ET1 EX1 ET0 EX0
中断允许控制位=1,允许中断
中断允许控制位=0,禁止中断
符号位地址功能
EA IE.7 中断总允许控制位。EA=0,中断总禁止;EA=1,各中断由各
自的控制位设定
- IE.6 预留
ET2 IE.5 定时器2中断允许控制位
ES IE.4 串行口中断允许控制位
ET1 IE.3 定时器1中断允许控制位
EX1 IE.2 外部中断1允许控制位
ET0 IE.1 定时器0中断允许控制位
EX0 IE.0 外部中断1允许控制位
图10 中断源
AT89S52
17
晶振特性
如图10 所示,AT89S52 单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和
XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自
激振荡器。从外部时钟源驱动器件的话,XTAL2 可以不接,而从XTAL1 接入,如图
12 所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部
时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要
符合要求的。
图11 内部振荡电路连接图图12 外部振荡电路连接图
石英晶振C1,C2=30PF±10PF
陶瓷谐振器C1,C2=40PF±10PF
空闲模式
在空闲工作模式下,CPU 处于睡眠状态,而所有片上外部设备保持激活状态。这种状
态可以通过软件产生。在这种状态下,片上RAM和特殊功能寄存器的内容保持不变。
空闲模式可以被任一个中断或硬件复位终止。
由硬件复位终止空闲模式只需两个机器周期有效复位信号,在这种情况下,片上硬件禁
止访问内部RAM,而可以访问端口引脚。空闲模式被硬件复位终止后,为了防止预想
不到的写端口,激活空闲模式的那一条指令的下一条指令不应该是写端口或外部存储
器。
掉电模式
在掉电模式下,晶振停止工作,激活掉电模式的指令是最后一条执行指令。片上RAM
AT89S52
18
和特殊功能寄存器保持原值,直到掉电模式终止。掉电模式可以通过硬件复位和外部中
断退出。复位重新定义了SFR 的值,但不改变片上RAM 的值。在VCC未恢复到正常
工作电压时,硬件复位不能无效,并且应保持足够长的时间以使晶振重新工作和初始化。
表6 空闲模式和掉电模式下的外部引脚状态
模式程序存储器ALE PSEN PORT0 PORT1 PORT2 PORT3
空闲内部1 1 数据数据数据数据
空闲外部1 1 浮空数据地址数据
掉电内部0 0 数据数据数据数据
掉电外部0 0 浮空数据数据数据
程序存储器的加密位
AT89S52有三个加密位不可编程(U)和可编程获得下表所示的功能。
表7 加密位保护模式
加密位1(LB1)编程后,EA 引脚的逻辑值被采样,并在复位期间锁存。如果器件复
位,而没有复位,将锁存一个随机值,直到复位为止。为了器件功能正常,锁存到的
EA值必须和这个引脚的当前逻辑电平一致。
Flash编程―并行模式
AT89S52 带有用作编程的片上Flash 存储器阵列。编程接口需要一个高电压(12V)编
程使能信号,并且兼容常规的第三方*(原文:third-party,不知道对不对)Flash或EPROM
编程器。
AT89S52程序存储阵列采用字节式编程。
编程方法
对AT89S52编程之前,需根据Flash编程模式表和图13、图14对地址、数据和控制信
号设置。可采用下列步骤对AT89S52编程:
AT89S52
19
1.在地址线上输入编程单元地址信号
2.在数据线上输入正确的数据
3.激活相应的控制信号
4.把EA/Vpp升至12V
5.每给Flash写入一个字节或程序加密位时,都要给ALE/PROG一次脉冲。字节写周
期时自身定制的,典型值仅仅50us。改变地址、数据重复第1步到第5步,知道全
部文件结束。
Data Polling
AT89S52用Data Polling作为一个字节写周期结束的标志特征。
Ⅳ 我在做单片机设计,需要一个特殊的计时器,请高手指点!
常用的是DS1302时钟芯片,电脑和手机用的就是它,但是没有“当达到设定的时间时向单片机发送信号”这个功能,估计市场上还没有。