万年历-毕业设计(带阴历带闹钟)

更新时间:2024-06-02 22:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于单片机电子万年历的设计与实现

摘 要

当人类文明跨入新的爆炸性时代,新产品、新技术层出不穷,电子技术的发展更是日新月异。电子技术的应用无处不在,电子技术已经改变我们的生活方式,影响世界的发展。在这迅猛发展、效率当先的年代,人们的时间观念越发强烈,在快节奏的生活中,人们往往需要时间的提醒。而数字化的钟表给人们带来了极大的方便,能够定时提醒的系统得到了广泛的应用。由于单片机具有灵活性强、成本低、功耗低、保密性好等特点,所以电子日历时钟一般都以DS1302为核心,外加一些外围设备来实现。

本设计应用LPC2103微处理芯片作为中央控制器,结合实时时钟芯片DS1302,制作了一个万年历仪器,本设计包括硬件电路设计及软件设计。具有显示阳历的年、月、日、星期、时、分、秒,以及闹钟功能;能够对其现实的日历以及闹钟进行设置;能够显示室内温度,并保证温度误差为±1℃。

关键词:万年历 单片机 闹钟 温度 DS1302

The Design and Implementation of Electronic Calendar

Based on SCM

I

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

Major: Telecommunication Engineering

Student:Zhu Zhu Supervisor:Hu Yingbin

Abstract

When human civilization came into new explosive era, new products and technologies are in boom, electronic technology is changing quickly. Electronic technology applications are ubiquitous, electronic technology has changed the way we live, affect the development of the world. In this rapidly and efficiently developing world, the people's concept of time growing stronger, in the life of fast rhythm, people often need time to remind. While the digital clock has brought people great convenience, can regularly reminded of systems have been widely used. Due to the microcontroller, low cost with flexibility, low power dissipation, secrecy is good wait for a characteristic, so we often choose the DS1302 as core of electronic calendar clock ,adding some peripheral equipment to achieve.

This design applications LPC2103 micro processing chip as central controller, combined with real time clock chip DS1302, made a calendar instrument, the design includes hardware part and software part.First, it can display the Gregorian calendar year, month, day, week, hour, minute and second, as well as alarm clock function.Second, we can set calendar and alarm clock.Third, it can display the indoor temperature, and ensure temperature error for 1.

Key words: Calendar SCM Alarm Clock Temperature DS1302

目 录

1导 论 .......................................................................................................................................... 1

1.1选题意义 .......................................................................................................................... 1 1.2 设计任务 ......................................................................................................................... 1 2总体方案设计 ............................................................................................................................ 2

II

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

2.1总体框图设计 .................................................................................................................. 2 2.2主要模块分析和选择 ...................................................................................................... 3

2.2.1显示模块 ............................................................................................................... 3 2.2.2调节模块 ................................................................................................................ 4 2.2.3温度采集模块 ........................................................................................................ 5

3系统的硬件及电路设计 ............................................................................................................ 5

3.1系统的整体硬件原理图 .................................................................................................. 5 3.2 LPC2103 .......................................................................................................................... 6

3.2.1 概述 ....................................................................................................................... 6 3.2.2存储器接口 ............................................................................................................ 7 3.2.3 ARM7 TDMI-S 的结构 ........................................................................................ 8 3.3 DS1302 芯片及时钟电路设计 ....................................................................................... 8

3.3.1控制寄存器用来控制SQW/OUT 引脚的操作 ................................................... 8 3.3.2 DS1302复位和时钟控制 ...................................................................................... 8 3.3.3 DS1302的控制字节 .............................................................................................. 9 3.3.4 DS1302的片内寄存器 .......................................................................................... 9 3.3.5 时钟电路图 ......................................................................................................... 11 3.4键盘电路设计 ................................................................................................................ 12

3.4.1 键盘接口 ............................................................................................................. 12 3.4.2 按键设置 ............................................................................................................. 13 3.4.3按键开关去抖动问题 .......................................................................................... 13 3.5 显示电路设计 ............................................................................................................... 14 3.6 测温电路设计 ............................................................................................................... 15 4系统软件设计 .......................................................................................................................... 16

4.1程序设计框图 ................................................................................................................ 16 4.2 DS1302读取子程序Read1302 ..................................................................................... 17 4.3 DS1302写函数write1302 ............................................................................................. 18 4.4键盘扫描 ........................................................................................................................ 19 4. 5显示子程序display ...................................................................................................... 21 4. 6测温电路的设计 ........................................................................................................... 21

4.6.1温度传感器工作原理 .......................................................................................... 21 4.6.2 DS18B20与单片机的接口电路 ......................................................................... 25

III

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

4.7程序及仿真分析 ............................................................................................................ 25 5仿真与调试 .............................................................................................................................. 26

5.1仿真图分析 .................................................................................................................... 26 5.2程序调试与仿真结果 .................................................................................................... 27

5.2.1 DS1302电路调试 ................................................................................................ 27 5.2.2按键电路调试 ...................................................................................................... 28 5.2.3键盘子程序调试 .................................................................................................. 28

6结 语 ........................................................................................................................................ 29 附录 ............................................................................................................................................. 30

附录A 原理图 .................................................................................................................. 30 附录B LCD1602显示程序 ............................................................................................. 31 参考文献 .............................................................................................................................. 41 致谢 ............................................................................................................................................. 41

IV

1导 论

1.1选题意义

电子技术是十九世纪末、二十世纪初开始发展起来的新兴技术,二十世纪发展最迅速,应用最广泛,成为近代科学技术发展的一个重要标志。在其推动下,现代电子产品正在以前所未有的革新速度,向着功能多样化、体积最小化、功耗最低化的方向迅速发展,电子技术的发展有力的推动着人类社会发展。

机械式钟表虽然也可以告知人们时间,也可以定时,显示日历。但是由于受到机械结构、动力和体积的限制,在功能、性能以及造价上都没办法与电子时钟相比。

电子钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭,室外广场,汽车站和火车站等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、0按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,更为先进的电子钟的研究有着良好的发展前景和市场潜力。

随着社会的进步,人们越来越青睐功能多样化的产品。温度实时显示系统技术已经发展成熟,比如空调遥控器上当前室温的显示、热水器温度的显示等等。如果能够在电子钟上利用电子技术实时性的准确的显示环境温度,那将为我们的生活、工作、和工业生产中带来极大的便利,同时也可以让我们随时的了解周围环境的变化以及必要措施的施行。

单片机之所以广泛被应用于各个领域,尤其是用于本设计,与单片机构成计算机应用系统所形成的下述特点有关:

1、单片机构成的应用系统有较大的可靠性。这些可靠性的获得除了依靠单片机芯片本身的高可靠性以及应用有最少的联接外,还可以方便地采用软、硬件技术;

2、系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统,应用系统有较高的软、硬件利用系数;

3、由于构成的应用系统是一个计算机系统,相当多的测、控功能由软件实现,故具有柔性特征,不须改变硬件系统就能适当地改变系统功能; 4、有优异的性能、价格比。

基于以上特点,本设计采用单片机来实现电子万年历功能。 1.2 设计任务

电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时间精确、体积小、界面

1

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

友好、可扩展性能强等特点,被广泛应用于生活和工作当中。当今市场上的电子时钟品类繁多,外形小巧别致,倍受人们青睐。也有体型较大的,诸如公共场所的大型电子报时器,家庭较大装饰型电子时钟等。电子时钟首先是数字化了的时间显示器或报时器,在此基础上,人们可以根据不同场合的要求,在时钟上加置其他附加功能,比如定时闹铃、万年历、环境温度、湿度检测、环境空气质量检测、USB扩展口功能等。

本次设计是基于ARM7TDMI2103微处理芯片和DS1302实时时钟芯片完成万年历的电路设计及软件设计。该万年历能够显示阳历的年、月、日、星期、时、分、秒,以及闹钟功能,并且可根据需要对各个位进行调节,能够显示室内温度。

本电子万年历的主要功能为:

1、具有时间显示和手动校对功能,24小时制; 2、具有显示年、月、日和手动校对功能; 3、具有闹铃功能;

4、掉电后无需重新设置时间和日期; 5、室内实时温度显示。

2总体方案设计

2.1总体框图设计

根据设计任务,本设计为电子万年历仪器,以中央处理器与时钟芯片进行交互得到准确的走时为核心;第二,结合输出显示模块,包括输出显示日历及输出闹钟两部分;第三,对万年历进行调整,以及对闹钟的设置需要用到调节模块;第四,温度模块。这样就能完成万年历的总体功能,根据总体方案设计,本设计的系统原理图如图2-1所示。

时钟芯片时基处理ARM处理器驱动处理温度信号处理图2-1万年历总体框图

显示模块喇叭温度传感器 调节晶振按键处理 2

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

总体框图中说明的系统功能主要有三个部分,即现实时间显示、闹钟提醒和温度显示。时钟芯片中预存了系统设置的时间信息,系统上电后,ARM处理器即可采集时钟芯片的初始时间和时基显示时间信息;调节模块将调节信息发送至ARM处理器中,ARM处理器综合调节信息和时钟芯片模块上采集的时基信号,这样可以得到现实时钟信号;调节模块还可以设置一个时间,这个时间可以存储在ARM处理器中,只要现实时间和这个设置的时间吻合,就作用于喇叭上,实现闹钟功能;温度模块将温度信号经处理电路后得到ARM处理器能够检测的电平信号,之后传送至ARM处理器上;ARM处理器将检测的时钟信号和温度信号输出至显示模块,即可实现时钟和温度的可视。如此,该系统就成功实现要求的功能。 2.2主要模块分析和选择 2.2.1显示模块

显示模块的功能是显示日历(包括闹钟时间)和温度信息,现在主流的显示主要有液晶显示和LED数码管显示,下面简要说明两种显示技术的各自的优势,而后选择一种作为本系统所用的显示系统。

方案一:使用液晶显示屏(LCD)显示时间数字。 液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。缺点是控制器的资源占用较多,其成本也偏高。在使用时,不能有静电干扰,否则易烧坏液晶的显示芯片,不易维护。

方案二:使用传统的LED数码管显示。 数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮[1]、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比较高,称重轻,精确可靠,操作简单。数码管采用BCD编码显示数字,程序编译容易,资源占用较少。缺点是占用引脚多。

就时钟而言,通常采用LCD 显示或者LED显示。对于一般的短时LCD,需要专门的驱动电路,但是电路设计简单,连接方便,数字感应信号强,软件编程简单,节省I/O接口,如图2-2所示。

根据以上的论述,本系统采用方案一,用LCD1602作为显示输出模块。

【1】

王新颖. 单片机原理及应用.北京大学出版社,2008

3

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

图2-2接口电路设计

2.2.2调节模块

调节模块要求能够调整日历的显示日期以及闹钟的报警时间。调整键盘模块在对日期和时间进行切换,对日期和时间进行调节校准过程中,系统需要产生激励电流,因此需要用按键。

现在比较成熟的键盘方案有以下两种:

方案一:使用独立式键盘。独立式键盘是指直接用I/O口线构成的单个按键电路。独立式按键电路配置灵活,软件结构简单。

方案二:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按键数量较多的场合。

比较两种方案,由于本系统中需要的按键只有设置模式选择键、时间/日期切换键、时间加减键和闹钟选定键,所需按键不多,电路要求简单,所以采用方案一所述的独立式键盘作为调节模块。

4

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

2.2.3温度采集模块

温度采集模块的主要功能是采集当前环境的温度,通过信号处理电路转换成ARM处理

器能够识别的电平信号,而后传送给ARM处理器。常用的测温有下面两种方案,下面先介绍两种方案,而后比较选择更适合的温度采集模块。

方案一:采用热电偶或热敏电阻作感温元件,但热电偶需冷端补偿,电路设计复杂,热敏电阻虽然精度较高,但需要标准稳定电阻匹配才能使用,而且重复性、可靠性都比较差。

方案二:采用集成温度传感器DS18B20 。该传感器结构简单,不需外接电路,数据传输稳定,在-10 ℃——+85℃范围内精度为±0.5℃,完全能满足题目±1℃的要求,且分辨率较高,重复性和可靠性好。

由于方案二中的精度要求完全满足本系统需求的温度±1℃的要求, 且分辨率较高,重复性和可靠性好,故采用第二种方案作为温度采集。

3系统的硬件及电路设计

3.1系统的整体硬件原理图

根据设计任务,本设计以LPC2103芯片为内核,连接时钟芯片DS1302进行准确的走时; LPC2103接上LCD1602显示模块,显示日历、时间,并连接蜂鸣器输出闹钟;当基本功能设置好后,再利用键盘模块实现对万年历进行调整,以及对闹钟的设置;本系统另一个附加功能为显示室内温度,利用LPC2103芯片与DS18B20连接可测温,并接上显示器(LCD1602)就可成功显示室内温度。根据总体方案设计,本设计的系统原理图如图3-1所示。

5

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

图3-1整体原理图

3.2 LPC2103

3.2.1 概述

本设计中采用LPC2103微处理器作为内核芯片,LPC2103属于ARM7TDMI-S 处理器系列,是ARM 通用32 位微处理器家族的成员之一。ARM 处理器具有优异的性能,但功耗却很低,使用门的数量也很少。ARM 结构是基于精简指令集计算机(RISC)原理而设计的,指令集和相关的译码机制比复杂指令集计算机要简单得多,这样的简化实现了高的指令吞吐量,出色的实时中断响应,小的高性价比的处理器宏单元。在万年历设计中,微处理器主要是采集温度传感器输入的温度,DS1302输入的时间及日期信息等,最后通过驱动显示器LCD显示及蜂鸣器,在运行的过程中通过键盘扫描的形式不断的采集按键信息,并通过采集的信号处理并改变相应的功能。其基本电路图如图3-2所示。

6

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

图3-2 LPC2103电路图

3.2.2存储器接口

ARM7TDMI-S 处理器的存储器接口可以使潜在的性能得到实现,这样减少了存储器的使用,对速度有严格要求的控制信号使用流水线,这样使系统控制功能以标准的低功耗逻辑实现。这些控制信号使许多片内和片外存储器技术所支持的快速突发访问模式得到充分利用【2】。ARM7TDMI-S 处理器的存储器周期有4 种基本类型:

a.内部周期 b.非连续的周期 c.连续的周期

d.协处理器寄存器传输周期

【2】

陈忠平. 单片机基础与最小系统实践.北京航空航天大学出版社,2006

7

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

3.2.3 ARM7 TDMI-S 的结构

1、ARM7TDMI-S 处理器有两个指令集 a.32 位ARM 指令集 b.16 位Thumb 指令集

2、ARM7TDMI-S 处理器使用了ARM 结构v4T 3.3 DS1302 芯片及时钟电路设计

DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个将被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作是写入时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。

3.3.1控制寄存器用来控制SQW/OUT 引脚的操作

OUT:输出控制。当方波输出失效时,该位控制SQW/OUT 引脚的输出。如果SQWE=0,若OUT=1 则SQW/OUT 引脚的逻辑电平为1,而OUT=0 则SQW/OUT 引脚的逻辑电平为0。

SQWE:方波使能。当该位被设置为逻辑1 时,使能晶振输出,方波输出的频率由RS1 和RS0 位的值来确定。当方波输出的频率设为1Hz,则时钟寄存器内容将在方波的下降沿更新。

