基于单片机利用无字库12864液晶模块自制日历

发布者:RadiantGaze最新更新时间:2012-10-09 来源: 21ic 关键字:单片机  无字库12864  液晶模块 手机看文章 扫描二维码
随时随地手机看文章

本文我们要利用无字库12864液晶模块来自制一个小小日历钟,最图终效果图见图1。

这个小小日历钟有什么特点呢?

1、电路简单,使用元件少,容易制作,核心就是单片机ATMega8L和日历钟忡1302。

2、全部使用低压元件,3V电压就可以工作。

3,使用自编的小字模和图形界面使得显示具有特色:在文字界面可以清晰地读出当前的日期和时间,而且加入一个小动画使显示更加生动,在图形界面使用模拟刻度和指针动态指示当前时间,两个界面柙按键切换。

 

图2电路原理

4、电源制作在独立的小电路板上,调试程序时插入使用USB供电的3.3V稳压电源,完毕后可以取下,插上开关,使用电池供电。

5、不用背光时耗电很小(全机约3mA),可以使用圆片锂电池CR2O32供电。

日历钟安装在一块50mm x50mm小万用板上。外形见图1。

电路原理

电原理图见图2,液晶型号如前述,单片机就是AVR的ATMega8L-8PU(以下简称M8),可以在低电压下工作,M8 的PD口控制液晶,主要就是控制串行写入显示数据。DS13O2(以下简称1302)是常用的日历时钟芯片,32768Hz晶体B是它的振荡源。在它内部有10个命令寄存器用来存储日期、时间的数值并控制芯片工作,M8通过PB0PB1、 PB2控制1302的RST、SCLK、I/O:RST为高时才能读写1302,读写都是让数据在I/O串行传送,当SCLK上升沿时写入1位地址或数据,写入1位地址或数据。写入地址后每当SCLK下降沿时则读出数据。读写都是从最低位开始,受SCLK时钟同步。接通电源后它必须通过单片机程序启动计时,只要有电源或者各用电源存在,它就能一直工作下去,和单片机是否工作无关。连接在M8的PC口的4个轻触按键,S1,S2,S3用于调校时问:分别为确认修改、移动光标,修改数值;S4用于界面切换。电源包插两部分 :圆片电池CR2O32通过二极管VD1连接到1302的VCC1作为后各电源、以便在关机时也能使1302继续工作,另一路可通过开关S5给液晶、MB、1302的VCC2供电,在调试时为了避免消耗电池,接入了另—个5∨转3.3V的小稳压板,用微型∪SB接口从外部取得5V电源。调试好后,取下稳压板,在插孔上插上小拨动开关S5,就可以使用锂电池了。注意二极管VD1不可省略,因为按照1302的说明书,VCC2高于VCC1时由VCC2电,VCC2低于VCC1时由VCC1供电,在用电池时,由于有二吸管,VCC2比VCC1高,电池正常供电,关断电池时,VCC2为0,电池通过二极管作为后各电源,符合要求 ,保证电路正常工作。

硬件制作

这个日历钟电路简单所需元器件很少。集成电路使用双列直插插座,液晶焊上90度插针排和焊在万用板上的90°排针插座插接。6线编程口,电源部分插座使用了圆孔2.54mm间距插座条。电池使用圆锂电池CR2O32。采用一块5cm见方的万用板安装全部元件,首先截取—段90°排针座,焊在电路板背面上方中央,作为液晶插座,M8的IC插座也要装在电路板背面,为此把它的引脚往外弯折,按照液晶插座引脚对应的位置定位IC插座, 先焊上RC复位元件以及—些相关连线,然后把MB插座定位,接焊在电路板焊盘上。1302插座依据M8插座定位,和32768HZ晶体一起也是焊在电路板反面。这种非常规安装虽然不尽合理,但有效利用了万用板的安装面积(否则液晶占用的—块不便利用),而且可使液晶和MB和1302之间的连线变得非常简单,直接用焊锡连通即可。在电路板正面,还要安装轻触按键、电池窠、编程插孔排、电源块插孔。两面元器件布置见图3和图4。另用—小块万用板焊上微型USB插座、滤波电容、低压稳压器LM1117-3.3以及和时钟板电源插孔对应的IC插针。

