| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

基于DS1302与LCD1602的电子日历时钟的设计与实现

文***品

贡献于2022-10-01

字数:19891

XX学高职学院


毕业设计(文)


2014— 2015学年第 1 学期







题目: 基DS1302LCD1602电子日历时 钟设计实现



学生姓名
学 号
指导教师
评阅教师
时 间 2014年X月



武汉纺织学高职学院毕业设计(文)开题报告
课题名称(源类型):
基 DS1302 1602LCD 电子日历时钟设计实现
指导教师: 王骏 学生姓名: 曹强
开题报告容:(调研资料准备设计文目求思路预期成果务完成阶段容时间安排完成设计(文)具备条件素等)
1. 目:实现日历时钟显示够调整
2. 求:完成电子日历时钟软件硬件设计包括单片机相关容日历时钟模块设计液晶显示模块设计控制程序编写等
3. 预期成果:仿真成功做出实物
(1) 显示初始值 日历时钟初始值
4. 时间安排:第3周:熟悉课题基求查阅相关资料初步拟定设计
整体方案完成开题报告
第45周:学次课题涉相关容包括器件基础知识单片机DS1302时钟芯片工作原理相关软件LCD1602液晶显示屏相关容设计简单实际电路熟练学容加巩固
第68周:设计DS1302时钟模块控制电路LCD1602液晶显示电路电源电路等硬件电路Proteus仿真
第810周:焊接调试电路根部分作硬件进行调试联机调试
第1012周:写毕业设计文作品展示完成全部毕业设计








指导教师签名: 日期: 2014年















目 录
摘 1
关键词 1
Abstract 2
Key Words 2
第章 设计求方案证 3
11 设计求: 3
12 系统基方案选择证 3
121 单片机芯片选择方案证 3
122 显示模块选择方案证 3
123 时钟芯片选择方案证 3
13 电路设计终方案决定 4
第二章 系统硬件设计实现 4
21 电路设计框图 4
22 系统硬件概述 4
23 单元电路设计 5
231 单片机控制模块设计 5
232 时钟电路DS1302 5
233 显示模块设计 8
第三章 系统软件设计 10
31 程序流程图 10
32 DS1302子程序12
33 LCD1602液晶子程序子程序 15
34位定义18
第四章 指标测试 19
41 测试仪器 19
42 硬件测试 19
43 软件测试 19
44 测试结果分析结 20
441 测试结果分析 20
442 测试结 20
作品总结 20
致谢词 20
参考文献 21
附录 系统电路图 21
附录二 Proteus仿真图 22
附录三 系统程序 22
附录四 元器件清单实物图 30
附录五 PCB图············································33






着现代科技快速发展时间断流逝观太阳摆钟现电子时钟类非智慧断研究创造出新纪录美国Dallas公司推出种具涓细电流充电力低功耗实时时钟时钟芯片DS1302年月日星期时分秒进行计时具闰年补偿等种功DS1302寿命长误差调电子日历采直观数字显示时显示年月日星期时分秒信息具时间校准等功该电路采STC89C52单片机作核心功耗3V低压工作电压选35V电压供电LCD1602液晶显示较直观
综述调电子日历具读取方便显示直观功样电路简洁成低廉等诸优点符合电子仪器仪表发展趋势具广阔市场前景




关键词
时钟电路DS1302LCD1602单片机STC89C52

















Abstract
With the rapid development of modern science and technology the passage of time from the view of the sun the pendulum clocks are now electronic clock human with extraordinary wisdom continuously research create a new record The Dallas company launched a has Juan fine current charge ability of the real time clock low power consumption DS1302 chip It can be to year month day week when minutes and seconds for the time also has a leap year compensation and other functions and the DS1302 long service life and small error For adjustable electronic calendar by using object digital display can also shows that year month day week when minutes and seconds information but also has time calibration etc Function This circuit STC89C52 single chip microcomputer as the core its power consumption is small can be in 3 V of lowpressure work voltage can choose 3 ~ 5 V voltage power supply With LCD1602 liquid crystal display more intuitive
To sum up the adjustable electronic calendar has read the convenient direct display functional diversity simple circuit low cost and many other advantages conform to the trend of the development of electronic instruments and has a broad market prospect



Key Words
The clock DianZhong DS1302 LCD1602 STC89C52 single chip microcomputer









第章 设计求方案证
11 设计求:
① 具年月日星期时分秒等功
12 系统基方案选择证
121 单片机芯片选择方案证
方案
采STC89C52芯片作硬件核心采Flash ROM部具4KB ROM 存储空间3V超低压工作MCS51系列单片机完全兼容运电路设计中时具备ISP线编程技术 电路进行调试时程序错误修改程序新增功需烧入程序时芯片次拔插会芯片造成定损坏
方案二
采STC89C52芯片ROM全采Flash ROM3V超底压工作时MCS51系列单片机完全该芯片部存储器8KB ROM 存储空间样具STC89C52功具线编程擦技术载程序够加密较安全电路进行调试时程序错误修改程序新增功需烧入程序时需芯片次拔插会芯片造成损坏选择采STC89C52作控制系统
122 显示模块选择方案证
方案:
采点阵式数码显示点阵式数码八行八列发光二极组成显示文字较适合采显示数字显太浪费价格相较高种作显示
方案二:
采LED数码动态扫描然LED数码价格适中显示数字需数偏功耗较种作显示
方案三:
采LCD液晶显示屏液晶显示屏显示功强显示量文字图形显示样清晰见普通数码相功耗较硬件连接简单显示部分采1602液晶显示
123 时钟芯片选择方案证
方案:
直接采单片机定时计数器提供秒信号程序实现年月日星期时分秒计数采种方案然减少芯片节约成实现时间误差较采方案
方案二:
采DS1302时钟芯片实现时钟DS1302芯片种高性时钟芯片动秒分时周月年级闰年补偿年进行计数精度高
RAM作数暂存区工作电压25V~55V范围25V时耗电300nA
13 电路设计终方案决定
综方案述次作品方案选定:采STC89C52作控制系统DS1302提供时钟LCD1602液晶作显示
第二章 系统硬件设计实现
21 电路设计框图

图1电路设计框图
22 系统硬件概述
电路STC89C52单片机控制核心具线编程功低功耗3V超低压工作时钟电路DS1302提供种高性低功耗带RAM实时时钟电路年月日周日时分秒进行计时具闰年补偿功工作电压25V~55V采三线接口CPU进行步通信采突发方式次传送字节时钟信号RAM数DS1302部31*8时性存放数RAM寄存器产生年月日周日时分秒具寿命长精度高低功耗等特点时具掉电动保存功电路采DS1302单字节传送方式实现控机间数传送显示部分1602构成
23 单元电路设计
231 单片机控制模块设计
STC89C52单片机40引脚双列直插芯片四IO口P0P1P2P3 MCS51单片机48位IO口(P0P1P2P3)条IO线独立作输出输入
单片机系统图示18引脚19引脚接时钟电路XTAL1接外部晶振微调电容端片振荡器倒相放器输入XTAL2接外部晶振微调电容端片振荡器倒相放器输出第9引脚复位输入端接电容电阻开关够电复位电路 图2



图2控制系统
232 时钟电路DS1302
1DS1302性特性
DS1302种高性低功耗实时时钟芯片附加31字节静态RAM采SPI三线接口CPU进行通信采突发方式次传送字节时钟信号RAM数实时时钟提供秒分时日星期月年月31天时动调整具闰年补偿功工作电压宽达25~55V采双电源供电(电源备电源)设置备电源充电方式提供备电源进行涓细电流充电力

图3示出DS1302引脚排列图中Vcc1备电源Vcc2电源电源关闭情况保持时钟连续运行DS1302Vcc1Vcc2两者中较者供电Vcc2Vcc1+02V时Vcc2DS1302供电Vcc2Vcc1时DS1302Vcc1供电X1X2振荡源外接32768KHz晶振RST复位片选线通RST输入驱动置高电启动数传送RST输入两种功:首先RST接通控制逻辑允许址命令序列送入移位寄存器次RST提供终止单字节字节数传送手段RST高电时数传送初始化允许DS1302进行操作果传送程中RST置低电会终止次数传送IO引脚变高阻态电动行时Vcc等25V前RST必须保持低电中SCLK 低电时RST置高电IO串行数输入端(双)SCLK始终输入端
DS1302_SCLK 接P3^6 实时时钟时钟线引脚
DS1302_IO 接P3^4 实时时钟数线引脚
DS1302_RST 接P3^5 实时时钟复位线引脚

图3 DS1302引脚图

2DS1302数操作原理


图4 DS1302数时序图

DS1302通SPI串行总线单片机通信进行次读写操作时少读写两字节第字节控制字节命令告诉DS1302读写操作RAMCLOK寄存器操作第二字节读写数
单字节读:SCLK低电时CE置高电进行操作前先SCLK置低电然CE置高电接着开始IO面放入传送电信号然跳变SCLK数SCLK升时DS1302读取数SCLK降时DS1302放置数IO
3DS1302时钟寄存器

图 5 时钟寄存器图
时钟日历包含7寄存器中数时钟日历寄存器中二进制编码十进制格式存储常说BCD码存储时钟寄存器第8字节写保护寄存器WP1时候开启写保护时候禁止DS1302进行写操作WP0时候关闭写保护时候DS1302进行写操作

4 关BCD码
BCD码通4位二进制码表示1位十进制中0~910数码
二进制码转换BCD码方式:4位二进制码1001时加6
:BCD码00001100二进制码:00001100+600010010

图6 DS1302 BCD代码
233 显示模块设计
1 1602介绍
字符型液晶显示模块种专门显示字母数字符号等点阵式LCD目前常16*116*220*240*2行等模块面长沙太阳电子限公司1602字符型液晶显示器例介绍法般1602字符型液晶显示器实物图 4:


图7 1602字符型液晶显示器实物图

2 1602LCD基参数引脚功
1602LCD分背光带背光两种基控制部分HD44780带背光带背光厚否带背光应中差引脚功说明
1602LCD采标准14脚(背光)16脚(带背光)接口引脚接口说明表1示:
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源
9
D2

2
VDD
电源正极
10
D3

3
VL
液晶显示偏压
11
D4

4
RS
数命令选择
12
D5

5
RW
读写选择
13
D6

6
E
信号
14
D7

7
D0

15
BLA
背光源正极
8
D1

16
BLK
背光源负极
表1:引脚接口说明表
第1脚:VSS电源
第2脚:VDD接5V正电源
第3脚:VL液晶显示器度调整端接正电源时度弱接时度高度高时会产生鬼影时通10K电位器调整度
第4脚:RS寄存器选择高电时选择数寄存器低电时选择指令寄器
第5脚:RW读写信号线高电时进行读操作低电时进行写操作RSRW低电时写入指令者显示址RS低电RW高电时读忙信号RS高电RW低电时写入数
第6脚:E端端E端高电跳变成低电时液晶模块执行命令
第7~14脚:D0~D78位双数线
第15脚:背光源正极
第16脚:背光源负极
1602LCD般初始化(复位)程
延时15mS
写指令38H(检测忙信号)
延时5mS
写指令38H(检测忙信号)
延时5mS
写指令38H(检测忙信号)
次写指令读写数操作均需检测忙信号
写指令38H:显示模式设置
写指令08H:显示关闭
写指令01H:显示清屏
写指令06H:显示光标移动设置
写指令0CH:显示开光标设置
3 LCD1602液晶显示 图8示:

图8 LCD液晶显示

第三章 系统软件设计
31 程序流程图


图A 程序流程图






程序:
void LcdDisplay()

*******************************************************************************
* 函数名 main
* 函数功 函数
* 输入
* 输出
*******************************************************************************

void main()
{
LcdInit()
Ds1302Init()
while(1)
{
Ds1302ReadTime()
LcdDisplay()
}

}
*******************************************************************************
* 函数名 LcdDisplay()
* 函数功 显示函数
* 输入
* 输出
*******************************************************************************

void LcdDisplay()
{
LcdWriteCom(0x80+0X40)
LcdWriteData('0'+TIME[2]16) 时
LcdWriteData('0'+(TIME[2]&0x0f))
LcdWriteData('')
LcdWriteData('0'+TIME[1]16) 分
LcdWriteData('0'+(TIME[1]&0x0f))
LcdWriteData('')
LcdWriteData('0'+TIME[0]16) 秒
LcdWriteData('0'+(TIME[0]&0x0f))

LcdWriteCom(0x80)
LcdWriteData('2')
LcdWriteData('0')
LcdWriteData('0'+TIME[6]16) 年
LcdWriteData('0'+(TIME[6]&0x0f))
LcdWriteData('')
LcdWriteData('0'+TIME[4]16) 月
LcdWriteData('0'+(TIME[4]&0x0f))
LcdWriteData('')
LcdWriteData('0'+TIME[3]16) 日
LcdWriteData('0'+(TIME[3]&0x0f))
LcdWriteCom(0x8D)
LcdWriteData('0'+(TIME[5]&0x07)) 星期

32 DS1302子程序
#includeds1302h

DS1302写入读取时分秒址命令
秒分时日月周年 低位读写位
uchar code READ_RTC_ADDR[7] {0x81 0x83 0x85 0x87 0x89 0x8b 0x8d}
uchar code WRITE_RTC_ADDR[7] {0x80 0x82 0x84 0x86 0x88 0x8a 0x8c}

DS1302时钟初始化2013年1月1日星期二12点00分00秒
存储序秒分时日月周年存储格式BCD码
uchar TIME[7] {0x00 0x24 0x12 0x01 0x01 0x02 0x13}

*******************************************************************************
* 函 数 名 Ds1302Write
* 函数功 DS1302命令(址+数)
* 输 入 addrdat
* 输 出
*******************************************************************************

void Ds1302Write(uchar addr uchar dat)
{
uchar n
RST 0
_nop_()

SCLK 0先SCLK置低电
_nop_()
RST 1 然RST(CE)置高电
_nop_()

for (n0 n<8 n++)开始传送八位址命令
{
DSIO addr & 0x01数低位开始传送
addr >> 1
SCLK 1数升时DS1302读取数
_nop_()
SCLK 0
_nop_()
}
for (n0 n<8 n++)写入8位数
{
DSIO dat & 0x01
dat >> 1
SCLK 1数升时DS1302读取数
_nop_()
SCLK 0
_nop_()
}

RST 0传送数结束
_nop_()
}

*******************************************************************************
* 函 数 名 Ds1302Read
* 函数功 读取址数
* 输 入 addr
* 输 出 dat
*******************************************************************************

uchar Ds1302Read(uchar addr)
{
uchar ndatdat1
RST 0
_nop_()

SCLK 0先SCLK置低电
_nop_()
RST 1然RST(CE)置高电
_nop_()

for(n0 n<8 n++)开始传送八位址命令
{
DSIO addr & 0x01数低位开始传送
addr >> 1
SCLK 1数升时DS1302读取数
_nop_()
SCLK 0DS1302降时放置数
_nop_()
}
_nop_()
for(n0 n<8 n++)读取8位数
{
dat1 DSIO低位开始接收
dat (dat>>1) | (dat1<<7)
SCLK 1
_nop_()
SCLK 0DS1302降时放置数
_nop_()
}

RST 0
_nop_() DS1302复位稳定时间必须
SCLK 1
_nop_()
DSIO 0
_nop_()
DSIO 1
_nop_()
return dat
}

*******************************************************************************
* 函 数 名 Ds1302Init
* 函数功 初始化DS1302
* 输 入
* 输 出
*******************************************************************************

void Ds1302Init()
{
uchar n
Ds1302Write(0x8E0X00) 禁止写保护关闭写保护功
for (n0 n<7 n++)写入7字节时钟信号:分秒时日月周年
{
Ds1302Write(WRITE_RTC_ADDR[n]TIME[n])
}
Ds1302Write(0x8E0x80) 开写保护功
}

*******************************************************************************
* 函 数 名 Ds1302ReadTime
* 函数功 读取时钟信息
* 输 入
* 输 出
*******************************************************************************

void Ds1302ReadTime()
{
uchar n
for (n0 n<7 n++)读取7字节时钟信号:分秒时日月周年
{
TIME[n] Ds1302Read(READ_RTC_ADDR[n])
}

}



33 LCD1602液晶子程序
#includelcdh

*******************************************************************************
* 函 数 名 Lcd1602_Delay1ms
* 函数功 延时函数延时1ms
* 输 入 c
* 输 出
* 说 名 该函数12MHZ晶振12分频单片机延时
*******************************************************************************

void Lcd1602_Delay1ms(uint c) 误差 0us
{
uchar ab
for ( c>0 c)
{
for (b199b>0b)
{
for(a1a>0a)
}
}

}

*******************************************************************************
* 函 数 名 LcdWriteCom
* 函数功 LCD写入字节命令
* 输 入 com
* 输 出
*******************************************************************************
#ifndef LCD1602_4PINS 没定义LCD1602_4PINS时
void LcdWriteCom(uchar com) 写入命令
{
LCD1602_E 0
LCD1602_RS 0 选择发送命令
LCD1602_RW 0 选择写入

LCD1602_DATAPINS com 放入命令
Lcd1602_Delay1ms(1) 等数稳定

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5) 保持时间
LCD1602_E 0
}
#else
void LcdWriteCom(uchar com) 写入命令
{
LCD1602_E 0 清零
LCD1602_RS 0 选择写入命令
LCD1602_RW 0 选择写入

LCD1602_DATAPINS com 4位接线接P0口高四位传送高四位改
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5)
LCD1602_E 0

Lcd1602_Delay1ms(1)
LCD1602_DATAPINS com << 4 发送低四位
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5)
LCD1602_E 0
}
#endif
*******************************************************************************
* 函 数 名 LcdWriteData
* 函数功 LCD写入字节数
* 输 入 dat
* 输 出
*******************************************************************************
#ifndef LCD1602_4PINS
void LcdWriteData(uchar dat) 写入数
{
LCD1602_E 0 清零
LCD1602_RS 1 选择输入数
LCD1602_RW 0 选择写入

LCD1602_DATAPINS dat 写入数
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5) 保持时间
LCD1602_E 0
}
#else
void LcdWriteData(uchar dat) 写入数
{
LCD1602_E 0 清零
LCD1602_RS 1 选择写入数
LCD1602_RW 0 选择写入

LCD1602_DATAPINS dat 4位接线接P0口高四位传送高四位改
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5)
LCD1602_E 0

LCD1602_DATAPINS dat << 4 写入低四位
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5)
LCD1602_E 0
}
#endif
*******************************************************************************
* 函 数 名 LcdInit()
* 函数功 初始化LCD屏
* 输 入
* 输 出
*******************************************************************************
#ifndef LCD1602_4PINS
void LcdInit() LCD初始化子程序
{
LcdWriteCom(0x38) 开显示
LcdWriteCom(0x0c) 开显示显示光标
LcdWriteCom(0x06) 写指针加1
LcdWriteCom(0x01) 清屏
LcdWriteCom(0x80) 设置数指针起点
}
#else
void LcdInit() LCD初始化子程序
{
LcdWriteCom(0x32) 8位总线转4位总线
LcdWriteCom(0x28) 四位线初始化
LcdWriteCom(0x0c) 开显示显示光标
LcdWriteCom(0x06) 写指针加1
LcdWriteCom(0x01) 清屏
LcdWriteCom(0x80) 设置数指针起点
}
#endif

34 位定义
PIN口定义
sbit LCD1602_EP2^7
sbit LCD1602_RWP2^5
sbit LCD1602_RSP2^6
定义ds1302IO口
sbit DSIOP3^4
sbit RSTP3^5
sbit SCLKP3^6

第四章 指标测试
41 测试仪器
测试表2 示
序号
名称
型号
1
PC机

2
单片机仿真软件
Proteuskeil C
3
数字万表
DT9205B
4
ISP线载线

表2 测试仪器
42 硬件测试
调电子日历电路焊接轻视出处错误会检测造成便种锋利引脚注意处理否会刺破带包皮导线会电路造成短路现象
电子日历设计调试中遇问题回想问题认真思考避免问题:
(1)单片机晶振起振
(2)LCD1602液晶VDD VSS 引脚接反时没接保护电阻
电容结果液晶发热烧坏
解决:①:根仪器测试发现电路引脚接错现象重新焊接晶振
复位正常程序够载②:重新买液晶VDDVSS重新接
正确引脚
43 软件测试
电子日历功数字型前日期时间编写程序调试时出现较问题次模块子程序修改步步完成终解决软件
44 测试结果分析结
441 测试结果分析
(1).测试中遇单片机晶振起振首先试测仪电路进行测试观察否存漏焊虚焊者元件损坏
(2).LCD1602液晶显示时间日期首先试测仪电路进行测试观察电路否存短路现象然查程序否正确误程序进行认真修改
442 测试结
次反复测试分析电路原理功更加熟悉时提高设计力电路分析力时软件编程方面更提高编程力加强时学知识提高巩固
作品总结
整设计程中充分发挥观动性学学许没学知识较完成作品达预期目完初设想电路焊接时然没什问题中知道焊接整作品中重性电路焊接程中心急慢慢急求成反达事半功倍效果电路设计布局先构思显电路板美观方程序编写中思路清晰开始时遇问题静心思考理清思路反心应手通做次毕业设计知道做事颗常心想着走捷径步脚印练耐心做什事耐心次毕业设计中学东西重总毕业设计力全方位提高
致谢词
感谢学院感谢老师设计中予帮助次难煅炼机会动手力专业技提高
设计制作程中深切体会实践重性次设计学知识次综合性检测动手力理知识运力提高时加深网络资源认识提高查阅资料效率充足时间投入电路设计中做作品日子里指导教师悉心指导指导教师致诚挚谢意感谢提供相关技术帮助老师学支持鼓励次作品完成信心动力私帮助支持深表谢意
参考文献
1:张毅刚彭喜元姜守达乔立言新编MCS51单片机应设计
哈尔滨工业学出版社2008
2:马忠梅单片机C语言应设计 北京航空航天学出版社 2008
3:王静霞单片机应技术电子工业出版社 2009
4: 张道德单片机接口技术中国水利水电出版社 2007
5:石生电路基分析高等教育出版社2008
6:谭浩强C语言程序设计(第2版)清华学出版社
7:胡宴耿苏燕模拟电子技术高等教育出版社 2000
8:谭永红雷跃莫振栋电子线路实验进阶教程
北京航空航天学出版 2008
9:刘国巍周晓萍周莉数字电子技术基础国防科技学出版社2009
10:张永枫单片机应实训教程北京:清华学出版社2008
11:刘守义单片机应技术(第2版)西安电子科技学出版社2007
12:先锋工作室单片机程序设计实例北京:清华学出版社2003
13:广州周立功单片机发展限公司Keil C51技巧实战2003
14:李群芳单片机微型计算机接口技术(第2版)北京:电子工业出版
15:徐玮C51单片机高效入门北京:机械工业出版社2006
附录 系统电路图

附图1系统电路图
附录二 Proteus仿真图

附图2 Proteus仿真图
附录三 系统程序
源程序:
#include
#includelcdh
#includeds1302h
#define uchar unsigned char
#define uint unsigned int
DS1302写入读取时分秒址命令
秒分时日月周年 低位读写位
uchar code READ_RTC_ADDR[7] {0x81 0x83 0x85 0x87 0x89 0x8b 0x8d}
uchar code WRITE_RTC_ADDR[7] {0x80 0x82 0x84 0x86 0x88 0x8a 0x8c}

DS1302时钟初始化2013年1月1日星期二12点00分00秒
存储序秒分时日月周年存储格式BCD码
uchar TIME[7] {0x00 0x24 0x12 0x01 0x01 0x02 0x13}
sbit DSIOP3^4
sbit RSTP3^5
sbit SCLKP3^6
sbit LCD1602_EP2^7
sbit LCD1602_RWP2^5
sbit LCD1602_RSP2^6
*******************************************************************************
* 函 数 名 Lcd1602_Delay1ms
* 函数功 延时函数延时1ms
* 输 入 c
* 输 出
* 说 名 该函数12MHZ晶振12分频单片机延时
*******************************************************************************

void Lcd1602_Delay1ms(uint c) 误差 0us
{
uchar ab
for ( c>0 c)
{
for (b199b>0b)
{
for(a1a>0a)
}
}

}

**************************************************************************
* 函 数 名 LcdWriteCom
* 函数功 LCD写入字节命令
* 输 入 com
* 输 出
*******************************************************************************
void LcdWriteCom(uchar com) 写入命令
{
LCD1602_E 0
LCD1602_RS 0 选择发送命令
LCD1602_RW 0 选择写入

LCD1602_DATAPINS com 放入命令
Lcd1602_Delay1ms(1) 等数稳定

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5) 保持时间
LCD1602_E 0
}
#else
void LcdWriteCom(uchar com) 写入命令
{
LCD1602_E 0 清零
LCD1602_RS 0 选择写入命令
LCD1602_RW 0 选择写入

LCD1602_DATAPINS com 4位接线接P0口高四位传送高四位改
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5)
LCD1602_E 0

Lcd1602_Delay1ms(1)
LCD1602_DATAPINS com << 4 发送低四位
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5)
LCD1602_E 0
}
*******************************************************************************
* 函 数 名 LcdWriteData
* 函数功 LCD写入字节数
* 输 入 dat
* 输 出
******************************************************************************
void LcdWriteData(uchar dat) 写入数
{
LCD1602_E 0 清零
LCD1602_RS 1 选择输入数
LCD1602_RW 0 选择写入

LCD1602_DATAPINS dat 写入数
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5) 保持时间
LCD1602_E 0
}
#else
void LcdWriteData(uchar dat) 写入数
{
LCD1602_E 0 清零
LCD1602_RS 1 选择写入数
LCD1602_RW 0 选择写入

LCD1602_DATAPINS dat 4位接线接P0口高四位传送高四位改
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5)
LCD1602_E 0

LCD1602_DATAPINS dat << 4 写入低四位
Lcd1602_Delay1ms(1)

LCD1602_E 1 写入时序
Lcd1602_Delay1ms(5)
LCD1602_E 0
}
*******************************************************************************
* 函 数 名 LcdInit()
* 函数功 初始化LCD屏
* 输 入
* 输 出
*******************************************************************************
#ifndef LCD1602_4PINS
void LcdInit() LCD初始化子程序
{
LcdWriteCom(0x38) 开显示
LcdWriteCom(0x0c) 开显示显示光标
LcdWriteCom(0x06) 写指针加1
LcdWriteCom(0x01) 清屏
LcdWriteCom(0x80) 设置数指针起点
}
#else
void LcdInit() LCD初始化子程序
{
LcdWriteCom(0x32) 8位总线转4位总线
LcdWriteCom(0x28) 四位线初始化
LcdWriteCom(0x0c) 开显示显示光标
LcdWriteCom(0x06) 写指针加1
LcdWriteCom(0x01) 清屏
LcdWriteCom(0x80) 设置数指针起点
}
void Ds1302Write(uchar addr uchar dat)
{
uchar n
RST 0
_nop_()

SCLK 0先SCLK置低电
_nop_()
RST 1 然RST(CE)置高电
_nop_()

for (n0 n<8 n++)开始传送八位址命令
{
DSIO addr & 0x01数低位开始传送
addr >> 1
SCLK 1数升时DS1302读取数
_nop_()
SCLK 0
_nop_()
}
for (n0 n<8 n++)写入8位数
{
DSIO dat & 0x01
dat >> 1
SCLK 1数升时DS1302读取数
_nop_()
SCLK 0
_nop_()
}

RST 0传送数结束
_nop_()
}

*******************************************************************************
* 函 数 名 Ds1302Read
* 函数功 读取址数
* 输 入 addr
* 输 出 dat
*******************************************************************************

uchar Ds1302Read(uchar addr)
{
uchar ndatdat1
RST 0
_nop_()

SCLK 0先SCLK置低电
_nop_()
RST 1然RST(CE)置高电
_nop_()

for(n0 n<8 n++)开始传送八位址命令
{
DSIO addr & 0x01数低位开始传送
addr >> 1
SCLK 1数升时DS1302读取数
_nop_()
SCLK 0DS1302降时放置数
_nop_()
}
_nop_()
for(n0 n<8 n++)读取8位数
{
dat1 DSIO低位开始接收
dat (dat>>1) | (dat1<<7)
SCLK 1
_nop_()
SCLK 0DS1302降时放置数
_nop_()
}

RST 0
_nop_() DS1302复位稳定时间必须
SCLK 1
_nop_()
DSIO 0
_nop_()
DSIO 1
_nop_()
return dat
}

*******************************************************************************
* 函 数 名 Ds1302Init
* 函数功 初始化DS1302
* 输 入
* 输 出
*******************************************************************************

void Ds1302Init()
{
uchar n
Ds1302Write(0x8E0X00) 禁止写保护关闭写保护功
for (n0 n<7 n++)写入7字节时钟信号:分秒时日月周年
{
Ds1302Write(WRITE_RTC_ADDR[n]TIME[n])
}
Ds1302Write(0x8E0x80) 开写保护功
}

*******************************************************************************
* 函 数 名 Ds1302ReadTime
* 函数功 读取时钟信息
* 输 入
* 输 出
*******************************************************************************

void Ds1302ReadTime()
{
uchar n
for (n0 n<7 n++)读取7字节时钟信号:分秒时日月周年
{
TIME[n] Ds1302Read(READ_RTC_ADDR[n])
}

}

void LcdDisplay()
{
LcdWriteCom(0x80+0X40)
LcdWriteData('0'+TIME[2]16) 时
LcdWriteData('0'+(TIME[2]&0x0f))
LcdWriteData('')
LcdWriteData('0'+TIME[1]16) 分
LcdWriteData('0'+(TIME[1]&0x0f))
LcdWriteData('')
LcdWriteData('0'+TIME[0]16) 秒
LcdWriteData('0'+(TIME[0]&0x0f))

LcdWriteCom(0x80)
LcdWriteData('2')
LcdWriteData('0')
LcdWriteData('0'+TIME[6]16) 年
LcdWriteData('0'+(TIME[6]&0x0f))
LcdWriteData('')
LcdWriteData('0'+TIME[4]16) 月
LcdWriteData('0'+(TIME[4]&0x0f))
LcdWriteData('')
LcdWriteData('0'+TIME[3]16) 日
LcdWriteData('0'+(TIME[3]&0x0f))
LcdWriteCom(0x8D)
LcdWriteData('0'+(TIME[5]&0x07)) 星期
}

void main()
{
LcdInit()
Ds1302Init()
while(1)
{
Ds1302ReadTime()
LcdDisplay()
}

}

附录四 元器件清单实物图
元器件名称
数量
洞洞板
1
电解电容 100uF + 10uF
1+1
STC89C52RC单片机+底座
1+1
瓷片电容 10uF + 30pF
7+3
锁开关
1

1
COM口
1
电阻 10K+1K
2+10
USBB
1
3V电子
1
MAX232+底座
1+1
DS1302 +底座
1+1
LED红
1
排针
2
排针插
1
LCD1602液晶
1


附图3采购元器件清单

附图 4 实物图

附图5 实物显示图








附录五 PCB图


文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

毕业论文(设计)基于安卓的多功能时钟app设计与实现

目 录摘 要 1ABSTRACT 2第1章 绪论 31.1 开发背景 31.2 研究现状 51.3 本文的主要工作 61.4 论文的组织结构 6第2章 安卓相关介绍 72.1 安卓系统介绍 72.1.1 安卓技术简介 72.1.2 安卓应用程序组件 82.2 Android Studio简介 102.2.1架构组成 102.2.2主要功能 10第3章 需求分

小***卷 4年前 上传1073   0

基于STC89C52的电子时钟设计课程设计

目 录1.前言 12.整体设计方案 23.硬件设计方案 23.1 复位电路 23.2 晶振电路 33.3 LED显示电路 43.4 按键输入电路 43.5 蜂鸣器电路 54.软件设计方案 64.1 软件设计方法 64.2 系统软件设计思想 64.3 系统主程序 74.4 中断子程序 74.4.1 定时器T0的中断程序设计 84.4.2

文***品 1年前 上传400   0

基于单片机的时钟设计

随着时间的推移,事物的发展越来越趋向于高科技,单片机的出现,受到了社会各界的广泛关注,这是由于单片机具备丰富的功能。单片机的特点为:尺寸小,价格低,抗干扰强,开发容易等。运用的范围也很广,如检测,仪表,电子,机电等设备的各方面都有不可或缺的作用。

王***朝 4年前 上传1036   0

基于ARM的智能电子秤系统的设计与实现

随着现代社会的发展,对称重技术提出了更高的要求。目前,台式电子秤在商业贸易中的使用已相当普遍,但是仍存在较大的局限性:体积大、成本高、需要工频交流电源供应、携带不便、应用场所受到制约。现有的便携秤为杆秤或弹簧压缩、拉伸变形来实现计量的弹簧秤,广大居民用户使用的是国家已经明令淘汰的杆秤。

爱***享 3年前 上传1161   0

数电课程设计数字电子时钟的实现

课 程 设 计 报 告设计题目:数字电子时钟的设计与实现班 级:学 号:姓 名: 指导教师:设计时间:摘 要钟表的数字化给人们生产生活带来了极大的方便,大大的扩展了原先钟表的报时。诸如,定时报警、按时自动打铃、时间程序自动控制等,这些,都是以钟表数字化为基础的。功能数字钟是一种用数

文***品 4年前 上传1862   0

单片机课程设计用proteus实现一个电子时钟的设计

单片机原理课程设计任务书 课程名称 单片机原理 专 业 通信工程级 指导教师 职 称 讲 师 设计地点 通信工程实验室 设计时间 2011 一、课程设计的内容和要

文***品 3年前 上传460   0

桌面时钟设计与实现实习报告

XX大学信息工程学院桌面时钟设计与实现实习报告桌面时钟设计与实现学 号 姓 名 专业班级 指导教师 实践日期2014年1月6日-2014年1月17日目 录一、综合训练目的与要求 1二、综合训练任务 1(1)需求分析 1(2)任务 1三、总体设计 2(1)主要模块划分 2(2)模块说明 2四、详细设计说明 3(

文***享 4年前 上传716   0

数电电子时钟课程设计

专业课程设计报告题目:数字电子钟课程设计系 别 电气工程系 专业班级 电气班 学生姓名 指导教师 提交日期 2011年X月X日 一、 设计目的 3二、 设计要求和设计指标 3三、设计内容 43.1方案

文***品 3年前 上传677   0

电子信息工程基于视频导航的智能车系统的设计与实现

 基于视频导航的智能车系统的设计与实现 The smart car system based on video navigation design and implementation

平***苏 1年前 上传295   0

基于Android的电子书阅读器的设计与实现

毕业设计说明书(论文)中文摘要Android平台现在非常的火,我们平时使用的智能手机,平板电脑,还有新的智能电视,有很大部分是基于Android平台的,很显然,它在人们生活中的表现得越来越重要。本文详细介绍了采用JAVA语言,设计并开发一个基于Android平台的电子书阅读器的过程。从一开始的准备工作、系统的需求分析和设计、系统的实施、系统的测试和部署等方面介绍了该阅读器的开发过程。本文实现

平***苏 3年前 上传637   0

电子信息工程基于单片机的指纹密码锁设计与实现

基于单片机的指纹密码锁设计与实现 Design and implementation of fingerprint code lock based on SCM 摘要随着这几年科技和互联网的快速发展,指纹识别技术也得到了突飞猛进,可以看到指纹识别技术以经在生活中使用很广了,而它未来的发展空

平***苏 1年前 上传270   0

基于SpringBoot博客系统的设计与实现

 基于SpringBoot博客系统的设计与实现Design and implementation of blog system based on SpringBoot中文摘要互联网随着社会的进步也渐渐得到普及,给人们带来很多便利,可以提供更多的服务,在互联网还没有发展起来之前,人们需要购买纸质报

平***苏 2年前 上传970   0

基于node的微博的设计与实现

基于node的微博的设计与实现design and implementation of microblog based on node 摘要千禧年后, Twitter开始进入中国,引发了一代新流行。紧接着微博就凭借它的立即互动特性快速成为新兴的大众信息交流平台。随着微博的热潮,人们由以前的传统媒体纯获取信息的身份转换为信息的发布者和获取者,在传统媒体时期

平***苏 10个月前 上传284   0

基于matlab的电力电子仿真设计报告

课程设计(综合实验)报告( 2010-- 2011 年度第 1 学期)名 称:电力电子技术课程设计院 系:电气与电子工程学院班 级: 电气班 学 号: 学生姓名: 指导教师: 设计周数: 20--21周 成

文***品 4年前 上传975   0

电子公文管理系统设计与实现

电子公文管理系统设计与实现  1 引言   公文是政府军队等各类部门请示汇报、命令下达等工作中的重要部分。传统的公文归档以纸质原件为主,存放在档案局等部门,当归档公文数目逐渐增多时,公文的查找就存在效率较低等缺点。尤其是当用户记不清楚公文的具体年份、标题等内容时,在纸质归档公文中进行基于内容的模糊查询几乎无法实现。另外,纸质公文的管理、维护、防腐等,也需要大量的人力物力支持。   随

D***H 9年前 上传827   0

最终电子教务管理系统设计与实现

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。

天***猩 2年前 上传671   0

电子商务网站设计与实现

XX大学软件学院期末课程报告Term Examination ReportSchool of Software, XX University个人成绩序号学号专业姓名成绩1234学  期: 2021春季学期 课程名称: ?电子商务与电子政务? 任课教师:

郭***林 2年前 上传448   0

《基于unity的3D校园的设计与实现》

基于unity的3D校园的设计与实现 Design and implementation of 3D campus based on unity 随着互联网高新技术的发展,越来越多便民利民的软件与程序被开发出来,上

平***苏 3年前 上传750   0

基于MATLAB的ASK调制解调实现课程设计

大学《通信原理》课程设计报告学 院 专 业 班 级 学 号 学生姓名 指导教师 课程成绩 完成日期 2016年X月X

文***品 3年前 上传726   0

基于opencv的车牌识别系统设计与实现

 基于opencv的车牌识别系统设计与实现 Design and implementation of LPR system based on opencv

平***苏 2年前 上传746   0

基于web学生成绩管理系统设计与实现

随着计算机技术在各行各业的广泛应用,将计算机技术应用到学校中去,将大大提高学校管理的效率。学生成绩管理系统将在提高学校管理效率中发挥重要作用。

平***苏 3年前 上传945   0

基于SSH框架的图书管理系统的设计与实现

基于SSH框架的图书管理系统的设计与实现基于SSH框架的图书管理系统摘 要 如今已经我们已经步入了信息时代,而在信息科技快速发展的形势下,网络现已成为我们工作和日常生活中必不可少的一部分。计算机技术的发展不仅提高了我们的工作效率,为日常工作提供了极大的便利,而且还在大大地改善了我们生活质量。通过计算机代替人工来处理数据已经成为趋势。传统的通过人工来管理图书资源和读者借阅信息

平***苏 2年前 上传758   0

基于JavaWeb的图书管理系统的设计与实现

有效的处理想要的相关信息和如何传播有效的信息,一直是人类不断探索的动力。信息管理运用各种载体,传播通过各种介质,一直伴随着人类文明的发展史。随着互联网的到来,信息传播与管理都上升了一个新的台阶,并且方便应用的同时也要考虑信息传播的安全性,所以编程语言创建之初就考虑了这些问题。

爱***享 3年前 上传1132   0

基于SSM的图书管理系统设计与实现

随着时代的进步和科技的发展,更多的人通过图书馆借阅书籍来吸收知识,而传统的图书管理方式存在着许多不方便的地方,记录易丢失,所以开发一个易操作,高便捷性并且能够提升工作效率的图书管理系统是很有必要的。

爱***享 3年前 上传1646   0

基于Vue+Django技术的电商网站的设计与实现

该电商网站使用python框架django-rest-framework和前端框架vuejs开发,采用现在市面上大多数系统流行的浏览器/服务器模式结构。该项目需要使用vuejs框架开发前端界面,而所有的数据逻辑均在python框架搭建的服务器后台运行。天天生鲜市场项目高度模块化,前端与后台明确分离,对后期维护和二次开发十分友好。

平***苏 3年前 上传929   0