表3-1 方波输出频率

RS1 0 0 1 1 RS0 0 1 0 1 SQW OUTPUT FREQUENCY 1 Hz 4.096 KHz 8.192 KHz 32.768 KHz 3.3.2 DS1302复位和时钟控制

向DS1302写入数据时,数据应在时钟下降沿发生变化,上升沿将数据写入DS1302内部移位寄存器。读取DS1302数据时,数据也在时钟下降沿变化,即在下降沿数据从移位寄存器输出,但当CLK时钟为正半周时,I/O线为高阻态,所以应在上升沿前读取,否则将读出全为FFH。 通过把输入驱动置高电平来启动所有的数据传送。输入有两种功能:首先,接通控制逻辑,允许地址命令序列送入移位寄存器;其次,提供了终止单字节或多字节数据的传送手段。当为高电平时,所有的数据传送被初始化,允许对DS1302进

8

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

行操作。如果在传送过程中置为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。

3.3.3 DS1302的控制字节

DS1302 的控制字如表3-2所示。控制字节的最高有效位(位7)必须是逻辑1如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示 要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。

表3-2:DS1302 的控制字

1 RAM A4 A3 A2 A1 A0 RAM ck k 数据输入输出(I/O)在控制指令字输入后的下一个SCLK的时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0开始到高位7。

在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写DS1302,数据输入从低位即位0[3][4]开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序如图3-3所示。

图3-3数据读写时序

3.3.4 DS1302的片内寄存器

通过控制字对DS1302片内寄存器进行寻址之后,即可就所选中寄存器的各位进行操作。芯片内各寄存器及各位的功能定义如表3-3所示。

【3】

窦振中. 单片机外围器件实用手册存储器分册.北京航空航天大学出版社,2005 【4】

沈庆阳,郭庭吉. 8051单片机实践与应用.清华大学出版社,2003

9

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

表3-3 DS1302有关日历、时间的寄存器

读寄 存器 81H 83H 写寄 存器 80H 82H BIT7 CH BIT6 BIT5 10秒 10分 10 AM/PM BIT4 BIT3 BIT2 BIT1 秒 分 BIT0 范围 00-59 00-59 1-12 0-23 1-31 1-12 1-7 00-99 0 0 -— 85H 84H 12/24 0 0 0 0 时 时 87H 89H 8BH 8DH 8FH 86H 88H 8AH 8CH 8EH 0 0 0 10年 10日 10月 0 0 0 日 月 周日 年 WP 0 0 0 0 0

DS1302有关日历、时间的寄存器共有10个,时钟/日历包含在其中的7个写/读寄存器内,这7个寄存器分别是年、月、日、星期、小时、分及秒。

小时寄存器(85H、84H)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为12小时制式时,位5为“0”表示AM;为“1”表示PM。在24小时制式下,位5是第二个10小时位(20~23时)。

秒寄存器(81H、80H)的位7定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。一般在设置时钟时,可以停止其工作,设定完之后,再启动其工作。

控制寄存器(8FH、8EH)的位7是写保护位(WP),其它7位均置为0。在任何片内时钟/日历寄存器和RAM,在写操作之前,WP位必须为0,否则将不可写入。当WP位为1时,写保护位防止对任一寄存器的写操作。因此,通过置写保护位,可以提高数据的安全性。另外,还有慢速充电控制寄存器和RAM寄存器。如表3-4所示。

表3-4 充电控制寄存器和RAM寄存器各位定义

10

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

充电控制寄存器 RAM寄存器 BIT7 TCS — BIT6 TCS — BIT5 TCS — BIT4 TCS — BIT3 DS — BIT2 DS — BIT1 RS — BIT0 RS —

慢速充电寄存器控制着DS1302的慢速充电特性。寄存器的BIT4~BIT7(TCS)决定是否具备充电性能:仅在编码为1010的条件下才具备充电性能,其他编码组合不允许充电。

BIT2和BIT3选择在VCC2和VCC1之间是一个还是两个二极管串入其中。如果编码DS是01,选择一个二极管;如果编码是10,选择两个二极管;其他编码将不允许充电。该寄存器的BIT0和BIT1用于选择与二极管相串联的电阻值。其中编码RS=01为2 KΩ,RS=10为4 KΩ,RS=11为8 KΩ,而RS=00将不允许进行充电。因此,根据慢速充电寄存器的不同编码可得到不同的充电电流【5】。其具体计算如公式3-1所示:

I充电=(V0-VD-VE)/R (3-1) 式中:

V0——所接入的5.0V工作电压; VD——二极管压降,一个按0.7V计算;

R——慢速充电控制寄存器0和1位编码决定的电阻值; VE——VCC1脚所接入的电池电压。

RAM寄存器寻址空间一次排列的31字节静态RAM可为用户使用,备用电源位RAM提供了掉电保护功能。寄存器和RAM的操作通过命令字节的BIT6加以区别。当BIT6为“0”时对RAM区进行寻址;否则将对时钟/日历寄存器寻址。其操作方法与前述相同。

3.3.5 时钟电路图

本设计时钟电路如图3-4所示,分别把RET、SCLK、I/O口对应的接到单片机上,I/O口按制数据的输入和输出,SCLK是按制数据的时钟信号,RST是复位信号,正常工作时复位是高电平,通过程序先给DS1302写入命令,根据命令的输入输出情况,对I/O口读或写数据,完成时间的读写操作。

【5】

侯玉宝,李成群. 基于Proteus的51系列单片机设计与仿真. 电子工业出版社,2008

11

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

图3-4时钟电路图

3.4键盘电路设计

3.4.1 键盘接口

键盘在单片机系统中是一个很重要的部件。为了输入数据、查询和控制系统的工作状态,都要用到键盘,键盘是人工干预计算机的主要手段。

独立式键盘每个键单独占用一个I/O接口,每条I/O线互不影响,独立操作,便于实现简单接口电路功能。

键盘可分为编码和非编码键盘两种。编码键盘采用硬件线线路来实现键盘编码,每按下一个键,键盘能自动生成按键代码,键数较多,而且还具有去抖动功能。这种键盘使用方便,但硬件较复杂,PC机所用的键盘就属于这种。非编码键盘仅提供按键开关工作状态,其他工作由软件完成,这种键盘键数较少,硬件简单,一般在单片机应用系统中广泛使用。

12

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

图3-5键盘电路图

在本键盘设计中,键盘原理图如图3-5所示,功能实现是当按下K1时,再通过多次按K4,年月日及星期时间将会闪烁,处于调整状态,些时再按下K1或K2可以调整相应位的值到正确值,当同时按下K1和K5时可以设置闹钟,设置闹钟和调整时间原理一样,设置完后弹起K1键完成设置。如果要使闹钟有效,那么当正常运行时使闹钟键一直处于按下状态。

3.4.2 按键设置

本电子万年历系统中功能按键共5个,分别为设置键、上调键、下调键、转换键、闹钟键。当按下设置键时,再按下转换开关就可以分别对秒、分、时、日、月、星期、年份进行加1或减1修改。同时按下设置和闹钟时,则修改闹钟的时间。进入修改界面后,弹起设置时是确定键,按下闹钟是闹钟的功能设置为有效(如果想再开闹钟的话,重新设置闹钟时间就可以了)。

3.4.3按键开关去抖动问题

按键开关在电路中的连接如图3-6a所示。按键未按下时,A点电位为高电平5V;按键按下时,A点电位为低电平。A点电位就用于向CPU传递按键的开关状态。但是由于按键的结构为机械弹性开关,在按键按下和断开时,触点在闭合和断开瞬间还会接触不稳

13

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

定,引起A点电平不稳定,如图3-6b所示,键盘的抖动时间一般为5~10ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。因此必须设法消除抖动的不良后果。

键输入a)a)键输入 b)键抖动

图3-6键操作和抖动键

消除抖动的不良后果的方法有硬、软件两种。在单片机系统中,由于一般要求硬件尽量简单,所以本系统不采用硬件方法消除键的抖动,而是用软件消除抖动的方法。

根据抖动时延特性,在第一次检测到按键按下后,执行一段延时5~10ms,以便系统让前延抖动消失后再一次检测键的状态,如果二次检测仍保持闭合状态电平,则确认按键按下。同理,在第一次检测到按键释放后,也需执行5~10ms的延时,待后延抖动消失后才转入该键处理程序。 3.5 显示电路设计

本设计使用液晶显示屏(LCD)显示日历、时间、温度等数字,根据题目要求并由单片机管脚的分配情况,设计的原理图如图3-7所示,单片机通过处理完输入的时间及温度等信号后,通过与LCD相连的I/O口驱动LCD显示相应的数据到LCD上,实现相应功能。

14

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

图3-7 LCD显示电路图

3.6 测温电路设计

温度模块的设计原理图如图3-10所示,由于温度传感器都已集成部分数据处理功能,所在设计时只要按照数据手册给定的原理图进行设计,在写程序时根据数据手册的相关命令通过DQ管脚获得相应温度值并显示。

15

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

图3-10 测温电路图

4系统软件设计

4.1程序设计框图

电子万年历的程序主要包括五个方面的内容:一是DS1302从单片机中读取数据子程序,二是利用按键调整子程序,三是输出显示子程序,四是环境温度采集子程序,五是闹铃子程序。

整个程序进行模块化设计,主程序只需调用相应的程序即可。主程序流程如图4-1所示。

启动

16 调用显示子程序

四川大学锦城学院本科毕业论文

基于单片机电子万年历的设计与实现

4.2 DS1302读取子程序Read1302 开始 N Y 开始 调用读DS1302子程序 17 CE置高电平,逻辑控制有效 键扫描 四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

图4-2 读DS1302子程序流程图

4.3 DS1302写函数write1302

开始 CE置高电平,控制辑控制有效

18 SCLK清零,准备写地址 四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

图4-3 写DS1302子程序流程图

N Y

N 4.4键盘扫描

用于对独立式键盘扫描,并进行相应的按键处理。如图4-4、表4-1所示。

开始

设置键b1==0?

19 保存秒数,并停止计时 退出 四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

处理说明:

功能键值 jj=0 jj=1 jj=2

Y

N

Y

N

Y

图4-4 键盘扫描流程图

表4-1 相应处理说明

增时键按下时

年加1 月加1 日加1

减时键按下时

