SCLK:
串行时钟,输入,控制数据的输入与输出;
I/O:
三线接口时的双向数据线;
CE:
输入信号,在读、写数据期间,必须为高。
DS1302与单片机接口电路连接如图1-7,其中Vcc2外接3.6V可充电的锂电池,为DS1302的备用电源。
Vcc1外接供电模块的稳定输出电压+5V,为DS1302的主电源。
DS1302由Vcc1和Vcc2两者中较大者供电。
系统正常运行时,Vcc1大于Vcc2,因此由Vcc1给DS1302供电,在主电源关闭的情况下,则由Vcc2给DS1302供电,保持时钟的连续运行。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送,与单片机的复位信号相连。
时钟输入端SCLK接单片机P1.5引脚,进行时钟控制。
。
图1-7时钟电路
1.2.6继电器驱动电路
继电器驱动接口电路如图1-8所示,这里继电器由相应的PNP型号的9012三极管来驱动。
开机时,单片机初始化后的P3.5、P3.6为高电平,三极管截止,所以开机后继电器始终处于释放状态。
如果P3.5、P3.6为低电平,三极管的基极就会被拉低而产生足够的基极电流,使三极管导通,继电器就会得电吸合,从而驱动负载,点亮相应电灯。
继电器的输出端并联100欧的电阻和6800皮法电容,目的是避免继电器吸合与释放期间产生火花。
继电器线圈两端反相并联的二极管是起到吸收反向电动势的功能,保护相应的驱动三极管,这种继电器驱动方式硬件结构比较简单。
图1-8继电器驱动电路
1.2.7超时提示电路
本系统采用的超时报警电路如图1-9所示。
单片机的P3.4端口外加一个10K的上拉电阻,再经过限流电阻100欧与三极管C945的基极相连。
当P3.4端口为低电平,即基极为低电平时,三极管导通,驱动蜂鸣器发出声音,以示教室灯工作超时。
若P3.4端口为高电平,即基极为高电平时,三极管截止,蜂鸣器不工作,教室灯工作正常。
本系统采用超时报警电路方便了管理人员对教室灯的管理,能够科学、有效地管理电灯。
图1-9超时报警电路
1.2.8按键控制电路
按键控制电路如图1-10所示。
按键的输入信号分别接到P2.0,P2.1,P2.2,P2.3,用二极管和与门电路将按键信号引到外中断0的引脚P3.2。
按键控制电路采用单片机P2口的低4个口作按键的输入信号端,信号取自电阻的分压。
当按键未按下时,P2.0—P2.3端口的电压接近电源电压,为高电平,当某一按键按下时,对应端口被按纽开关短接到地,为低电平。
单片机检测4个端口电平的变化,从而确定是哪个键被按下。
键盘工作方式采用中断扫描方式,4个二极管和10K电阻组成与门电路,当任一键按下时,与门输出P3.2引脚的电平都会由高为低。
P3.2第二功能是外部中断0的输入引脚,我们利用其电平的变化产生中断,在中断服务程序中读入P2口低4位信号,确定哪个键按下,执行相应的按键功能,0.1pf电容和10K电阻组成滤波电路,消除按键的抖动。
图1-10按键控制电路
1.2.9芯片芯片X5045
一般说明X5043/45把四种常用的能:
上电复位、看门狗定时器、电源电压监控和块锁(BlockLockM)保护串行EEPROM存储器组成在一个封装之内。
这种组合降低了系统成本、减少了电路板空间和增加了可靠性。
向器件加电时激活了上电复位电路,它保持RESET/RESET有效一段时间。
这可使电源和振荡器稳定,然后微处理器再执行代码。
看门狗定时器对微控制器提供了一个独立的保护机制。
当系统故障时,在可选的超时时间(time-outinterval)之后,器件将激活RESET/RESET信号,用户可以从三个预置的值中选择一个超时时间。
一旦选定,即使在断电后重启电源时也不会改变。
器件的低VCC检测电路,可以保护系统免受低电压之影响,当VCC降到最小VCC转换点以下时,系统复位。
复位一直持续到VCC回到正常工作电平并且稳定为止。
有5个工业标准的转换电压门限Vtrip可以选用,并且Xicor独特的电路允许对门限编程以满足用户的需要或者对高精度应用的精细调整的需要。
X5043/45的存储器部份是具有Xicor块锁保护的CMOS4Kb串行EEPROM。
该阵列内部的组织是×8。
器件具有SPI接口的特性,其软件协议允许工作在一个简单四线总线上。
,的引脚排列如图1-11。
图1-11X5045的引脚图
看门狗定时器的预置时间是通过X5045的状态寄存器的相应位来设定的。
如表1.2状态寄存器所示,X5045状态寄存器共有6位。
其中WD1.WD0和看门狗电路有关,其余位和EEPROM的工作设置有关。
表1.2状态寄存器
WD1=0,WD0=0,预置时间为1.4S,
WD1=0,WD0=1,预置时间为0.6S,
WD1=1,WD0=0,预置时间为0.2S,
WD1=1,WD0=1,禁止看门狗工作。
看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即可。
X5045硬件部分连接如图1-12。
图1-12系统看门狗电路
系统看门狗电路由系统数据存储及故障保护部分组成,X5045是一种串行通信512字节的EEPROM,同时兼有看门狗和电源监控功能,X5045有三种可编程看门狗周期,上电和VCC低于检测门限时,输出复位信号,X5045输出复位高电平有效,为了复位更加可靠,其复位输出端外接一个10K的上拉电阻,并与AT89S51的复位端相连。
看门狗能在电源上电、掉电期间产生一个复位信号。
该芯片还带有一个1.4秒的看门狗定时器可用来监控单片机的工作。
如果在1.4秒内未检测到其工作,出现故障,内部定时器将使看门狗WD1处于低电平状态,为系统提供保护,避免死机、程序跑飞或进入死循环等意外的发生。
第二章时钟程序设计
2.1时钟程序设计
驱动程序
//寄存器宏定义
#defineWRITE_SECOND0x80
#defineWRITE_MINUTE0x82
#defineWRITE_HOUR0x84
#defineREAD_SECOND0x81
#defineREAD_MINUTE0x83
#defineREAD_HOUR0x85
#defineWRITE_PROTECT0x8E
//位寻址寄存器定义
sbitACC_7=ACC^7;//管脚定义
sbitSCLK=P3^5;//DS1302时钟信号7脚
sbitDIO=P3^6;//DS1302数据信号6脚
sbitCE=P3^7;//DS1302片选5脚
//地址、数据发送子程序
voidWrite1302(unsignedcharaddr,dat)
{
unsignedchari,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;
}
//数据读取子程序
unsignedcharRead1302(unsignedcharaddr)
{
unsignedchari,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=dat1/16;//数据进制转换
dat1=dat1%16;//十六进制转十进制
dat1=dat1+dat2*10;
return(dat1);
}
//初始化DS1302
voidInitial(void)
{
Write1302(WRITE_PROTECT,0X00);//禁止写保护
Write1302(WRITE_SECOND,0x56);//秒位初始化
Write1302(WRITE_MINUTE,0x34);//分钟初始化
Write1302(WRITE_HOUR,0x12);//小时初始化
Write1302(WRITE_PROTECT,0x80);//允许写保护
}
2.2ULN2803驱动模块
八路NPN达林顿连接晶体管阵系列特别适用于低逻辑电平数字电路(诸如TTL,CMOS或PMOS/NMOS)和较高的电流/电压要求之间的接口,广泛应用于计算机,工业用和消费类产品中的灯、继电器、打印锤或其它类似负载中。
所有器件具有集电极开路输出和续流箱位二极管,用于抑制跃变。
ULN2803的设计与标准TTL系列兼容,而ULN2804最适于6至15伏高电平CMOS或PMOS。
系统运行过程中的数据显示是人机交互对话的一个重要通道。
通过的显示系统数据,我们才可以更好的了解系统运行的状态,从而方便对整个系统进行必要的操作。
本系统中采用共阳极的数码管,其中采用ULN2803作为驱动数码管的段选的芯片,采用简单又便宜的9012三极管来驱动数码管的位选,节约成本,程序编写简单。
考虑到数码管驱动信号要求的电流较大,采用功率驱动器件ULN2803芯片。
此芯片是八组NPN型达林顿功放三极管集成芯片,典型的输入电压是5V,集电极输出功率可达50V×0.6A。
因此采用ULN2803共阳极数码管的段信号驱动器。
而共阳极数码管的位信号驱动则采用8个晶体管9012来实现。
又由于ULN2803为低电平驱动,所以数据送到单片机端口前,应在程序中先将数据取反。
然后将数据送到ULN2803输入端相连接单片机的P0端口即可。
每次先送一位要显示的数据字节,然后再送该位数码管的地址字节,直到8位显示完全。
本系统在运行过程中需要显示查看的数据有时钟及显示数值。
正常工作中8位显示器显示实时时钟,显示小时、分钟、秒,其中有两位用来显示“—”,用以分隔显示小时、分钟和秒,这样显示更加清晰。
第三章电路工作运行及问题分析
3.1单片机电路工作方法及步骤
在对系统进行实际调试时,首先应对硬件进行静态调试,同时对系统软件进行初步调试,此后再对软件和硬件进行动态调试,最后才能使系统进入正常工作.
(1)静态调试:
静态调试主要是排除明显的硬件故障。
在将芯片、传感器等元件连接到电路板上时,要保证各处电源极性、电压正确,以防止因电源极性接反或电压过高损坏芯片或传感器。
此外,插入芯片必须在断电的情况下进行,特别注意芯片的方向不要插反。
(2)软件调试:
在软件调试时采用在计算机上利用模拟软件实现对单片机的硬件模拟、指令模拟及运行状态模拟,从而完成应用软件开发的全过程。
调试过程中的运行状态、各寄存器状态、端口状态等都可以在指定的窗口区域显示出来,通过这些显示结果随时跟踪程序运行状态,以确定程序运行无错误。
(3)动态调试:
控制系统的软件和硬件是密切相关的,由于软件模拟开发系统不能对硬件部分进行诊断,同时也不能实时在线仿真,所以用户程序还需跟硬件连接起来进行联调,同时对软件和硬件进行检查和诊断。
整个单片机系统进行在线调试时,需借助仿真开发工具来对用户软件及硬件电路进行诊断、调试。
在应用系统各模块电路调试成功后,将程序加载到在线仿真