(完整版)基于AT89S51单片机的教室灯光智能控制毕业论文

内容发布更新时间 : 2025/3/5 18:10:08星期一 下面是文章的全部内容请认真阅读。

#define WRITE_MINUTE 0x82 #define WRITE_HOUR 0x84 #define READ_SECOND 0x81 #define READ_MINUTE 0x83 #define READ_HOUR 0x85 #define WRITE_PROTECT 0x8E 位寻址寄存器定义

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); 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; SCLK = 0; }

CE=0; dat1=ACC;

dat2=dat116; 数据进制转换 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三极管来驱

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi