(最新版)基于AT89S51单片机的教室灯光智能控制毕业设计论文 联系客服

发布时间 : 星期六 文章(最新版)基于AT89S51单片机的教室灯光智能控制毕业设计论文更新完毕开始阅读6ae66bb2afaad1f34693daef5ef7ba0d4a736dc0

#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三极管来驱动数码管的位选,节约成本,程序编写简单。

考虑到数码管驱动信号要求的电流较大,采用功率驱动器件ULN2803芯片。此芯片是八组NPN型达林顿功放三极管集成芯片,典型的输入电压是5V,集电极输出功率可达50V×0.6A。因此采用ULN2803共阳极数码管的段信号驱动器。而共阳极数码管的位信号驱动则采用8个晶体管9012来实现。又由于ULN2803为低电平驱动,所以数据送到单片机端口前,应在程序中先将数据取反。然后将数据送到ULN2803输入端相连接单片机的P0端口即可。

每次先送一位要显示的数据字节,然后再送该位数码管的地址字节,直到8位显示完全。

本系统在运行过程中需要显示查看的数据有时钟及显示数值。正常工作中8位显示器显示实时时钟,显示小时、分钟、秒,其中有两位用来显示“—”,用以分隔显示小时、分钟和秒,这样显示更加清晰。

第四章 系统调试运行及问题分析

4.1单片机系统调试方法及步骤

单片机系统的调试应包括硬件及软件两部分,主要是通过调试发现硬件及软件中存在的问题,查看其运行结果是否符合设计要求。

在对系统进行实际调试时,首先应对硬件进行静态调试,同时对系统软件进行初步调试,此后再对软件和硬件进行动态调试,最后才能使系统进入正常工作.

(1)静态调试:静态调试主要是排除明显的硬件故障。在将芯片、传感器等元件连接到电路板上时,要保证各处电源极性、电压正确,以防止因电源极性接反或电压过高损坏芯片或传感器。此外,插入芯片必须在断电的情况下进行,特别注意芯片的方向不要插反。

(2)软件调试:在软件调试时采用在计算机上利用模拟软件实现对单片机的硬件模拟、指令模拟及运行状态模拟,从而完成应用软件开发的全过程。调试过程中的运行状态、各寄存器状态、端口状态等都可以在指定的窗口区域显示出来,通过这些显示结果随时跟踪程序运行状态,以确定程序运行无错误。

(3)动态调试:控制系统的软件和硬件是密切相关的,由于软件模拟开发系统不能对硬件部分进行诊断,同时也不能实时在线仿真,所以用户程序还需跟硬件连接起来进行联调,同时对软件和硬件进行检查和诊断。整个单片机系统进行在线调试时,需借助仿真开发工具来对用户软件及硬件电路进行诊断、调试。

在应用系统各模块电路调试成功后,将程序加载到在线仿真器上,这时就能单步或连续地执行目标程序,同时也可以根据需要分段设置断点执行程序。而对于一些与硬件相关的用户程序,如接口驱动程序等,则需要配合硬件,进行在线调试,如果有逻辑错误,也要及时纠正修改。

程序调试完毕后,利用编程器将程序固化到单片机中,使整个系统运行起来。 各模块电路调试流程图如下示: