欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    06 12864LCD显示计算器键盘按键实验.docx

    • 资源ID:16204223       资源大小:267.86KB        全文页数:26页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    06 12864LCD显示计算器键盘按键实验.docx

    1、06 12864LCD显示计算器键盘按键实验目 录1 课程设计概述和要求 1 1.1 课程设计要求与任务 2 1.2 课程设计思路 2 1.3 课程设计需要配置的环境 32 系统设计 3 2.1 设计框图3 2.2 元件解析 3 2.2.1 LCD12864芯片 2.2.2 AT89C51芯片 52.2.3 其他部件 6 2.2.4 电路分析 73 软件设计 12 3.1 程序流程图12 3.2 程序代码 124 系统的仿真与调试13 4.1 硬件调试13 4.2 软件调试14 4.3 软硬件调试145 总结 14 附录1: 程序代码附录2:12864LCD显示计算器键盘按键实验Proteus

    2、仿真图1 课程设计概述和要求1.1 课程设计任务与要求设计任务:利用AT89C51单片机结合12864LCD显示器设计计算器键盘按键。设计要求1:本设计实现一个12864LCD显示12864LCD显示器设计计算器键盘按键 2.利用AT89C51控制整个电路来实现. 显示12864LCD显示器设计计算器键盘按键,系统主要包括硬件和软件两部分。重点就是各部分硬件的连接设计以及程序的编写。本章讲述的就是系统硬件的设计,其中包括各模块的器件选择和电路设计。将计算器按键上的信息传送至AT89C51主芯片之中,利用P2端口使之显示于12864LCD液晶显示屏上。1.2 课程设计目的思路1、先把与题目有关的

    3、芯片资料找到,熟悉一下芯片资料2、把此程序的电路图看懂,了解一下它的实现原理,以及实现的功能。 3、分析一下此程序的各部分的功能,各零件的工作原理。 4、对程序进行调试,分析调试结果,观察并得出结论。1.3 课程设计需要配置的环境1、一台主机,一台显示器 2、Keil uVision3/Keil uVision4 应用程序软件 3、ISIS 7 Professional 仿真软件 4、老师交给的仿真电路图,及案例 5、纸张,以及一些参考资料2 系统设计2.1设计框图框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。同时罗列出需要主要使用到的各个器件,以方面系统开发中器件的

    4、选取。通过框图设计,让设计者从整体上把握系统的开发。12864LCD显示计算器键盘按键实验设计框图如下所示 2.2 元件解析2.2.1 12864 LCD芯片1、主要技术参数和显示特性:电源:VDD 3.3V+5V(内置升压电路,无需负压);显示内容:128列 64行显示颜色:黄绿显示角度:6:00钟直视LCD类型:STN与MCU接口:8位或4位并行/3位串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等2、模块引脚说明12864引脚说明引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD-模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令/数

    5、据选择信号;串行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-串行16NC空脚17/RETH/L复位 低电平有效18NC空脚19LED_A-背光源正极(LED+5V)20LED_K-背光源负极(LED-OV)控制器接口信号说明:1、RS,R/W的配合选择决定控制界面的4种模式:RSR/W功能说明LLMPU写指令

    6、到指令暂存器(IR)LH读出忙标志(BF)及地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据2、E信号E状态执行动作结果高低I/O缓冲DR配合/W进行写数据或指令高DRI/O缓冲配合R进行读数据或指令低/低高无动作忙标志:BF BF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据.利用STATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态.字型产生ROM(CGROM) 字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显

    7、示开和关的控制。DFF=1为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。显示数据RAM(DDRAM)模块内部显示数据RAM提供642个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、

    8、0004、0006共4个)将选择CGRAM的自定义字型,02H7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140D75F),GB(A1A0-F7FFH)。 字型产生RAM(CGRAM) 字型产生RAM提供图象定义(造字)功能, 可以提供四组1616点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRA

    9、M/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。光标/闪烁控制电路此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。2.2.2 AT89C51芯片(1)AT89C51简介AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以

    10、反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51芯片图如下图所示。图 AT89C51芯片图(1)AT89C51主要特性:与MCS-51 兼容;4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-24MHz;三级程序存储器锁定;1288位内部RAM;32可编程I/O线;

    11、两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。2.2.3 计算器键盘键盘电路的设计原理首先行列式键盘中的键实际上就是一个机械开关,该开关位于行线和列线的交点处,通过按键加以连接。当按下某个键时,该交点的行线和列线接通,相应行线或列线上的的电平发生变化,从而可以确定被按下的功能键。4行4列的行列式键盘如图:其次运用线翻转法判断有无键按下:键盘的高4位用于列控制,低4位用于行控制,并将全部行线P0.0P0.3置低电平,然后再检查列线电平的状态。只要其中有一列电平为低,则表示右键按下,并且被按下的键位于低电平和4根行线交叉的某一个按键中。判断被按

    12、下键的位置:依次将所有的行线P0.4P0.77置为低电平,在判断4根列线的电平状态,当遇到某一列的电平为低时表示此键按下。 计算器键盘就是一个4*4的行列扫描,行对应着A、B、C、D(和P1.0P1.3相连),列对应着1、2、3、4(和P1.4P1.7相连),读取P1口的值判断哪个键被按下了,执行该操作。2.2.4电路分析1、通过AT89C51芯片PO口与键盘相接,键盘中的键就是一个行列开关,该开关位于行列的交点处,通过按下某个键,该交点的行线和列线联通,相应的行列电平发生变化,从而可以确定按下的功能键。读取P0的值就可以确定按键,再由AT89C51芯片读取按键的值通过P1口和P2口显示在LC

    13、D12864上,每显示一个按键值LS1发出声音。接P3.7口,判断键盘是否按下,一旦键盘某个键按下,此元件会发出声音。2、时钟电路由AT89S51得18、19引脚的时钟端(XTL1及ATAL 2)以及12MHZ晶振、47pF的电容C1、C2组成,采用片内振荡方式。其时间周期为1/12us,机器周期为1s。单片机的外部晶振电路如图3AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成振荡器。振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配

    14、置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平。3、复位电路采用简单的上位电路,由1K电阻及22uF电容接至 AT89S52的RST复位端电阻给电容充电,电容的电压缓慢上升直到vcc,没到vcc时芯片复位脚近似低电平,于是芯片复位,接近vcc时芯片复位脚近高电平,于是芯片停止复位,复位完成。按键后:电容器被短路放电、RST直接和VCC相连,就是高电平,此时进入“复位状态”。松手后:电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到RST,

    15、仍然是“复位状态”; 稍后,充电结束,电流降为0,电阻上的电压也将为0,RST降为低电平,开始正常工作。4 键盘电路的设计原理 首先行列式键盘中的键实际上就是一个机械开关,该开关位于行线和列线的交点处,通过按键加以连接。当按下某个键时,该交点的行线和列线接通,相应行线或列线上的的电平发生变化,从而可以确定被按下的功能键其次运用线翻转法判断有无键按下: 键盘的高4位用于列控制,低4位用于行控制,并将全部行线Y0Y3置低电平,然后再检查列线电平的状态。只要其中有一列电平为低,则表示右键按下,并且被按下的键位于低电平和4根行线交叉的某一个按键中。3 软件设计3.1主程序流程图按键操作子函数 32 程

    16、序代码(见附录1)4系统的仿真与调试4.1 硬件调试 硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。调试步骤是:首先把电路分为若干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的范围内;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。4.2 软件调试软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。调试过程:1、代码录入完成进行调试

    17、,运行出现了31个错误 2、在Keil uVision3中检测查找错误,3、检测过程中总是有一处错误无法解决4、最后把原程序分开逐个调试,检查每段程序的错误,修正每个代码错误5、这种分开调试方法的效率还是很不错的,经过几次修改就完成了程序的调试,运行结果没有错误,电路显示也完全正确。4.3 软硬件调试软硬件联调是指把调试无误的软件程序烧制进单片机芯片内部,通上电源后,检查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。若有错误,通过改写软件来调试,直至达到预期效果,则设计圆满成功。4.4 代码分析#include #include #define uchar unsig

    18、ned char#define uint unsigned int#include,#include 皆属于头文件,前者是定义51单片机特殊功能寄存器和位寄存器的,后者包含特殊指令例如:crol( ),cror( )。#define uchar unsigned char,#define uint unsigned int,define delayNOP()nop();nop();nop()皆属于宏定义,后者是将三个延时周期定义在一起,用一个delayNOP()表示。Void LCD_intialize, , void Display_String(char*,char);皆为调用函数,第一个

    19、是调用LCD初始化函数;第二个是调用LCD写数据函数。void main() uchar i; LCD_Initialize(); 主函数,中断允许寄存器IE,IE=0x82=10000010表示EA为1,CPU开放中断;ET0=1,允许外部中断1中断。定时/计数器方式控制寄存器TMOD,TMOD=0x01=00000001,表示在T0方式字段中工作方式为方式1,是定时器方式,定时器的技术不受外部引脚输入电平的控制,而只受定时器运行控制位(TR0、TR1)的控制。进行高低8为赋初值。接着调用初始化LCD子函数,在其子函数中进行顺序执行,每个都先延时5毫秒,接着调用写指令函数。返回至主程序。接着

    20、调用显示函数,在LCD指定行上显示字符串,Display_String(msg1,0x00),msg1为一个一维数组(Second Watch 0),即Display_String(Second Watch 0,0x00),在该子函数中调用设置显示位置子函数,在该子函数中调用写指令子函数进行或操作。5总 结本次课程设计收获:(1)学会了通过寻找芯片资料,弄懂、研究芯片本身来找到解决问题的最优解。2)要多请教他人,不能有个人主义,有些问题在经过长时间思考后,如果还未解决的话我们就要不耻下问,攻取他人的帮助。经过此次课程设计,简单带有LCD显示的数字的,系统基本功能基本实现,测试运行也基本正常,该

    21、系统基本上完成了日期的显示与计数的功能,感谢老师的指导。附录1:程序代码/12864LCD显示计算器键盘按键实验源代码#include #include #define uchar unsigned char#define uint unsigned int/定义DotMatri.c 中的点阵,数字,符号等编码extern uchar code Word_String32;extern uchar code Keyboard_Chars16;extern uchar code KeyPosTable;extern uchar KeyScan();/ keypad.c中的键盘扫描函数/定义在LC

    22、P_12864.c中的相关液晶显示函数extern LCD_Initialize();void Display_A_Char(uchar,uchar,uchar*);void Display_A_WORD(uchar,uchar,uchar*);void Display_A_WORD_String(uchar,uchar,uchar,uchar*);/键盘扫描开启标志,其值由外部中断0控制bit KeyPressDown = 0;uchar T_Count = 0;sbit SPK = P37;/Keybord_Chars中数字与符号编码与键盘按键对照表uchar code KeyPosTab

    23、le= 7,8,9,10, 4,5,6,11, 1,2,3,12, 15,0,14,13;/蜂鸣器发声void Beep() uchar i,x=20; while (x-) for(i=0;i120;i+); SPK=SPK; /主程序void main() uchar i; LCD_Initialize(); /初始化LCD for (i=0;i7;i+) /从第一页开始,左边距16点,显示7个16*16点阵的中文提示信息 Display_A_WORD_String (1,16*(i+1),1,Word_Stringi); P1=0x0f; IE=0x83; /允许外部0和定时器0中断 I

    24、T0=1; /设为下降沿中断方式,外部中断0用于启停键盘扫描处理 TH0=(65536-5000)/256;/50ms定时 TL0=(65536-5000)%256; while(1) /如果有按键按下则处理按键 if(KeyPressDown=1) Beep(); KeyPressDown=0; Display_A_Char(4,55,Keyboard_Chars KeyPosTableKeyScan() ); TR0=0; /外部中断0控制消抖延时void EX0_INT() interrupt 0 TR0=1;/开启定时器0,延时300ms消抖/定时器用于消抖并确认有键按下,启动主程序中

    25、的按键扫描void T0_INT() interrupt 1 if(+T_Count=6) /50*6=300ms延时抖动 T_Count=0; KeyPressDown=1; /确定有键按下 TH0=(65526-50000)/256; /50ms定时 TL0=(65526-50000)%256; /-LCD_12864.C-/名称:12864LCD显示驱动程序(不带字库)/-#include #include #define uchar unsigned char#define uint unsigned int#define LCD_DB_PORT P0 /液晶DB0DB7#define

    26、 LCD_START_ROW 0xC0 /起始行#define LCD_PAGE 0xB8 /页指令#define LCD_COL 0x40 /列指令/液晶引脚定义sbit DI=P20;sbit RW=P21;sbit E=P22;sbit CS1=P23;sbit CS2=P24;sbit RST=P25;/检查LCD是否忙bit LCD_Check_Busy() LCD_DB_PORT=0xFF; RW=1;_nop_();DI=0; E=1;_nop_();E=0; return (bit)(P0 & 0X80);/向LCD发送命令void LCD_Write_Command(ucha

    27、r c) while (LCD_Check_Busy(); LCD_DB_PORT=0xFF;RW=0;_nop_();DI=0; LCD_DB_PORT=c;E=1;_nop_();E=0;/向LCD发送数据void LCD_Write_Data(uchar d ) while (LCD_Check_Busy(); LCD_DB_PORT=0xFF;RW=0;_nop_();DI=1; LCD_DB_PORT=d; E=1;_nop_();E=0;/初始化LCDvoid LCD_Initialize() CS1=1; CS2=1; LCD_Write_Command(0x38); /8位形式,2行字符 LCD_Write_Command(0x0F); /开显示 LCD_Write_Command(0x01); /清屏 LCD_Write_Command(0x06); /画面不动光标右移 LCD_Write_Command(LCD_START_ROW


    注意事项

    本文(06 12864LCD显示计算器键盘按键实验.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开