微机原理与接口技术课程设计液晶显示器与键盘系统.docx

上传人:b****5 文档编号:11633271 上传时间:2023-03-29 格式:DOCX 页数:23 大小:692.04KB
下载 相关 举报
微机原理与接口技术课程设计液晶显示器与键盘系统.docx_第1页
第1页 / 共23页
微机原理与接口技术课程设计液晶显示器与键盘系统.docx_第2页
第2页 / 共23页
微机原理与接口技术课程设计液晶显示器与键盘系统.docx_第3页
第3页 / 共23页
微机原理与接口技术课程设计液晶显示器与键盘系统.docx_第4页
第4页 / 共23页
微机原理与接口技术课程设计液晶显示器与键盘系统.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术课程设计液晶显示器与键盘系统.docx

《微机原理与接口技术课程设计液晶显示器与键盘系统.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计液晶显示器与键盘系统.docx(23页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术课程设计液晶显示器与键盘系统.docx

微机原理与接口技术课程设计液晶显示器与键盘系统

微机原理与接口技术

综合实践说明书

课程名称:

微机原理与接口技术综合实践

设计题目:

液晶显示器与键盘系统

院系:

机电学院测控系

班级:

1111

XXXXXXXXXXXXX

XXXXXXXXXXXXX

设计者:

亚哈亚

 

指导教师:

1111

设计时间:

2012.6.5-2012.6.19

 

微机原理与接口技术综合实践任务书

组长:

亚哈亚

组员:

……

专业:

测控技术与仪器

班级:

任务起止日期:

2012年6月5日至2012年6月19日

课程设计题目:

液晶显示器与键盘系统

设计要求:

◆系统上电显示初始化界面,如“欢迎使用本系统!

”;

◆按数字键显示相应数字;

◆按功能键“A”,发光二极管发光,按功能键“B”,发光二极管不发光,按功能键“C”,蜂鸣器报警,按功能键“D”,蜂鸣器停止报警。

按其它功能键,显示某特定内容。

工作计划安排:

◆分组、选题,1天

◆方案设计,2天(软硬件总体结构,元器件的选购)

◆硬件搭接,2天;软件程序设计,5天;综合调试,2天

◆课程设计任务书,2天

同组设计者及分工:

亚哈亚09221151硬件电路设计仿真,程序整合调试,编写设计说明书

山姆0922115x总体方案设计,编写设计说明书

XXXXX0922115XLCD硬件仿真,联合调试,搜集资料,编写设计说明书

YYYYY0922115X硬件电路搭接,购买元器件,资料搜集

ZZZZZ0922115XLCD显示编程及调试,购买元器件,编写设计说明书

 

目录

一、总体设计5

1.单片机选型5

2.按键扫描5

3.1602LCD显示5

二、主要元件介绍6

1.AT89S51概述6

1.1AT89S51主要特征6

1.2管脚说明7

1.3本设计中的应用9

2.1602LCD10

2.11602LCD概述10

2.21602LCD控制指令12

三、基于PROTEUS的硬件电路设计14

1.PROTEUS软件相关14

2.电路组成14

2.1复位电路14

2.2时钟电路15

2.31602LCD显示电路15

2.4按键扫描电路16

2.5蜂鸣器和发光二级管控制电路17

四、硬件配置18

1.按键扫描程序18

2.1602LCD显示程序20

五、电路仿真22

六、总结23

七、附件24

1.电路原理图24

2.源程序24

 

一、总体设计

1.单片机选型

AT89S51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

STC89C52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

根据万向开关的的档位,控制小直流电动机执行相应的动作。

2.按键扫描

运用P0口第四位进行行扫描,高四位进行列扫描。

循环判断,得到按键位置。

并在相应按键按下后实现特定功能:

按键10按下时,发光二级管点亮,按键11按下时,发光二级管停止亮;按键12按下时,蜂鸣器响,按键13按下时,蜂鸣器停止响。

3.1602LCD显示

将按键扫描值通过LCD显示出来,并在LCD上显示“WELCOMTOBJTU!

”及“XXkeypress”。

 

二、主要元件介绍

1.AT89S51概述

AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4kBytes ISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。

1.1AT89S51主要特征

 

(1)4kBytesFlash片内程序存储器;

  

(2)128bytes的随机存取数据存储器(RAM);

  (3)32个外部双向输入/输出(I/O)口;

  (4)2个中断优先级、2层中断嵌套中断;

  (5)6个中断源;

  (6)2个16位可编程定时器/计数器;

  (7)2个全双工串行通信口;

  (8)看门狗(WDT)电路;

  (9)片内振荡器和时钟电路;

  (10)与MCS-51兼容;

  (11)全静态工作:

0Hz-33MHz;

  (12)三级程序存储器保密锁定;

  (13)可编程串行通道;

(14)低功耗的闲置和掉电模式。

1.2管脚说明

图1AT89S51引脚图

VCC:

供电电压

GND:

接地

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P1.0T2(定时器/计数器T2的外部计数输入),时钟输出;P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制);P1.5MOSI(在系统编程用);P1.6MISO(在系统编程用);P1.7SCK(在系统编程用)。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2INT0(外部中断0)

P3.3INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6WR(外部数据存储器写选通)

P3.7RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

   /PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

   /EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

    XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

    XTAL2:

来自反向振荡器的输出。

1.3本设计中的应用

在本设计中,AT89S51是整个系统的核心。

I/O口主要用来连接键盘、蜂鸣器、以及控制LCD显示。

P0口用来控制按键扫描。

其中P1、P2口分别用来连接LCD的数据口和命令口;P2.0,2.1用于连接发光二级管和蜂鸣器。

2.1602LCD

2.11602LCD概述

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别.

图21602LCD

1602LCD主要技术参数:

显示容量:

16×2个字符

芯片工作电压:

4.5—5.5V

工作电流:

2.0mA(5.0V)

模块最佳工作电压:

5.0V

字符尺寸:

2.95×4.35(W×H)mm

引脚功能说明:

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,引脚接口说明如表一。

 

表一1602LCD引脚接口说明

第1脚:

VSS为地电源。

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对

比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W

共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可

以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

背光源负极。

2.21602LCD控制指令

1620液晶模块内部的控制器共有11条控制指令,如下表二所示。

表二1602LCD控制指令

它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:

1为高电平、0为低电平)

指令1:

清显示,指令码01H,光标复位到地址00H位置

指令2:

光标复位,光标返回到地址00H

指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移

S:

屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁

指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标

指令6:

功能设置命令DL:

高电平时为4位总线,低电平时为8位总线N:

低电平时为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符

指令7:

字符发生器RAM地址设置

指令8:

DDRAM地址设置

指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:

写数据

指令11:

读数据

1620液晶显示模块可以和单片机直接接口。

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。

程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。

 

三、基于PROTEUS的硬件电路设计

1.PROTEUS软件相关

Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

2.电路组成

根据设计要求,硬件电路主要包括复位电路、晶体振荡电路、LCD显示电路、按键扫描电路以及蜂鸣器和发光二级管控制电路。

2.1复位电路

复位是任何一种微型计算机都必须具备的工作方式。

复位操作使单片机处于一种初始化的状态。

MCS-51单片机的RST引脚上出现持续24个振荡周期的高电平信号时,单片机进入复位。

通常有上电复位与人工按钮复位两种方式。

本设计中采用上电复位方式。

如下图3所示。

图3上电复位电路

2.2时钟电路

通常单片机系统电路的实际有内部时钟和外部时钟两种形式,两种电路都向单片机提供最基本的振荡脉冲信号。

本设计中的晶体振荡电路如下图四所示。

图4晶体振荡电路

2.31602LCD显示电路

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口。

本设计中采用14脚LCD。

VSS和VDD为电源端和接地端,VEE用于调整液晶显示器对比度。

D0~D7为8位双向数据线。

电路连接图如图五。

图5LCD显示电路

2.4按键扫描电路

设计中采用行列式非编码键盘,由行线、列线和键盘开关矩阵3部分组成。

在这种键盘中,每根行线和列线的交叉处都有一个按键,当某个键被按下时,与这个按键相连的行线和列线就会接通,否者行线和列线不接通。

如电路图6。

图6按键扫描电路

2.5蜂鸣器和发光二级管控制电路

如下图所示。

图7蜂鸣器和发光二级管控制电路

 

四、硬件配置

在单片机的开发运用中,逐渐引入了高级语言,C语言就是其中一种。

在使用汇编语言的过程中,其可读性和可维护性不强,其次它的代码可重用性比较低,使用高级语言编程能很好的解决问题。

C语言具有良好的模块化、容易阅读和维护的优点。

由于模块化,所以用C语言编写的程序有很好的可移植性,功能化的代码能够很方便地从一个工程移植到另一个工程,从而减少开发时间。

本设计将采用C语言编程。

1.按键扫描程序

本设计中4*4按键扫描是一个难点。

按键高四位为列,第四位为行。

当P0.0置为0,判断第一行是否有键按下,如果第一个键被按下,P0.4口变为低电平,P0口值变为0XEE。

当第二个键被按下,P0.5口变为低电平,P0口值变为0XDE,以此类推。

没判断一个键,返回一个按键值。

循环查询按键值,再执行相应的操作。