焊接液晶90°插针排时,可把它先插八已经焊在电路板上的排针座,再焊接液晶上的镀金焊盘,注意保持液晶和电路板的平行,所以插针不能在液晶上插到底。

因为LCD背光对于区区2OOmAh容量的小锂电池来说,50mA电流显得耗电太大,所以就没有安装背光电源接线,如果需要安装最好接到外部电源上而不要使用小电池。[page]

编程

电路虽然简单,但是要让不带字库的LCD、1302在M8的统一领导下有条不紊地工作,所以具体编程必须解决以下问题。

图7程序流程

1、让时钟走动起来,而且可以通过按键设定或修改当前数据。

2、让液晶显示时钟芯片当前提供的信息:年月日时分秒,两个显示界面的按时刷新。

3、制作字模和图形界面编程。

以上第1点,就是用M8控制1302。我们可以按照它的时序要求编列一些函数,另外在程序中建立—个数组DateTme[7]用来存放从1302读出的年月日时分秒,作为数据刷新依据;第2点,主要是在LED上显示这个数组当前的数据(要注意1302存放日期时间的格式是BCD码,所以存取之前必须先进行数制转换)。数据刷新实际上就是查询1302当前“秒”是否等于上次查询结果,如不等于则已经过去1秒,在数组记下新秒,刷新显示“秒”-当然是1秒刷新一次;而且当秒更新为O日寸要更新“分”……·以此类推。第3点上次已有叙述使用,畔畔字模的方法,其中编制了8 x 8小数字、1 2×16数字、16×1 6汉字几种字模用于不同的显示位置,另外有个小鸡啄米的动画,可以在16点阵字模工具中用鼠标点击,分别画出小鸡低头和小鸡抬头两个图案,在秒刷新时交替显示即可。用字模软件制作好所需的字模后,把所有常量字模数组定义放在头文件miniClock中,这些数组全部放在FLASH区。

图形界面的模拟指示针、刻度的制作也不困难,只要事先规划出水平刻度长度,起点和终点坐标画出水平线,垂直刻度则按照刻度位置画出短垂直线,指示地则是在刻度上方或下方垂直直线,它的位置要计算好,根据时间数据刷新而改变。

标题“小小日历钟”是个汉字串,用一个汉字串显示函数Vold show-string1616(ucharx,uchary,uchar * string,uchar string_length);参数是显示起始列、页、字串指针、字串长度,同时要事先定义—个以上指针所指的字串数组,此数组的元素是待显示的字模在字模数组的位置。

整个程序流程见图7,左远是主流程,右边是年日月时分秒更新流程。

调试

硬件焊好后,反复检查无误 不插M8、1302和LCD锂电池,插上稳压小板,接通USB电源,测试M8插座,1302插座,编程口和LCD的VCC电源应为正常3.3V,拆下稳压断电,插上锂电池,1302插座8脚应为2.4V,插上S5并接通,VCC应为3∨,至此电池没有问题了。拔掉S5,插上M8、液晶和1302,插上稳压板和USB电源,如果你从末使用过这种LCD,不妨自己先编制一些小程序(例如启动、初始化M8和液晶后,用不同的参数运行清屏函数)观察液晶显示是否如同预期,如果没有反应要再次检查程序中对M8引脚定义是否和你的实际硬件接线一致,这个小液晶和别的一些液晶不同,不需要硬件调整对比度夏,不会因此对比度调节不当而不显示(除非你修改了默认值)。这—关先过了再往下走。往M8下载程序,如果一切正常,画面会立即出来。不过现在的口期、时间不对、按动S2最下面一行日期时间的分隔符上会呈现竖线光标,连续按S2光标会循环右移,在光标停下的位置按动S1,在上面就会出现设定值,反复按动会循环递增,就这样逐—调节日期和时间,如图5所示。最后按下S3,新的时间就存入1302了,并能按秒刷新。现在插上电池,一切就好了。如图 6所示,可见时、分已经改为新的设定值。可以去掉稳压板,虽然液晶熄灭,可是1302还在闷声不响地运行,如果你插上开关S5再接通,液晶又亮了。为了节省电池消耗,不要老是开着它。如同老式怀表,看表前再按开盖子。

 

关键字:单片机  无字库12864  液晶模块 引用地址:基于单片机利用无字库12864液晶模块自制日历

上一篇:基于Atmega16L的简单音乐制作
下一篇:单片机的异步串行通信功能和基本使用方法

推荐阅读最新更新时间:2024-03-16 13:09

基于单片机的晶闸管触发器的研究与设计
   1 引言   晶闸管也叫可控硅整流器.是目前工业应用中最为广泛的大功率变换器件。晶闸管在烧结炉、电弧炉等整流场合主要采用移相触发控制,即通过调节晶闸管导通时刻的相位实现控制输出。传统的晶闸管触发器采用模拟控制电路,无法克服其固有缺点。数字式控制电路与模拟式相比,主要优点是输出波形稳定和可靠性高,但其缺点是电路比较复杂,移相触发角较大时控制精度不高。随着单片机技术的发展,由单片机组成的控制电路的优势越明显,除具有与数字式触发电路相同的优点外,更因其移相触发角通过软件计算完成,触发电路结构简单,控制灵活,温漂影响小,控制精度可通过软件补偿,移相范围可任意调节等特点,目前已获得业界的广泛认可。以三相桥式全控整流电路为例,介绍应用
[模拟电子]
单片机中晶振对波特率的影响
在单片机当中晶振起着非常重要的作用,单片机的内部电路配合晶振运行,产生单片机所需的时钟频率。而单片机发出的一切指令都是在时钟频率的基础上的,所以晶振对单片机来说非常重要。波特率是指单位时间内载波参数的变化次数。那么在单片机设计过程中,这两者有什么关系?晶振对波特率的影响有多大呢? 在串行通信中,MCS—51串口可约定四种工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。 波特率是指串行端口每秒内可以传输的波特位数。这里所指的波特率,如标准9600不是每秒种可以传送9600个字节,而是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输,那么加
[单片机]
<font color='red'>单片机</font>中晶振对波特率的影响
51单片机-定时器初始化新写法
1.书写优化 我们所写过的下面这些 TH0=0XB8; TL0=0X00; 或者 TH0=0X4C; TL0=0X00; 如果代码没有注释我们根本不知道这是要定时多长时间,所以为了增加程序的可读性,我们重新优化这两处的书写。 首先要明白在程序书写中,以前说过,赋值给寄存器的值可以书写成十六进制的数也可以是十进制的数。大家知道,TH0填充的是高8位,TL0是低8位,那么如果这个16位的变量的十进制值是258,二进制的值就是 0000000100000010 所以高八位的值为1 (258/256=1) 低八位的值为2 (258%256=2) “258/256=1”和“258%256=2”的意思以前已经讲解过了, 我
[单片机]
51<font color='red'>单片机</font>-定时器初始化新写法
基于P89C668单片机的CAN总线接口设计
  CAN(Controller Area Network)总线,又称控制器局域网,属于现场总线的范畴,是一种有效支持分布式控制或实时控制的串行通信网络.与其它几种现场总线相比,CAN 总线是最容易实现、价格也最为低廉.由于其性能好,可靠性高、设计灵活,现已广泛应用于工业现场控制、智能大厦、小区防范、交通工具、医疗仪器、环境监控等众多领域.   CAN总线规范已被国际标准化组织(ISO)定为国际标准,CAN协议也是建立在国际标准化组织的开放系统互连参考模型(OSI)基础上的.CAN总线主要工作在数据链路层和物理层,用户可在其基础上开发适合系统实际需要的应用层通信协议,由于CAN总线的可靠性高,使应用层通信协议得以大大简化.目前市场上
[单片机]
基于P89C668<font color='red'>单片机</font>的CAN总线接口设计
基于AT89S51单片机的定时报警器电路图
设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59 秒)进行倒计时,当计时到0 时数码管闪烁“00”(以1Hz 闪烁),按键功能如下:   (1)设定键:在倒计时模式时,按下此键后停止倒计时,进入设置状态;如果已经处于设置状态则此键无效。 (2)增一键:在设置状态时,每按一次递增键,初始值的数字增1。 (3)递一键:在设置状态时,每按一次递减键,初始值的数字减1。 (4)确认键:在设置状态时,按下此键后,单片机按照新的初始值进行倒计时及显示倒计时的数字。如果已经处于计时状态则此键无效。 图 定时报警器电路原理图
[模拟电子]
基于AT89S51<font color='red'>单片机</font>的定时报警器电路图
基于MCS-51单片机和CAN总线控制器实现总线节点的设计
CAN(Controller Area Network)即控制器局域网络。由于其具有较强的抗干扰能力、通讯中没有地址的概念及节点数不受限制等优点,已经被广泛应用于汽车、数控机床、仪器仪表、现场总线控制等领域。在CAN总线的节点设计中,目前应用较多的是通过单片机的控制来实现。有的单片机已经嵌入了CAN控制器的功能,比如Philips的P8XC592,Motorola的68HC05X4等,但这类单片机的应用并不普及,而且价格相对较高。对于目前应用最为普及、价格也很便宜的MCS-51系列单片机,本身并不嵌有CAN控制器的功能。下面就给出一种基于MCS-51单片机和SJA1000的CAN总线节点设计方法。 1、 CAN总线简介 CAN
[单片机]
基于MCS-51<font color='red'>单片机</font>和CAN总线控制器实现总线节点的设计
单片机的c语言教程 第二课 初步认识51芯片
上一课我们的第一个项目完成了,可能有懂C语言的朋友会说, 这和PC机上的C语言没有多大的区别呀 。的确没有太大的区别,C语言只是一种程序语言的统称,针对不同的处理器相关的C语言都会有一些细节的改变。编写PC机的C程序时,如要对硬件编程你就必须对硬件要有一定的认识,51单片机编程就更是如此,因它的开发应用是不可与硬件脱节的,所以我们先要来初步认识一下51苾片的结构和引脚功能。MSC51架构的芯片种类很多,具体特点和功能不尽相同(在以后编写的附录中会加入常用的一些51芯片的资料列表),在此后的教程中就以Atmel公司的AT89C51和AT89C2051为中心对象来进行学习,两者是AT89系列的典型代表,在爱好者中使用相当的多,应用资料很
[单片机]
<font color='red'>单片机</font>的c语言教程 第二课 初步认识51芯片
基于单片机实现多通道数据综合采集系统的应用方案
1.前言 在工业控制中需要对各种参量进行采集,即利用信号采集系统将各种数据采集到计算机中进行实时处理。传感器起着中间桥梁的作用,但是它输出的信号往往是很微弱的电流信号,需要经过放大转换成电压信号后才能输入到A/D中进行数据采集。另外,随着测试技术的不断发展,为了适应数字化、高效率等要求,在工业测试系统中单片机的应用也越来越广泛,它具有实时及可靠性高的优点,并且日益显示出巨大的优越性。本系统采用美国Cygnal公司的C8051F020单片机为控制核心,组成了多通道数据综合采集系统,它利用较少的外围器件实现了对液压设备的控制。 2.C8051F020单片机简介 C8051F020器件是完全集成的混合信号系统级MCU芯片(SOC),
[单片机]
基于<font color='red'>单片机</font>实现多通道数据综合采集系统的应用方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved