东南大学MCU综合课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

东南大学自动化学院

《MCU技术及课程设计》

数字钟设计报告

姓名:学号:

专业:自动化实验室:

组别:同组人员:

设计时间:2015年6月1日——2015年6月17日

评定成绩:审阅教师:

目录

一. 课程设计的目的与要求 (3)

二. 原理设计 (3)

三. 方案实现与测试,实验流程图,可采用c语言实现 (8)

四.分析与总结 (9)

一.课程设计的目的与要求

1.可设定时间初始值;

2.能够使用按键调整时间的时分位;

3.使用段式LCD显示。

二.原理设计

MSP430的液晶显示有静态、2MUX、3MUX、4MUX四种显示模式,而最常用还是4MUX 模式。通俗讲,就是有四个公共端(相当于数码管扫描显示的位选端)、若干个驱动端的模式。这种模式的最大优点就是能使用最少的引脚提供最多的液晶显示段。图1表示了4MUX显示模式下的公共端与驱动端,其中(a)说明了一个”8”字的四个公共端,(b)说明了两个驱动端,当分别给公共端与驱动端液晶信号时,就显示对应的数码。

图一

在MSP430系列能驱动液晶显示的单片机中,专门开辟了一片存储空间(LCDMEM1~LCDMEM20)存放要显示的信息,被称为液晶显示缓存,简称液晶显存。MSP430F6638共有20字节单元液晶显存,如果使用4MUX方式显示,可以显示160段液晶笔画。这时,每个显存将对应两个驱动端。图2表示了在4MUX方式下的液晶显存、液晶显示、液晶驱动端之间的对应关系。

段式LCD的驱动方法基本上和数码管是不太一样的,数码管只要给电和选通就亮。

但是段式LCD的驱动是靠两部分组成的:

第一部分是不间断的电压脉冲,这个电压脉冲还是被分为好几个电压等级了,如果你用的是1/4duty1/3偏压的话,那么就要有四个电压等级。也就是VCC---2/3VCC--1/3VCC---GND 这几个电压等级直接可以用电阻进行分压得到,然后直接和430单片机的R03---GND;

R13----1/3VCC;R23---2/3VCC;R33---VCC这样直接连接就可以了。这样电压等级就有了,具体在里面生成的电压等级脉冲,MSP430是可以自己生成的,不用我们担心了。

COM0--COM3就这些个电压等级的输出管脚。直接连上LCD屏的COM0---COM3就可以了。

第二部分是选通管脚选通管脚也就是LCD上面的SEG1----SEG12,和MSP430F6638的SEG0---SEG11直接相连,硬件电路如下:

JP5是用一个跳帽来控制背光(由于板卡IO口有限),把跳帽跳上段式LCD背光打开。

²段式LCD驱动编写步骤:

首先要明白每个输出管脚何时输出和输出什么,这样才能得到我们想要的字形。

MSP430F6638自带有对多达160图块进行对比度控制的集成LCD驱动器,有LCD段码寄存器,就是说你只要把这些你要显示的字形(当然如果你只想显示数字的话,只用存0-9这几个字码就可以了),段码寄存器的地址是从091H开始------到0A4H每个地址里面可以放一个8位,每一位对应于液晶上面的一段,所以说一个地址对应于液晶上面就是一个字。(一个字的段码也是8位的)

这样的话,我们只要将要显示的一个数字的编码发到这个单片机的断码寄存器里面,就可以直接显示了,是通过COM口的脉冲波形同时将寄存器里面的段进行耦合,产生压差,LCD 只有产生压差才能点亮。一直提供一个不变的高电平是要烧坏液晶的,这就是和数码管区别的地方。不过这些脉冲430单片机已经帮我们做好了。

总体的步骤就是,我们将LCD的段码先整理好,然后放在一边备用,等到你想显示某个数据的时候,只要将这个8位的段码直接写入单片机留给你的LCD寄存器写入端口数组就可以了。

在MSP430F6638里面也就是LCDMEM[];[]中应该写的是要显示的位,这个位是数码管上面的位置,比如你想显示液晶上面的第2位数,先不说要显示的内容是什么,这里的位选应该是LCDMEM[1],因为是从0开始的,所以第二位应该是LCDMEM[1].(从091H开始------到0A4H每个地址都可以存一个8段)然后说显示的内容:

显示的内容的段码很关键,这个要看你所拥有的LCD参数手册,一般都是这样的一张表:

一共可以显示6个8字。

(1)至于里面的X2、X3、X1是三个电池符号,4P、5P和6P是三个小数点。

(2)本板卡段式LCD有四个COM和12个SEG,可满屏显示888.8.8.8

(3)驱动电压3-5V 1/3偏压方式,可由MSP430直接驱动或者用HT1621芯片

(4)外形尺寸长57.5mm*宽25mm*厚度2.7mm 可视区域14.4*50

(5)屏位半透屏,最好配合背光使用,不要背光也可在屏后面贴白纸或者PCB 做白色

丝印,否则屏会透光看到PCB,所以加上了背光板。

(6)该段式LCD是16脚封装,PIN1-PIN4对应COM1-COM4,PIN5-PIN16对应

SEG1-SEG12

下图是内部走线,仅供参考:

因为LCD段码的等级脉冲方式是从COM1---COM4,所以我们将这些第5和第6列的段码也要按照这个方式编码。假如我们想显示第一个8字上面的内容:

即:第一次脉冲出来COM1 COM2 COM3 COM4,那么寄存器里面输出来的段选也应该按照COM1 COM2 COM3 COM4所对应的段码输出,这样才行显示出你想要的结果,那么我们在第一轮的COM1—COM4输出时匹配寄存器的段选应该1D---1E---1G---1F,第二轮的COM 1---COM4输出时,匹配寄存器的段选应该是X2---1C---1B---1A,这样第一个8字的显示才完全了,至于这个寄存器是怎样把这些段码读并且写出去呢?COM口在启动后总是从COM1—COM4,COM1—COM4,COM1—COM4,一直不停的这样脉冲着....排序方法应该根据COM1---COM4的连续输出方式排。一个8字的段码排序从高到低排,因为我两轮COM1—COM4的输出所以得这样排

第二轮COM4---COM3----COM2-----COM1 1A-------1B------1C--------X2(电池符号)

第一轮COM4---COM3----COM2-----COM1 1F-------1G------1E---------1D

然后可以理解为寄存器里的一个8位段码保存的段就是这样的

1A-------1B------1C--------X2(电池符号)--------1F-------1G------1E---------1D 到此我们如果想显示一个数字2,我们该如何保存段码呢

按照数码管的方法应该是显示a,b,d,e,g这五段。那么对于寄存器里面的这8个段不是按照ABCDEFGH来排的,怎么整呢?显示哪一段就把哪一段置“1”,不显示的就置零。那么2出来了,有高到低就是11000111这里的小数点暂时不显示。其中的fcdp0不显示,所以写0就可以啦!所以2的最终段码就是C7H

以此类推,你可以把任意个段码全部写出来,然后组成一个通用的数组

// LCD segment definitions.

#define d 0x01

#define c 0x20

#define b 0x40

#define a 0x80

#define dp 0x10

#define g 0x04

#define f 0x08

#define e 0x02

相关文档
最新文档