单片机课程设计可调式中文电子日历.docx
- 文档编号:2783853
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:25
- 大小:295.26KB
单片机课程设计可调式中文电子日历.docx
《单片机课程设计可调式中文电子日历.docx》由会员分享,可在线阅读,更多相关《单片机课程设计可调式中文电子日历.docx(25页珍藏版)》请在冰豆网上搜索。
单片机课程设计可调式中文电子日历
摘要
万年历的功能可实现年、月、日、时、分、秒和星期的显示。
随着社会的发展日历的功能越来越强大,精确度越来越高。
本次设计的日历采用DS1302时钟芯片,该芯片精确度高,性能可靠。
用LCD12864液晶屏,既可以显示数字又可以显示汉字,方便了人们的生活。
本设计总体分为硬件部分和软件部分。
硬件部分可分为:
时钟芯片DS1302、AT89C51和LCD12864等。
本设计非常适合家庭使用。
电源采用+5V电压供电。
走时精确,是现代家庭必备的设备之一。
关键词:
单片机,万年历,DS1302,时钟芯片
1引言
可调式电子日历与时钟小巧便于携带,界面清爽,一目了然,方便的知晓当前时间,并可对时间做出修改,实在是居家旅行日常生活之必备用品。
在现今的可调式电子日历与时钟具有性能稳定、精确度高、成本低、易于产 品化,以及方便、实用等特点。
2.总体设计
2.1基本原理
硬件主要涉及到:
AT89C51、DS1302、LCD12864等。
软件通过框图编写出程序。
AT89C51主要功能是存储程序、根据程序的内容对各个端口进行判断并做出相应的处理。
LCD12864主要的功能是实现年、月、日、时、分、秒的显示效果。
实时时钟DS1302可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
2.2系统总体框图及设计思路
3.详细设计
3.1硬件设计
3.1.1DS1302芯片及原理介绍
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
外部引脚分配
各引脚的功能为:
Vcc1:
备用电源;Vcc2:
主电源。
当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 SCLK: 串行时钟,输入; I/O: 三线接口时的双向数据线; CE: 输入信号,在读、写数据期间,必须为高。 该引脚有两个功能: 第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。 内部结构 DS1302是SPI总线驱动方式。 它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。 要想与DS1302通信,首先要先了解DS1302的控制字。 DS1302的控制字如下图。 控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。 位6: 如果为0,则表示存取日历时钟数据,为1表示存取RAM数据; 位5至位1(A4~A0): 指示操作单元的地址; 位0(最低有效位): 如为0,表示要进行写操作,为1表示进行读操作。 3.1.2LCD12864液晶屏 LCD12864使用KS0108(或其兼容芯片)作为控制器,适配M6800系列时序,具有8位标准数据总线。 6条控制线及电源线可显示各种字符及图形。 每个KS0108拥有64×64位(512字节)的显示RAM,12864显示屏上的64×64点,显示RAM中的数据直接作为显示驱动信号。 具有操作指令简单,低功耗的特点。 主要技术参数和显示特性: 电源: VDD3.3V~+5V(内置升压电路,无需负压); 显示内容: 128列×64行 与MCU接口: 8位或4位并行/3位串行 配置LED背光 模块引脚说明: 12864引脚说明 引脚号 引脚名称 方向 功能说明 1 VSS - 模块的电源地 2 VDD - 模块的电源正端 3 V0 - LCD驱动电压输入端 4 RS(CS) H/L 并行的指令/数据选择信号;串行的片选信号 5 R/W(SID) H/L 并行的读写选择信号;串行的数据口 6 E(CLK) H/L 并行的使能信号;串行的同步时钟 7 DB0 H/L 数据0 8 DB1 H/L 数据1 9 DB2 H/L 数据2 10 DB3 H/L 数据3 11 DB4 H/L 数据4 12 DB5 H/L 数据5 13 DB6 H/L 数据6 14 DB7 H/L 数据7 15 PSB H/L 并/串行接口选择: H-并行;L-串行 16 NC 空脚 17 /RET H/L 复位低电平有效 18 NC 空脚 19 LED_A - 背光源正极(LED+5V) 20 LED_K - 背光源负极(LED-OV) 指令功能详解: (1)读状态字(readstatus) 格式 BUSY 0 ON/OFF RESET 0 0 0 0 BUSY=1,表示KS0108正在处理计算机发来的指令或数据。 此时接口电路被封锁,不能接受除读状态字以外的任何操作。 BUSY=0表示KS0108接口控制电路已处于“准备好”状态,等待计算机的访问。 ON/OFF: 表示当前的显示状态。 ON/OFF=1表示关显示状态;ON/OFF=0表示开显示状态。 RESET表示当前KS0108的工作状态,即反映RST端的电平状态。 当RST为低电平状态时KS0108处于复位工作状态,RESET=1。 当RST为高电平状态时,KS0108为正常工作状态,RESET=0。 在占领设置和数据读写时要注意状态字中的BUSY标志。 只有在BUSY=0时,计算机对KS0108的操作才能有效。 因此计算机在每次对KS0108操作之前,都要读出状态字判断BUSY是否为“0”。 若不为“0”,则计算机需要等待,直至BUSY=0为止。 (2)显示开关(displayon/off) 格式 0 0 1 1 1 1 1 D 该指令设置显示开关/触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示上的显示状态。 D位为显示开/关的控制位。 当D=1为显示设置,显示数据锁存器正常工作,显示屏上呈现所许的效果。 此时在状态字中ON/OFF=0。 当D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态组中ON/OFF=1。 (3)显示起始行设置(Displaystartline) 格式 1 1 L5 L4 L3 L2 L1 L0 该指令设置了显示起始行寄存器的内容。 KS0108有64行显示的管理能力,该指令中L5~L0为显示起始行的地址,取值在00~3FH(1~64)范围内,它规定了显示屏上最顶一行所对应的显示存储器的行地址。 如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。 (4)页面地址设置[Setpage(Xaddress)] 格式 1 0 1 1 1 P2 P1 P0 该指令设置了页面地址-X地址寄存器的内容。 KS0108将显示存储器分成了8页,指令代码中P2~P0就是要确定当前所要选择的页面地址,取值范围为00~07H,代表第1~8页。 该指令规定了以后的读/写操作将在哪一个页面上进行。 执行本指令后,下面的读写操作将在指定页内,直到重新设置。 页地址就是DDRAM的行地址,页地址存储在X地址计数器中,P2-P0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。 (5)列地址设置(SetYaddress) 格式 0 1 C5 C4 C3 C2 C1 C0 该指令设置了Y地址计数器的内容,C5~C0=0~3FH(1~64)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行。 Y地址计数器具有自动加一功能,在每一次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次。 页面地址的设置和列地址的设置将显示存储器单元唯一地确定下来,为后来的显示数据的读/写作了地址的选通。 (6)写显示数据(Writedisplaydata) 格式 数据 该操作将8位数据写入先前已确定的显示存储器的单元内,操作完成后列地址计数器自动加1。 (7)读显示数据(Readdisplaydata) 格式 数据 该操作将KS0108接口部的输出寄存器内容读出,然后列地址计数器自动加1。 3.1.3硬件原理图 3.2软件设计 3.2.1程序流程图 3.2.2程序代码 1、LCD12864显示驱动程序 #include #include #defineucharunsignedchar #defineuintunsignedint #defineLCD_DB_PORTP0//液晶数据线端口DB0-DB7 #defineLCD_START_ROW0xc0//起始行命令 #defineLCD_PAGE0xB8//页指令 #defineLCD_COL0x40//列指令 bitReverse_Display=0;//是否反相显示(白底黑字/黑底白字) sbitDI=P2^0;//液晶引脚定义 sbitRW=P2^1; sbitE=P2^2; sbitCS1=P2^3; sbitCS2=P2^4; sbitRST=P2^5; bitLCD_IS_BUSY()//检查LCD是否忙 { LCD_DB_PORT=0xFF; RW=1; _nop_(); DI=0; E=1; _nop_(); E=0; return(bit)(P0&0x80); } voidWrite_Byte_To_LCD(ucharcomand)//向LCD写入一个字节(一般用于发送命令) { while(LCD_IS_BUSY()); LCD_DB_PORT=0xFF; RW=0; _nop_(); DI=0; LCD_DB_PORT=comand; E=1; _nop_(); E=0; } voidWrite_Data_To_LCD(uchardat)//向LCD写入数据 { while(LCD_IS_BUSY()); LCD_DB_PORT=0xFF; RW=0; _nop_(); DI=1; if(! Reverse_Display)//根据Reverse_Display决定是否反相显示 LCD_DB_PORT=dat; else LCD_DB_PORT=~dat; E=1; _nop_(); E=0; } voidLCD12864_Initialization()//初始化LCD { CS1=1; CS2=1; Write_Byte_To_LCD(0x38); Write_Byte_To_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 调式 中文 电子 日历