产品概述

51单片机rd 手把手教你制作无电源仍可走的时钟

小编 2024-10-09 产品概述 23 0

手把手教你制作无电源仍可走的时钟

芯片简介

乍一看题目读者可能会纳闷,这是什么奇怪的东西,不用电源还可以工作?其实笔者只是在这里卖了个关子,说的是不用外加电源也可以正常走时,并不是说整个电路工作时不需要供电。也就是说不使用时这个时钟不需要供电,在你加上电源之后就可以显示时间,并且仍然是正确的。就好像有些手机关闭之后又取下电板,等你下次开机的时候它又能显示正确的时间。其实这些手机里面都是有后备电池的,就是做时钟那一小块电路有后备电池供着电的。要是后备电池没有了电,取下电板后问题就来了,这也是为什么有些用久了的手机取下电板再装上,时间就不对了的缘故。但是本文说的这个时钟不需要外加后备电池,那它是怎么做到这一点的呢?请听我慢慢道来。

图5.1 实物图

图5.2 DS12887引脚

先了解一下“主角”的基本特性吧,DS12887是Dallas半导体公司推出的实时时钟芯片,在芯片内部集成了石英晶体、锂电池和其他支持电路,在没有外部供电的情况下,可以正确走时10年;可以计数时、分、秒、年、月、日和星期等信息,而且闰年补偿到2100年有效;内部的闹钟寄存器用来保存闹钟时间,当实时时间等于闹钟时间时,在DS12887的IRQ引脚输出低电平,微控制器可以利用此信号作为闹钟信号来处理。笔者用万用板焊接了电路,实物图见图5.1。下面将介绍如何使用DS12887制作这个时钟。

芯片引脚

了解了“主角”的基本特性,再来看看它的引脚。一个芯片的引脚可以看作是跟外界“交流”的通道,了解了引脚的用法就可以知道如何跟单片机相连。芯片引脚如图5.2所示,其中部分引脚命名与官方的数据手册有所不同,原数据手册上使用的是Motorala总线时序的命名方式,这里为了方便理解,采用Intel总线时序的命名方式,因为文章所使用的51单片机即为Intel时序。这两种总线时序最初分别是用在Motorala和Intel两家公司生产的芯片中,有兴趣的朋友可以在DS12887的数据手册上找到更详细的信息。

引脚MOT为总线方式选择,DS12887可以有两种时序:当MOT接VCC时选择Motorala总线时序;当MOT接地或悬空时选择Intel总线时序。本文用AT89S52作为控制器,AT89S52作为一种典型的51单片机,理所当然使用的是Intel总线时序。

AD0~AD7是地址、数据复用线,跟标准的51单片机的P0口类似,在一个读写周期里的前后两个时间段分别是作为地址线或数据线。它可以直接连接到AT89S52的P0口。

ALE为地址锁存信号,因为DS12887数据地址线采用分时复用的形式,所以需要ALE作地址锁存信号。在一个读写周期里AD0~AD7引脚上首先出现的信号表示地址,通过ALE的下降沿将该信号锁存到DS12887的地址寄存器,稍后AD0~AD7引脚上出现的信号则表示写入或读出DS12887的数据。ALE可以直接连接至AT89S52的ALE引脚。

RD、WR是读写控制信号引脚,分别连接AT89S52的RD(P3.7)、WR(P3.6)引脚。

CS为片选信号,为低电平时选中芯片,可以跟AT89S52的P2.7脚相连,这样就可以形成DS12887的读写基地址:0x0000。

IRQ引脚为中断输出信号,当DS12887产生中断时,在IRQ引脚输出有效低电平,该引脚为漏极开路输出,在外部需要加上拉电阻。

复位功能在本设计中不使用,RST可以直接接高电平。

片内资源

看完了外面,进到里面看看。DS12887内部有10字节的时钟(时、分、秒)、闹钟(时、分、秒)和日历(年、月、日、星期)寄存器和4个控制寄存器以及114字节的通用RAM。地址分配如附表所示。

在本文的设计中只使用了前面14字节的时钟、闹钟、日历和控制寄存器,其余的114字节的RAM并未使用。采用了如图5.3所示的电路图后,片内的14字节的地址分配就是从0x0000~0x000D,在程序中可以像访问外部RAM一样方便地读取和写入数据至这些地址。

0x0000~0x0009是时钟、闹钟和日历寄存器,保留了时间信息等相关内容,单片机可以通过读取这些内容将时间信息显示出来。

寄存器A的BIT6~BIT5控制DS12887内部晶体振荡器的关断。

寄存器B控制各种中断的使能,在本文中需要将闹钟使能位(BIT5)打开,BIT2决定输出的时钟数据是十六进制或是BCD码,BIT1决定时间采用的格式:24小时或12小时制。

寄存器C保存了中断标志位,若在使用多种中断的情况下,微控制器可以通过读取该寄存器辨别产生了何种中断,从而进入相应的处理程序。而在本设计中,只使用了闹钟中断,当在/IRQ引脚输出低电平时,就可以判断产生了闹钟时间到的中断。但是仍需要通过读取该寄存器以清楚中断标志,以免程序重复处理。

寄存器D是与器件是否有效相关的寄存器,本电路无需处理该寄存器。

附表 片内地址分配

硬件电路

电路使用4位一体共阴极数码管显示时钟、闹钟和日历信息,数码管采用CD4511作硬件译码,74LS06作动态选择和驱动电路。电路图如图5.3所示。

CD4511是一种用于数码管显示的译码芯片,在芯片输入引脚(D~A)输入4位二进制数值,在输出端(a~g)则译码输出共阴极数码管所需要显示的数值,例如,在CD4511的D~A这4个引脚输入“0101”(十进制的“5”,D为最高有效位数据),则在输出端的a~g输出“1011011”。而且CD4511有个很有用的“消隐”功能,即当输入端D~A的值大于9时,输出端a~g呈现高阻态,从而数码管表现为7段灯都会灭掉。

74LS06包含6个非门电路,本文只需要其中4路即可。在输入端置“1”,对应的输出端则为“0”,选中其中一个数码管。比如在AT89S52的P1.4输入“1”,则74LS06的4A引脚为“1”,在其对应的输出脚4Y输出就为“0”,从而选中与s1相连的DS1数码管。在焊接电路板时,可以将CD4511和74LS06这两个芯片放在数码管下方,这样整个电路板就会小巧一些。

图5.3 电路图

因为数码管只有4位,而且必须用其中的两位显示一项时间信息,所以每次只可以显示两项时间信息,例如,DS1、DS2分别显示月份的十位、个位,DS3、DS4分别显示日期的十位、个位。但要显示的时间信息要多得多,所以采用“分时复用”的方法轮流显示时和分、月和日、年和星期,在时间分配上笔者使用了下述方案:在每一分钟中,0~9s、20~39s、50~59s的时间里显示时钟的时和分,在10~19s内显示月和日,在40~49s内显示年和星期,而时钟的秒数则不作显示处理。因为星期的最大数值为7(表示星期天),可以只在个位显示,星期分配的十位可以作“消隐”处理。设定的闹钟信息不是需要经常查看的,所以不做上述的分时显示,而是通过按下KEY4键查看。

图5.4 主函数程序流程图

电路图中的4个按键功能分配如下,KEY1:数值加1键;KEY2:数值减1键;KEY3:调节项目选择,当该键按下可以选择不同的调节项目,依次为时钟的时、时钟的分、月份、日期、年、星期、闹钟的时和闹钟的分。KEY4:选择显示时间(包括时、分、月、日、年和星期)或闹钟。

红色的LED闪亮表示数码管当前显示的是闹钟的时和分,绿色的LED闪亮表示当前显示的是时钟的时和分;而红色的LED闪亮和蜂鸣器发出声音,则表示闹钟所定格的时间到来,发出警报提醒;当两个LED都不闪亮时表示显示的为日历信息,即月、日、年和星期,可以通过DS3是否显示数据区分出显示的是月、日还是年、星期。

软件设计

笔者使用的编译环境为Keil编译软件,采用C51编程语言。

整个程序由几个模块构成,文件mmi.c中包括一些人机交互处理的函数,比如读取按键、在数码管上显示时间信息、LED和蜂鸣器的发声处理等;文件ds12887.c中包括读写和初始化DS12887的函数;文件my52.c中包含延时函数;在文件main.c中则调用这些模块中的函数进行综合处理,主函数的程序流程图如图5.4所示。各个xxx.h文件中则是相应的xxx.c文件中的函数声明、全局变量声明等。更多源程序可以到qq群657864614进行下载!

一个属于电子工程师的专属淘宝店,总有一款适合你。所有商品均可以无理由退货,请放心购买! 首页-电子工程师小李-淘宝网

OLED显示屏,行驱动电路设计,单片机AT89C51与和显示屏的硬件接线

OLEDindustry

一个有内容的公众平台!

随着科学技术与电子业技术的不断发展更迭,有机发光二极管如何简易并且有效的实现显示均匀、大面积发光、高亮度高分辨率发光、以及延长有机发光二极管寿命等当前亟需解决的问题,是我们未来要面对的技术挑战。今天小编给大家带来几个平日里做有源、无源oled显示驱动设计的例子,以供大家作为电子设计参考。

一、驱动控制SSD1303实现96x64点阵PM-OLED

本例子使用Solomon公司的OLED显示驱动电路SSD1303,结合AT89C51单片机实现驱动OLED显示屏的方法。SSD1303是一款集控制器、行驱动器和列驱动器于一体的专用于OLED显示控制驱动电路。

实验中OLED结构阳极材料,采用ITO(铟锡氧化物),阴极则使用Mg与其他稳定金属合金的办法Mg:Ag做阴极,以提高器件量子效率和稳定性,并可以在有机膜上形成稳定坚固的金属薄膜。

PM-OLED使用普通的矩阵交叉屏, OLED位于交叉排列的阳极和阴极中间,通过对阳极和阴极组合的选通,可以控制每一个OLED的点亮。

SSD1303芯片内部电路框图如下图1所示:

SSD1303芯片主要由MCU接口、命令译码器、振荡器、显示时序发生器、电压控制与电流控制、区颜色译码器、和图形显示数据存储器(GDDRAM)、行驱动和列驱动组成。这种IC的专用OLED驱动方案使OLED显示性能最佳,降低了功耗。该器件采用TCP/TAB封装。具有驱动最大132×64点阵的图形显示、提供的逻辑电源为2.4~3.5V、供给OLED屏的电源为7.0~16V、列输出的最大电流为 320μA、行输入的最大电流为45mA、低电流睡眠模式小于5μA、256级对比度控制,可编程帧频、具有几个MCU接口,如68/80并行总线和串行的周边接口、132×65bit显示缓冲器、可以垂直滚动、支持部分显示、工作温度:-40 oC~ 85 oC。

