键盘显示电路驱动程序设计
- 格式:doc
- 大小:286.50 KB
- 文档页数:10
实验一键盘显示系统实验1.实验目的:(1)了解8155芯片的工作原理以及应用(2)了解键盘、LED显示器的接口原理以及硬件电路结构(3)掌握非编码键盘的编程方法以及程序设计2.实验内容:将程序输入实验系统后,在运行状态下,按下数字0~9之一,将在数码管上显示相应数字,按下A、B或C之一,将在数码管上显示“0”、“1”或“2”循环3.程序框图:4. 实验程序下面程序有四部分组成,程序的地址码、机器码、程序所在行号(中间)和源程序。
字型码表和关键字表需要同学们自己根据硬件连接填在相应位置。
地址码机器码 1 源程序0000 2 org 0000h0000 90FF20 3 mov dptr,#0ff20h0003 7403 4 mov a,#03h ;方式字0005 F0 5 movx @dptr,a ;A和B口为输出口,C口为输入口0006 753012 6 mov 30h,#12h ;LED共阴极,开始显示“H”,地址偏移量送30h0009 1155 7 dsp: acall disp1 ;调显示子程序000B 11FE 8 acall ds30ms000D 1179 9 acall scan ;调用键盘扫描子程序000F 60F8 10 jz dsp ;若无键按下,则dsp0011 11B7 11 acall kcode ;若有键按下,则kcode0013 B40A00 12 cjne a,#0ah,cont ;是否数字键,若是0-9则是,a-c则否0016 400F 13 cont: jc num ;若是,则num0018 90001F 14 mov dptr,#jtab ;若否,则命令转移表始址送dptr 001B 9409 15 subb a,#09h; 形成jtab表地址偏移量001D 23 16 rl a ;地址偏移量*2001E 73 17 jmp @a+dptr ;转入相应功能键分支程序001F 00 18 jtab: nop0020 00 19 nop0021 8008 20 sjmp k1 ;转入k1子程序0023 800B 21 sjmp k2 ; 转入k2子程序0025 800E 22 sjmp k3 ; 转入k3子程序0027 F530 23 num: mov 30h,a0029 80DE 24 sjmp dsp ; 返回dsp002B 7531C0 25 k1: mov 31h,#0c0h ; "0" 循环显示002E 800A 26 sjmp k40030 7531F9 27 k2: mov 31h,#0f9h ; "1" 循环显示0033 8005 28 sjmp k40035 7531A4 29 k3: mov 31h,#0a4h ; "2" 循环显示0038 8000 30 sjmp k4003A 7B01 31 k4: mov r3,#01h ;显示最末一位,注意共阴极003C EB 32 k5: mov a,r3003D 90FF21 33 mov dptr,#0ff21h0040 F0 34 movx @dptr,a ;字位送81550041 E531 35 mov a,31h0043 90FF22 36 mov dptr,#0ff22h; 字型口0046 F0 37 movx @dptr,a ;字型送8155的B口0047 11EC 38 acall delay ;延时1ms***0049 74FF 39 mov a,#0ffh004B F0 40 movx @dptr,a ;关显示,在此使LED各位显示块都灭004C EB 41 mov a,r3004D 23 42 rl a004E FB 43 mov r3,a004F BB40EA 44 cjne r3,#40h,k5 ;还没有循环玩一遍,则循环继续0052 80E6 45 sjmp k4 ;若循环完一遍则返回k4;又开始新一轮的循环0054 22 46 ret0055 90FF21 47 disp1: mov dptr,#0ff21h; 字位口A,注意led是共阴极接法0058 7401 48 mov a,#01h005A F0 49 movx @dptr,a005B 90FF22 50 mov dptr,#0ff22h;字型口005E E530 51 mov a,30h0060 2402 52 add a,#02h0062 83 53 movc a,@a+pc0063 F0 54 movx @dptr,a ;字型码输入,N1点亮0064 22 55 ret ;下面是0到c的字型码0065 ? 56 db ????0066 ?0067 ?0068 ?0069 ?006A ? 57 db ????006B ?006C ?006D ?006E ?006F ? 58 db ????0070 ?0071 ?0072 ?0073 ?0074 ? 59 db ????0075 ?0076 ?0077 ?0078 ?0079 74FF 60 scan: mov a,#0ffh; 关显示码a007B 90FF22 61 mov dptr,#0ff22h; B口地址送dptr007E F0 62 movx @dptr,a ;关led显示007F 7400 63 mov a,#00h0081 90FF21 64 mov dptr,#0ff21h ;A口地址,字位码0084 F0 65 movx @dptr,a0085 90FF23 66 mov dptr,#0ff23h ;C口地址0088 E0 67 movx a,@dptr0089 540F 68 anl a,#0fh; 取出列值送a008B B40F02 69 cjne a,#0fh,next1;若有键按下,则next1008E 8025 70 sjmp next40090 11F5 71 next1: acall ds10ms ;延时10ms0092 7A00 72 mov r2,#00h ;窜键标志位清零0094 79FE 73 mov r1,#0feh; 行扫描初值送a0096 90FF21 74 loop: mov dptr,#0ff21h ;dptr指向A口0099 E9 75 mov a,r1 ;行扫描值送a009A F0 76 movx @dptr,a009B 90FF23 77 mov dptr,#0ff23h009E E0 78 movx a,@dptr ;读c口009F 540F 79 anl a,#0fh ; 取出列值00A1 B40F02 80 cjne a,#0fh,next2 ;若被按键在本行,则next2 00A4 8007 81 sjmp next3;若不在本行,则next300A6 0A 82 next2: inc r2 ;窜键标志位加100A7 BA010B 83 cjne r2,#01h,next4 ;若为窜键,则返回监控00AA FC 84 mov r4,a ;列值送r400AB E9 85 mov a,r100AC FB 86 mov r3,a ; 行值送r300AD E9 87 next3: mov a,r1 ;行扫描值送a00AE 23 88 rl a ;左移一位00AF F9 89 mov r1,a ;送回r100B0 B47FE3 90 cjne a,#7fh,loop ;若未扫描完一遍,则loop 00B3 01B6 91 ajmp next5 ;若扫描完一遍,则next500B5 E4 92 next4: clr a00B6 22 93 next5: ret00B7 7900 94 kcode: mov r1,#00h00B9 EB 95 mov a,r300BA D3 96 setb c00BB 13 97 loop1: rrc a00BC B4FF02 98 cjne a,#0ffh, next6100BF 8003 99 sjmp next600C1 09 100 next61: inc r100C2 80F7 101 sjmp loop100C4 E9 102 next6: mov a,r100C5 C4 103 swap a00C6 F9 104 mov r1,a00C7 EC 105 mov a,r400C8 540F 106 anl a,#0fh00CA 49 107 orl a,r100CB F5F0 108 mov b,a00CD 9000DF 109 mov dptr,#ktab00D0 7800 110 mov r0,#00h00D2 E4 111 clr a00D3 93 112 pepe: movc a,@a+dptr00D4 B5F002 113 cjne a,b,next700D7 8004 114 sjmp resv00D9 08 115 next7: inc r000DA E8 116 mov a,r000DB 80F6 117 sjmp pepe00DD E8 118 resv: mov a,r000DE 22 119 ret;下面表格存放0到C的关键字00DF ? 120 ktab: db ????00E0 ?00E1 ?00E2 ?00E3 ?00E4 ?00E5 ? 121 db ????00E6 ?00E7 ?00E8 ?00E9 ?00EA ?00EB ? 122 db ?;;表示0到C的关键字00EC 7F02 123 delay: mov r7,#02h ;延时1ms00EE 7EFF 124 delay1: mov r6,#0ffh00F0 DEFE 125 delay2: djnz r6,delay200F2 DFFA 126 djnz r7,delay100F4 22 127 ret00F5 7F14 128 ds10ms: mov r7,#14h ;延时10ms00F7 7EFF 129 dely1: mov r6,#0ffh00F9 DEF5 130 dely2: djnz r6,delay200FB DFF1 131 djnz r7,delay100FD 22 132 ret00FE 7F3C 133 ds30ms: mov r7,#3ch ;延时30ms0100 7EFF 134 dely3: mov r6,#0ffh0102 DEEC 135 dely4: djnz r6,delay20104 DFE8 136 djnz r7,delay10106 22 137 ret138 end5. 实验步骤:(1) 输入程序,本实验系统有两种输入方法. a)可以直接通过系统上的小键盘输入机器码也可以采用b)把实验系统和PC机的串口直接相连,在PC机上通过专用软件编译程序,然后通过串行口把编译后的程序机器码下载到实验系统中.(2) 输入程序首地址,按运行键EX,程序运行,观察此时显示结果.(3) 按下0~9数字键,观察在数码管上显示的结果,按下A,B或C观察显示的结果.(4) 在循环显示程序段中,调不同的时间延时子程序,观察显示效果6. 习题每人应该认真读懂程序,在源程序的基础上根据硬件电路判断其他按键对应的关键字,要求每个人应该至少在原来程序基础上再加一个按键,来显示相应的循环或其他功能.7. 思考题?(1) 思考动态显示的原理.(2) 思考以上程序还有那些不完善的地方,如何改?。
键盘显示电路图与程序一、引言键盘显示电路图与程序是一种常见的电子电路设计,它可以将按键输入转换为相应的显示输出。
本文将详细介绍键盘显示电路图的构成和相应的程序设计。
二、键盘显示电路图键盘显示电路图主要由以下几个部分组成:1. 键盘模块:键盘模块通常由多个按钮组成,每个按钮代表一个按键。
当按下某个按键时,键盘模块会输出一个对应的电信号。
2. 键盘扫描电路:键盘扫描电路负责扫描键盘模块中的按键状态。
它通过逐行或逐列扫描的方式,检测到按键的按下与释放。
3. 键盘编码电路:键盘编码电路将键盘扫描电路检测到的按键状态转换为相应的编码信号。
常见的编码方式有矩阵编码和直接编码。
4. 显示模块:显示模块通常由数码管或液晶显示屏组成,用于显示按键输入的结果。
它接收来自键盘编码电路的输出信号,并将其转换为相应的显示内容。
5. 控制电路:控制电路负责控制整个键盘显示电路的工作流程。
它可以包括时序控制、功能选择和数据传输等功能。
三、键盘显示程序设计键盘显示程序设计主要包括以下几个步骤:1. 初始化:在程序开始时,需要对键盘模块、显示模块和控制电路进行初始化设置。
这包括设置引脚方向、中断触发条件等。
2. 扫描按键:通过键盘扫描电路,逐行或逐列扫描键盘模块中的按键状态。
当检测到按键按下时,记录下对应的按键编码。
3. 编码处理:将扫描到的按键编码通过键盘编码电路进行处理,转换为相应的编码信号。
这可以根据具体的编码方式进行处理。
4. 显示输出:将编码信号传输给显示模块,显示模块将其转换为相应的显示内容,并在数码管或液晶显示屏上显示出来。
5. 循环检测:程序需要进行循环检测,以实时响应按键输入。
通过不断地扫描按键并更新显示内容,实现键盘显示的连续工作。
四、总结键盘显示电路图与程序是一种常见的电子电路设计,它可以将按键输入转换为相应的显示输出。
键盘显示电路图由键盘模块、键盘扫描电路、键盘编码电路、显示模块和控制电路组成。
键盘显示程序设计包括初始化、扫描按键、编码处理、显示输出和循环检测等步骤。
4X4矩阵键盘与显示电路设计FPGA在数字系统设计中的广泛应用,影响到了生产生活的各个方面。
在FPGA 的设计开发中,VHDL语言作为一种主流的硬件描述语言,具有设计效率高,可靠性好,易读易懂等诸多优点。
作为一种功能强大的FPGA数字系统开发环境,Altera公司推出的Quar-tUSⅡ,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用VHDL语言进行FPGA设计提供了极大的便利。
矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用,通过7段数码管将按键数值进行显示也是一种常用的数据显示方式。
在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。
本文在QuartusⅡ开发环境下,采用VHDL语言设计了一种按键防抖并能连续记录并显示8次按键数值的矩阵键盘与显示电路。
一、矩阵键盘与显示电路设计思路矩阵键盘与显示电路能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上,每次新的按键值显示在最右端的第O号数码管上,原有第0~6号数码管显示的数值整体左移到第1~7号数码管上显示,见图1。
总体而言,矩阵键盘与显示电路的设计可分为4个局部:(1)矩阵键盘的行与列的扫描控制和译码。
该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行与列的扫描结果进行译码。
(2)机械式按键的防抖设计。
由于机械式按键在按下和弹起的过程中均有5~10 ms的信号抖动时间,在信号抖动时间内无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。
(3)按键数值的移位存放。
由于该设计需要在8个数码管上依次显示前后共8次按键的数值,因此对已有数据的存储和调用也是该设计的重点所在。
(4)数码管的扫描和译码显示。
由于该设计使用了8个数码管,因此需要对每个数码管进行扫描控制,并根据按键值对每个数码管进行7段数码管的译码显示。
简单的4×4行列式键盘控制电路设计(三款电路设计
原理图详解)
4X4行列式键盘控制电路(一)
1.概述
键盘是一组按压式开关的集合,是微机系统不可缺少的输入设备,用于输入数据和命令。
键盘的每一个按键都被赋予一个代码,称为键码。
键盘系统的主要工作包括及时发现有键闭合,求闭合键的键码。
根据这一过程的不同,键盘可以分为两种,即编码键盘和非编码键盘。
编码键盘是通过一个编码电路来识别闭合键的键码,非编码键盘是通过软件来识别键码。
由于非编码键盘的硬件电路简单,用户可以方便地增减键的数量,因此在单片机应用系统中,非编码键盘得到广泛的应用,有较好的应用价值。
2.设计原理
首先应该了解本次设计的基本要求和目的,再通过查找资料了解80C51
单片机的工作原理、结构图,数码显示管的结构和工作原理。
根据设计要求可以将单片机P3口接4&TImes;4键盘,P0口接数码显示管,根据扫描原理进行行扫描,用CJNE指令判断P3口的状态。
采用软件延时去抖动,用MOVCA,@A+DPTR取键值。
基于VHDL的矩阵键盘及显示电路设计摘要:为了有效防止机械式键盘按键抖动带来的数据错误,这里在Quartus ?开发环境下,采用VHDL 语言设计了一种能够将机械式4 ×4 矩阵键盘的按键值依次显示到8 个7 段数码管上的矩阵键盘及显示电路。
仿真结果表明,所设计的矩阵键盘及显示电路成功地实现了按键防抖和按键数据的准确显示。
以ACEX1K系列EP1K30QC208 芯片为硬件环境,验证了各项设计功能的正确性。
FPGA/ CPLD 在数字系统设计中的广泛应用,影响到了生产生活的各个方面。
在FPGA/ CPLD 的设计开发中,V HDL 语言作为一种主流的硬件描述语言,具有设计效率高, 可靠性好, 易读易懂等诸多优点。
作为一种功能强大的FPGA/ CPLD 数字系统开发环境,Altera 公司推出的Quart us ?,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用V HDL 语言进行FPGA/ CPLD 设计提供了极大的便利。
矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用,通过7 段数码管将按键数值进行显示也是一种常用的数据显示方式。
在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。
本文在Quart us ?开发环境下,采用V HDL语言设计了一种按键防抖并能连续记录并显示8 次按键数值的矩阵键盘及显示电路。
1 矩阵键盘及显示电路设计思路矩阵键盘及显示电路能够将机械式4 ×4矩阵键盘的按键值依次显示到8 个7段数码管上,每次新的按键值显示在最右端的第0 号数码管上,原有第0,6号数码管显示的数值整体左移到第1,7号数码管上显示,见图1 。
总体而言,矩阵键盘及显示电路的设计可分为4 个部分:(1) 矩阵键盘的行及列的扫描控制和译码。
该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行及列的扫描结果进行译码。
数理与信息工程学院《单片机原理及应用》期末课程设计题目:4×4矩阵式键盘识别显示电路的设计专业:电子信息工程班级:电信061班*名:***学号:********指导老师:***成绩:( 2008.12 )目录第1节引言 (2)1.1 4*4矩阵式键盘系统概述 (2)1.2 本设计任务和主要内容 (3)第2节系统主要硬件电路设计 (4)2.1 单片机控制系统原理 (4)2.2 单片机主机系统电路 (5)2.2.1 时钟电路 (4)2.2.2 复位电路 (5)2.2.3 矩阵式键盘电路 (5)2.3 译码显示电路 (6)第3节系统软件设计 (11)3.1 软件流程图 (8)3.2 系统程序设计 (9)第4节结束语 (12)参考文献 (13)4*4矩阵式键盘识别显示电路的设计数理与信息工程学院电信061 姜铮铮指导教师:余水宝第一节引言矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。
单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
4*4矩阵式键盘采用AT89S51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用汇编语言编程。
单片机将检测到的按键信号转换成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
1.1 4*4矩阵式键盘识别显示系统概述矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。
显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。
并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。
单片机矩阵键盘设计方案一、设计目标设计一个8行8列的矩阵键盘,每个按键都有一个唯一的键码,能够正常读取用户的按键输入,并将按键对应的键码显示在LCD屏幕上。
二、硬件设计硬件设计包括键盘电路和显示电路两部分。
1.键盘电路设计矩阵键盘的硬件设计主要包括键盘矩阵、行扫描电路和列读取电路。
键盘矩阵由8行8列的按键构成,每个按键都连接到一个由二极管组成的矩阵。
行扫描电路使用8位输出的GPIO口,根据行的值来选通对应的行组。
列读取电路使用8位输入的GPIO口,根据列的值来读取对应的列组。
2.显示电路设计三、软件设计软件设计主要包括初始化设置、按键检测、键码解析和显示处理四个部分。
1.初始化设置首先需要对GPIO口进行初始化设置,将扫描行的GPIO口设置为输出模式,将读取列的GPIO口设置为输入模式。
同时需要对LCD屏幕进行初始化设置,设置显示模式、光标位置等参数。
2.按键检测循环扫描每一行,当其中一行被选通时,读取每一列的值。
如果其中一列的值为低电平,则表示对应的按键被按下。
将按下的按键的行和列的值保存下来,用于后续的键码解析。
3.键码解析根据行和列的值,通过查表的方式找到对应的键码。
将键码保存下来,用于后续的显示处理。
4.显示处理将键码传送给LCD屏幕,通过LCD屏幕的驱动芯片进行解析和显示。
根据LCD屏幕的显示方式,可以选择逐行显示或者按需显示的方式。
四、优化设计在以上基本设计方案的基础上,可以进行一些优化设计,以提高系统的性能和可靠性。
1.消除按键抖动按键在实际使用中会存在抖动现象,需要通过软件滤波来消除。
可设置一个适当的延时,当检测到按键按下后,延时一段时间再进行键码解析,只有在延时之后仍然检测到按键按下,才认为是一个有效的按键。
2.防止冲突按键由于矩阵键盘的性质,可能存在一些按键组合会产生冲突的情况。
可以通过硬件设计和软件处理来解决。
在硬件上,可以增加二极管来隔离不同的按键。
在软件上,可以通过扫描算法和按键排除的方式来避免冲突。
取消所有断点。
断点设置完毕后,按F5键或点击Debug下的GO,程序将执行到断点处停止,这时寄存器窗口中sec的值便是定时时间(10ms),如图16所示。
在μV2仿真环境下可以真实地模拟单片机定时器的工作状态。
6.单片机串行通信的模拟仿真Keil C51的μV2调试器提供了对单片机串行通信的模拟仿真,当源程序编译通过后,鼠标单击菜单栏的Debug/Start DebugSession,进入模拟调试环境并选择Peripherals/Serial,打开Serial串口参数窗口,如图17所示,其中Mode栏里表示单片机的通信方式,“8 bit var ,baudrate”表示当前的通信格式是8位,速率可变。
SBUF栏内的数值即为单片机发送的数据,Baudrate栏中的Audrate框里的数值为通信速率,IRQ代表中断标志TI或RI。
当然你也可以在命令栏中键入“SBUF”来随时观察SBUF缓存器的数据,如图18。
一般情况下在命令栏中键入“SBUF”看到的是单片机的发送数据,如果要给单片机发送数据,并观察数据运行结果,可采用“SIN”指令。
假设发到单片机的数据是01H,如果你想模拟这个过程,可以在命令栏中键入“SIN=0X01”,这时单片机通过串口收到的数据即是“01H”,然后可以在μV2环境下采图18图17用单步或其它方式调试程序,可一目了然地看到单片机串口参数的变化过程。
在μV2下通过这种调试程序的方法可以准确地模拟通信口的发送和接收数据的全过程。
总之, Keil公司的μVision2内嵌的单片机软件仿真器可以真实地模拟单片机的工作过程及状态,在许多场合下甚至可以不使用硬件仿真器,仅仅通过在μV2下的模拟调试便可以完成一个中小规模的单片机项目的调试工作,提高了单片机的开发效率。
◆VHDL语言是一种标准硬件描述语言,本文介绍的是用VHDL来对键盘扫描电路进行描述的设计。
矩阵式键盘是一种常见的输入装置,在日常生活中,矩阵式键盘在计算机、电话、手机、微波炉等各式电子产品上已经被广泛应用。
题目按键状态扫描显示电路的设计与制作题目: 按键状态扫描显示电路的设计与制作初始条件:(1)以0~9十个数符标识十个按键(2)当有键按下时,显示其标识符,并保持显示符直到新的按键作用(3)如果多个按键同时作用,只响应最先作用的按键要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求(2)方案比较及认证(3)系统框图,原理说明(4)硬件原理,完整电路图,采用器件的功能说明(5)调试记录及结果分析(6)改进方法(7)总结(收获及体会)(8)参考资料(9)附录:器件表,芯片资料时间安排:6月25日~6月28日:明确课题,收集资料,方案确定7月28日~7月2日:整体设计,硬件电路调试7月2日~7月6日;报告撰写,交设计报告,答辩指导教师签名:2012年 7月日目录摘要 (1)1 设计内容及方案选择 (2)1.1设计内容及其设计要求. (2)1.2方案选择 (2)1.2.1 按键的标识及对应的标识符显示方案的选择 (2)1.2.2 信号的锁存及按键优先作用方案的选择 (2)2 电路的设计及器件的选择 (3)2.1电路的原理 (3)2.1.1 电路的原理框图及其说明 (3)2.1.2 单元电路的说明 (3)2.1.3 完整的电路图 (4)2.2开关电路的设计和器件的选择 (5)2.2.1开关电路的设计 (5)2.2.2各主要芯片的功能说明 (5)2.2.3 电路的总体说明 (10)2.3方案二完整电路图及其比较选择 (11)3 硬件电路的设计及其制作与调试 (11)3.1仿真使用的系统 (12)3.2 制作与调试的方法和技巧 (12)3.3测试的数据分析 (12)3.4 制作与调试中出现的故障、原因及排除方法 (12)结束语 (13)参考文献 (14)附录按键状态扫描显示电路所用元件 (15)本科生课程设计成绩评定表 (16)摘要此课程设计是基于键盘按键功能的模拟,需要运用现有所学的数字电子技术的知识,主要实现以下设计的功能 1.按键显示:按下一个按钮输出显示对应的数字,十个按钮分别用0~9显示 2.按键保持:按键后的显示一直保持到新的按键作用 3.优先按键:如果多个按键同时作用,只响应最先作用的按键。
《数字电路逻辑设计》课程设计指导书一、课程设计的目的1 、学习数字逻辑等电路设计方法,熟知编码器、译码显示等其他电路的工作原理及特点;2 、培养勤奋认真、分析故障和解决问题的能力。
二、设计名称设计一个简易键盘三、设计要求0-9 十个数字分别对应一个按键,当其中一个按键按下时,在数码显示管上显示对应的数字。
四、设计过程1 、收集相关资料,完成相关电路的设计图,正确选用适合设计内容的集成电路、器件和器材,并列出“领料清单”;2 、利用多功能虚拟软件Multism8 进行电路的制作、调试,并生成文件。
五、设计细则严格按照电路设计的步骤,实现其设计基本内容和功能,利用虚拟软件进行仿真,电路运行稳定、可靠;描述实验现象,实验过程中出现的问题及解决方案。
六、说明课程设计任务书课程设计报告课程:数字电路逻辑设计学号:姓名:班级:教师:计算机科学与技术学院设计名称:设计一个简易键盘日期:2019 年1月 6 日设计内容:0-9 十个数字分别对应一个按键,当其中一个按键按下时,在数码显示管上显示对应的数字。
设计目的与要求:1 、学习数字逻辑等电路设计方法,熟知编码器、译码显示等其他电路的工作原理及特点;2 、培养勤奋认真、分析故障和解决问题的能力。
设计环境或器材、原理与说明:环境:Multisim 8 器材:编码器芯片74LS248,以及与非门(4个),或非门( 6 个),七段发光二极管显示器,开关和电源。
原理:若要将 4 位二进制数作为七段发光二极管的输入来进行显示,而二进制数则通过二- 十进制译码器原理,通过十进制数来显示,从而得到从十进制-二进制- 十进制显示的功能。
所以需要设计一个电路,将一位十进制数字转化为四位二进制编码,即二—十进制编码器。
根据键盘输入的原理,当输入一个数字的时候是不能出现其他的数字的,所有要用到优先编码器的原理。
所以根据题意设计了电路,将输入的十进制数转化为四位二进制数。
从而实现简易键盘的功能。
长沙学院?《单片机原理及应用》课程设计说明书题目】液晶显示4*4矩阵键盘按键号程序设计系(部)电子与通信工程系专业(班级)电气1班姓名龙程学号【09指导教师刘辉、谢明华、王新辉、马凌云起止日期—长沙学院课程设计鉴定表《单片机技术及应用》课程设计任务书系(部):电子与电气工程系专业:11级电子一班指导教师:谢明华、刘辉—目录'前言 (5)一、课程设计目的 (6)二、设计内容及原理 (6)单片机控制系统原理 (6)阵键盘识别显示系统概述 (6)键盘电路 (7)12864显示器 (8)整体电路图 (9)!仿真结果 (9)三、实验心得与体会 (10)四、实验程序 (10)参考文献 (18)…。
,】前言单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。
与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。
它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。
由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。
手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。
汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!单片机的数量不仅远超过PC机和其他计算机的总和,甚至比人类的数量还要多。
液晶显示器(英语:Liquid Crystal Display,缩写:LCD)为平面薄型的显示设备。
它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。
单片机键盘显示接口电路设计设计单片机键盘显示接口电路,需要考虑到键盘输入与显示输出两个方面。
以下是一个简单的设计示例,供参考:键盘通常采用矩阵键盘连接电路的方式,通过扫描矩阵的方式读取键盘输入信息。
以下是矩阵键盘接口电路的设计流程:1.确定键盘的规格和类型:键盘一般有正方形、矩形、圆形等几种形状,需要根据键盘的规格和类型选择适合的扫描方式。
2.确定键盘的逻辑矩阵大小:根据键盘的布局和规格,确定键盘的逻辑矩阵的行和列数,例如4行4列。
3.确定键盘的连接方式:键盘的连接方式一般有行列扫描、列行扫描、行列+列行扫描等几种方式,需要根据键盘的输出信号特点和单片机的输入要求进行适当的选择。
4.设计按键输入的译码电路:将键盘的输出信号通过译码电路解码成易于读取的二进制数,以便单片机的输入端口读取。
显示输出接口电路设计一般有两种方式:数码管和液晶显示。
1.数码管显示电路设计:数码管是通过控制各个数码管的段选和位选,实现数字或字符的显示。
以下是数码管显示电路的设计流程:a.确定显示的数字或字符类型:根据设计需求,确定要显示的数字或字符类型,例如整数、小数、字母等。
b.确定数码管的位数和类型:根据显示需求,确定数码管的位数和类型,有共阴数码管和共阳数码管两种类型,需要选择适合的数码管。
c.设计数码管的译码电路:根据数码管的类型和位数,设计数码管的译码电路,将输入的数字或字符转换为控制各个数码管的段选和位选的电信号。
2.液晶显示电路设计:液晶显示器是一种常见的显示设备,通过控制液晶的极性来实现图形和字符的显示。
以下是液晶显示电路设计的流程:a.确定显示的内容类型:根据设计需求,确定要显示的内容,例如字符、图像等。
b.选择适合的液晶显示器:根据显示的内容和要求,选择适合的液晶显示器,有字符型液晶显示器和图形型液晶显示器两种类型。
c.设计液晶的驱动电路:根据液晶显示器的类型和特性,设计液晶的驱动电路,将输入的数字或字符转换为控制液晶的电信号。
基于VHDL的矩阵键盘及显示电路设计FPGA/CPLD 在数字系统设计中的广泛应用,影响到了生产生活的各个方面。
在FPGA/CPLD 的设计开发中,VHDL 语言作为一种主流的硬件描述语言,具有设计效率高,可靠性好,易读易懂等诸多优点。
作为一种功能强大的FPGA/CPLD 数字系统开发环境,Altera 公司推出的Quar-tUSⅡ,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用VHDL 语言进行FPGA/-CPLD 设计提供了极大的便利。
矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用,通过7 段数码管将按键数值进行显示也是一种常用的数据显示方式。
在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。
本文在QuartusⅡ开发环境下,采用VHDL 语言设计了一种按键防抖并能连续记录并显示8 次按键数值的矩阵键盘及显示电路。
1 矩阵键盘及显示电路设计思路矩阵键盘及显示电路能够将机械式4 乘以4 矩阵键盘的按键值依次显示到8 个7 段数码管上,每次新的按键值显示在最右端的第O 号数码管上,原有第0~6 号数码管显示的数值整体左移到第1~7 号数码管上显示,见图1。
总体而言,矩阵键盘及显示电路的设计可分为4 个部分:(1)矩阵键盘的行及列的扫描控制和译码。
该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行及列的扫描结果进行译码。
(2)机械式按键的防抖设计。
由于机械式按键在按下和弹起的过程中均有5~10 ms 的信号抖动时间,在信号抖动时间内无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。
(3)按键数值的移位寄存。
由于该设计需要在8 个数码管上依次显示前后共8 次按键的数值,因此对已有数据的存储和调用也是该设计的重点所在。
(4)数码管的扫描和译码显示。
由于该设计使用。
基于VHDL的矩阵键盘及显示电路设计作者:张喜凤, 屈宝鹏来源:《现代电子技术》2010年第16期摘要:为了有效防止机械式键盘按键抖动带来的数据错误,这里在Quartus Ⅱ开发环境下,采用VHDL语言设计了一种能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上的矩阵键盘及显示电路。
仿真结果表明,所设计的矩阵键盘及显示电路成功地实现了按键防抖和按键数据的准确显示。
以ACEX1K系列EP1K30QC208芯片为硬件环境,验证了各项设计功能的正确性。
关键词:VHDL; 键盘; 按键防抖; 数码管中图分类号:TN710-34; TP332.1+2 文献标识码:A 文章编号:1004-373X(2010)16-0014-03Design of the Matrix Keyboard and Display Circuit Based on VHDLZHANG Xi-feng,QU Bao-peng(Electronics Engineer Department of Shaanxi Ins titute of Technology, Xi’an 710300,China)Abstract:The application of the FPGA/CPLD becomes more and more extensive in the design of digital system, and it has affected our life deeply. The data inputted by matrix keyboard and displayed by digital tube, the design is applied widely in electron equipments. In order to avoid the data mistakes resulted by the key-press shake, a matrix keyboard and display circuit which can display the key-press input data produced by 4×4 matrix keyboard in turn with 8 word 7-seg display was designed with the language of VHDL in the environment of Quartus Ⅱ. The simulation results indicate that the matrix keyboard and display circuit designed in this paper realized the key-press anti-shake and exact display. Finally, validity of whole designed functions was validated with the EP1K30QC208 chip of ACEX1K series.Keywords:VHDL; keyboard; anti-shake; digital tube收稿日期:2010-03-12FPGA/CPLD在数字系统设计中的广泛应用,影响到了生产生活的各个方面[1-4]。
实验四键盘显示电路驱动程序设计实验目的1、了解ARMC语言程序的结构特点2、了解ARMC语言程序的编写方法3、掌握用ARM编写HD7279控制程序方法实验仪器设备及软件ARM实验箱,计算机,ADS程序开发软件实验原理HD7279A 专用键盘显示电路,真正的单片LED数码管显示和键盘接口芯片,无需外围电路,只需要外接少量的电阻等,即可构成完善的显示、键盘接口电路。
而与CPU的接口采用SPI串行接口方式,使用方便。
可方便的构成64按键,8位数码显示电路(共阴极结构) HD7279A内部含有译码器,可直接受BCD码或16进制数据或七段显示码数据。
此外,还具有多种控制指令,如消隐,闪烁,左移,右移,段寻址等。
具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。
HD7279的纯指令:1、复位指令(A4H)当HD7279A收到该指令后,将所有显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。
执行后,芯片的状态与上电时一样。
2、测试指令(BFH)该指令使所有的LED全部点亮,并处于闪烁状态,主要用于测试(检查LED是否坏)3、左移指令(A1H)使所有显示左移一位,消隐及闪烁属性不移位,最右边一位为空(暗)。
如:4、右移指令(A0H)使所有显示右移一位,消隐及闪烁属性不移位,最左边一位为空(暗)。
如:5、循环左移指令(A3H)使所有显示右移一位,消隐及闪烁属性不移位,最左边一位移到最右边。
如:6、循环右移指令(A2H)使所有显示右移一位,消隐及闪烁属性不移位,最右边一位移到最左边。
如:HD7279带数据的指令:1、下载数据按方式0译码命令由两字节构成,前半部为指令。
a2,a1,a0为位地址,D3-D0为数据,译码值如图所示。
当前位小数点由DP控制,DP=1,小数点亮,DP=0,小数点暗。
2、下载数据按方式1译码指令格式与指令1相同,译码表如下所示。
3、下载数据但不译码指令格式如上图所示。
当指令第二字节的位为1时,相应段点亮。
4、闪烁控制88H此命令控制各数码管的闪烁情况。
D8-D1中的位为1时,对应位闪烁。
上电默认不闪烁。
5、消隐控制98HD8-D1控制数码管的消隐状态。
为1时,数码管消隐,为0时,正常显示。
输入的数据至少有一位为0。
输入全为0时,命令将被忽略。
6、读键盘命令该指令从HD7279中读出当前按键编码。
编码范围是0-3FH。
当HD7279收到读指令时,此时按键无效,将返回0FFH。
实验内容1、编写程序控制HD7279显示学号HD7279驱动程序包含接口读写程序、HD7279发命令、收数据程序、初始化程序等,在ARM7279.C文件中给出。
在HD7279显示学号功能,只要往7279数据存储器中写入数据即可。
程序如下:write7279(decode1+p,i & 0x0f); //i为显示的内容, p为显示的位置0-72、编写程序控制HD7279芯片,根据当前按键情况,改变显示内容按键信息在中断服务程序读取,主程序根据到的数据,向7279发送命令或数据,改变显示内容。
keylast=key_number; //从键值缓冲中读取键值key_number=0xff; //键缓冲重置switch(keylast) //根据键值,执行不同功能{case 1:send_byte(disp_lsl); //左移一位break;case 2:send_byte(disp_lsr); //右移一位break;。
default:break;}实验步骤1、连接实验箱与计算机的串口线,打开计算机超级终端,并设定为com1,115200,8,1,0N2、连接仿真调试电缆(并口JTAG)3、实验箱上电,并在vivi的指示下,按任意键,进入调试程序状态4、打开ARM集成开发环境ADS,按要求编写或打开实验程序。
5、按内容要求编写,调试程序,并记录调试过程和数据。
6、调试完毕,整理实验箱,并切断实验箱电源。
实验程序1、显示学号程序#include "..\INC\config.h"//显示学号函数void dispstu_number(void){//请在这里编写显示学号程?write7279(disp_f,0xff); //no flashwrite7279(disp_hide,0xff);//no hidewrite7279(decode1+0,8 & 0x0f);write7279(decode1+1,0 & 0x0f);write7279(decode1+2,4 & 0x0f);write7279(decode1+3,9 & 0x0f);write7279(decode1+4,8 & 0x0f);write7279(decode1+5,1 & 0x0f);write7279(decode1+6,0 & 0x0f);write7279(decode1+7,2 & 0x0f);}void Main(){unsigned char p,keylast;Target_Init(); //目标初始化dispstu_number();//显示学号while(1); //程序运行到这行时,停止运行。
while(1){keylast=key_number; //取出按键值key_number=0xff; //按键值重置为无按键switch(keylast){case 0:write7279(cmd_test,cmd_test); //测试键write7279(disp_f,0xff); //no flashwrite7279(disp_hide,0xff);//no hidefor(p=0;p<8;p++) //display 0-7write7279(decode1+p,p & 0x0f);p=0;break;case 1:write7279(disp_lsl,disp_lsl); //logic shift left 1 databreak;case 2:write7279(disp_lsr,disp_lsr); //logic shift right 1 databreak;case 3:write7279(disp_rol,disp_rol); //循环左移break;case 4:write7279(disp_ror,disp_ror); //循环右移break;case 5:if (p>7)p=0;write7279(disp_hide,~(1<<p));//hide data according pp++;break;case 6:if (p>7)p=0;write7279(disp_f,~(1<<(p)));p++;break;case 7:if (p>0x40)p=0;write7279(disp_bit,p);p++;break;case 8:if (p>0x40)p=0;write7279(disp_offb,p);p++;break;case 9:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 10:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 11:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 12:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 13:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 14:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 15:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;default:break;}keylast=0xff;Delay(50);}}2、数码管上显示输入的键值#include "..\INC\config.h"//显示学号函数void dispstu_number(void){//请在这里编写显示学号程?write7279(disp_f,0xff); //no flashwrite7279(disp_hide,0xff);//no hidewrite7279(decode1+0,8 & 0x0f);write7279(decode1+1,0 & 0x0f);write7279(decode1+2,4 & 0x0f);write7279(decode1+3,9 & 0x0f);write7279(decode1+4,8 & 0x0f);write7279(decode1+5,1 & 0x0f);write7279(decode1+6,0 & 0x0f);write7279(decode1+7,2 & 0x0f);}void Main(){unsigned char p,keylast;Target_Init(); //目标初始化dispstu_number();//显示学号//while(1); //程序运行到这行时,停止运行。
while(1){keylast=key_number; //取出按键值key_number=0xff; //按键值重置为无按键switch(keylast){case 0:write7279(cmd_test,cmd_test); //测试键write7279(disp_f,0xff); //no flashwrite7279(disp_hide,0xff);//no hidefor(p=0;p<8;p++) //display 0-7write7279(decode1+p,p & 0x0f);p=0;break;case 1:write7279(disp_lsl,disp_lsl); //logic shift left 1 databreak;case 2:write7279(disp_lsr,disp_lsr); //logic shift right 1 databreak;case 3:write7279(disp_rol,disp_rol); //循环左移break;case 4:write7279(disp_ror,disp_ror); //循环右移break;case 5:if (p>7)p=0;write7279(disp_hide,~(1<<p));//hide data according pp++;break;case 6:if (p>7)p=0;write7279(disp_f,~(1<<(p)));p++;break;case 7:if (p>0x40)p=0;write7279(disp_bit,p);p++;break;case 8:if (p>0x40)p=0;write7279(disp_offb,p);p++;break;case 9:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 10:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 11:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 12:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 13:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 14:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;case 15:if (p>0x7)p=0;write7279(decode1+p,keylast);p++;break;default:break;}keylast=0xff;Delay(50);}}实验思考题1、编写程序,在数码管上显示输入的键值。