年减1 月减1 日减1

20

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

jj=3 jj=4 jj=5 jj=6

时加1 分加1 秒加1 星期加1

时减1 分减1 秒减1 星期减1

4. 5显示子程序display

将DS1302的时间进行显示,如图4-5所示。

开始 将取出的时间值 转换成BCD码 将字形在LCD上指定位置显示 返回

图4-5 显示子程序流程图 4. 6测温电路的设计

4.6.1温度传感器工作原理

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式【8】。DS18B20的性能特点如下:

a c e f

【8】

独特的单线接口仅需要一个端口引脚进行通信; 无须外部器件; 零待机功耗;

温度以9或12数字量读出;

b 多个DS18B20可以并联在唯一的三线上,实现多点组网功能; d 可通过数据线供电,电压范围为3.0~3.5V;

于复生,宋现春. 时钟芯片DS1302及其在数据记录中的应用.北京航空航天大学出版社,2006

21

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

g 用户可定义的非易失性温度报警设置;

h 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; i

负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 DS18B20采用3脚PR—35封装或8脚SOIC封装,64位ROM的位结构如图4-6所示。开始8位是产品类型的编号,接着是每个器件的唯一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。非易失性温度报警触发器TH和TL,可通过软件写入报警上下限。

8位检验CRC 48位序列号 8位工厂代码(10H)

图4-6 64位ROM结构图

DS18B20温度传感器的内部存储器还包括一个调整暂存RAM和一个易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节存储器,结构如图4-7所示。头2个字节包含测得的温度信息,第3和第4节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如图4-8所示。低5位一直1,M是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即用来设置分辨率,定义方法如表4-2所示【8】。

温度LSB 温度MSB TH用户字节1 TL用户字节2 配置寄存器 保留 1字节 2字节 3字节 4字节 5字节 6字节 【8】

于复生,宋现春. 时钟芯片DS1302及其在数据记录中的应用.北京航空航天大学出版社,2006

22

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

保留 保留 CRC

7字节 8字节 9字节

图4-7高速暂存RAM结构图

TM R1 R0 1 1 1 1 1 图4-8配置寄存器

表4-2 DS18B20分辨率的定义规定

R1 0 0 1 1 R0 0 1 0 1 分辨率/位 9 10 11 12 测量最大转换时间/ms 93.75 187.5 375 750 表4-2可见,DS18B20温度转换的时间比较长,而且设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。

高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。

当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16

【9】

位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通

过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625°C/LSB形式表示。温度值格式如图4-9所示。

【9】

王明顺.可涓流充电的串行实时时钟芯片DS1302及应用设计.电子技术应用,2009

23

四川大学锦城学院本科毕业论文

LS字节

基于单片机电子万年历的设计与实现

23 S 22 S 21 S 20 S 2-1 S 2-2 S6 2-3 S5 2-4 S4 MS字节

图4-9温度数字值格式

当符号位S=0时,表现测得的温度值为正值,可以直接将二进制位转换为十进制,当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码再计算十进制值。部分温度值对应的二进制温度数据如表4-3所示。

表4-3 DS18B20温度与测得值对应表

温度/C °二进制表示 0000 0111 1101 0000 0000 0101 0101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1111 0101 1110 1111 1110 0110 1111 1111 1100 1001 0000 十六进制表示 07D0H 0550H 0191H 00A2H 0008H 0000H FFF8H FF5EH FE6FH FC90H +125 +85 +25.0625 +10.125 +0.5 0 -0.5 -10.125 -25.0625 -55

DS18B20

完成温度转换后,把测得的温度值与RAM中的TH、TL字节内容作比较。

若T>TH或T

在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20的CRC作比较,以判断主机收到的ROM数据是否正确。

DS18B20的测温原理如图4-10所示。图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。图中还隐含着计数门,当计算门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55°C所对应的一个基数分别置入减法计数器1、温度寄存器中,减法计数器1和温度寄存器被预

24

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

置在-55°C所对应的一个基数值。

斜率累加器 计数比较器 减法计数器 1 预置 增加 温度寄存器 减到0 预置 计数低温度系数振荡器

高温度系数振荡器 停止 减法计数器2 减到0 图 4-10 DS18B20测温原理图

减法计数器1对低温系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存的值将加1,减法计数器1的预置值将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值。图4-10中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门未关闭就重复上述过程,直到温度寄存器值达到被测温度值。

另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲) 发ROM功能指令 发存储器操作命令 处理数据。

4.6.2 DS18B20与单片机的接口电路

DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为引线,3脚接电源。另一种是寄生电源供电方式。单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。

当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时,VDD和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。 4.7程序及仿真分析

由于LPC2103单片机没有找到合适的仿真软件,所有选用了一个非常容易仿真的单片机89c52进行仿真,把所有的功能都在仿真软件上表示出来,再通过芯片移植的方法,把

25

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

所有的端口修改成LPC2103的端口,并根据两个芯片不同特点,修改输入输出模式,再将其它功能全部移植到LPC2103上,由于此程序实现功能比较简单,无特殊功能,所以采用这种移植的方法较容易实现。附录A中就是通过仿真软件做出来的效果,当用LPC2103时硬件没有什么区别,只是按程序端口即可。

源程序参见附录B。

5仿真与调试

5.1仿真图分析

图5-1电子万年历仿真图

如图5-1所示,当按下设置而不按下闹钟时,可以按转换开关调节时间、日期、和星期,当选择好要调的数位后,再按下上调或下调来调节数值的大小,同理当同时按下设置和闹钟时,可以调闹钟的日期和时间,在调节的过程中时间是停止的。

首先显示屏(LCD1602)上要显示时间温度,第一行显示:日期,星期。第二行显示:时间,温度。其次我们可以修改时间,包括闹钟的时间:当按下设置时,按下转换开关可以修改秒,修改分,修改时,修改日,修改月,修改星期,修改年份,同时按下设置和闹

26

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

钟时修改闹钟的时间。进入修改界面后,弹起设置时是确定键,按下闹钟是闹钟的功能设置为有效(如果想再开闹钟的话,重新设置闹钟时间就可以了)。修改界面中,第一行是提示修改什么,第二行显示你要修改的内容的当前数据和你键入的数据。闹钟响了之后按下半分钟停止。 源程序参见附录B。 5.2程序调试与仿真结果

图5-2电子万年历仿真结果

5.2.1 DS1302电路调试

该电路包含DS1302芯片、主电源、备用电源、晶振等部分。在与单片机连接的过程中需要注意以下几点:

1、清楚DS1302与单片机连接的管脚。本设计定义为:DS1302的SCLK连接P2.1,I/O连接P2.2,RST连接P2.0;

2、注意电源正负极连接;

3、DS1302接32.768KHz的晶振。该晶振体型比较小,在焊接时要小心,注意不要将晶振引脚弄断。同时也要尽量使晶振与DS1302的X1、X2引脚近距离焊接。

27

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

4、编写DS1302的时钟/日历程序,只要求能够正确显示时间。烧录进单片机,检查电路电源正负极连接是否正确,检查P2.0和P2.1引脚接线是否正确,检查无误后可以上电检查。

设计中编写了一段时钟/日历显示程序,设置初始时间为14:28:00,初始日期为2011年4月11日。上电后LCD显示“22:52:00”,之后开始走时。观察8分钟之后,显示“23:00:00”,证明DS1302电路正确。

源程序见附录B。

5.2.2按键电路调试

本按键电路结构简单,调试起来容易。如果确保按键焊接正确,只需在DS1302的调试程序上加上一段日历显示子程序,并在主程序中写入:

if(b1==0) { if (jj==6) {

a[24]=b[6];

a[24]=a[24]&0x07; lcdwrite(j[jj]); lcdshuju(0);

delay(200); lcdwrite(j[jj]); lcdshuju(a[24]+0x30); delay(200); }

显示子程序原理与时钟显示子程序原理相同,该程序的功能是:设置按钮后,相应的设置位就开始闪烁,为了更直观的看到所要设置的位置。当设置键弹出后,LCD显示当前的时间、日期、和星期、温度等信息。

源程序见附录B。

5.2.3键盘子程序调试

依据设计要求,键盘子程序需要完成对时间/日历的校对、日期/温度的显示和闹铃的开关。为了便于显示子程序和闹铃子程序的调用,键以宏定义为b1、b2 、b3、b4、b5、b6例如:闹钟键检测。

If(b5==0)

28

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

{

for(i=0;i<12;i++) { }

if(num==12)bigclock=1; else num=0; lcdwrite(0x89+0x40); lcdshuju('&');}

if(a[i+12]==a[i])num++;

在调用闹铃子程序时,闹铃标志位为“&”,则开启闹铃,否则关闭闹铃。

6结 语

程序设计无疑是单片机学习中的重中之重,写不好程序就无法对单片机进行高效的

控制。

对于简单的程序而言,不需要事先画程序流程图,因为程序简单,条理分明。但对于功能稍微强大的程序来说,不画流程图就很容易走弯路,造成条理不清晰,思维混乱。

单片机可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对分析长时间的连续测控系统结果,及查找异常数据出现的原因具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,需要DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。若采用单片机计时,一方面存在时钟精度不高,易受环境影响,出现时钟混乱,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。

29

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

附录

附录A 原理图

30

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

附录B LCD1602显示程序 #include #include\#include\#include\#define uint unsigned int #define uchar unsigned char

uint b[7];

//年月日时分秒

uchar code row1[]={%uchar code row2[]={\

uchar year1[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年 uchar year2[12]={31,29,31,30,31,30,31,31,30,31,30,31};//润年

uchar j[7]={0x82,0x85,0x88,0x81+0x40,0x84+0x40,0x87+0x40,0x8f};//LCD地址

uchar i,k,jj=0,w,clock=0,bigclock=0,c=0,num; //i循环数 k温度缓存 jj地址位 uint temp;

sbit b1=P3^0;//设置 sbit b2=P3^1;//上调 sbit b3=P3^2;//下调 sbit b4=P3^3;//转换 sbit b5=P3^4;//闹钟 sbit speaker=P3^5;

lcdscan() { for(i=0;i<6;i++) { lcdwrite(j[i]); lcdshuju(a[11-i*2]+0x30); lcdwrite(j[i]+0x01); lcdshuju(a[10-i*2]+0x30); } }

void key() { if(b1==0) { dsaddshuju(0x80,(a[1]<<4)+a[0]+0x80); while(b1==0)

31

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

{ for(i=0;i<7;i++) { if(i<6) {b[i]=a[11-i*2+clock]*10+a[10-i*2+clock];} else b[6]=a[24]; } if(b4==0) { delay(3); jj++; if(jj==7) { jj=0; } } if(b2==0) { delay(3); b[jj]++; if(b[6]>=8) b[6]=1; if(b[5]==60)b[5]=0; if(b[4]==60)b[4]=0; if(b[3]==24)b[3]=0; if((b[0]%4==0 && b[0]@0==0){if(b[2]>year2[b[1]-1])b[2]=1;} else {if(b[2]>year1[b[1]-1])b[2]=1;} if(b[1]==13)b[1]=1; if(b[0]==100)b[0]=0; } if(b3==0) { delay(3); b[jj]--; if(b[6]<=0) b[6]=7; if(b[5]==-1)b[5]=59; if(b[4]==-1)b[4]=59; if(b[3]==-1)b[3]=23; if((b[0]%4==0 && b[0]@0==0){if(b[2]<=0)b[2]=year2[b[1]-1];} else {if(b[2]<=0)b[2]=year1[b[1]-1];} if(b[1]==0)b[1]=12; if(b[0]==-1)b[0]=99;

32

b[0]0!=0) b[0]0!=0) ||

||

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

} for(i=0;i<6;i++) { a[11-i*2+clock]=b[i]/10; a[10-i*2+clock]=b[i]; } if (jj<6) { lcdwrite(j[jj]); lcdshuju(0); lcdwrite(j[jj]+1); lcdshuju(0); delay(200); lcdwrite(j[jj]); lcdshuju(a[11-2*jj+clock]+0x30); lcdwrite(j[jj]+1); lcdshuju(a[10-2*jj+clock]+0x30); delay(200); }

if (jj==6) { a[24]=b[6]; a[24]=a[24]&0x07; lcdwrite(j[jj]); lcdshuju(0); delay(200); lcdwrite(j[jj]); lcdshuju(a[24]+0x30); delay(200); } if(b1==1) { dsaddshuju(0x80,(a[1]<<4)+a[0]); dson(); } if(b5==0)clock=12; } } }

void main() {

33

四川大学锦城学院本科毕业论文 speaker=0; lcdrw=0; dson(); lcdon();

lcdwrite(0x80); for(i=0;i<10;i++) {

lcdshuju(row1[i]); delay(1); }

lcdwrite(0x81+0x40); for(i=0;i<8;i++) {

lcdshuju(row2[i]); delay(1); }

lcdwrite(0x8a+0x40); lcdshuju('T'); lcdshuju(':');

lcdwrite(0x8f+0x40); lcdshuju('C'); lcdwrite(0x8b); lcdshuju('W'); lcdshuju('e'); lcdshuju('e'); lcdshuju('K'); dsrst=0; dssclk=0; while(1) {

for(i=0;i<5;i++) { dsrst=1; dswrite(0x81+i*2); k=dsread(); dsrst=0; a[i*2]=k&0x0f; a[i*2+1]=(k>>4)&0x0f; }

dsrst=1;

dswrite(0x8d); k=dsread(); dsrst=0;

a[10]=k&0x0f;

a[11]=(k>>4)&0x0f;

基于单片机电子万年历的设计与实现

34

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

dsrst=1; dswrite(0x8B); k=dsread(); dsrst=0; a[24]=k&0x0f; delay(100); lcdscan(); key(); if(b5==0) { for(i=0;i<12;i++) { if(a[i+12]==a[i])num++; } if(num==12)bigclock=1; else num=0; lcdwrite(0x89+0x40); lcdshuju('&'); } else { lcdwrite(0x89+0x40); lcdshuju(0x00); } if(bigclock==1) { speaker=~speaker; c++; if(c==100){bigclock=0;speaker=0;} } temp=readtemperature();//temp是uint型的。不然会出现温度到25后回00的现象。可能是由于十六进制与十进制的差异。 lcdwrite(0x8d+0x40); lcdshuju(temp/100+0x30); lcdwrite(0x8e+0x40); lcdshuju(temp/10+0x30); lcdwrite(0x8f); lcdshuju(a[24]+0x30); }

35

四川大学锦城学院本科毕业论文 基于单片机电子万年历的设计与实现

}

#include

#define uint unsigned int #define uchar unsigned char

sbit lcdrs=P0^0; sbit lcdrw=P0^1; sbit lcden=P0^2;

void delay(uint z) {

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--); }//1毫秒左右延时

//lcdwrite() LCD写指令 void lcdwrite(uchar write) { lcdrs=0; P1=write; delay(1); lcden=1; delay(1); lcden=0; }

//lcdshuju() LCD写数据 void lcdshuju(uchar shuju) { lcdrs=1; P1=shuju; delay(1); lcden=1; delay(1); lcden=0; }

//lcdon() LCD显示初始化 void lcdon() { lcden=0; lcdwrite(0x38);//显示模式 lcdwrite(0x0c);//开显示,光标不闪烁 36

本文来源:https://www.bwwdw.com/article/x3q6.html

Top