单片机课程设计 模拟键盘输入及显示系统设计..
键盘输入显示系统设计课程设计说明书
课程设计键盘输入显示系统设计初始条件:1.选用8086最小模式;2. 内存芯片使用2片6116(2K×8),1片2716(2K×8)EPROM;3. 8255、8259、74LS138、LCD字符型液晶显示器及其驱动器;4. 8255、8259的片选信号线分别接74LS138的Y1、Y2引脚;5. 采用4×4键盘进行菜单功能选择;6. 其他必须的配套元件。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 查阅参考资料,自学相关元件的内部结构、工作方式或初始化编程过程;2. 完成微机基本系统及其扩展接口电路设计,绘制微机系统硬件原理图;3. 绘制汇编源程序流程图,编制扩展接口电路工作的汇编源程序,包括初始化和监控工作程序;4. 通过微机或DSG-88实验装置进行汇编源程序的调试;5. 撰写设计说明书,设计说明书字数不少于5000字,具体要求见附录。
时间安排:指导教师签名:2008年11 月23日系主任(或责任教师)签名:年月日摘要键盘输入显示系统是我们日常生活中最常见的系统,我们知道,从外观上看普通的微型计算机系统是由主机箱、显示器、键盘、鼠标构成。
所以对键盘输入显示系统进行设计是非常必有和有用的。
当然本次课程设计的主要目的是达到在设计好的键盘输入显示系统中,在键盘上输入一个字符,然后在显示器上相应显示出对应的字符。
我的设计思想是:1、要实现键盘输入显示系统,首先要连接好硬件,如硬件图所示,其中各芯片接CPU,键盘的行线、列线分别接8255C口上半部、下半部,而且四根行线通过一个与非门接8259的IR0,LCD字符型液晶显示器接8255的B口,然后是编写程序。
2、编写主程序,先关中断,填写中断向量表,然后是对8259初始化,再开中断,执行其他程序。
3、编写子程序,其中有中断向量子程序、按键识别子程序、LCD显示子程序。
4、键盘输入显示:按键时,四根行线信号通过一个与非门产生一个高信号给8259IR0,8259查找中断向量表,产生中断子程序,并且在中断子程序中CALL子程按键识别序和LCD显示子程序。
键盘输入与液晶显示系统方案(最终版)
个人资料整理仅限学习使用微机原理与接口技术研究性专题设计报告课程名称:单片机原理与微机接口技术设计题目:键盘输入与液晶显示系统院系:机械与电子控制工程学院班级:机电1213班设计者:张威张古琴丁国华学号: 12223084 12223083 12223060指导教师:赵嘉蔚设计时间: 2018年6月机电学院《微机原理与接口技术》研究性专题任务书摘要键盘输入与液晶显示系统是单片机应用中最常见的一种形式,几乎涉及到人们日常生产和生活中的各个方面。
键盘是用于实现单片机应用系统中的数据和命令的输入,液晶显示器LCD能使人直观的获得需要了解的信息。
实现人机的交流互动。
因此,对液晶显示与键盘系统的研究与应用是很有必要的,对于我们今后的学习有着很强的推动作用。
目录一、设计要求7二、任务分工7三、主要元器件介绍83.1、AT89C5183.2、 1602LCD概述113.3、发光二极管143.4、蜂鸣器15四、仿真电路设计与系统仿真图164.1、 Proteus仿真软件的相关介绍164.2、复位电路仿真电路图:174.3、时钟电路仿真电路图184.4、1602LCD显示仿真电路图错误!未定义书签。
4.4、1602LCD显示仿真电路图184.5、键盘仿真电路图194.6、蜂鸣器和发光二极管电路仿真194.7、相关功能仿真显示图20五、程序流程图及相关程序175.1、程序构思:175.2、程序流程图:18六、遇到问题及解决方案196.1、软件问题19七、体会与感想20八、参考文献21九、附件22一、设计要求◆系统上电显示初始化界面,“欢迎使用本系统!” ;◆按数字键显示相应数字;◆按功能键实现相应功能;1、按功能键“A” ,发光二极管发光;2、按功能键“B” ,发光二极管不发光;3、按功能键“C” ,蜂鸣器报警;4、按功能键“D” ,蜂鸣器停止报警;5、按功能键“E”,显示组员姓名<Zhangwei zhangguqin dingguohua);6、按功能键“F”,显示“Thank you! JiDian 1213”。
单片机_键盘显示课程设计1
4 软件设计与仿真4.1 软件流程图开始无按键显示0检测是否有按键按下根据当前状态识别按键显示键值结束4.3 仿真结果实际仿真结果如图4.3所示:当3号按键按下时,监控按键模块的三号LED 变亮,数码管模块正常显示数字3,实验成功。
图4.3 仿真结果5 心得体会在为期一周的单片机课程设计中,从选课题查资料,到学软件做仿真,再到检测与调试,我都收获了很多。
不光理论知识得到了强化,实践动手能力也被大大增强了,此外我对课程设计的流程也更熟稔了。
在知识方面,我不仅回顾了这个学期所学的单片机技术基础理论知识,也回顾了过去所学的模数电相关的知识;不仅加深了对单片机理论的理解,在与之相关的学科方面也得到了拓展与深化。
此次课程设计,让我对模数电与单片机等科目有了更深入细致的了解。
同时我也深深发觉到,仅懂得理论、纸上谈兵是远远不够的,我们还需要进行更多的实物制作,或是软件仿真,因为当理论运用到实际中时,往往会出现很多的问题与偏差。
所以这次的实践训练是非常合时并且有意义的,它使我懂得了只有不断实践才能真正掌握知识。
最后感谢指导教师的细心教导,谢谢!参考文献[1]李群芳,张士军,黄建等.《单片微型计算机与接口技术》.电子工业出版社,2009[2]陈光东,赵性初.《单片微型计算机原理与接口技术》.华中科技大学出版社,2005[3]高峰.《单片微机应用系统设计及实用技术》.机械工业出版社,2004[4]孙余凯.《数字集成电路实用技术》.电子工业出版社,2010[5]江晓.《数字电子技术》.西安电子科技大学出版社,2009[6]曹国清.《数字电路与逻辑设计》.中国矿业大学出版社,2008[7]伍时和.《数字电子技术基础》.清华大学出版社,2009。
基于MCS51系列单片机实现键盘按键与数字动态显示计数器课程设计
毕业设计论文摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
而51单片机是各单片机中最为典型和最有代表性的一种。
本实验是基于MCS51系列单片机所设计的,可以实现键盘按键与数字动态显示并可以用音乐倒数的计数器。
本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LCD1602显示器上。
当倒计数为0时,蜂鸣器就发出音乐声响等等。
该计数器系统主要由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成。
关键词:AT89C51、键盘、LCD1602显示、蜂鸣器目录摘要 (I)1 项目概述和要求 (1)1.1 单片机基础知识 (1)1.2 单片机的发展趋势 (1)1.3 项目设计任务与要求 (3)2 系统设计 (4)2.1 框图设计 (4)2.2部分硬件方案论述 (4)2.3电路原理图 (4)2.4元件清单 (5)2.4.1AT89C51芯片 (5)2.4.2字符型LCD1602 (6)2.4.3按键控制模块 (8)2.4.4其它元件 (8)3软件设计 (9)3.1 程序流程图 (9)3.2 程序关键问题的部分代码 (11)4 系统的仿真与调试 (16)4.1 硬件调试 (16)4.2 软件调试 (16)4.3 软硬件调试 (16)5总结 (17)参考文献 (18)1 项目概述和要求1.1 单片机基础知识单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
课程设计——键盘输入及数据显示程序设计
示程序设计中北大学汇编语言程序设计课程设计说明书学生姓名:学号:学院:信息与通信工程学院专业:自动化题目:键盘输入及数据显示程序设计指导教师:沈小林职称:副教授2012年6月24日中北大学汇编语言程序设计实验课程设计任务书11/12 学年第二学期学院:信息与通信工程学院专业:自动化学生姓名:学号:课程设计题目:数据显示及键盘输入程序设计起迄日期:6月18 日~6月24日课程设计地点:中北大学指导教师:沈小林系主任:王忠庆下达任务书日期: 2011年06月20日课程设计任务书课程设计任务书一、设计目的1、通过程序设计和调试,加深对字符串程序设计的认识,掌握其调试方法;2、通过键盘及显示程序设计掌握汇编语言程序在键盘输入及文本显示方面的编程过程;3、学会DOS中关于显示功能调用的用法;4、领会修改显存方法显示字符。
二、程序设计要求(1)能识别数字键、字母键(能区分大小写);(2)一次最多字符(含数字)输入不超过80个;(3)依次显示键盘输入的所有可显示字符。
三、编程思路串(String)即数据串,是指存放在连续内存中的一组数据,通常表现为字节(或字)数组,串操作指令具有以下共性。
1)源串:地址由DS:SL表示。
2)目的串:地址由ES:DI表示。
3)自动修改地址:每次数据操作后,SI和DI自动递增或递减,取决于操作的数据类型(字节、字或双字)以及DF的值。
若DF=0,则SI和DI自动增加1、2或4;否则减1、2或4。
可以使用CLD或STD指令设置DF。
4)计数器:使用重复前缀时,用CX显示数据个数,每重复一次操作,CX 减1。
从键盘输入一串字符串,通过指令STRING DB 80 DUP(?)来设置一次最多字符(含数字)输入不超过80个,能识别数字键、字母键。
要使程序能够识别字母键的大小写,必须通过ASCII码来寻址识别。
依次显示键盘输入的所有可显示字符,当用户按回车键时,输入结束。
然后通过显示器显示输入的字符。
1602LCD仿手机键盘单片机课程设计
1602LCD仿手机键盘单片机课程设计介绍本文档旨在介绍一个关于1602LCD仿手机键盘的单片机课程设计。
在这个课程设计中,我们将学习如何使用单片机与1602LCD显示屏以及按键进行交互,实现一个仿手机键盘的简单应用。
这有助于初学者掌握单片机和LCD屏幕的基本使用方法,并加强他们的编程能力。
设计目标本课程设计的主要目标是实现以下功能:1.在1602LCD屏幕上显示一个简单的用户界面,包括一个仿手机键盘和一个文本框2.用户可以使用仿手机键盘输入文本,并在文本框中显示输入的内容3.实现基本的字符串操作函数,如删除字符、清空文本等4.通过按下对应按钮实现不同的功能,如发送短信、拨打电话等系统组成该系统主要由以下组件构成:1.单片机:我们将使用一块适配单片机,例如Arduino或者树莓派,作为主控制器来控制整个系统。
2.1602LCD屏幕:它是用于显示用户界面和输入文本的显示设备。
3.按键:我们需要一组按键来模拟手机键盘的输入。
4.连接线:这些连接线将用于将单片机、LCD屏幕和按键连接在一起。
硬件搭建1.首先,将单片机与1602LCD屏幕连接。
根据所使用的单片机型号,查找LCD屏幕的引脚定义,并将其连接到正确的单片机引脚上。
2.接下来,将按键连接到单片机的输入引脚上。
你可以自定义按键的布局,最基本的要求是包含数字、字母和功能键。
软件设计1.首先,我们需要使用相应的开发环境(如Arduino IDE)编写程序代码。
2.在程序中,我们需要定义LCD屏幕的引脚,并初始化它。
然后,我们可以使用LCD库函数来控制显示内容,如在屏幕上显示文本、清空屏幕等。
3.接下来,我们需要定义按键的引脚,并初始化它们。
我们可以编写函数来监测按键的输入状态,并根据按下的按键执行相应的操作。
4.我们还需要编写字符串操作函数,如删除字符、清空文本等。
这些函数能够处理用户输入的文本并显示在LCD屏幕上。
5.最后,我们需要编写主循环函数,以便不断检测按键输入和更新LCD屏幕内容。
单片机键盘及显示
根据显示器件的不同,显示输出可分为LED显示 、LCD显示、LED点阵显示等多种形式。
3
显示输出的特点
显示输出具有直观、清晰、易于理解等优点,同 时也有功耗低、寿命长等特性。
LED显示
LED显示原理
LED(发光二极管)是一种能够 发出可见光的半导体器件,通过 控制电流的大小可以调节亮度。
单片机键盘及显示应 用案例
应用案例一:智能家居控制系统
智能家居控制系统的应用
通过单片机键盘及显示模块,实现对家居设备的远程控制,如灯光、空调、电 视等。
实现方式
通过单片机接收键盘输入,控制家居设备的开关和调节,并通过显示模块显示 当前设备的状态和操作信息。
应用案例二:工业自动化控制系统
工业自动化控制系统的应用
存储器
存储器是单片机内部用于存储程 序和数据的部件,分为程序存储 器和数据存储器。
输入/输出接口
输入/输出接口是单片机与外部设 备进行通信的桥梁,可以实现数 据的输入和输出。
单片机工作原理
工作过程
单片机的工作过程一般包括取指 、执行、存回三个步骤。首先从 程序存储器中取出指令,然后由 中央处理器执行该指令,最后将 结果存回数据存储器或通过输入/ 输出接口输出到外部设备。
单片机键盘及显示
汇报人: 202X-12-20
目录
• 引言 • 单片机基础知识 • 键盘输入技术 • 显示输出技术 • 单片机键盘及显示接口设计 • 单片机键盘及显示应用案例
01
引言
主题介绍
单片机
单片机是一种集成电路芯片,具有计 算机的基本功能,常用于控制和智能 化设备。
键盘及显示
键盘是用户与单片机交互的主要输入 设备,用于输入数据和命令;显示则 是单片机向用户反馈信息的主要输出 设备,用于显示数据和状态。
单片机课程设计报告-仿手机键盘
单片机课程设计报告课题:仿手机键盘报告人:XXX学号:XXXX班级:XXXX目录一、手机键盘使用说明 (3)(一)键盘说明 (3)(二)“时钟”模式 (3)(三)“设置”模式 (3)(四)“手机”模式 (4)二、手机键盘设计说明 (5)(一)设计要求 (5)(二)硬件电路 (6)1、CPU (6)2、矩阵键盘 (7)3、LCD (8)4、蜂鸣器 (8)(三)流程图 (9)1、时钟模式 (9)2、设置模式 (9)4、手机模式 (10)5、定时器0 (11)(四)源程序 (12)三、课程设计心得体会 (30)一、手机键盘使用说明(一)键盘说明1、键盘按键对应键值:2、定义双击:2s间隔内按下同一数字键(二)“时钟”模式键盘键值对应功能:0(设置):按下设置键进入设置模式1(切换):按下切换键进入手机模式(三)“设置”模式键盘键值对应功能:0(移位):光标在年、月、日、星期、时、分、秒之间循环移位1(加):光标对应的时间(日期)加一2(减):光标对应的时间(日期)减一3(返回):返回时钟模式(四)“手机”模式键盘键值对应功能:1)数字键:0(0,。
?):单击显示0,双击显示0,。
?,长按循环显示0,。
?1(1abc):单击写入”1”,双击写入”1abc”,长按循环写入”1”、”a”、”b”、”c”2(2def):同上3(3ghi):同上4(4jkl):同上5(5mno):同上6(6pqr):同上7(7stu):同上8(8vwx):同上9(9yz ):同上(第四个字符是空格)2)功能键:A(删除):删除光标前一个字符B(退格):光标左移C(右移):光标右移D(清屏):LCD清屏E(跳转):返回时钟模式F(打电话):按下蜂鸣器模拟电话响,再次按下挂断电话二、手机键盘设计说明(一)设计要求显示方式:1602LCD 编程语言:汇编1、任务利用键盘矩阵仿照手机键盘,每个按键均集成多个按键字符,在LCD上分别显示2、要求1)手机键盘对应字符:2)依次按下不同按键时所显示的是按键上的第一个字符,如果在2S间隔内按下同一按键,该按键上的字符将被依次显示,如果同一按键上的两次连续按键时间间隔超过2S,则取字符位置归0,即显示该按键的第一个字符3)可模拟拨打电话号码,“*”键可实现退格功能,“#”键可实现清除功能4)字符显示和拨打电话,可通过按键选择控制5)按键时,可利用蜂鸣器发出提示音6)不工作时,显示北京时间,可调整3、附加功能1)“清屏“键可实现LCD清屏2)“右移“键可实现光标右移3)长按数字键可循环显示按键对应的所有字符(二)硬件电路1、CPU2、矩阵键盘3、LCD4、蜂鸣器(三)流程图1、时钟模式2、设置模式4、手机模式5、定时器0(四)源程序LCD_RS EQU P3.6LCD_RW EQU P3.5LCD_EN EQU P3.3BUZZER EQU P2.6DIALING BIT 01H ;打电话CIRCLE BIT 02HYEAR EQU 46HMONTH EQU 47HDAY EQU 48HWEEK EQU 49HH0 EQU 50HM0 EQU 51HS0 EQU 52HMS0 EQU 53HKEY_BUF EQU 36HIDL_SEC EQU 37HIDLE EQU 38HDOU_SEC EQU 39HSAME EQU 40HCURSOR EQU 41HDOU_NMS EQU 42HBUF EQU 45HORG 00HJMP MAINORG 0BHJMP TIM0ORG 1BHJMP TIM1MAIN:MOV SP,#60HACALL LCD_INIT ;LCD初始化ACALL TIME_INIT ;计时器初始化MOV CURSOR,#00HMOV YEAR,#0MOV MONTH,#1MOV DAY,#1MOV WEEK,#0MOV H0,#0MOV M0,#0MOV S0,#0MOV MS0,#0CLR DIALINGCLR CIRCLEACALL LCD_INITACALL WELCOMEBEGIN:ACALL LCD_INITACALL DISP_DATENEW_TIME:ACALL DISP_TIMEACALL KEY_TMOV A,KEY_BUFJZ SET_TIMECJNE A,#1,NEW_TIMEJMP PHONESET_TIME:CLR TR0 ;关定时器0MOV A,#83H ;定位光标ACALL LCD_CMDMOV A,#0EH ;显示光标ACALL LCD_CMDST_K:ACALL KEY_TMOV A,KEY_BUFJNZ ST_1ACALL MOVEJMP ST_KST_1:CJNE A,#1,ST_2ACALL INC_TJMP ST_KST_2:CJNE A,#2,ST_3ACALL DEC_TJMP ST_KST_3:CJNE A,#3,ST_KMOV A,#0CH ;关光标ACALL LCD_CMDSETB TR0 ;开定时器0JMP NEW_TIMEPHONE:ACALL SJ_INITSJ_k:ACALL KEYJMP SJ_KTABLE_W: DB "WELCOME TO PHONE",00HTABLE_WEEK: DB "Mon Tue Wed Thu Fri Sat Sun "TABLE: DB "0,.?1abc2def3ghi4jkl5mno6pqr7stu8vwx9yz ";***********************欢迎子程序**************************** WELCOME:MOV DPTR,#TABLE_WACALL WRITEWELCOM_K:ACALL KEY_TMOV A,KEY_BUFJNZ WELCOM_KRET;***********************时间模式子程序************************* KEY_T:MOV P2,#0E0H ;全扫描,各列线都送低电平MOV P1,#00HMOV A,P1 ;读回各行线电平值ORL A,#0F0H ;只读低四位CPL A ;所读值置反JNZ KT_IN ;不是全0说明有键按下MOV KEY_BUF,#0FFHRET ;无键按下返回KT_IN:ACALL DELAY5MS ;调延时,等待按合抖动过去ACALL DELAY5MS ;调延时,等待按合抖动过去ACALL DELAY5MS ;调延时,等待按合抖动过去ACALL DELAY5MS ;调延时,等待按合抖动过去MOV R2,#04H ;R2做计数器,存待扫描行数MOV R4,#7FH ;R4做指针,指示待扫描行数MOV R7,#00H ;R7用于决定键号,初值置以0KT_SCAN:MOV A,R4RL AMOV R4,A ;以上三条调整待扫描行MOV P2,A ;逐行扫描, 被扫描行送低电平MOV P1,#00HMOV A,P1 ;读回各列线电平值MOV R3,#04H ;R3做记数器,存被扫描行的待查列数KT_NEXT:RRC A ;调整待查列JNC KT_FIND ;被查列为低电平,被按键找到,转FINDINC R7 ;未找到,键号加一DJNZ R3,KT_NEXT ;被扫描行的待查列数不为0,转回NEXTDJNZ R2,KT_SCAN ;未找到所按键,返回MOV KEY_BUF,#0FFHRETKT_FIND:MOV KEY_BUF,R7MOV P2,#0E0HSETB TR1KT_LOOSEN:MOV A,P1ORL A,#0F0HCPL AJNZ KT_LOOSEN ;以上几条重复全扫描,等待所按键松按CLR TR1RETDISP_DATE:MOV A,#80HACALL LCD_CMDMOV A,#32H ;'2'ACALL LCD_WDA TAMOV A,#30H ;'0'ACALL LCD_WDA TAMOV A,YEAR ;年ACALL BCD_LCDMOV A,#2DH ;'-'ACALL LCD_WDA TAMOV A,MONTH ;月ACALL BCD_LCDMOV A,#2DH ;'-'ACALL LCD_WDA TAMOV A,DAY ;日ACALL BCD_LCDMOV A,#20HACALL LCD_WDA TAMOV A,WEEK ;星期RL ARL AADD A,#TABLE_WEEKMOV DPL,AMOV R3,#3WEEK1:CLR AMOVC A,@A+DPTRACALL LCD_WDA TAINC DPTRDJNZ R3,WEEK1RETDISP_TIME:MOV A,#0C0H ;跳转到第二行开头ACALL LCD_CMDMOV A,H0 ;时ACALL BCD_LCDMOV A,#3AH ;':'ACALL LCD_WDA TAMOV A,M0 ;分ACALL BCD_LCDMOV A,#3AH ;':'ACALL LCD_WDA TAMOV A,S0 ;秒ACALL BCD_LCDRETBCD_LCD:MOV B,#10DIV ABACALL BCD_ASCIIACALL LCD_WDA TAMOV A,BACALL BCD_ASCIIACALL LCD_WDA TARETBCD_ASCII:ANL A,#0FHADD A,#30HRET;光标移动:MOVE:ACALL LCD_RCMDCJNE A,#8CH,MOVE_1MOV A,#0C1HJMP MOVE_3MOVE_1:CJNE A,#0C7H,MOVE_2MOV A,#83HJMP MOVE_3MOVE_2:ADD A,#3MOVE_3:ACALL LCD_CMDRETINC_T:ACALL LCD_RCMDPUSH ACCCJNE A,#83H,ID_1INC YEARMOV A,YEARCJNE A,#100,ID_4MOV YEAR,#0JMP ID_4ID_1:CJNE A,#86H,ID_2INC MONTHMOV A,MONTHCJNE A,#13,ID_4MOV MONTH,#1JMP ID_4ID_2:CJNE A,#89H,ID_3INC DAYMOV A,DAYCJNE A,#31,ID_4MOV DAY,#1JMP ID_4ID_3:CJNE A,#8CH,INCTINC WEEKMOV A,WEEKCJNE A,#7,ID_4MOV WEEK,#0 ID_4:ACALL DISP_DATEPOP ACCACALL LCD_CMDRETINCT:CJNE A,#0C1H,IT_1INC H0MOV A,H0CJNE A,#24,IT_3MOV H0,#0JMP IT_3IT_1:CJNE A,#0C4H,IT_2INC M0MOV A,M0CJNE A,#60,IT_3MOV M0,#0JMP IT_3IT_2:CJNE A,#0C7H,IT_3INC S0MOV A,S0CJNE A,#60,IT_3MOV S0,#0IT_3:ACALL DISP_TIMEPOP ACCACALL LCD_CMDRETDEC_T:ACALL LCD_RCMDPUSH ACCCJNE A,#83H,DD_1DEC YEARMOV A,YEARCJNE A,#0FFH,DD_4MOV YEAR,#99JMP ID_4DD_1:CJNE A,#86H,DD_2DEC MONTHMOV A,MONTHCJNE A,#0,DD_4MOV MONTH,#12JMP DD_4DD_2:CJNE A,#89H,DD_3DEC DAYMOV A,DAYCJNE A,#0,DD_4MOV DAY,#30JMP ID_4DD_3:CJNE A,#8CH,DECTDEC WEEKMOV A,WEEKCJNE A,#0FFH,DD_4MOV WEEK,#6 DD_4:ACALL DISP_DATEPOP ACCACALL LCD_CMDRETDECT:CJNE A,#0C1H,DECT_1DEC H0MOV A,H0CJNE A,#0FFH,DECT_3MOV H0,#23JMP DECT_3DECT_1:CJNE A,#0C4H,DECT_2DEC M0MOV A,M0CJNE A,#0FFH,DECT_3MOV M0,#59JMP DECT_3DECT_2:CJNE A,#0C7H,DECT_3DEC S0MOV A,S0CJNE A,#0FFH,DECT_3MOV S0,#59DECT_3:ACALL DISP_TIMEPOP ACCACALL LCD_CMDRET;***********************手机模式子程序************************************** SJ_INIT:MOV BUF,#0FFHMOV CURSOR,#0ACALL LCD_INITMOV A,#0EHACALL LCD_CMDRET;扫描键盘子程序:KEY:MOV P2,#0E0HMOV P1,#00HMOV A,P1ORL A,#0F0HCPL AJNZ INRETIN:ACALL DELAYACALL DELAYACALL DELAYMOV R4,#7FHMOV R5,#04HMOV R6,#00HSCAN:MOV A,R4RL AMOV R4,AMOV P2,AMOV P1,#00HMOV A,P1MOV R7,#04HSCAN_LIE:RRC AJNC FINDINC R6DJNZ R7,SCAN_LIEDJNZ R5,SCANRETFIND:ACALL JUDGE ;判断是否双击MOV IDLE,#00HMOV SAME,R6ACALL GIVE_KEYACALL CLEAR ;清除按键时间SETB TR1 ;启动定时器1,记录按键时间MOV P2,#0E0HLOOSEN:MOV A,DOU_SECCJNE A,#02H,LOOSEN1 ;按键超过1秒,BUF=0(循环显示)MOV BUF,#00HMOV R7,#00HLOOSEN1:MOV P1,#00HMOV A,P1ORL A,#0F0HCPL AJNZ LOOSEN ;等待按键松开CLR TR1 ;关闭定时器1CLR CIRCLECJNE R6,#10,K1K1: JC KEY_DATA ;键值小于10跳转到数字键处理KEY_15: ;键值大于等于10为命令键MOV A,R6CJNE A,#0FH,KEY_14CPL DIALINGCLR TR1RETKEY_14:CJNE A,#0EH,KEY_13MOV A,#0CHACALL LCD_CMDJMP BEGINRETKEY_13:CJNE A,#0DH,KEY_12JMP PHONERETKEY_12:CJNE A,#0CH,KEY_11MOV A,CURSORJZ KEY_12_1ACALL LCD_FOREDEC CURSORKEY_12_1:RETKEY_11:CJNE A,#0BH,KEY_10ACALL LCD_RCMDCJNE A,#80H,KEY_11_1RETKEY_11_1:ACALL LCD_BACK;INC CURSORRETKEY_10:ACALL LCD_DELE;RETKEY_DATA:MOV A,BUFCJNE A,#0,DATA1RETDATA1:CJNE A,#1,DATA2ACALL LCD_DIS_SINRETDATA2:ACALL LCD_DIS_COMRETGIVE_KEY:MOV A,R6MOV B,#04HMUL ABADD A,#TABLEMOV DPL,ARET;显示第一个字符子程序:LCD_DIS_SIN:CLR AMOVC A,@A+DPTRACALL LCD_WCHARRET;显示全部字符子程序:LCD_DIS_COM:MOV R1,#3LCD_DIS_COM1:MOV A,#1MOVC A,@A+DPTRACALL LCD_WCHARINC DPTRDJNZ R1,LCD_DIS_COM1RET;长按循环显示子程序:LCD_CIRCLE:MOV A,#0MOVC A,@A+DPTRACALL LCD_WCHARINC DPTRINC R7CJNE R7,#4,CIRCLE1MOV R7,#00HMOV A,DPLSUBB A,#4MOV DPL,ACIRCLE1:RET;清除按键时间:CLEAR:MOV DOU_SEC,#0MOV DOU_NMS,#0 ; CLR DOUBLERET;判断是否双击:JUDGE:MOV A,R6CJNE A,SAME,JUDGE2MOV A,IDLECJNE A,#2,JUDGE1JUDGE1:JNC JUDGE2MOV A,BUFCJNE A,#1,JUDGE2MOV BUF,#2RETJUDGE2:MOV BUF,#1RET;写入一个字符到LCD子程序:LCD_WCHAR:ACALL LCD_MOVELCD_WCHAR_NL: ;直接覆盖写入ACALL LCD_WDA TAACALL LCD_RCMDCJNE A,#90H,LCD_WCHAR1MOV A,#0C0HACALL LCD_CMDJMP LCD_WCHAR2LCD_WCHAR1:CJNE A,#0D1H,LCD_WCHAR2ACALL LCD_DELELCD_WCHAR2:RET;删除一个字符子程序:LCD_DELE:ACALL LCD_RCMDCJNE A,#80H,DELE_1RETDELE_1:MOV A,CURSORJNZ DELE_2ACALL LCD_BACKMOV A,#20HACALL LCD_WDA TAACALL LCD_BACKRETDELE_2:ACALL LCD_BACKACALL LCD_RCMDPUSH ACCACALL LCD_FOREMOV R2,CURSOR LCD_DELE1:ACALL LCD_RDA TAPUSH ACCACALL LCD_BACKACALL LCD_BACKPOP ACCACALL LCD_WCHAR_NLACALL LCD_FOREDJNZ R2,LCD_DELE1ACALL LCD_BACKMOV A,#20HACALL LCD_WCHAR_NL LCD_DELE2:POP ACCACALL LCD_CMDRET;退格子程序:LCD_BACK:ACALL LCD_RCMDCJNE A,#0C0H,LCD_BACK1MOV A,#90HACALL LCD_CMDLCD_BACK1:MOV A,#10HACALL LCD_CMDRET;光标右移子程序:LCD_FORE:ACALL LCD_RCMDCJNE A,#8FH,LCD_FORE1MOV A,#0C0HACALL LCD_CMDRETLCD_FORE1:MOV A,#14HACALL LCD_CMDRETLCD_MOVE:PUSH ACCMOV A,CURSORJZ LCD_MOVE3MOV R2,CURSORCJNE R2,#1,MOVE0JMP LCD_MOVE2MOVE0:DEC R2LCD_MOVE1:ACALL LCD_FOREDJNZ R2,LCD_MOVE1MOV R2,CURSORLCD_MOVE2:ACALL LCD_RDA TAACALL LCD_WCHAR_NLACALL LCD_BACKACALL LCD_BACKACALL LCD_BACKDJNZ R2,LCD_MOVE2ACALL LCD_FORELCD_MOVE3:POP ACCRET;*******************************LCD相关子程序***************************** ;从LCD读出一个数据子程序:LCD_RDATA:ACALL CHECKBUSYMOV P0,#0FFHSETB LCD_RSSETB LCD_RWSETB LCD_ENNOPNOPNOPMOV A,P0CLR LCD_ENRET;读数据地址子程序:LCD_RCMD:ACALL CHECKBUSYMOV P0,#0FFHCLR LCD_RSSETB LCD_RWSETB LCD_ENNOPNOPNOPMOV A,P0ORL A,#80HCLR LCD_ENRET;LCD初始化设定子程序LCD_INIT:ACALL DELAY5MS ;延时15MSACALL DELAY5MS ;等待LCD电源稳定ACALL DELAY5MSMOV A,#38H ;16*2显示,5*7点阵,8位数据ACALL LCD_CMD_NC ;不进行LCD忙检测ACALL DELAY5MSMOV A,#38H ;16*2显示,5*7点阵,8位数据ACALL LCD_CMD_NC ;不进行LCD忙检测ACALL DELAY5MSMOV A,#38H ;16*2显示,5*7点阵,8位数据ACALL LCD_CMD_NC ;不进行LCD忙检测ACALL DELAY5MSMOV A,#08H ;显示关ACALL LCD_CMD ;进行LCD忙检测MOV A,#01H ;清除屏幕ACALL LCD_CMD ;进行LCD忙检测MOV A,#0CH ;显示开,关光标ACALL LCD_CMD ;进行LCD忙检测RET;写指令数据到LCD;RS=L,RW=L,D0-D7=指令码,E=高脉冲LCD_CMD:CALL CHECKBUSYLCD_CMD_NC:CLR LCD_RSCLR LCD_RWMOV P0,ASETB LCD_ENNOPNOPNOPNOPCLR LCD_ENRET;写显示数据到LCD;RS=H,RW=L,D0-D7=数据,E=高脉冲LCD_WDATA:ACALL CHECKBUSYSETB LCD_RSCLR LCD_RWMOV P0,ASETB LCD_ENNOPNOPNOPNOPCLR LCD_ENRETWRITE:PUSH ACCWRITE1:CLR AMOVC A,@A+DPTRJZ WRITE2INC DPTRACALL LCD_WDATAJMP WRITE1WRITE2:POP ACCRET;检测LCD控制器忙状态;读数据;RS=L,RW=H,E=H,输出:D0-D7=数据;P0.7=1,LCD忙,等待。
单片机课程设计模拟键盘输入及显示系统设计
课程设计说明课程名称:单片机应用基础设计题目:模拟键盘输入及显示系统设计专业:机械设计制造及其自动化指导教师:设计者:第一章课程设计的目的和要求1.1 课程设计的目的和要求1.2 课程设计预备知识1.3课题设计的任务............................................................第二章总体设计介绍对系统设计的总体认识及解决方案,并对采取的方案进行论证第三章硬件设计介绍本系统所选用的各种芯片的功能、引脚、相应的命令控制字格式等,画出系统工作原理图及实现方法第四章软件设计介绍本系统的主要功能模块程序的框图,以及总体程序框图和设计思路第五章系统调试介绍系统调试过程以及出现的问题、解决方法第六章结束语简述课程设计的收获、体会以及对本教学环节的意见和建议参考文献+1第一章、课程设计目的和要求 1.1课程设计目的和要求《单片机应用基础》课程设计是学好本门课程的又一重要实践性教学环节, 目的就是配合本课程的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程, 是知识转化为能力和能力转化为 工程素质的重要阶段。
1.2课程设计预备知识总的来说,设计者要具备Mcs-51单片机的有关硬件及软件知识,汇编语言编程或者语言编程的有关知识,1\0接口的有关知识,WAVE6000集成调试软件的应用,能利用PROTEUS 软件绘制系统工作原理,一定的设计经验等等。
本次设计所要掌握的一些基本知识如下:(1)键盘工作原理键盘是由若干按键组成的开关矩阵,是嵌入式控制系统的一种输入部件。
键盘分两种: —种是独立式按键, 另一种是矩阵式按键。
如图所示。
独立式按键用的比较少,可以直接与 单片机的P1 口某一位进行连接,通过判断这一位的状态知道是否有键输入。
单片机键盘输入课程设计
C语言编程实现键盘输入
键盘输入:通过键盘获取用户输入的字 符或数字
编程实现:使用C语言编写程序,实现键 盘输入的功能
输入函数:使用scanf()函数或getchar() 函数获取键盘输入
输出函数:使用printf()函数或 putchar()函数输出键盘输入的字符或数 字
软件调试与测试
软件调试:通过运 行程序,发现并修 复程序中的错误
软件测试:通过运 行程序,验证程序 的功能和性能是否 符合预期
调试方法:断点调 试、单步调试、日 志调试等
测试方法:单元测 试、集成测试、系 统测试、压力测试 等
综合调试与测试
硬件连接:检查键盘与单片机的连接是否 正确
软件调试:编写测试程序,检查键盘输入 是否正常
Part Four
单片机键盘输入的 软件设计
扫描法实现键盘输入
扫描法原理:通过定时器定时扫描键盘,检测按键状态 扫描法步骤:初始化定时器、定时扫描、检测按键状态、处理按键事件 扫描法优点:简单易实现,适用于按键数量较少的情况 扫描法缺点:占用CPU时间,不适用于按键数量较多的情况
矩阵法实现键盘输入
调试与测试:使用 IAR Embedded Workbench的调 试工具进行调试和 测试
Part Six
单片机键盘输入的 调试与测试
硬件调试与测试
硬件连接:检查键盘与单片机的连接是否正确 软件调试:编写测试程序,检查键盘输入是否正常 硬件测试:使用示波器等设备,检查键盘输入信号是否正常 软件测试:编写测试程序,检查键盘输入是否正确处理
错误处理:处理可能出现的错误,如输 入非法字符或数字等
程序示例:给出一个使用C语言实现键盘 输入的简单示例程序
单片机_键盘显示课程设计
课程设计任务书学生姓名:易杨专业班级:电信0802 指导教师:曾刚工作单位:信息工程学院题目:简易键盘与显示功能设计初始条件:具备数字电路的理论知识;具备单片机原理的理论知识和实践能力;熟悉51单片机的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、用并行口检测一组开关(4个)的状态,并用发光二极管现实其当前的状态。
2、用并行口设计一键盘显示电路,按键数字1、2、3、4,要求当某个按键按下时,能现实该按键的值时间安排:二十二周一周,其中3天硬件设计,2天硬件调试指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)1 软件与硬件简介 (1)1.1 Proteus软件简介 (1)1.2 AT89C51硬件简介 (1)2 总体分析设计 (2)2.1 电路结构分析 (2)2.2 总体方案设计 (2)2.3 总体电路图 (3)3 单元电路设计 (4)3.1键盘输入模块 (4)3.2 按键监控模块 (4)3.3 单片机 (5)3.4 数码管模块 (5)4 软件设计与仿真 (7)4.1 软件流程图 (7)4.2 系统程序代码 (7)4.3 仿真结果 (9)5 心得体会 (10)参考文献 (11)摘要在日常生活中,我们经常要通过按键来实现对电子装置的控制,小到手表手机,中到电视电脑,大到各种复杂仪器,都需要通过按键来实现各种操作。
本次课程设计作为实践教学的一个重要环节,将以按键控制显示为主题,以AT89C51单片机及其接口芯片为核心构造一个键盘控制显示系统,并使用Proteus软件对所设计的电路进行仿真。
关键词:Proteus 键盘显示AT89C51 仿真1 软件与硬件简介1.1 Proteus软件简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
单片机课程设计--键盘输入在LED数码管上的显示
东北石油大学课程设计年月日东北石油大学课程设计任务书课程单片机的控制系统课程设计题目键盘输入在LED数码管上的显示专业姓名学号主要内容、基本要求、主要参考资料等主要内容:完成键盘输入在LED数码管上的显示。
基本要求:1.了解 4×4 键盘的工作原理。
2.熟悉 SPCE061A 单片机控制数码管显示的方法。
3.掌握 4×4 键盘的使用方法。
4.掌握 4×4 键盘控制数码管显示的方法。
参考资料:[1]肖洪兵.跟我学用单片机[J].北京:北京航空航天大学出版社,2002.8[2]何立民.单片机高级教程第1版[M].北京:北京航空航天大学出版社,2001.6[3]赵晓安.MCS-51单片机原理及应用[M].天津:天津大学出版社,2001.3[4]李广第.单片机基础第1版[M].北京:北京航空航天大学出版社,1999.5[5]徐惠民.单片微型计算机原理与应用[M].北京:北京邮电大学出版社,1996.2[6] 袁勤勇.嵌入式系统构件[M].北京:北京机械工业出版社,2002.完成期限指导教师专业负责人年月日目录第1章设计的研究背景及目的要求 (1)1.1 研究背景 (1)1.2 设计目的 (1)1.3 硬件选择 (1)1.4 设计内容 (1)第2章设计的基本原理及硬件连接方案 (2)2.1 4X4键盘扫描原理图 (2)2.2 SPCE061A获取4×4键盘键值原理 (2)2.3 硬件连接 (3)第3章软件设计方案 (5)3.1 设计步骤 (5)3.2 设计程序 (6)第4章调试结果与分析 (7)4.1 调试结果 (7)4.2 结果分析 (7)结论与体会 (8)参考文献 (9)附录 (10)第1章设计的研究背景及目的要求1.1 研究背景用单片机驱动LED数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。
静态显示数据稳定,占用很少的CPU时间。
单片机中键盘输入接口的设计与应用案例
单片机中键盘输入接口的设计与应用案例键盘输入接口在单片机中具有重要的作用,它可以实现用户与单片机之间的信息交互。
在本文中,我们将探讨单片机中键盘输入接口的设计原理,并给出一个应用案例来展示其实际应用。
一、设计原理单片机中实现键盘输入接口的基本原理是通过矩阵键盘扫描的方式进行的。
具体步骤如下:1. 连接矩阵键盘首先,我们需要将矩阵键盘与单片机连接起来。
矩阵键盘由多个按钮组成,每个按钮有一个独特的按键码。
常见的矩阵键盘有4×4和4×3两种类型。
2. 设置引脚模式接下来,我们需要设置单片机的引脚模式,将指定的引脚配置为输入模式。
这样,我们就可以通过这些引脚来读取矩阵键盘上的按键信息。
3. 扫描按键在单片机程序中,我们需要编写代码来扫描键盘。
扫描的步骤是逐行扫描矩阵键盘,通过拉低某一行的引脚,然后读取对应列的引脚状态。
如果发现某个按键被按下,则对应的引脚状态为低电平。
4. 处理按键事件一旦检测到按键按下事件,我们就可以根据按键的按键码进行相应的处理。
这可能包括显示按键信息、执行特定的功能等。
二、应用案例为了更好地理解键盘输入接口的设计与应用,我们以一个简单的密码锁系统为例来说明。
1. 系统设计这个密码锁系统需要用户通过按下特定的按键组合来输入密码,一旦输入正确,系统会开启门锁。
2. 硬件设计我们可以选择4×4矩阵键盘作为输入设备,并连接到单片机的引脚上。
3. 程序设计我们需要编写相应的程序来实现密码锁系统的功能。
程序的主要逻辑如下:(1)初始化引脚:将矩阵键盘对应的引脚设置为输入模式。
(2)密码输入:通过扫描矩阵键盘,读取按键信息。
根据按键码将按键信息存储到一个缓冲区中。
(3)密码验证:当用户输入完整的密码后,我们需要对其进行验证。
如果密码正确,则开启门锁;否则提示密码错误。
(4)功能实现:在密码验证通过后,我们可以添加一些额外的功能,例如计时器、报警器等。
4. 系统测试完成程序编写后,我们需要将代码烧录到单片机中,并测试系统的功能。
单片机原理及接口技术结课报告——键盘输入及显示
单片机原理及接口技术结课报告——键盘输入及显示小组成员:第一章总体设计原理本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个4*4的键盘,一个排阻(10K)做P0口的上拉电阻,它可以实现结果低于65535的加、减、乘、除运算。
——P2.7相连,P2口作为数码管的位控制端。
——P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。
执行过程:开机即显示0,等待键入数值,当键入数字,将通过数码管显示出来,在键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。
注:结果不能超出65535。
按键控制显示电路系统的总体原理框图为:第二章硬件设计2.1 系统所选芯片介绍AT89C51芯片是一种带有4K字节闪存的低电压、高性能CMOS 8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
AT89C51单片机模块是整个电路的核心,时钟信号与复位信号的产生以及程序的处理等任务都是由单片机来完成的。
时钟信号用来提供单片机片内各种微操作的时间基准,复位信后用来初始化单片机内部的某些特殊功能寄存器,使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。
图1 AT89C51单片机2.2显示器介绍LED(Light Emiting Diode)是发光二极管的缩写。
通常所说的LED显示器由7个发光二极管组成,因此也称为七段LED显示器,其排列形状如下图所示。
显示器还有一个圆点型发光二极管(图中dp),用于显示小数点。
通过其个发光二极管亮暗的不同组合,就可以显示多种数字、字母以及其他符号。
单片机键盘显示接口电路设计
单片机键盘显示接口电路设计设计单片机键盘显示接口电路,需要考虑到键盘输入与显示输出两个方面。
以下是一个简单的设计示例,供参考:键盘通常采用矩阵键盘连接电路的方式,通过扫描矩阵的方式读取键盘输入信息。
以下是矩阵键盘接口电路的设计流程:1.确定键盘的规格和类型:键盘一般有正方形、矩形、圆形等几种形状,需要根据键盘的规格和类型选择适合的扫描方式。
2.确定键盘的逻辑矩阵大小:根据键盘的布局和规格,确定键盘的逻辑矩阵的行和列数,例如4行4列。
3.确定键盘的连接方式:键盘的连接方式一般有行列扫描、列行扫描、行列+列行扫描等几种方式,需要根据键盘的输出信号特点和单片机的输入要求进行适当的选择。
4.设计按键输入的译码电路:将键盘的输出信号通过译码电路解码成易于读取的二进制数,以便单片机的输入端口读取。
显示输出接口电路设计一般有两种方式:数码管和液晶显示。
1.数码管显示电路设计:数码管是通过控制各个数码管的段选和位选,实现数字或字符的显示。
以下是数码管显示电路的设计流程:a.确定显示的数字或字符类型:根据设计需求,确定要显示的数字或字符类型,例如整数、小数、字母等。
b.确定数码管的位数和类型:根据显示需求,确定数码管的位数和类型,有共阴数码管和共阳数码管两种类型,需要选择适合的数码管。
c.设计数码管的译码电路:根据数码管的类型和位数,设计数码管的译码电路,将输入的数字或字符转换为控制各个数码管的段选和位选的电信号。
2.液晶显示电路设计:液晶显示器是一种常见的显示设备,通过控制液晶的极性来实现图形和字符的显示。
以下是液晶显示电路设计的流程:a.确定显示的内容类型:根据设计需求,确定要显示的内容,例如字符、图像等。
b.选择适合的液晶显示器:根据显示的内容和要求,选择适合的液晶显示器,有字符型液晶显示器和图形型液晶显示器两种类型。
c.设计液晶的驱动电路:根据液晶显示器的类型和特性,设计液晶的驱动电路,将输入的数字或字符转换为控制液晶的电信号。
单片机4X4键盘扫描和显示课程设计
单⽚机4X4键盘扫描和显⽰课程设计⼆、设计内容1、本设计利⽤各种器件设计,并利⽤原理图将8255单元与键盘及数码管显⽰单元连接,扫描键盘输⼊,最后将扫描结果送⼊数码管显⽰。
键盘采⽤4*4键盘,每个数码管可以显⽰0-F共16个数。
将键盘编号,记作0-F,当没按下其中⼀个键时,将该按键对应的编号在⼀个数码管上显⽰出来,当在按下⼀个键时,便将这个按键的编号在下⼀个数码管上显⽰,数码管上可以显⽰最近6次按下的按键编号。
设计并实现⼀4×4键盘的接⼝,并在两个数码管上显⽰键盘所在的⾏与列。
三、问题分析及⽅案的提出4×4键盘的每个按键均和单⽚机的P1⼝的两条相连。
若没有按键按下时,单⽚机P1⼝读得的引脚电平为“1”;若某⼀按键被按下,则该键所对应的端⼝线变为地电平。
单⽚机定时对P1⼝进⾏程序查询,即可发现键盘上是否有按键按下以及哪个按键被按下。
实现4×4键盘的接⼝需要⽤到单⽚机并编写相应的程序来识别键盘的⼗六个按键中哪个按键被按下。
因为此题⽬还要求将被按下的按键显⽰出来,因此可以⽤两个数码管来分别显⽰被按下的按键的⾏与列表⽰任意⼀个⼗六进制数)分别表⽰键盘的第⼆⾏、第三⾏、第四⾏;0xXE、0xXD、0xXB、0xX7(X表⽰任意⼀个⼗六进制数)则分别表⽰键盘的第⼀列、第⼆列、第三列和第四列。
例如0xD7是键盘的第⼆⾏第四列的按键对于数码管的连接,采⽤了共阳极的接法,其下拉电阻应保证芯⽚不会因为电流过⼤⽽烧坏。
五、电路设计及功能说明4×4键盘的⼗六个按键分成四⾏四列分别于P1端⼝的⼋条I/O数据线相连;两个七段数码管分别与单⽚机的P0⼝和P2⼝的低七位I/O数据线相连。
数码管采⽤共阳极的接法,所以需要下拉电阻来分流。
结合软件程序,即可实现4×4键盘的接⼝及显⽰的设计。
当按下键盘其中的⼀个按键时,数码管上会显⽰出该按键在4×4键盘上的⾏值和列值。
所以实现了数码管显⽰按键位置的功能四、设计思路及原因对于4×4键盘,共有⼗六个按键。
基于单片机控制的矩阵键盘显示系统设计
基于单片机控制的矩阵键盘显示系统设计矩阵键盘是一种常见的输入设备,用于将用户的按键操作转换成数字信号,以便与其他电子设备进行交互。
基于单片机的矩阵键盘显示系统设计实现了对键盘输入的读取,并通过显示器将按键信息进行显示。
下面将对该系统的设计进行详细介绍。
1.系统概述本系统主要由矩阵键盘、单片机、显示器组成。
矩阵键盘采用常见的4行4列的布局,每个按键都与单片机的输入引脚相连接。
单片机负责读取输入引脚的状态,并根据不同的按键进行不同的处理。
而显示器则用于显示按键输入的结果。
2.硬件设计2.1矩阵键盘矩阵键盘采用4行4列的布局,每个按键都与单片机的输入引脚相连接。
为了实现多按键同时按下的检测,采用按键矩阵的方式进行连接。
在按键矩阵中,每个按键与四个不同的引脚相连接,分别代表行和列。
单片机通过轮询的方式读取每个行和列的引脚状态,从而实现对按键状态的检测。
2.2单片机单片机作为系统的核心控制器,负责读取矩阵键盘的输入信号,并对按键进行处理。
单片机需要配置相应的IO引脚作为输入引脚,并进行轮询式的读取。
当按键按下时,单片机会通过扫描算法检测到按键的位置,并将按键的信息存储到相应的缓存区。
2.3显示器显示器用于显示按键输入的结果。
可以采用常见的数码管、LCD屏幕或者LED矩阵作为显示设备。
单片机通过输出引脚将按键信息传递给显示器,显示器根据这些信息进行相应的显示操作。
3.软件设计3.1初始化在系统启动时,单片机需要进行相应的初始化工作。
主要包括配置口线方向、扫描算法的设置、中断使能等。
3.2扫描算法为了检测按键的位置,需要采用合适的扫描算法。
常用的有逐行扫描、逐列扫描和矩阵扫描等。
逐行扫描的方法是先给每一行输出低电平,然后通过检测每一列的引脚状态来确定按键位置。
逐列扫描的方法与之类似,只是输出低电平的对象从行变为列。
矩阵扫描方法是同时扫描行和列,通过检测相交的引脚状态来确定按键位置。
在实际应用中,可以根据具体需求选择合适的扫描算法。
单片机键盘与显示电路设计
MCS-51单片机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(片外数据存储器读选通控制输出)
图 9-3
独立式按键电路配置灵活,软件结构
简单,但每个按键必须占用一根I/O口线, 因此,在按键较多时,I/O口线浪费较大, 不宜采用。
2.独立式按键的软件结构
独立式按键的软件常采用查询式结构。先 逐位查询每根I/O口线的输入状态,如某一根 I/O口线输入为低电平,则可确认该I/O口线所 对应的按键已按下,然后,再转向该键的功 能处理程序。
3.动态显示接口
动态显示是一位一位地轮流点亮各位数 码管,这种逐位点亮显示器的方式称为位扫 描。通常,各位数码管的段选线相应并联在 一起,由一个8位的I/O口控制;各位的位选 线(公共阴极或阳极)由另外的I/O口线控 制。动态方式显示时,各数码管分时轮流选 通,要使其稳定显示,必须采用扫描方式, 即在某一时刻只选通一位数码管,并送出相 应的段码,在另一时刻选通另一位数码管, 并送出相应的段码。
P3口电路中包含有一个数据输出锁存器、两个三态数据 输入缓冲器、一个数据输出的驱动电路和一个输出控制电 路。
P3口的功能和驱动能力 P3口可以作为通用的I/O口使用; 可以作为单片机系统的第二功能的输入和输出。 P3口可以驱动4个标准的TTL负载电路。 注意在P3口的使用时,首先要考虑第二功能的要求。
独立式按键
单片机控制系统中,往往只需要几个 功能键,此时,可采用独立式按键结构。
单片机按键输入课程设计
单片机按键输入课程设计一、课程目标知识目标:1. 让学生掌握单片机按键输入的基本原理,理解按键去抖动和状态检测的方法。
2. 使学生了解单片机中断系统在按键输入中的应用,掌握中断处理程序的编写。
3. 帮助学生理解按键输入在实际项目中的运用,掌握相关程序设计和调试技巧。
技能目标:1. 培养学生独立编写单片机按键输入程序的能力,提高编程实践技能。
2. 培养学生通过查阅资料、动手实践等方式解决实际问题的能力。
3. 提高学生团队协作、沟通表达的能力,学会在项目中与他人合作共同完成任务。
情感态度价值观目标:1. 培养学生对单片机编程的兴趣,激发学生学习热情,增强学习动力。
2. 培养学生严谨、细心的科学态度,养成良好的编程习惯。
3. 增强学生的自信心,使其相信自己具备解决实际问题的能力,培养克服困难的决心。
课程性质:本课程为实践性较强的单片机技术课程,旨在培养学生的编程实践能力和实际应用能力。
学生特点:学生已具备一定的单片机基础知识,具有较强的学习兴趣和动手能力,但编程实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,以实际项目为载体,提高学生的编程能力和解决问题的能力。
通过分解课程目标为具体学习成果,便于教学设计和评估。
二、教学内容1. 单片机按键输入原理:介绍按键去抖动方法、按键状态检测原理,使学生理解按键输入的基本过程。
- 教材章节:第二章第三节“按键输入电路及其程序设计”2. 单片机中断系统:讲解中断系统的原理,以按键输入为例,介绍中断处理程序的编写方法。
- 教材章节:第三章第二节“中断系统及其应用”3. 按键输入程序设计:结合实际项目,指导学生编写按键输入程序,包括主程序和中断处理程序。
- 教材章节:第二章第四节“按键输入程序设计实例”4. 按键输入程序调试:介绍程序调试方法,培养学生独立解决问题的能力。
- 教材章节:第四章第三节“程序调试与优化”5. 实践项目:设计一个基于单片机的按键输入控制系统,让学生动手实践,巩固所学知识。
单片机键盘输入课程设计.
目录第1章课程设计任务书 (2)第2章设计目的 (2)第3章设计原理与分析 (2)第4章所选元件清单 (6)第5章课程设计心得 (7)第6章参考文献 (7)附录 (8)第一章、课程设计任务书本设计以MCS-51系列单片机为核心,采用常用电子器件设计。
要求能显示出秒、分、时、天,可调整各个时间,采用LED八段数码管显示。
第二章、课程设计目的1、掌握51系列单片机编程原理(1)掌握单片机C51语言程序编程的思想及方法,加深对单片机的更深层次的理解,熟悉单片机的内部硬件资源。
(2)定时器中断服务子程序和外中断服务子程序各个程序段所实现的功能和编写。
(3)通过此次课程设计,学会怎么利用所学单片机知识独立设计系统,达到学于致用的目的,加深了解C51设计编程思想及开发系统的一般过程,并不断创新。
2、掌握矩阵式键盘电路的接法及工作原理(1)掌握矩阵式键盘的接法及工作原理。
(2)掌握键盘消抖的工作原理。
3、掌握矩阵式键盘电路的接法及工作原理(1)掌握矩阵式键盘键盘扫描程序的编写。
(2)掌握键盘消抖程序的编写。
4、掌握共阳八段码显示器连接,做成可调节的电子表,简单的了解单片机对显示器的控制过程;能在此基础上做成可调节的万年历。
第三章、设计原理与分析1、实验硬件电路的原理与设计A.键盘扫描识别1、识别键的闭合,通常采用行扫描法和行反转法。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。
然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书课程名称:单片机应用基础设计题目:模拟键盘输入及显示系统设计专业:机械设计制造及其自动化指导教师:设计者:学号:目录第一章课程设计的目的和要求 (1)1.1课程设计的目的和要求 (1)1.2课程设计预备知识 (1)1.3课题设计的任务 (2)第二章总体设计介绍对系统设计的总体认识及解决方案,并对采取的方案进行论证第三章硬件设计介绍本系统所选用的各种芯片的功能、引脚、相应的命令控制字格式等,画出系统工作原理图及实现方法第四章软件设计介绍本系统的主要功能模块程序的框图,以及总体程序框图和设计思路第五章系统调试介绍系统调试过程以及出现的问题、解决方法第六章结束语简述课程设计的收获、体会以及对本教学环节的意见和建议参考文献第一章、课程设计目的和要求1.1 课程设计目的和要求《单片机应用基础》课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的就是配合本课程的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。
1.2课程设计预备知识总的来说,设计者要具备Mcs-51单片机的有关硬件及软件知识,汇编语言编程或者C 语言编程的有关知识,I\O接口的有关知识,WAVE6000集成调试软件的应用,能利用PROTEUS 软件绘制系统工作原理,一定的设计经验等等。
本次设计所要掌握的一些基本知识如下:(1)键盘工作原理键盘是由若干按键组成的开关矩阵,是嵌入式控制系统的一种输入部件。
键盘分两种:一种是独立式按键,另一种是矩阵式按键。
如图所示。
独立式按键用的比较少,可以直接与单片机的P1口某一位进行连接,通过判断这一位的状态知道是否有键输入。
在应用中通常需要数量较多的按键,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
独立式键盘和4*4矩阵式键盘矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,行线通过电阻接正电源,并将列线所接的单片机的I/O口作为输出端,而行线所接的I/O口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
(2)LED显示接口及原理LED是发光二极管的英文缩写,LED显示器是由发光二极管构成的,它在单片机中的应用非常普遍。
通常所说的LED显示器由7个发光二极管组成,其排列形状如图所示。
此外,显示器中还有一个圆点型发光二极管以dp表示,用于小数点表示。
通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。
LED显示中的发光二极管共有两种连接方法:共阳极接法:把发光二极管的阳极连在一起构成公共阳极。
使用时公共阳极接+5V。
这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不亮。
共阴极接法:把发光二极管的阴极连在一起构成公共阴极。
使用时公共阴极接地。
这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不亮。
控制数码管驱动级的控制电路有静态式和动态式两类:静态驱动:它是指每个数码管都要用一个译码器译码驱动。
动态驱动:它是所的数码管使用一个专门的译码驱动器,使各位数码管逐个轮流显示,它的扫描速度极快,因此显示效果与静态驱动相同。
采用动态数码管显示,可以大幅度地降低硬件成本和电源的功耗,因为某一时刻只有一个数码管工作,就是所谓的分时显示,显示所需要的硬件电路可分时复用。
共阴极共阳极符号与引脚如表1为共阳极与共阴极的代码表表1 十六进制数字形代码表(3) 键盘输入与LED显示设计中通过键盘输入到单片机中,由程序控制找到输入点,计算键码,调用显示模块,把输入的数值通过LED显示器显示出来。
(1) 判断键盘中有无键按下:将全部行线P1.0到P1.3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
(2) 判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:将行线置为低电平,即在置行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
检测的方法是P1.4-P1.7输出全“1”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“0”,则无键闭合,否则有键闭合。
(3) 去除键抖动:当检测到有键按下后,延时一段时间再做下一步的检测判断。
(4) 识别:当确定键按下时,通过软件计算键码找到相对位置的数据调用显示模块把数字或字母显示出来或者实现其他功能。
1.3课题设计的任务根据给定的任务要求选择合适的单片机和其他电子元器件,进行系统硬件电路设计和软件编程,根据系统制作并调试系统电路板,使之实现任务要求。
有关参数选择要求符合国家标准。
具体设计内容如下:1.模拟键盘输入及显示模块。
2. 设计系统工作原理图,利用PROTEUS软件绘制系统工作原理图;3. 系统控制程序设计、调试及实现:(1)根据要求,写出完整的程序流程图;(2)将设计程序输入、汇编,排除语法错误,生成*.OBJ文件;(3)按所设计的原理图,在实验平台上连线,检查无误;(4)将目标文件传送到实验系统,执行并运行调试该程序,最终实现控制要求4. 写出设计说明书,说明书格式见附录,3000字左右第二章、模拟键盘输入及显示模块的总体设计1、明确任务根据课题的要求确定所要设计的任务,分析后确定设计一个4x4矩阵键盘的识别和7段数码管动态显示综合的系统,控制4个7段数码管动态扫描显示4x4矩阵键盘上按下的按键所对应的值,第一次按下后,每按下一次键数码管上的数字左移一位;另外设一个功能键,当按下此功能键后数码管上将显示设计者的学号,先显示2009一段时间,然后显示6230一段时间,之后将显示屏清零,等待下一次的输入。
2、硬件和软件功能的划分系统的硬件配置和软件设计是紧密地联系在一起的,且硬件和软件具有一定的互换性,硬件完成一些功能,可以提高工作速度,但降低了系统的柔性。
若用软件替代某些硬件功能,可增加系统的柔性,但降低系统的工作速度。
因此,总体设计时,应综合考虑,合理划分硬件和软件的功能。
经过分析后,确定4x4矩阵键盘用于单片机系统的输入,4个数码管用于显示按键所对应的值及显示设计者的学号,而单片机则用于逻辑控制和程序的执行,程序则是为实现所设计的功能而编写。
经过论证,该方案能够实现课程设计所要求的任务及预期的目标。
第三章、模拟键盘输入及显示模块的硬件设计1、系统扩展实验仿真系统的CPU是8031,因此,必须首先组成最小系统,即由8031、地址锁存器和程序存储器组成。
2、功能接口所谓接口是CPU与外界的连接部件,以实现CPU与外部设备的最佳耦合和匹配。
包括键盘、显示、A/D转换、D/A转换和打印机等。
根据课题要求选用外设,并选用合适的外围接口芯片。
3、系统的组成及统一编址I/O端口是CPU与I/O设备直接通信的地址。
单片机系统对I/O端口是采用端口地址与存储器地址统一编址的方式,即存储器映射方式。
而编址技术又分线选法和译码法。
设计者在设计硬件时,应自行编址。
4、80C51单片机引脚图及引脚功能介绍单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。
80C51单片机引脚图如下:4.⒈ 电源:⑴ VCC - 芯片电源,接+5V;⑵ VSS - 接地端;4.⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
4.⒊ 控制线:控制线共有4根,⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲① ALE功能:用来锁存P0口送出的低8位地址② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RST/VPD:复位/备用电源。
① RST(Reset)功能:复位信号输入端。
② VPD功能:在Vcc掉电情况下,接备用电源。
⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。
① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
4.⒋ I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。
另外,P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
5、键盘设计如下:80C51单片机的并行口P2接4×4矩阵键盘,以P1.0-P1.3接键盘列线,以P1.4-P1.7作行线;实际电路图连接如下图所示。
6、4位7段码数码管的连接P0口输出按键信息,即段码,与数码管的 a、b、c、d、e、f、g、dp相连,并接上+5v电源和上拉电阻;P1口低四位作为位控,与数码管的1、2、3、4口相连,在数码管上显示每个按键的“0-E”键值。
7、最后设计的系统工作原理图如下:第四章、软件设计一个优秀的的系统的软件应具有下列特点:①软件结构清晰、简捷、流程合理。
②各功能程序实现模块化、子程序化。
这样,既便于调试、链接,又方便移植、修改。
③程序存储区、数据存储区分配合理。
④运行状态实现标志化管理。
各个功能程序运行状态、运行结果以及运行要求都设置状态标志(一般用位寻址区的位)以便查询,程序的转移、运行、控制都可以通过状态标志条件来控制。
⑤实现全面软件抗干扰设计。
(由于条件有限,课程设计中不考虑。
)软件设计一般步骤如下:1、系统定义系统定义是在软件设计前,把软件承担的任务明确出来。
合理定义和分配存储空间、定义标志位。
资源分配的主要工作是RAM资源的分配。
片外RAM的容量要比片内RAM大,通常用来存放批量大的数据,如采样数据系列。
主要考虑片内RAM的分配。
系统上电复位时,自动定义0区为工作寄存器,1区为堆栈,并向2区、3区延伸。
如果系统前台程序要用1区、2区作为工作寄存器,就应将堆栈空间重新规划,常将堆栈安放在片内RAM的高端,如60H~7FH。
在工作寄存器的8个单元中,R0和R1具有指针功能,是编程的重要角色,应充分发挥其作用,尽量避免用来做其他事情。