毕业设计(论文)-基于AT89S51单片机的教室灯光智能控制系统设计(5)

2019-04-16 21:00

3.3.1数据输入输出

在对DS1302进行各种操作之前,必须先对其初始化,即需要把复位输入RST端置为高电平,如果RST输入为低电平,那么所有的数据传送中止,且I/O引脚变为高阻抗状态。在数据读/写完后,RST端应置成低电平,以防止外部干扰对DS1302内部时钟的影响。

同时,为了防止复位输入端受到外部的干扰,要求上电时,在主电源引脚Vcc2≥2.5V之前,RST必须为逻辑0。无论是读操作还是写操作,都必须在开头的8个时钟周期内把提供地址和命令信息的8位数据装入到DS1302的移位寄存器中。地址/命令信息用于指明40个寄存器中的哪个进行何种操作。数据在SCLK的上升沿串行输入,在开始的8个时钟周期把命令字装入移位寄存器之后,若跟随的是写命令字节,则在下8个SCLK周期的上升沿输入数据字节,若跟随在读命令字节的8个SCLK周期之后,在下8个SCLK周期的下降沿输出数据字节。程序流程如图3-3所示:

15

图3-3数据输入输出流程图

3.3.2时钟程序设计

驱动程序 //寄存器宏定义

#define WRITE_SECOND 0x80 #define WRITE_MINUTE 0x82 #define WRITE_HOUR 0x84 #define READ_SECOND 0x81 #define READ_MINUTE 0x83 #define READ_HOUR 0x85 #define WRITE_PROTECT 0x8E

16

//位寻址寄存器定义

sbit ACC_7 = ACC^7; //管脚定义

sbit SCLK = P3^5; // DS1302时钟信号 7脚 sbit DIO= P3^6; // DS1302数据信号 6脚 sbit CE = P3^7; // DS1302片选 5脚 //地址、数据发送子程序

void Write1302 ( unsigned char addr,dat ) {

unsigned char i,temp;

CE=0; //CE引脚为低电平,数据传送中止 SCLK=0; //清零时钟总线

CE = 1; //CE引脚为高电平,逻辑控制有效 //发送地址

for ( i=8; i>0; i-- ) //循环8次移位 {

SCLK = 0; temp = addr;

DIO = (bit)(temp&0x01); //每次传输低字节 addr >>= 1; //右移一位 SCLK = 1; } //发送数据

for ( i=8; i>0; i-- ) {

SCLK = 0; temp = dat;

DIO = (bit)(temp&0x01);

17

dat >>= 1; SCLK = 1; } CE = 0; }

//数据读取子程序

unsigned char Read1302 ( unsigned char addr ) {

unsigned char i,temp,dat1,dat2; CE=0; SCLK=0; CE = 1; //发送地址

for ( i=8; i>0; i-- ) //循环8次移位 {

SCLK = 0; temp = addr;

DIO = (bit)(temp&0x01); //每次传输低字节 addr >>= 1; //右移一位 SCLK = 1; }

//读取数据

for ( i=8; i>0; i-- ) {

ACC_7=DIO; SCLK = 1; ACC>>=1;

18

SCLK = 0; } CE=0; dat1=ACC;

dat2=dat1/16; //数据进制转换 dat1=dat1; //十六进制转十进制 dat1=dat1+dat2*10; return (dat1); }

//初始化DS1302 void Initial(void) {

Write1302 (WRITE_PROTECT,0X00); //禁止写保护 Write1302 (WRITE_SECOND,0x56); //秒位初始化 Write1302 (WRITE_MINUTE,0x34); //分钟初始化 Write1302 (WRITE_HOUR,0x12); //小时初始化 Write1302 (WRITE_PROTECT,0x80); //允许写保护 }

3.4显示驱动模块

系统运行过程中的数据显示是人机交互对话的一个重要通道。通过的显示系统数据,我们才可以更好的了解系统运行的状态,从而方便对整个系统进行必要的操作。本系统中采用共阳极的数码管,其中采用ULN2803作为驱动数码管的段选的芯片,采用简单又便宜的9012三极管来驱动数码管的位选,节约成本,程序编写简单。

考虑到数码管驱动信号要求的电流较大,采用功率驱动器件ULN2803芯片。此芯片是八组NPN型达林顿功放三极管集成芯片,典型的输入电压是5V,集电极输出功率可达50V×0.6A。因此采用ULN2803共阳极数码管的段信号驱动器。

19


毕业设计(论文)-基于AT89S51单片机的教室灯光智能控制系统设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:辩论:真小人VS伪君子 正方

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: