ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:432.19KB ,
资源ID:17059455      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17059455.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(1602LCD显示电话拨号键盘按键dwgWord格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

1602LCD显示电话拨号键盘按键dwgWord格式.docx

1、表1 LCD1602引脚功能编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D33VL液晶显示偏压11D44RS数据/命令选择12D55R/W读/写选择13D66E使能信号14D77D015D8背光源正极8D116D9背光源负极2 LCD1602引脚说明第1脚:VSS为地电源;第2脚:VDD接+5V电源;第3脚:VL为液晶显示器对比度调度端,接正电源时对比度最弱,接地时对比度最高,对比度过高会产生“鬼影”,必要时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行

2、写操作。当RS和R/W同为低电平时可以写入指令或者显示地址,当RS低电平R/W为高电平时可以读忙信号,当RS为高电平R/W低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极2。3 LCD1602指令1602液晶模块内部的控制器共有11条指令,如下表所示表2液晶模块内部控制其指令序号指令清显示光标返回*置输入模式I/DS显示开/关控制DCB光标或字符移位S/CR/L置功能DLNF置字符发生存贮器地址字符发生存贮器地址只数据存贮器地址显示数据存贮器地址读忙标志或地址BF计数器地

3、址写数到CGRAM或DDRAM要写的数据内容从CGRAM或DDRAM读数读出的数据内容指令说明:指令1:清显示,指令码01H,光标复位到地址00H位置;指令2:光标复位,光标返回到地址00H;指令3:光标和显示位置设置I/D,光标移动方向,高电平向右移,低电平向左移,S:屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效;指令4: 显示开关控制。D:控制整体的显示开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标。B:控制光标是否闪烁,高电平闪烁,低电平不闪烁;指令5:光标或显示移位S/C,高电平时显示移动的文字,低电平时显示移动的光

4、标;指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线。N:低电平时为单位行显示,高电平时为双行显示。F:低电平时显示5*7的点阵字符,高电平时显示5*10的显示字符。指令7:字符发生器RAM地址设置;指令8:DDRAM地址设置;指令9:读忙信号和光标地址。BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙2。4 LCD1602数字代码1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,其中阿拉伯数字的代码为:代码 数字00110000 000110001 100110010 200110011 300110100

5、400110101 500110110 600110111 700111000 800111001 9(四)设计原理图根据设计要求画出原理图:电路图中的扬声器也就是LS1在这个系统中起到了读出按键的数值及拨号与接听的传递功能图2.4设计原理图三 分析与编程(一)系统流程图图3.1为系统总流程图。首先系统进入初始化,系统开始运行,当检测键盘没有按下时,则返回继续检测直至有键盘按下;当扫描到键盘按下时,读取按键值,并检测是否超过10位,若没有超过则送入液晶显示;若超过10位则系统重新初始化。(二)LCD显示程序流程图显示程序流程图如图3.2流程图分析:首先对1602显示屏进行初始化,然后检查忙信号

6、,若BF=0,则获得显示RAM的地址,写入相应的数据显示;若BF=1,则代表模块正在进行内部操作,不接受人和外部指令和数据,知道BF=0为止。(三)设计程序#includeintrins.h#define uchar unsigned char#define uint unsigned int#define DelayNOP() _nop_();_nop_(); sbit BEEP=P10;sbit LCD_RS=P20;sbit LCD_RW=P21;sbit LCD_EN=P22;void DelayMS(uint ms);bit LCD_Busy_Check();void LCD_Set

7、_Position(uchar Position);void Write_LCD_command(uchar cmd);void Write_LCD_data(uchar dat);/-标题字符串char code Title_Text=- phone Code -;/-键盘拔号与键盘符号映射表uchar code key_Table=1,23456789*0#/-键盘拔号数字缓冲uchar Dial_Code_Str= 此处空格太少,会在屏幕上显示一个字符出来uchar keyNo=0xff;int tCount=0;/-/延时void DelayMS(uint x)uchar i;whil

8、e(x-)for(i=0;i120;i+); /-/在LCD指定的行上显示字符串void Display_String(uchar *str,uchar LineNo)uchar k; LCD_Set_Position(LineNo);for(k=0;k16;k+)Write_LCD_data(strk);/-/忙检查/-bit LCD_Busy_Check()bit LCD_Status;LCD_RS=0;/寄存器选择LCD_RW=1;/读状态寄存器LCD_EN=1;/开始读DelayMS(1);LCD_Status=(bit)(P0&0x80) ;LCD_EN=0;return LCD_S

9、tatus;/-/写LCD命令/-void Write_LCD_Command(uchar cmd)while(LCD_Busy_Check()&0x80)=0x80);/忙等待/选取择命令寄存器LCD_RW=0;/写P0=cmd;DelayNOP();/-/发送数据/-void Write_LCD_Data(uchar Str)LCD_RS=1;P0=Str;/-/LCD初始化void Initialize_LCD()Write_LCD_Command(0x38);DelayMS(5);Write_LCD_Command(0x0C);/清屏Write_LCD_Command(0x06);/字

10、符进入模式,屏幕不动,字符后移。Write_LCD_Command(0x01);/显示开,关光标。/-/设置显示位置void LCD_Set_Position(uchar Position)Write_LCD_Command(Position | 0x80);/-/t0控制按键声音void T0_INT() interrupt 1TH0=-600/256;TL0=-600%256;BEEP=BEEP;if(+tCount=200)tCount=0;TR0=0;/-/键盘扫描/-/=uchar Getkey()uchar i,j,k=0;uchar keyScanCode=0xef,0xdf,0

11、xbf,0x7f;/键盘扫描码uchar keyCodeTable=0xee,0xed,0xeb,0xde,0xdd,0xdb,0xbe,0xbd,0xbb,0x7e,0x7d,0x7b;P3=0x0f;/扫描键盘获取按键序号if(P3!=0X0F)4;P3=keyScanCodei;for(j=0;j3;j+)k=i*3+j;if(P3=keyCodeTablek)return k;else return 0xff;/-/mainvoid main()uchar i=0,j;P0=P2=P1=0XFF;IE=0X82;TMOD=0X01;Initialize_LCD(); /LCD初始化Di

12、splay_String(Title_Text,0x00);/在第一行显示标题while(1)keyNo=Getkey();/获取按键值if(keyNo=0xff)continue;/无按键时继续扫描if(+i=12)/超过11位时清空Dial_Code_Strj= i=0;Dial_Code_Stri=key_TablekeyNo;/将待显示字符放入待显示的拔号串中Display_String(Dial_Code_Str,0x40);/在第二行显示号码TR0=1;/T0中断控制按键声音while(Getkey()!=0xff);/等待按键释放四 仿真仿真图根据电路原理,在Proteus软件中

13、绘制出,检查无误后导入程序运行,观察仿真结果是否准确的达到所预期的效果,如果没有达到,则分析原因,找出错误,直至达到预期效果。设计仿真图如下图:图4 仿真图LCD1602显示按键值,当按键超过11位时,前11位按键值全部清零,重新显示按键值。五在实现过程中遇到的问题及排除措施本次设计中,在单片机最小系统初始设计时,电容和晶振选择不合理,导致无法起振【能否起振及是否失真都与放大倍数相关,放大倍数与负反馈相关,负反馈越强放大倍数越低。放大倍数大于3就会有失真,远大于3时,就输出近似方波,小于3时,不能起振。所以最好有自动增益控制电路】。通过查阅资料,多次实验,确定了合适的电容与晶振。在开始设计电路

14、时,P0口与显示屏相连时未考虑到添加上拉电阻,显示屏无法显示按键值,添加上拉电阻后【注:电路叠加定理和诺顿定理就可以求出R了 将VCC和上拉电阻看成恒流输出,上拉电流就是 VCC/R 了 实际的选择还要考虑器件拉入电流的能力】,显示正常。六 设计心得体会通过本次设计,进一步加深了对51单片机的理解,熟悉了Proteus环境中的ISIS模块原理图绘制,掌握了仿真的基本方法和C51编程语言。对按键扫描输入系统和LCD1602显示系统的工作原理及编程方法有了更进一步的了解。在设计过程当中,通过查阅资料等形式能培养个人分析、解决问题的能力。七 参考文献 1张迎新等,单片机初级教程.北京:北京航空航天大

15、学出版社,20002李清照,单片机原理及接口技术.北京:北京航空航天大学出版社,19993王静霞等,单片机应用技术:C语言版.北京:电子工业出版社,20094胡汉才,单片机原理及接口技术.北京:清华大学出版社,19965江力等,单片机原理及应用技术. 北京:清华大学出版社,20066万福君等,单片微机原理系统设计与开发应用.合肥:中国科学技术大学出版社,20017付家才等,单片机控制工程实践技术.北京:化学工业出版社,20048何立民,单片机高级教程.北京:9刘守义等,单片机应用技术.西安:西安电子科技大学出版社,200210李群芳等,单片机原理、接口及应用.北京:清华大学出版社,200511求是科技,单片机:典型模块设计实例导航.北京:人民邮电出版社,200512吴金戌等,8051单片机实践与应用.北京:清华大学出版社,200213张友德等,单片微型机原理、应用与实验.上海:复旦大学出版社,2001

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

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