《防爆磁力启动器原理与维修》 * 技术教程集合 * PLC入门教程 电工基础教程
论坛使用帮助 PLC视频教程下载 升级VIP用户的方法成伟新帖

单灯闪烁的实现(1)

[复制链接]
查看2184 | 回复1 | 2011-9-7 23:02:03 | 显示全部楼层 |阅读模式
<





单灯闪烁的实现(1)
  前一课中,我们建立了AVR单片机的C语言开发环境,这一节课中我们通过一个典型的例子,了解AVR单片机的C语言程序写法和AVR单片机的特点。
硬件连接
  1.1 时钟源
  与AT89系列单片机相比,ATMEGA8515单片机具有更多种的时钟产生方式,通常可选用:
  1)外接晶振/陶瓷振荡器方式
  2)外接低频晶振方式
  3)外接RC元件构成的振荡电路
  4)标定的内部RC振荡电路
  5)外接信号源
  这些信号源的选择是在编程通过对CKSEL3、CKSEL2、CKSEL1和CKSEL0这4个位的选择来确定的。
  下表是选择不同的时钟源时,应写入的CKSEL3…0的值。
              时钟源选择
芯片时钟选项      CKSEL3..0
外部晶体/陶瓷振荡器 1111-1010
外部低频晶体      1001
外部RC振荡器      1000-0101
标定的内部RC振荡器      0100-0001
外部时钟           0000
  说明:对于所有的熔丝位, “1” 表示未编程, “0” 代表已编程。
  1.2 启动延时
  用于给芯片供电的电源特征各不相同,有一些电源,回路中有大电容,接通电源后其电压上升速度较慢,当电源升高到一定程度时,电路的各部份都开始工作但却不能稳定地工作,如果此时让芯片进入到工作状态,往往会导致运算出错、程序跑飞、片内EEPROM数据被乱改等后果,致使单片机的工作出现不正常,为解决这一问题,ATMEGA8515芯片在芯片完成复位后并不立即开始工作,而是延迟一段时间再进入正常工作状态,这个延时的时间可以由用户自行设定,系统中有SU1和SU0位,在编程时对这两位进行设定即可获得不同时长的延时。
  芯片在出厂时CKSEL = “0001”, SUT = “10”。默认时钟源为有最长启动时间的内部RC振荡器。默认设置可以保证用户使用在线编程或并行编程时都能获得所期望的时钟源。
  关于振荡电路选择的更详细资料,请参考ATMEGA8515的数据手册。
本实验板在设计时,用了11.0592M的晶振,这是为了使用51单片机而设定的。如果你用的芯片是ATMEGA8515,那么完全不用担心,因为该芯片的最高频率可以达到16M,如果你用的芯片是ATMEGA8515L,理论上,其最高工作频率为8M,但经过实践,用到11.0592M也同完全没有问题的,当然,这里仅是在实验板上使用,真正制作产品时不要这么做。
  1.3 I/O口的连接
  ATMEGA8515具有4个8位的I/O口(PA、PB、PC和PD)和一个附加的3位I/O口(PE),作为通用数字I/O 使用时,所有AVR I/O 端口都具有真正的“读- 修改- 写”功能。这意味着用SBI 或CBI 指令对一些管脚进行诸如改变方向、更改端口电平、禁止/ 使能上拉电阻等操作时,不会影响到其他的管脚。和51单片机不同,ATMEGA8515单片机的输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
  每个端口引脚都具有三个寄存器位: DDxn、 PORTxn 和PINxn,这里的X代表A、B、C、D和E中的一个,以下同。DDxn 以来选择引脚的方向。当DDxn 为\"1“ 时, Pxn 配置为输出;否则为输入。当引脚配置为输入时,若PORTxn 为\"1“,上拉电阻将被接入电路中。如果不需要这个上拉电阻起作用,可以将PORTxn 清零,或者将这个引脚配置为输出。复位时各引脚为高阻态,即使此时时钟没有工作也是如此。
  当引脚配置为输出时,若PORTxn 为\"1“,引脚输出高电平(\"1“),否则输出低电平(“0“)。在 高阻态({DDxn, PORTxn} = 0b00)和 输出高电平({DDxn, PORTxn} = 0b11) 两种状态之间进行切换时,上拉电阻接入电路({DDxn, PORTxn} = 0b01) 或输出低电平{DDxn,PORTxn} = 0b10) 这两种模式必然会有一个发生。通常,上拉电阻被接入电路是完全可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。如果外围电路不允许接入上拉电阻,可以通过置位SFIOR 寄存器的PUD 来禁止所有端口的上拉电阻。在上拉输入和输出低电平之间切换也有同样的问题。用户必须选择高阻态({DDxn,PORTxn} = 0b00) 或输出高电平({DDxn, ORTxn} = 0b10) 作为中间步骤。


热帖推荐
yangcun | 2011-9-7 23:02:04 | 显示全部楼层
本新闻共2页,当前在第1页 [1] [2]




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则