当第一个键被按下,发光二级管点亮,第二个键被按下,蜂鸣器接通。

下图8、图9即为按键2前后,电平跳转对比。

按键程序流程图如图10.

图8按键扫描按键前

图9按键扫描按键2后蜂鸣器接通

图10按键扫描流程图

2.1602LCD显示程序

第二章中已对1602LCD控制指令进行了详细介绍,其读写时序如下图11、图12。

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图13是1602的内部显示地址。

图111602LCD读操作时序

图121602LCD写操作时序

图131602LCD内部显示地址

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。

每次输入指令前都要判断液晶模块是否处于忙的状态。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

CGROM、CGRAM中字符代码与字符图形对应关系如下表三所示。

表三CGROM、CGRAM中字符代码与字符图形对应关系

五、电路仿真

扫描4*4按键,当按键按下时显示按键,并在LCD上显示“WELCOMTOBJTU!

”。

当按键10按下时发光二级管发光,按键11按下时发光二级管停止亮;按键12按下时,蜂鸣器响,按键13按下时,蜂鸣器停止响。

系统仿真图如图14.

图14系统仿真图

 

六、总结

经过两周设计,克服了LCD显示和4*4键盘扫描的难点,完成了课程设计所有要求。

学会使用PROTEUS软件绘制电路图及程序仿真,以及电路图设计的基础知识,能够运用C语言编程控制单片机工作。

感谢老师传授的知识,让我们能够一点点克服障碍,最终完成设计。

 

七、附件

1.电路原理图

2.源程序

#include"AT89X51.h"

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

unsignedcharkey;

uinti;

uintdate;

delay();

unsignedcharscan();

sbitrs=P2^4;

sbite=P2^6;

/**********************显示数据表*********************************/

uchardis1[]="WELCOMTOBJTU!

";

uchardis2[]="keypress";

 

ucharnumber[]={0,0,0,0};

ucharcodetable2[]="0123456789";

voidinit();

delay()

{

unsignedinti;

for(i=2000;i>0;i--);

}

voidinit()

{

P2=0xff;

P3=0xff;

P1=0xff;

}

 

unsignedcharscan()

{

unsignedchara;

unsignedcharb;

do

{

/*------------------------------------*/

P0=0xff;

a=0x0f;

P0_0=0;

//

a=P0;

if(a!

=0x0f)

{

delay();

b=P0;

//b=0x0f;

if(a==b)

{

if(a==0xee)return(0);

if(a==0xde)return

(1);

if(a==0xbe)return

(2);

if(a==0x7e)return(3);

}

}

/*------------------------------------*/

P0=0xff;

a=0x0f;

P0_1=0;

a=P0;

if(a!

=0x0f)

{

delay();

b=0x0f;

b=P0;

if(a==b)

{

if(a==0xed)return(4);

if(a==0xdd)return(5);

if(a==0xbd)return(6);

if(a==0x7d)return(7);

}

}

/*------------------------------------*/

P0=0xff;

a=0x0f;

P0_2=0;

a=P0;

if(a!

=0x0f)

{

delay();

b=0x0f;

b=P0;

if(a==b)

{

if(a==0xeb)return(8);

if(a==0xdb)return(9);

if(a==0xbb)return(0x0A);

if(a==0x7b)return(0x0B);

}

}

/*------------------------------------*/

P0=0xff;

a=0x0f;

P0_3=0;

a=P0;

if(a!

=0x0f)

{

delay();

b=0x0f;

b=P0;

if(a==b)

{

if(a==0xe7)return(0x0C);

if(a==0xd7)return(0x0D);

if(a==0xb7)return(0x0E);

if(a==0x77)return(0x0F);

}

}

}

while(a==0x0f);

}

/*写命令操作p2口*/

voidwritecomm(ucharcomm)

{

rs=0;

P1=comm;

e=0;

delay();

e=1;

delay();

e=0;

}

/*写数据操作p2口*/

voidwritedat(uchardat)

{

rs=1;

P1=dat;

e=0;

delay();

e=1;

delay();

e=0;

}

/*写个/十位数据*/

voidwritesmh(ucharadd,uintdate)

{

uintshi,ge,bai;

ge=date%10;

shi=(date/10)%10;

bai=(date/100)%10;

writecomm(0xc0+add);

delay();

if(bai)writedat(table2[bai]);

writecomm(0xc1+add);

if(shi||bai)writedat(table2[shi]);

writecomm(0xc2+add);

writedat(table2[ge]);

delay();

}

voidlcd_write_num()

{

writesmh(0,date);

//writesmh(9,stall);

}

/*LCD1602初始化*/

voidinit0()

{

//lcd初始化

writecomm(0x38);//检

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1