智能电热壶的设计—论文 - 图文

更新时间:2024-06-18 08:31:01 阅读量: 综合文库 文档下载

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

工 学 院 毕 业 设 计( 论 文 )

题 目: 智能电热壶的设计 专 业: 机电技术教育 班 级: 073班 姓 名: 方良赟 学 号: 1664070303 指导教师: 张平娟 日 期: 2010年11月15日

目 录

摘要 .......................................................................... 1 关键词 ........................................................................ 1 引言 .......................................................................... 1 1 单片机的发展与应用 ......................................... 错误!未定义书签。 1.1 单片机简介 .............................................................. 1 1.2 单片机的技术发展 ........................................................ 1 1.3 单片机的应用 ............................................................ 1 2 单片机AT89C51的基本数据 .................................................... 3 2.1 AT89C51概述 ............................................................. 4 2.2 AT89C51功能特性概述 ..................................................... 4 2.3 AT89C51的最小系统 ....................................................... 7 3 智能电热壶的基本数据 ....................................................... 10 3.1智能电热壶的工作原理 ................................................... 11 3.2 报警电路的实现 ......................................... 错误!未定义书签。

3.3.1 3.2.2 3.2.3

报警电路控制元件的选择 .............................. 错误!未定义书签。 报警电路的工作原理 .................................. 错误!未定义书签。 报警电路的电路设计 ................................................... 6 控制电路控制元件的选择 .............................................. 8

3.3 控制电路的实现 .......................................................... 7

3.3.1

3.3.2 控制电路的工作原理................................................... 8 3.3.3 控制电路的电路设计................................................... 9

3.4 其它电路的实现 ......................................................... 11 3.4.1 时钟电路的实现 ..................................................... 12 3.4.2 复位电路的实现 ..................................................... 12 4 具体设计 ................................................................... 13 4.1 硬件连接总原理图 ....................................................... 13 4.2 程序设计 ............................................................... 14 4.2.1 程序流程图 ......................................................... 14 4.2.2总程序及各函数功能简介 .............................................. 15 5 系统调试与结果 ............................................................. 21 6 总结 ....................................................................... 22 7 致谢 ....................................................................... 23 参考文献 ..................................................................... 24

智能电热壶的设计

摘要: 本文介绍了的是一款基于AT89C51单片机设计的智能电热壶,智能电热壶由报警电路和控制电路两大部分组成,主要是介绍智能电热壶的报警功能和自动控制功能的设计和实现,采用AT89C51单片机配合继电器、扬声器等的使用,给出了设计过程与编程方法,并用keil和Proteus软件进行调制仿真,实现了智能电热壶的自动报警、智能控制。

关键词:AT89C51 自动报警 智能控制

引言

基于单片机的智能控制技术在各领域的用途越来越广泛,常见于笔记本电脑、智能数码相机、智能玩具、智能导航系统、智能电冰箱、智能空调、智能手机、智能家居等设备,它是这些设备中科技含量最核心的部分之一[1]。同时,这项技术能够综合运用单片机和信息传输和处理等方面。我们在报纸上、网络上、电视上经常看到各种由于电热壶所引发的火灾,给广大消费者的生命安全和财产安全带来了很大的隐患。因此一款更安全、智能、人性化的电热壶产品成了一种需求,和必然的发展趋势。

本课题就是利用我们学到的知识和当前的发展状况,研究单片机控制继电器和报警电路以实现自动报警和智能控制功能。最终功能是可以通过硬件和软件的配合实现智能电热壶的这一功能。

1 单片机的发展与应用

1.1 单片机简介

在通用微机中央处理器基础上,将输入/输出(I/O)接口电路、时钟电路以及一定容量的存储器等部件集成在同一芯片上,再加上必要的外围器件,如晶体振荡器,就构成了一个较为完整的计算机硬件系统。由于这类计算机系统的基本部件均集成在同一芯片内,因此被称为单片微控制器(Single-Chip-Micro Controller,简称单片机)或微控制单元(Micro.Controller Unit,简称MCU)[2]。 1.2 单片机的技术发展

1974年12月,美国著名的仙童(Fairchild)公司推出了世界上第一台单片机F8。该机由两块集成电路芯片组成,结构新颖,并具有与众不同的指令系统,深受民用电器和仪器仪表领域的欢迎和重视。从此单片机开始迅速发展,应用范围也在不断扩大,现已成为微型计算机的重要分支。单片机的发展大致经历了外围集成、总线完善、功能集成、全方位发展等技术发展阶段,至今已走过了四代的历程[3]。

(1)第一代单片机(1974--1976)

1

这是单片机的初级阶段,以Fairchild公司的F8为代表。该时期生产的单片机的特点是:字长为4位,内部结构简单,制造工艺落后,集成度低。 (2)第二代单片机(1976--1980)

这是单片机的技术成熟阶段。8位单片机已经出现,以Intel公司的MCS一48为代表。该系列的单片机在片内已经集成了8位CPU、并行I/O接口、8位定时器/计数器、RAM和ROM等功能部件,但无串行I/O接口,寻址范围不大于4 KB。它性能低、品种少,应用范围也不广。 (3)第三代单片机(1980--1983)

这是单片机的推广阶段,8位单片机技术走向成熟。其技术特点是完善了外部总线,确立了单片机的基本控制功能,以Intel公司的MCS一51为代表(MCS一51是Intel公司在MCS一48基础上推出的更完善、更典型的单片机系列)。该阶段的单片机均带有串行I/()口,且具有多级中断处理系统,定时器/计数器为16位,片内的RAM和ROM容量相对较大,寻址范围可达64 KB。这一代单片机结束了计算机单片集成的简单形式,真正开创了单片机作为微控制器的发展道路。而这个时期的单片机由于其优良的性价比和及其广泛的领域,特别适合我国 的国情,故在我国广泛应用。 (4)第四代单片机(1983一)

这是8位高性能单片机和16位单片机并行发展的阶段。16位单片机除了CPU为16位以外,片内的RAM和ROM容量进一步增大。以Intel公司的MCS一96系列为代表,其片内的RAM增加为232 B,ROM为8KB,且片内集成有高速I/O部件、多通道10位模/数(A/D)转换器等。

目前,将测控系统中使用的电路技术、接口技术、多通道模/数(A/D)转换部件等直接应用到单片机中,增强了外围电路功能,强化了智能控制特征的单片机不断涌现。同时,32位单片机也已进入实用阶段[4]。 1.3 单片机的应用

目前单片机已被广泛应用于国民经济的各个领域,对企业技术改造和产品更新换代起到了重要的作用。下面仅就一些典型应用方面进行介绍。

(1)工业自动化方面