整个系统由单片机、控制驱动电路SSD1303和OLED显示屏三部分组成.SSD1303与单片机接口的引脚有:DO~D7为与单片机接口的数据总线,R/W(RW#)为读写选择信号,D/C为数据/命令选择信号,CS#为片选信号,低电平有效,E(RD#)为使能信号,RES#为复位信号。单片机采用ATMEL 公司生产的低功耗、高性能的AT89C51, AT89C51与SSD1303和显示屏的硬件接线如图2所示,P1.0、P1.1、P1.2、P1.3、P1.4分别与SSD1303的 R/W(RW#)、D/C、CS#、E(RD#)、RES#相连,P0口与SSD1303的数据总线相连。其它引脚的连线VCC接12V,VDD接 2.7V,VSS接地等。下面通过程序来控制这些引脚,从而使OLED显示需要的汉字或图形。主程序软件流程图如图3所示。

图2 单片机AT89C51与SSD1303和显示屏的硬件接线

图3 主程序软件流程图

二、台湾普诚PT6807/PT6808无源矩阵驱动方式

本案例采用ISL97702便携式产品的DC/DC直流升压电源电路,输入电压2.3~5.5V,输出电压根据负载轻重在2~30V范围内可调;OLED显示驱动采用PT6807和PT6808构建的无源矩阵驱动方式,适用于单色小尺寸OLED的显示驱动。

只所以选择ISL97702作为电源IC,需要考虑器件运行在最高效率的同时,尽可能的降低功耗并延长电池工作时间。ISL97702具有一种突发模式以及双输出电压选择功能,用以在轻载电流下保持转换器的效率和电源的节约。并且ISL97702还具有浪涌电流限制、短路保护和关机期间负载隔离等功能。ISL97702的DC/DC直流升压电源电路图,如下图所示:

基于ISL97702的DC/DC直流升压电源电路图

OLED显示屏像素点,按行、列排成矩阵,显示图像时,按行扫描或按列扫描,无源矩阵的基本结构框图,如下所示:

无源矩阵基本结构框图

其中“行”是由公共驱动器PT6807依次选通,“列”则是由列选择器PT6808根据图形要求来开通。例如,图中假如第一行只有第一个OLED导通就只有大约0.3mA,而假如第二行是所有OLLED都选通,而每一行一共有100个OLED,则其总电流大约为33mA。也就是说,其总电流是由每一行中的OLED数,就是其象素数决定。因为OLED的亮度是由其电流决定的,所以保持电流的稳定是很重要的。列驱动通常采用P沟道器件作为电流源。为保证其工作于饱和区,至少需要有2伏电压,这样其输出电流随VDS的变化将会小于1%每伏。当某一行有很多OLED导通时,它的总电流就比较大。这时在连接电极上就会有较大压降,从而使VDS降低。而这种压降又取决于显示的图形,而且是不可避免的。所以必须将电流受VDS的变化而变化的灵敏度降至最低。同时输出电流的不均匀性也受到驱动器件的不一致性的影响,这种不均匀性可以靠提高VGS工作电压和版图匹配技术来减小。

128×128点阵模块驱动接口,如下图所示:

128×128点阵模块驱动接口图

1. 行驱动电路设计

PT6807是点阵OLED图形显示系统64路行驱动器,它利用CMOS技术,提供64个移位寄存器和64路输出驱动,PT6807自己产生时钟信号用来控制PT6808列驱动器。

PT6807可以设计为主,从两种模式,为OLED驱动显示提供方便;主/从模式选择由控制脚MS来控制,在主模式下,选择MS脚为高电平,输入/输出脚DIO1,DIO2,CL2只作为输出脚来用;在从模式下,MS脚被置为低电平,输入/输出脚CL2作为输入来用,而DIO1,DIO2的状态由SHL脚来决定。

晶振电路:主模式下,可由R、C、CR端来决定时钟频率;在从模式下,晶振电路的R,C端为悬空状态,CR端接高电平。

显示占空比选择:显示占空比靠输入脚DS1,DS2的状态来决定;在主模式下根据DS1,DS2脚的设置来选择占空比,有四种占空比1/48,1/64,1/96,1/128可供选择;在从模式下,DS1,DS2脚与电源VDD相连。

移位时钟和相位选择:PCLK2用来选择移位数据是在CL2时钟信号的上升沿,还是下降沿移出;数据移位方向的选择由MS,SHL脚来控制。

2. 列驱动电路设计

PT6808是点阵OLED图形显示系统64路列驱动器,它也利用CMOS技术,并提供显示RAM、64位数据锁存、64位驱动和解码逻辑,内部显示RAM用来存储由八位微处理器传来的显示数据,它根据存储数据产生点阵OLED驱动信号,与PT6807(行驱动器)配合使用。

输入缓存用来允许和禁止PT6808,当输入输出数据和指令被执行时,CS1B和CS3必须处于工作状态,不论CS1B和CS3处于任何状态,RSTB和ADC都可以正常操作,并且内部状态不会改变。

输入寄存器用来与MPU接口,并临时存储要写入显示RAM的数据,当CS1B和CS3处于工作状态时,输入寄存器通过R/W和RS来选定,数据通过MPU被写入输入寄存器,然后写入显示RAM中,数据在E信号的下降沿被锁入,通过内部操作自动写入显示RAM中。

输出寄存器:当CS1B和CS3处于工作状态,并且R/W和RS为高电平时,输出寄存器用来临时存储显示数据RAM,也即显示数据RAM中的存储数据被锁存到输出寄存器。当CS1B和CS3处于工作状态,R/W为高,RS为低时,状态数据(忙检测)可以被读出。

为了读出显示数据RAM中的内容,需要访问读指令两次,在第一次访问中,显示数据RAM中的数据被锁存到输出寄存器中,在第二次访问中,MPU读锁存数据。这就是说,在读显示数据RAM时需要一次假读,但是,在读状态数据时不需要假读。

为了克服在工作过程中当OLED亮度较高时的自动关屏问题,在写入数据之前应该查看该项,若关屏,则将其打开,以保证OLED屏的正常工作。其中判断是否关屏,若关闭则将其自动打开子程序如下:

Rs=0; // rs为数据/指令选择脚

r_w=1; // r_w为读/写输入脚

e =1; // e为允许信号输入脚

busy = P3; // P3接数据线端口

e = 0;

if(busy&0x20==0x00) // 若为真,表示已关屏

{com=0x3f; // com为形参

wr_command(com);} // wr_command是写命令子程序

三、TFT-OLED模拟像素单元驱动/控制电路

AM-OLED驱动实现方案包括模拟和数字两种。在数字驱动方案中,每一像素与一开关相连,TFT仅作模拟开关使用,灰度级产生方法包括时间比率灰度和面积比率灰度,或者两者的结合。目前,模拟像素电路仍占主流,但在灰度级实现上,模拟技术与时间比率灰度和面积比率灰度理论相结合将会是将来的一个发展趋势。在模拟方案中,根据输入数据信号的类型不同,单元像素电路可分为电压控制型和电流控制型。

电压控制型像素电路

1.两管TFT结构

电压控制型单元像素电路以数据电压作为视频信号。最简单的电压控制型两管TFT单元像素电路如图1所示。

图1 两管TFT驱动电路

其工作原理如下:当扫描线被选中时,开关管T1开启,数据电压通过T1管对存储电容CS充电,CS的电压控制驱动管T2的漏极电流;当扫描线未被选中时,T1截止,储存在CS上的电荷继续维持T2的栅极电压,T2保持导通状态,故在整个帧周期中,OLED处于恒流控制。

其中(a),(b)被分别称为恒流源结构与源极跟随结构,前者OLED处于驱动管T2的漏端,克服了OLED开启电压的变化对T2管电流的影响;后者在工艺上更容易实现。两管电路结构的不足之处在于驱动管T2阈值电压的不一致将导致逐个显示屏的亮度的不均匀,OLED的电流和数据电压呈非线性关系,不利于灰度的调节。

2.三管TFT结构

基于第二代电流传输器原理的电压控制型像素单元电路如图2所示,虚线左边可视为外部驱动电路,右边为单元像素电路。

图2 基于第二代电流传输器原理的像素电路

在控制模式下,T2和T3开启,T1和运算放大器构成第二代电流传输器,由于运算放大器的放大倍数可以取得很大,T1管的阈值电压对电流的影响变得不敏感,此时,流经T1的电流:

IT1=Vin/Rin

并且T1管源极电压应低于OLED的开启电压,防止OLED开启。在保持模式下,T2和T3关断,存储电容Cs维持T1管的栅极电压,电流经T1进入OLED。其中放大器由COMS电路实现,所有同行像素可共用一个运算放大器。

仿真结果表明,尽管T3管存在电荷注入与时钟馈漏效应,使得OLED电流略小于控制电流;在OLED标称电流为1μA,阈值电压漂移超过5V时,控制电流、OLED电流相对误差分别为-0.18%、5.2%,成功补偿了TFT的空间不均性和不稳定性。

虽然电压控制型电路具有响应速度快的特点,但由于不能准确地调节显示的灰度,难以满足显示的需求,于是人们提出电流驱动方案。电流控制型单元像素电路是以数据电流作为视频信号的。

3管电流控制型TFT像素电路

4-TFT电流控制电流镜像素电路

目前,全球已经有多家公司在从事OLED驱动IC的研究,到目前为止,还没有完全商业化的AM-OLED的驱动IC。但NextSierra公司已推出了分别集成的TFT-OLED行列驱动NXS1008、NXS1009和控制芯片NXS1010,张志伟等人采用该系列芯片,通过MCS-51单片机的控制来驱动240×320×3点阵的TFT-OLED屏,实现了大信息量的动态图形显示。

由于液晶显示器件的配套驱动芯片功能比较完善,且价格低廉,所以将此类芯片移用于有源矩阵显示屏(AM-OLED)成为了国内外当前的研究焦点。显示驱动IC是目前TFT-OLED的薄弱环节,开发通用或者专用的驱动IC,并集成控制电路,是提高OLED在平板及显示领域竞争力的重要动力。

往期精彩回顾

OPPO的又一首次突破!屏下摄像头真的来了.......

维信诺供应AMOLED!小米屏下摄像头来啦!

OLEDindustry

↓↓ 可以畅聊到天亮的行业技术群!你要不要来?↓↓

管理员微信:OLEDindustry2

添加管理员微信 > 入群 > 尽情畅聊探讨

相关问答

51单片机 与AD转换程序_作业帮

[最佳回答]#include#defineucharunsignedchar#defineuintunsignedintsbitwr=P2^6;sbitrd=P2^7;sbitadint=P2...

典型 51单片机 的P0?

51单片机p0p1p2p3口,都可以当准IO口使用,也就是既可以作输出口,也可以作输入口。需要说明的是,P1口、P2口只是普通IO口,无特殊功能。P0口作输出口用时,需加...

8051单片机rd和wr作用?

8051的PSEN线作用此为"ProgramStoreEnable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得...

单片机 的ALE引脚在系统扩展是起什么作用?

楼上的根本是个初学者,对51单片机还不了解ale是用于总线外扩存储器、片外外设、arm、等芯片用的时钟脚,它与rd和wr和p0、p2口配合可以扩展65535个外部地址空...

51单片机 怎么和adc0808相连?

你好,要将51单片机与ADC0808相连,需要进行以下步骤:1.连接引脚:将ADC0808的引脚与51单片机的引脚相连接。具体连接方式如下:-将ADC0808的VCC引脚连接到5...

MCS- 51单片机 4个I/O口的作用是什么?三总线是如何分配的?为什么说能作为I/O使用的?

4个I/O口的作用是:第一功能是普通I/O口,其中P0口需外接上拉电阻;第二功能各不相同,分别为:P0口:作外部三总线的地址总线(低8位)/数据总线;P1口:...4个I/O...

总线型 单片机 特征是怎样的?

[回答]总线型单片机比如51单片机有WR、RD和ALE,非总线型比如AVR则没。单片机为什么分成总线型和非总线型?--市场有市场需求,厂家就会发售各种产品。两者...

单片机 中的P是什么?

单片机中单独的P指的是奇偶标标志位,是程序状态字PSW中的最低位。P1口和P2口以及P3口都可以做普通的I/O使用!其中P3口具有第二功能:P3.0RXD(串行输入口)...

怎样了解 单片机 的各个I/O口?

MCS-51单片机的4个口都可作为IO口使用,除P1口外,其它三个I/O口都有第二功能。P0口可作为数据总线口,它可以对外部存储器低8位读写。P2口也可以作为系统扩展时...

单片机 P3.6/WR和P3.7/ RD 都是什么意思啊?不是连接1602的那个wr和 rd ?

单片机P3.6既是IO口,又是一个写信号,当使用指令MOVX@DPTR,A时有效P3.7既是IO口,又是一个读信号,当使用指令MOVXA,@DPTR时有效。单片机P3.6既是IO口,又是一.....

猜你喜欢