自动化能使工业系统处于最佳状态,可以提高经济效益、改善产品质量和减轻劳动强度。自动化技术被广泛应用于机械、电子、电力、石油、化工、纺织、食品等工业领域中,在工业自动化技术中,无论是过程控制技术、数据采集和测控技术,还是生产线上的机器人技术,都有单片机的参与。由于单片机体积小,可以把它做到产品的内部,取代部分老式机械零件和电子元器件,缩小了产品体积,增强了功能,实现了不同程度的智能化,机电一体化技术将发挥愈来愈重要的作用。如国内外有相当一部分汽车工业,其汽车生产流水线控制,以及汽车自身的点火控制、反锁制动、牵

2

引、转向等控制都是采用单片机实现的。又如电脑缝纫机,用单片机代替了传统机械凸轮花样控制,不仅简化了机械结构,减少了加工工序和设备,而且使缝纫机性能大大提高,并能提供许多老式缝纫机无法提供的缝纫花样。

(2)智能化仪器仪表

智能化仪器仪表是目前国内外应用单片机最多、最活跃的领域。现代仪器仪表(例如,测试仪表和医疗仪器等)的自动化和智能化要求越来越高,在各类(包括温度、湿度、流量、流速、电压、频率、功率、厚度、角度、长度、硬度、元素测定等)仪器仪表中引入单片机,使仪器仪表向数字化、智能化、微型化、多功能化方向发展。此外,单片机的使用还有助于提高仪器仪表的精度和准确度,简化结构、减小体积及重量后易于携带和使用,并具有降低成本,增强抗干扰能力,便于增加仪器仪表的显示、报警和自诊断等功能。增强抗干扰能力,便于增加仪器仪表的显示、报警和自诊断等功能。如便携式心率监护仪,采用单片机能判断心跳过缓、心跳过速、停搏、漏搏等异常心率。 (3)生活中的电器产品

当前,家用电器产品的一个重要发展趋势是不断提高其智能化程度,通过采用单片机进行控制,智能化家用电器将给我们带来更大的舒适和方便,例如,电脑全自动洗衣机、电冰箱、空调、电脑微波炉、电视机和音像视频设备等,进一步改善生活质量,可以把我们的生活变得更加丰富多彩。如电子秤,是出现最早、最典型的一种单片机应用产品,内装单片机接收信息,计价处理时能立即显示单价、售价,在菜场、商店里获得广泛应用。高级电子玩具的出现使玩具智能化,有很大的发展潜力,尤其是在国际市场需求量较大。 (4)军事装备方面

科技强军、国防现代化离不开单片机。在现代化的飞机、军舰、坦克、大炮、导弹火箭和雷达等各种军用装备上,都有单片机深入其中。近些年来,单片机正朝着高性能和多品种方向发展,尤其是MCS.51系列单片机,由于它具有价格低廉、应用软件齐全、开发方便等特点,已成为目前单片机中的主流机型。单片机的发展速度非常快,从有关统计资料提供的数据来看,单片机的产量已占整个微机(包括一般的微处理器)产量的80%以上。单片机正处在上升的前沿时期,就其整体的发展趋势而言,单片机正向着大容量、高性能化、低价格化和外围电路内装化发展。

随着半导体集成工艺的进步,外围电路也将是大规模的,应用时可把所需要的外围电路装入单片机芯片内,从而简化外围电路的设计。未来的单片机将会使系统单片化。随着社会的进步和科学技术的发展,单片机的发展及对单片机的需求和它在各个领域中的应用将得到进一步扩大[5]。

2 单片机AT89C51的基本数据

3

MCS-51是美国Intel公司的8位高档单片机系列,是在MCS-51系列基础上发展而来的,也是我国目前应用最广的一种单片机系列[6]。 2.1 AT89C51概述

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器和128byte的随机数据存储器,器件采用ATMEL公司高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和FLASH存储单元,功能强大AT89C51单片机可灵活应用于各种控制领域。实物如图1所示:

图1 AT89C51实物图

主要性能参数[7]:

.与MCS-51产品指令和引脚完全兼容 .4K字节可重擦写FLASH闪速存储器 .1000次擦写周期 .全静态操作:0Hz-24MHz .三级加密程序存储器 .128*8字节内部RAM .32个可编程I/O口线 .2个16位定时/计数器 .6个中断源

.可编程串行UART通道 .低功耗空闲和掉电模式 2.2 AT89C51功能特性:

AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51各种型号芯片的引脚是互相兼容的。目前,AT89C51单片机多采用40只引脚的双列直插封

4

[8]

装(DIP)方式。外形及引脚排列如图所示。

图2 AT89C51引脚图

40只引脚按其功能可分为如下3类:

(1)电源及时钟引脚——Vcc、Vss;XTALl、XTAL2; (2)控制引脚——PSEN、ALE、EA、RESET(即RST);

(3)I/O口引脚——P0、P1、P2、P3,为4个8位I/O口的外部引脚。

2.2.1电源及时钟引脚

1、电源引脚

电源引脚接入单片机的工作电源。 (1)Vcc(40引脚):接+5V电源。 (2)Vss(20引脚):接地。 2、时钟引脚

(1)XTALl(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。使用片内振荡器时,该引脚连接外部石英晶体和微调电容。

5

(2)XTAL2(18引脚):片内振荡器反相放大器的输出端。当使用片内振荡器时,该引脚连接外部石英晶体和微调电容。当采用外接时钟源时,引脚XTALl接收外部时钟振荡器的信号,XTAL2悬空。

2.2.2控制引脚

控制引脚提供控制信号,有的引脚还具有复用功能。

(1)RST(9引脚):复位信号输入端,高电平有效。当单片机运行时,在此引脚加上持续时间大于2个机器周期(24个时钟振荡周期)的高电平时,就可以对单片机完成复位操作。在单片机正常工作时,此引脚应为≤0.5V的低电平。

(2)EA/VPP(31引脚):EA为外部程序存储器访问允许控制端。当EA引脚接高电平时,在PC值不超出0FFFH(即不超出片内4KBFlash存储器的地址范围)的情况下,单片机读片内程序存储器(4KB),但超出0FFFH(即超出片内4KB Flash存储器地址范围)时,将自动转向访问外部程序存储器中的程序。当EA引脚为低电平时,对程序存储器的读操作只限定在外部程序存储器,地址为0000H—FFFFH,片内的4KB Flash程序存储器不起作用。

VPP为该引脚的第二功能,为编程电压输入端。对于AT89C51单片机,在对片内Flash固化编程时,加在VPP引脚的编程电压为+5V或+12V。

(3)ALE/PROG(30引脚):ALE为低8位地址锁存允许信号。在系统扩展时,ALE的负跳沿将P0口发出的低8位地址锁存在外接的地址锁存器中,然后P0口再作为数据端口使用,以实现P0口的低8位地址和数据的分时复用。 PROG为该引脚的第二功能,在对片内Flash存储器编程时,此引脚作为编程脉冲输入端。

(4)PSEN(29引脚):读外部程序存储器的选通信号。在单片机读外部程序存储器时,此引脚输出脉冲的负跳沿作为读外部程序存储器的选通信号。此引脚接外部程序存储器的OE(输出允许)端;在访问外部RAM时PSEN信号无效[9]。

2.2.3并行I/O引脚

P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式8个TTL逻辑门电路,对端口写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据复用,在访问期间激活内部上拉电阻。

在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入

6

口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时输出一个电流。

FLASH编程和程序校验期间,P1接收低8位地址。

P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉倒高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口输出P2锁存器的内容。

FLASH编程或校验时,P2亦接收高位地址和一些控制信号。

P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动4个TTL逻辑门电路。对P3口写“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流[10]。

P3口除了作为一般的I/O线外,更重要的用途是它的第二功能,如表1所示[11]:

表1 P3口的第二功能

端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

第二功能 RXD(串行输入口) TXD(串行口输出口) INT0 (外中断0) INT1(外中断1) T0(定时/计数器0) T1(定时/计数器1) WR(外部数据存储器写选通) RD(外部数据存储器读选通)

此外,P3口还接收一些用于FLASH闪存存储器编程器和程序校验的控制信号。

2.3 AT89C51的最小系统

AT89C51的最小系统由单片机连接复位电路和晶振电路组成如图3、4所示:

7

图3 单片机复位电路

复位电路

复位原理:复位操作有手动复位和上电自动复位,智能电热壶的设计采用的是一种上电自动复位电路,在复位电路上电的瞬间,RC电路充电,由于电容上电压不能突变,所以RST引脚出现高电平。RST引脚出现的高电平将会随着对电容C的充电过程而逐渐回落,为了保证RST引脚出现的高电平持续两个机器周期以上的时间,需要合理地选择其电阻和电容的参数值,而电阻和电容参数的取值随着时钟频率的不同而变化[12]。

在单片机应用系统中,除单片机本身需要复位外,外部扩展接口电路等也需要复位,所以系统需要一个同步的复位信号。为了保证系统可靠工作,CPU应在系统所有芯片的初始化完成后再对其进行读写。因此硬件电路应保证单片机复位后CPU开始工作时,所有的外部扩展接口电路全部复位完毕,即外部扩展接口电路的复位操作完成在前,单片机的复位操作完成在后,也可以采用软件的方式提供这种保证,在主程序的开始部分加入延时,然后再对单片机进行初始化操作。

8

[13]

复位状态:单片机复位后,进入初始状态。初始化后,其状态如下。

(1)程序计数器PC:0000H,即复位后单片机从0000H单元开始执行程序。一般在0000H单 元 存放一条转移指令,转移到主程序中;

(2)P0一P3口:FFH,即各U0锁存器置1,可以直接输入;

(3)堆栈指针SP:07H,即堆栈的栈顶地址为07H单元,07H单元为工作寄存器区,一般需 要堆栈时,将SP赋值,应超过30H; (4)其余的SFR:均为00H; (5)片内MM:为随机值。

内部寄存器的复位状态

9

图4:单片机的时钟电路

时钟电路

5l单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTALl和XTAL2分别是此放大器的输入端和输出端。51单片机的时钟可由内部方式或外部方式产生,智能电热壶的设计当中采用的是内部方式。内部时钟方式的硬件电路如图4所示。在XTALl和XTAL2引脚接上一个晶振,在晶振上加上两个稳定频率的C1和c2,对外接电容值虽然没有严格的要求,但电容的大小多少会影响振荡频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性,其典型值为30pF。晶振频率典型值为6MHz-12MHz[14]。

3 智能电热壶的基本数据

10

经过几十年的发展,中国电热壶市场已经进入成熟期。前些日,《电器》记者在采访中了解到,目前国内城镇居民对电热壶产品的认知率已超过70%,这类产品的国内市场占有率已从1999年的10.99%上升到2005年的23.45%。而进一步的统计数字还显示,1999—2005年电热水壶产量的复合增长率为26.36%,产值的复合增长率为35.00%,产量、出口量和内销量同步迅速增加。行业内预测认为,2006年国内电热水壶市场将会迎来历史上第一个快速成长期,2006年电热水壶预计销量在9OO万台左右,市场规模将达20亿元。市场迅猛的增长使电热水壶这个本无太多看点的小家电产品开始变得引人注目[15]。

有数据显示,目前全球90%以上的电热水壶产品来自中国。广东东菱凯琴集团董事长助理潘卫东告诉记者:“目前国产电热水壶在国际市场

上占据主导地位,许多企业的产品质量已经完全符合欧美市场对电热水壶产品环保、健康、安全等方面的要求,总体出口逐年增加,我们公司每年都有1200万台电热壶走上国际市场[16]。

3.1智能电热壶的控制原理

自动报警功能:当智能电热壶加热到设定的温度后,用AT89C51单片机产生“嘀、嘀、…”报警声从P1.0端口输出,产生频率为1KHz,根据图5可知:1KHZ方波从P1.0输出0.2秒,接着0.2秒从P1.0输出电平信号,如此循环下去,就形成我们所需的报警声了,这样就可以达到提醒用户的作用。

智能控制功能:当智能电热壶加热到设定的温度后,AT89C51单片机将会从P1.3端口输出一个电平,用来触发可控硅,当可控硅在触发电流的作用下导通时,控制电路开始工作,此时继电器的线圈通电,断开加热电路,电热壶开始停止加热。以达到智能控制的作用,以免用户在未听到报警声,但是电热壶还在加热,导致火灾等突发事件。有了智能控制系统以后可以很好的保证安全性能,同时还可以起到节能的作用,比较人性化。

3.2 报警电路的实现

3.2.1报警电路控制元件的选择

(1)音频放大模块

LM386是一种低电压通用型音频集成功率放大器, 广泛应用于收音机、对讲机和信号发生器中;内部设定 增益为20dB,当在1与8引出端外接电容与电阻时, 其增益增加可达200dB以内的任何值。

当输出自动偏置到电源电压一半,输入端参考地。6V 电源工作时静态功率只有24mW。LM386的外形与管脚图

如图5、6所示,它采用8脚双列直插式塑料 图5:LM386外形与管脚图

11

图6:LM386的管脚图与内部电路图

12

表一:LM386的电特性

(2)扬声器

扬声器又称“喇叭”。是一种十分常用的 电声换能器件,在发声的电子电气设备 中都能见到它,如图7。

图7:扬声器。

扬声器的主要性能指标:

扬声器的主要性能指标有:灵敏度、频率响应、额定功率、额定阻抗、指向性以及失真度等参数。

额定功率:扬声器的功率有标称功率和最大功率之分。标称功率称额定功率、不失真功率。它

13

是指扬声器在额定不失真范围内容许的最大输入功率,在扬声器的商标、技术说明书上标注的功率即为该功率值。最大功率是指扬声器在某一瞬间所能承受的峰值功率。为保证扬扬器工作的可靠性,要求扬声器的最大功率为标称功率的2~3倍。

额定阻抗:扬声器的阻抗一般和频率有关。额定阻抗是指音频为400Hz时,从扬声器输入端测得的阻抗。它一般是音圈直流电阻的1.2~1.5倍。一般动圈式扬声器常见的阻抗有4Ω、8Ω、16Ω、32Ω等。

频率响应:给一只扬声器加上相同电压而不同频率的音频信号时,其产生的声压将会产生变化。一般中音频时产生的声压较大,而低音频和高音频时产生的声压较小。当声压下降为中音频的某一数值时的高、低音频率范围,叫该扬声器的频率响应特性。 理想的扬声器频率特性应为20~20KHz,这样就能把全部音频均匀地重放出来,然而 这是做不到的。每一只扬声器只能较好地重放音频的某一部分。

失真:扬声器不能把原来的声音逼真地重放出来的现象叫失真。失真有两种:频率失真和非线性失真。频率失真是由于对某些频率的信号放音较强,而对另一些频率的信号放音较弱造成的,失真破坏了原来高低音响度的比例,改变了原声音色。而非线性失真是由于扬声器振动系统的振动和信号的波动不够完全一致造成的,在输出的声波中增加一新的频率成分。

指向特性:用来表征扬声器在空间各方向辐射的声压分布特性,频率越高指向性越狭,纸盆越大指向性越强。

扬声器参数:

扬声器的参数是指采用专用的扬声器测试系统所测试出来的扬声器具体的各种性能参数值.其常用的参数主要包括:Z,Fo,η0,SPL,Qts,Qms,Qes,Vas,Mms,Cms,Sd,BL,Xmax,Gap gauss.以下分别是这几种参数其物理意义。

Z:是指扬声器的电阻值,包括有:额定阻抗和直流阻抗.(单位:欧姆/ohm),通常指额定阻抗。扬声器的额定阻抗Z:即为阻抗曲线第一个极大值后面的最小阻抗模值,即图1中点B所对应的阻抗值。它是计算扬声器电功率的基准。

直流阻抗DCR:是指在音圈线圈静止的情况下,通以直流信号,而测试出的阻抗值. 我们通常所说的4欧或者8欧是指额定阻抗。(ACR交流阻抗:音圈线圈动态下所测出的阻值)

Fo(最低共振频率)是指扬声器阻抗曲线第一个极大值对应的频率。

单位:赫兹(Hz)扬声器的阻抗曲线图是扬声器在正常工作条件下,用恒流法或恒压法测得的扬声器阻抗模值随频率变化的曲线。

η0(扬声器的效率):是指扬声器输出声功率与输入电功率的比率。

SPL(声压级):是指喇叭在通以额定阻抗1W的电功率的电压时。在参考轴上与喇叭相距1m的点上。

单位:分贝(dB)产生的声压。 Qts :扬声器的总品质因数值。 Qms:扬声器的机械品质因数值。 Qes:扬声器的电品质因数值。

Vas(喇叭的有效容积):是指密闭在刚性容器中空气的声顺与扬声器单元的声顺相等时的容积。 Mms(振动质量):是指扬声器在运动过程中参与振动各部件的质量总和,包括鼓纸部分,音圈,弹波以。

单位:克(gram).及参与振动的空气质量等。 Cms(力顺):是指扬声器振动系统的支撑部件的柔顺度。其值越大,扬声器的整个振动系统越软。 单位:毫米/牛顿(mm/N)

Sd(振动面积):是指在扬声器的振动过程中,鼓纸/振膜的有效振动面积。单位:平方米(m2).。 BL(磁力):间隙磁感应强度与有效音圈线长的乘积。单位:(T*M)。

1

Xmax:音圈在振动过程中运动的线性行程。单位:毫米(mm)。 Gap Gauss:间隙磁感应强度值.单位:特斯拉(Tesla)。

所选用的扬声器相关参数:

品牌

JM

型号

4070

种类 纸盆式(直接辐射) 用途 扩音

外形 椭圆形 组成方式 组合式

额定功率 2(W) 额定阻抗 8(Ω)

频率响应 2300(kHz) 指向性 全指向

灵敏度 85(dB/W) 性噪比 95(dB)

谐波失真 3(TMD%)

3.2.2报警电路的工作原理

3.2.3报警电路的电路设计

硬件设计方法 :

(1) 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN

端口上;

(2) 在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭; 程序设计方法

(1) 我们用单片机实定时/计数器T0来产生700HZ和500HZ的频率,根据定时/计数器T0,

我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经 过4次250us的定时;

(2) 在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态; (3) “叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以

2

250us为基准定时2000次才可以。

图5:智能电热壶的报警电路

LCD12864在市面上主要分为两种,一种是采用ST7920控制器,另一种是采用KS0108控制器,对于本设计到底采用哪种控制器,我们就有了两种方案。 方案一:

3

我们采用ST7920控制器,ST7920 控制器系列中文图形液晶模块的软件特性主要由ST7920 控制驱动器决定。ST7920 同时作为控制器和驱动器,它可提供33 路common 输出和64 路segment输出。

ST7920 可以分别控制显示三种字型,分别是CGROM(自带字库),HCGROM 和CGRAM(自编字库)的字型。在液晶屏上显示8×16 点阵的字符和16×16 点阵的汉字时,首先要按照系统的要求完成显示光标的位置和显示方式等功能设置,这由指令寄存器完成;然后向数据寄存器(DDRAM)中写入相应字符或汉字的位元资料(可认为是字符地址)以便在LCD 上显示。

具体说来,显示半宽字型的数字、英文、符号等ASCII 时,先根据功能需要向指令寄存器写功能设置,再将8 位的位元资料写入到DDRAM 即可,范围为00H~07FH 的编码。显示中文字型时,也是先向指令寄存器写功能设置,将16 位的位元资料写入到DDRAM 中,在写入位元资料的时候,先写高八位,再写低八位,并且是连续输入。起首地址应该是个半宽数字字符的偶数倍,否则系统将把半宽的数字字符的编码默认为汉字的高位元组,使显示产生错误。所以,在半宽字型和中文字型混合显示的时候,如果遇到在奇数个半宽地址显示时,通常是用占半宽字节的空格来跳过。由于它带有中文字库字模,价格略高一点。当显示汉字信息时,只需调用其字库内的字码[9]。 方案二:

另一种就是采用KS0108控制器,KS0108的主要特点是: 1)内藏64 ×64 = 4 096位显示RAM, RAM中每位数据对应LCD屏上一个点的亮、暗状态; 2) KS0108具有64路列驱动输出; 3) KS0108的读写操作时序与51单片机相容,可直接与51单片机接口相连; 4) KS0108及其兼容控制驱动器的占空比为1 /32~1 /64。

KS0108控制器不带字库,8 位并行数据接口,适配M6800 系列时序。拥有64×64 位(512 字节)的显示存储器,其数据直接作为显示驱动信号。在显示数据时,需要将显示目标的点阵信息输入DDRAM,然后通过读写命令将这些点阵信息按一定的规则显示在液晶面板上。对应的液晶屏点阵上方为低位,下方为高位。因此在横向上(也就是Y)就一共是128列数据。分为CS1和CS2两个64列来写入。在竖方向上(也就是X)一字节数据显示8个点,竖向64个点分为8个字节,称做8页(X=0-7)。

通过上述简单的比较,我们不难发现这两种控制器的驱动能力相差不大,也都能完成我们的设计。其中ST7920自带中文字库,相对于KS0108将会使设计更简单。但是,通常我们不需要显示大量的汉字,加之带字库的控制器它价格较高,并且不带字库的控制器更有利于我们对液晶显示的规则的理解,因此,我们选择KS0108控制器

3.3 控制电路的实现

3.3.1 控制电路控制元件的选择

(1)可控硅

可控硅(Silicon Controlled Rectifier)简称SCR,是一种大功率电器元件,也称晶闸管。它具有体积小,效率高,

寿命长等优点。在自动控制系统中,可作为大功率驱动器件,实现用小功率控件控制大功率设备。它在交直流电机调速系统、调功系统以及随动系统中得到了广泛的应用。可控硅分单向可控硅和双向可控硅两种。

本次设计的控制电路中将采用单向可控硅,单向可控硅的表示符号,如图4.21(a)所示。它有3个引脚,其中A为阳极,K为阴极,O为控制极。它由4层半导体材料组成,可等效于和两个三极,如图所示。从图中所示看出,它的符号基本上与前面介绍过的大功率场效应开关管的符号相同,但它们的工作原理却有所不同。当阳极电位高

4

于阴极电位且控制极电流增大到一定值(触发电流)时,可控硅由截止转为导通。一旦导通后,即使为零,可控硅仍保持导通状态,直到阳极电位小于或等于阴极电位时为止。即阳极电流小于维持电流时,可控硅才由导通变为截止。其特性曲线如图所示。

单向可控硅的表示符号、与场效应管的比较

单向可控硅的特性曲线 可控硅的实体图

(2)固态继电器

输入固态继电器是近年来广泛使用的新型电子继电器和开关量输出控制元件。它的输入控制电流比较小,用TTL,HTL,CMOS电路或者增加简单的辅助电路就可以十分方便地直接启动;它适用于在微机测控系统中作为输出通道的控制元件;它利用晶体管或可控硅进行无触点输出,具有无噪声、无抖动、无回跳、速度快、体积小、重量轻、寿命长、工作可靠的特点,而且耐冲击、抗潮湿、抗腐蚀;在单片机应用系统中,固态继电器已逐渐取代传统的继电器和磁力启动器。固态继电器按其负载类型分类,可以分为直流型(DC—SSR)和交流型(AC—SSR)两类。直流固态继电器(DC—SSR)的内部原理及外引脚图如图18—43所示。

5

交流SSR的原理图 用于小交流负载的方法

从输入的角度分析,因为它的输入为一光耦,根据前面的分析,他它可以用OC们或晶体管直接驱动,其驱动电流一般小于15mA,输入电压在4—32V之间。依照这个参数,应用时可选用合适的工作电压,并配以适当的限流电阻。驱动交流型SSR元件时,它的输入电压为4—32V,开关时间小于20us,输入电流小于500mA,可以加接一个晶体管直接驱动;交流SSR元件输出时,可用于AC 220V或380V市电负载场合,输出断态电流小于10mA。因为SSR的输出开关器件是可控硅,所以依旧存在通态压降和断态漏电流的问题。SSR的通态压降一般小于2V,断态漏电流通常为5—10mA。在应用系统中,一定要注意这两个参数的值,特别在控制小功率外设时,不要发生误动作。

设计时,应当让SSR的开关电流至少为断态电流的10倍。若负载电流低于该数值,则应在负载两端并联一个电阻R,以提高开关电流,如图18—47所示。当负载为感性时,也可在负载两端并联电阻,以防误动作。

3.4 LCD12864引脚连接图:

本设计中LCD12864引脚连接图如图5所示:

6

P2口 ? DB0 ? DB7 P3.0 P3.1 P3.2 P3.3 P3.4 E R/W RS CS1 CS2 Vcc R1 RST VDD A K Vee Vo Vss R2 GND

图5 LCD12864引脚连接图

具体的电路还有两个电阻:一个背光限流电阻;一个液晶驱动电压调节电阻。背光电阻任何时候需在LEDA引脚与电源之间串上个100欧的电位器接上电源,调节电位器到合适亮度,具体值最好是到调试完程序能够正常显示后再将阻值确定换成固定电阻。

液晶驱动电压的调整在数据线、电源线都接好的前提下Vee(-15v)和地之间接一个电位器,中间接Vo,通过调节电位器来调节Vo上的电压。当Vo上为-15V时为全暗(液晶显示为全黑),当Vo为0 V时为全亮。调节电位器使屏幕从全暗刚好变到亮时,便可进行程序的调试。待屏幕显示正常后,进行对比度的细调,然后测量这两边的阻值在地和Vo之间、Vo和Vee之间换成两个固定电阻焊上就好了[10]。

注意在Vo的电压是在一个很小的范围有效,一般在-2.2V~-2.5V这个范围,仔细调节Vo和地之间的电阻使Vo上的电压在2.3V。

3.5 LCD12864的内部结构

7

LCD12864屏是分为左、右两块控制的,其中IC1,IC2为列驱动,IC3为行驱动。CS1,CS2为片选信号,选通组合信号CS1,CS2=00时,同时选中;CS1,CS2=01时,选通IC1;CS1,CS2=10时,选通IC2。如图6所示:

图6 LCD12864内部结构框图

3.6 12864内部功能器件:

LCD12864包括IC1、IC2、IC3三个驱动器,它们都是由指令寄存器、数据寄存器、BF标志、显示控制触发器、XY地址计数器、DDRAM以及Z地址计数器等器件组成,了解这些器件有利于我们编程

[11]

IR是用于寄存指令码,与数据寄存器数据相对应。当D/I=0时,在E信号下降沿的作用下,指

指令寄存器(IR) 令码写入IR。 数据寄存器(DR)

DR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7~DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。 忙标志:BF

BF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。利用STATUS READ指令,可以将BF读到DB7总线,从而检验模块之工作状态。 显示控制触发器DFF

此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY OFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。DDF的状态是指令DISPLAY ON/OFF和RST信号控制的。 XY地址计数器

8

XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。X地址计数器是没有记数功能的,只能用指令设置。Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。 显示数据RAM(DDRAM)

DDRAM是存储图形显示数据的。数据为1表示显示选择,数据为0表示显示非选择。DDRAM与地址和显示位置的关系见表3。 Z地址计数器

Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。

Z地址计数器可以用指令DISPLAY START LINE预置。因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。

3.7 LCD1286指令系统

该类液晶显示模块的指令系统比较简单,总共只有7种。其指令表如表2所示:

表2 LCD12864指令表[12]

指令

R/W

显示开关 设置起始行 设置页X地址 设置列Y地址 读状态 写显示数据 读显示数据

0 0 0 0 1 0 1

D/I 0 0 0 0 0 1 0

DB7 0 1 1 0 BUSY

DB6 0 1 0 1 0

ON/OFF 1

指令码

DB5 1

DB4 1

DB3 1

DB2 1

DB1 1

DB0 1/0

显示起始行(0~63)

1

1

X地址(0~7)

Y地址(0~63)

RST

0

0

0

0

写数据 读数据

其功能详解如下:

显示开关控制(DISPLAY ON/OFF) 代码形式:

R/W 0

D/I 0

DB7 0

DB6 0

DB5 0

DB4 0

DB3 0

DB2 0

DB1 0

DB0 D

D=1:开显示(DISPLAY ON) 意即显示器可以进行各种显示操作; D=0:关显示(DISPLAY OFF) 意即不能对显示器进行各种显示操作。

9

设置显示起始行(DISPLAY START LINE) 代码形式: R/W 0

D/I 0

DB7 1

DB6 1

DB5 A5

DB4 A4

DB3 A3

DB2 A2

DB1 A1

DB0 A0

前面在Z地址计数器中已经描述了显示起始行是由Z地址计数器控制的。A5~A0这 6位地址自动送入Z地址计数器,起始行的地址可以是0~63的任意一行。有规律地改变显示起始行,就可以使LCD实现显示滚屏的效果。

设置页地址(SET PAGE “X ADDRESS”) 代码形式: R/W 0

D/I 0

DB7 1

DB6 0

DB5 1

DB4 1

DB3 1

DB2 A2

DB1 A1

DB0 A0

所谓页地址就是DDRAM的行地址,8行为一页,模块共64行即8页,A2~A0表示0~7页。读写数据对地址没有影响,页地址由本指令或RST信号改变复位后页地址为0。页地址与DDRAM的对应关系如下表所示:

表3 DDRAM地址表

CS1=1 Y= X= 0 ↓ 0 ↓ 1 ↓ ?? DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 62 ↓ 63 ↓ 0 ↓ 1 ↓ DB0 DB0 DB7 DB7 DB0 DB0 ↓ ↓ DB7 DB7 ↓ ↓ DB0 DB0 DB0 DB0 DB7 DB7 DB7 DB7 DB0 DB0 DB0 DB0 ↓ ↓ ↓ ↓ DB7 DB7 DB7 DB7 DB0 DB0 DB0 DB0 ↓ ↓ ↓ ↓ DB7 DB7 DB7 DB7 CS2=1 ?? DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 62 ↓ 63 ↓ 行号 DB0 DB0 DB7 DB7 DB0 DB0 ↓ ↓ DB7 DB7 DB0 DB0 ↓ ↓ DB7 DB7 0 ↓ 7 8 ↓ 55 56 ↓ 63 X=7 DB0 DB0 DB7 DB7 设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样单片机就可以用读、写指令读出该单元中的内容或向该单元写进一个字节数据。

设置Y地址(SET Y ADDRESS) 代码形式:

10

R/W 0

D/I 0

DB7 0

DB6 1

DB5 A5

DB4 A4

DB3 A3

DB2 A2

DB1 A1

DB0 A0

此指令的作用是将A5~A0送入Y地址计数器,作为DDRAM的Y地址指针。在对DDRA M进行读写操作后,Y地址指针自动加1,指向下一个DDRAM单元。 读状态(STATUS READ) 代码形式: R/W 0

D/I 0

DB7 BUSY

DB6 0

DB5 ON/0F

DB4 RST

DB3 0

DB2 0

DB1 0

DB0 0

该指令用来查询液晶显示模块内部控制器的状态,当R/W=1,D/I=0时,在E信号为“H”的作用下,状态分别输出到数据总线(DB7~DB0)的相应位。

BUSY=1:内部操作 BUSY=0:准备就绪 ON/OFF=1:显示开 ON/OFF=0:显示关 RST=1:复位 RST=0:正常工作

在BUSY和RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。因此在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作。 写显示数据(WRITE DISPLAY DATE) 代码形式: R/W 0

D/I 1

DB7 D7

DB6 D6

DB5 D5

DB4 D4

DB3 D3

DB2 D2

DB1 D1

DB0 D0

D7~D0为显示数据,此指令把D7~D0写入相应的DDRAM单元,Y地址指针自动加1。 读显示数据(READ DISPLAY DATE) 代码形式: R/W 1

D/I 1

DB7 D7

DB6 D6

DB5 D5

DB4 D4

DB3 D3

DB2 D2

DB1 D1

DB0 D0

此指令把DDRAM的内容D7~D0读到数据总线DB7~DB0,Y地址指针自动加1。必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据[13]。

3.8 AT89C51时序

11

机器周期

CPU完成一个基本操作所需要的时间称为机器周期。在单片机中常把执行一条指令的过程分为若干阶段。每一个阶段为一个基本操作,如取指令、读或写数据等。51单片机每12个时钟周期为一个机器周期,即TcY=12/fosc。若fosc=6MHz,则 Tcy=2us;fosc=12MHz,则Tcy=1us。

AT89C51单片机的一个机器周期包括12个时钟周期,分为6个状态:s1~s6。每个状态又分为两拍,称为P1和P2。因此一个机器中的12个时钟周期表示为:S1P1、S1P2、S2P1、S2P2、?、S6P2。如图2—6所示。

写操作时序

图7 写操作时序图

3.8.2 读操作时序

图8 读操作时序图

12

4 具体设计

4.1 硬件连接总原理图

本系统在Proteus中设计的线路连接如图9所示:

13

图9 系统原理图

4.2 程序设计 4.2.1 程序流程图

智能电热壶控制系统总流程如图10所示[15]:

14

开始 初始化 复位 保持 显示左屏 N Y 显示右屏 延时 写左屏 Y 写右屏 N 滚动 P2.7为1? 开始

图10 程序流程图

4.2.2总程序及各函数功能简介

sbit rw=0xb1; //定义各端口 sbit rs=0xb2;

15

sbit cs2=0xb3; sbit cs1=0xb4; sbit busy=0xa7;

char code huan[]={0x04,0x34,0xc4,0x04,0xc4,0x3c,0x20,0x10, 0x0f,0xe8,0x08,0x08,0x28,0x18,0x00,0x00, 0x10,0x08,0x06,0x01,0x82,0x8c,0x40,0x30, 0x0c,0x03,0x0c,0x10,0x60,0xc0,0x40,0x00};

char code ying[]={0x40,0x42,0x44,0xc8,0x00,0xfc,0x04,0x02, 0x82,0xfc,0x04,0x04,0x04,0xfe,0x04,0x00, 0x00,0x40,0x20,0x1f,0x20,0x47,0x42,0x41, 0x40,0x7f,0x40,0x42,0x44,0x63,0x20,0x00};

char code guang[]={0x40,0x40,0x42,0x44,0x58,0xc0,0x40,0x7f, 0x40,0xc0,0x50,0x48,0x46,0x64,0x40,0x00, 0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00, 0x00,0x3f,0x40,0x40,0x40,0x40,0x70,0x00};

char code lin[]={0x00,0xfc,0x00,0xff,0x40,0x20,0x10,0x0c, 0x2b,0x48,0xc8,0x08,0x08,0x8c,0x08,0x00, 0x00,0x1f,0x00,0xff,0x00,0xff,0x41,0x41, 0x41,0x7f,0x41,0x41,0x41,0xff,0x01,0x00};

char code an[]={0x90,0x8c,0x84,0x84,0x84,0x84,0xf5,0x86, 0x84,0x84,0x84,0x84,0x84,0xd4,0x8c,0x00, 0x00,0x00,0x80,0x84,0x46,0x49,0x28,0x10, 0x10,0x28,0x47,0xc0,0x00,0x00,0x00,0x00};

char code hui[]={0x20,0x10,0x8c,0x63,0x5c,0xd0,0x5f,0x50, 0xdc,0x20,0x90,0x1f,0x10,0xf0,0x10,0x00, 0x02,0x01,0xff,0x40,0x29,0x8d,0xfb,0x0d, 0xa8,0x40,0x27,0x18,0x2c,0xc3,0x40,0x00};

char code ke[]={0x24,0x24,0x24,0xa4,0xfe,0xa3,0x22,0x00, 0x24,0x48,0x00,0xff,0x00,0x80,0x00,0x00, 0x10,0x08,0x06,0x01,0xff,0x00,0x01,0x02, 0x02,0x02,0x02,0xff,0x01,0x01,0x01,0x00};

char code ji[]={0x10,0x10,0x10,0xff,0x10,0x10,0x88,0x88, 0x88,0xff,0x88,0x88,0x8c,0x08,0x00,0x00, 0x04,0x44,0x82,0x7f,0x01,0x80,0x81,0x46, 0x28,0x10,0x28,0x26,0x41,0xc0,0x40,0x00};

char code xue[]={0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96, 0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00, 0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7e, 0x06,0x05,0x04,0x04,0x04,0x06,0x04,0x00};

char code yuan[]={0x00,0xfe,0x22,0x5a,0x96,0x0c,0x24,0x24, 0x25,0x26,0x24,0x34,0xa4,0x14,0x0c,0x00, 0x00,0xff,0x04,0x08,0x87,0x81,0x41,0x31, 0x0f,0x01,0x3f,0x41,0x41,0x41,0x70,0x00};

char code zhi[]={0x40,0x60,0x5e,0x48,0x48,0xff,0x48,0x4c, 0x68,0x40,0xf8,0x00,0x00,0xff,0x00,0x00,

16

0x00,0x00,0x3f,0x01,0x01,0xff,0x11,0x21, 0x1f,0x00,0x07,0x40,0x80,0x7f,0x00,0x00};

char code zuo[]={0x80,0x40,0x20,0xf8,0x87,0x40,0x30,0x0f, 0xf8,0x88,0x88,0xc8,0x88,0x0c,0x08,0x00, 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00, 0xff,0x08,0x08,0x08,0x0c,0x08,0x00,0x00};

char code zhe[]={0x20,0x20,0x24,0x24,0x24,0xa4,0x7f,0x24, 0x34,0x2c,0x24,0xa2,0x20,0x30,0x20,0x00, 0x10,0x08,0x04,0x02,0xff,0x49,0x49,0x49, 0x49,0x49,0x49,0xff,0x01,0x00,0x00,0x00};

char code mh[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x33,0x33,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

char code cheng[]={0x24,0x24,0xa4,0xfe,0xa3,0x22,0x20,0x7e, 0x42,0x42,0x42,0x42,0x42,0x7f,0x02,0x00, 0x08,0x06,0x01,0xff,0x00,0x43,0x41,0x49, 0x49,0x49,0x7f,0x49,0x4d,0x69,0x41,0x00};

char code sai[]={0x08,0x86,0x82,0xaa,0xaa,0xfe,0xaa,0xab, 0xaa,0xfe,0xaa,0xaa,0x82,0x8a,0x06,0x00, 0x08,0x08,0x04,0x82,0x9f,0x42,0x42,0x3a, 0x42,0x42,0x9f,0x82,0x04,0x0c,0x04,0x00};

char code dian[]={0x00,0xf8,0x48,0x48,0x48,0x48,0xff,0x48, 0x48,0x48,0x48,0xfc,0x08,0x00,0x00,0x00, 0x00,0x07,0x02,0x02,0x02,0x02,0x3f,0x42, 0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00};

char code zi[]={0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xe2, 0xa2,0x92,0x8a,0x86,0x80,0xc0,0x80,0x00, 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

char code xin[]={0x80,0x40,0x20,0xf8,0x07,0x24,0x24,0x24, 0x25,0x26,0x24,0x24,0xb4,0x26,0x04,0x00, 0x00,0x00,0x00,0xff,0x00,0x01,0xfd,0x45, 0x45,0x45,0x45,0x45,0xfd,0x01,0x00,0x00};

char code xi[]={0x00,0x00,0x00,0xfc,0xa4,0xa6,0xa5,0xa4, 0xa4,0xa4,0xa4,0xfe,0x04,0x00,0x00,0x00, 0x40,0x30,0x00,0x77,0x84,0x84,0x8c,0x94, 0xb4,0x84,0x84,0xe7,0x00,0x10,0x60,0x00};

char code gong[]={0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xfc, 0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3f, 0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00};

void pulse() //下降沿生成函数,保持数据 {

17

e=1; e=0; }

void busy_check(char right) //检查是否忙函数,即检查P2.7口 {

P2=0xff;

if (right==1) //检查左屏 {

P3=0x13; while(!busy); }

if (right==0) // {

P3=0x0b;

while(!busy); } }

void cmd_w(char cmd,char right) // {

busy_check(right);

if (right==1) // {

P3=0x10; }

if (right==0) // {

P3=0x08; P3=0x08; } P2=cmd; pulse(); }

void data_w(char dat,char right) // {

busy_check(right);

if (right==1) // {

P3=0x14; }

if (right==0) // {

P3=0x0c;

检查右屏 写指令函数 写左屏 写右屏 写数据函数 写左屏 写右屏 18

} P2=dat; pulse(); }

void lcd_init() //LCD初始化函数,并驱动全屏 {

unsigned int i;

cmd_w(0x3e+1,0); //显示开关

cmd_w(0xc0+0,0); //修改显示起始行 cmd_w(0xb8+0,0); //修改页地址,第1页 cmd_w(0x40+0,0); //修改列地址,第1列 cmd_w(0x3e+1,1); cmd_w(0xc0+0,1); cmd_w(0xb8+0,1); cmd_w(0x40+0,1); for(i=0;i<256;i++) {

data_w(0x00,0); }

cmd_w(0xb8+4,0); cmd_w(0x40+8,0); for(i=0;i<256;i++) {

data_w(0x00,0); }

for(i=0;i<256;i++) {

data_w(0x00,1); }

cmd_w(0xb8+4,1); cmd_w(0x40+8,1); for(i=0;i<256;i++) {

data_w(0x00,1); } }

void hanzi_w(char hang,char lie,char zhi[32]) // 汉字显示函数 {

unsigned char i;

if(lie<4) //读写左屏上半部分数据 {

cmd_w(0xb8+2*hang,0); cmd_w(0x40+16*lie,0);

19

for(i=0;i<16;i++) data_w(zhi[i],0); }

else //读写右屏上半部分数据 {

cmd_w(0xb8+2*hang,1); cmd_w(0x40+16*(lie-4),1); for(i=0;i<16;i++) data_w(zhi[i],1); }

if(lie<4) // {

cmd_w(0xb8+2*hang+1,0); cmd_w(0x40+16*lie,0); for(i=16;i<32;i++) data_w(zhi[i],0); }

else // {

cmd_w(0xb8+2*hang+1,1); cmd_w(0x40+16*(lie-4),1); for(i=16;i<32;i++) data_w(zhi[i],1); } }

void delay(unsigned char a) // {

unsigned char i,j; for(i=0;i

for(j=0;j<200;j++) ; }

void main() //主函数 {

unsigned char i; lcd_init();

hanzi_w(0,0,huan); hanzi_w(0,1,ying); hanzi_w(0,2,guang); hanzi_w(0,3,lin); hanzi_w(1,2,an); hanzi_w(1,3,hui); hanzi_w(1,4,ke);

读写左屏下半部分数据 读写右屏下半部分数据 延时函数 20

hanzi_w(1,5,ji); hanzi_w(1,6,xue); hanzi_w(1,7,yuan); hanzi_w(2,1,zhi); hanzi_w(2,2,zuo); hanzi_w(2,3,zhe); hanzi_w(2,4,mh); hanzi_w(2,5,cheng); hanzi_w(2,6,sai); hanzi_w(3,1,dian); hanzi_w(3,2,zi); hanzi_w(3,3,xin); hanzi_w(3,4,xi); hanzi_w(3,5,gong); hanzi_w(3,6,cheng);

while(1) // {

delay(200);

cmd_w(0xc0+i,0); cmd_w(0xc0+i,1); i++;

if(i==64) i=0; }

}

5 系统调试与结果

滚动设置 21

[16]

此程序在keil和proteus的联合开发平台上测试,仿真的过程中每个引脚旁边会出现一个小

方块,红色的方快表示高电平,蓝色的表示低电平。 通过方块颜色的变化可以很方便地知道每个引脚电平的变化,从而能对系统的运行有更直观的了解,这对程序的调试有很大的帮助[17]。

本设计调试结果如图11所示:

图11 系统调试结果

6 总结

通过本次智能电热壶的设计,我不仅初步了解了单片机的基本功能,同时也学会了不少51单片

22

机的外围硬件电路设计和编程知识,在对AT89C51单片机的实际应用当中,又使我对单片机的原理和结构都有了更深的理解,真正做到了学以致用、融会贯通,其中在对智能电热壶的电路系统的设计、仿真和调试的过程中,使得我对protues和keil的联合开发使用有了进一步地提高。

本次的毕业设计为我实际应用、开发单片机系统提供了一次很好的舞台,其间也遇到过各种各样的疑惑和不解,正这些困难和指导老师及同学们的帮助,让我有了一次次地突破和提高,最终不仅实现了设计目标,也提高了自己的综合运用能力。

7 致谢

此次我设计的题目为智能电热壶的设计,基于单片机AT89C51的应用,从外部硬件电路的设计,到软件程序的编写,指导老师给了我很大的帮助和支持,在学习上的帮助,在制作设计的指导,在论文编写中的督促,使得我更有效率、轻松地面对即将毕业论文的准备和答辩。当然,身边的同学们和其他老师也给了我很大帮助,在次对所以帮助和支持我的老师和同学表示真挚地感谢。

通过这次的毕业论设计,我不仅学到了作为一名科研人员、设计人员所应该具备的基本素质,同时也锻炼了我认真负责的态度和一丝不苟的求实精神。其中张老师在学术方面和设计方面所表现出来的严谨的治学之道更让我收益匪浅,再次表示感谢!

23

参考文献

[1] 房小翠,单片机应用系统设计技术,北京:国防工业出版社,2003:97-100. [2] 李广弟,朱月秀,单片机基础第三版.北京:北京航空航天大学出版社 , 2007:4-5. [3] 汪文,陈林,单片机原理及应用.武汉:华中科技大学出版社,2007:2-3. [4] 张毅刚,彭喜元,单片机原理及应用. 北京:人民邮电出版社,2008:4-5. [5] 郑毛祥,单片机应用基础. 北京:人民邮电出版社, 2009:6-8.

[6] 徐惠民,安德宁编著. 单片微型计算机原理、接口及应用.北京:北京邮电大学出版社, 2000: 50. [7] 李华等.MCS51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,2002. [8] 张毅刚,彭喜元编著. 单片机原理及接口技术. 北京:人民邮电出版社, 2008:12-15. [9] 张星.基于PROTUES的8051单片机实例教程.北京:电子工业出版社,2006:5-12. [10] 唐德礼等主编. 单片机原理及应用. 武汉:华中科技大学出版社, 2005:128-132. [11] 李群芳,黄建编著. 单片微型计算机与接口技术. 北京:电子工业出版社, 2001:74.

[12] 马淑华,王凤文,张美金编著. 单片机原理与接口技术(第2版). 北京:北京邮电大学出版社, 2007: 26.

[13] 王跃宗,刘京会编著. TMS320DM642 DSP应用系统设计与开发. 北京市:人民邮电出版社, 2009. [14] 王文杰,许文斌主编. 单片机应用技术. 北京市:冶金工业出版社, 2008:41-24. [15] 赵明,小产品酝酿大文章,北京:电器杂志社,2006:48-49. [16] 王成,电热壶机构的一种创新设计.北京:电器杂志社,2007:10-12.

[17](苏)多里尼克(А.Г.Дольник)著;朱连城译. 扬声器. 北京:人民邮电出版社, 1955. [18] 王以真编著. 怎样选用扬声器. 北京市:人民邮电出版社, 1985:33-73.

AT89C51-based LCD character display

Abstract: This paper introduces the principle of Chinese Character Display LCD module KS0108 controller 12864-based LCD module pin functions and instruction. Discussed the use of AT89C51 microcontroller, the design of its drive LCD12864 simple circuit, against the interface circuit, given the design process and programming methods and software using keil and Proteus modulation simulation, realized character LCD modules scroll. Key words: AT89C51 LCD12864 character display

24

25

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

Top