键盘显示电路驱动程序设计

合集下载

1-单片机键盘与显示电路设计

1-单片机键盘与显示电路设计

独立式按键 单片机控制系统中,往往只需要几个 功能键,此时,可采用独立式按键结构。 1.独立式按键结构 独立式按键是直接用I/O口线构成的单 个按键电路,其特点是每个按键单独占 用一根I/O口线,每个按键的工作不会影 响其它I/O口线的状态。独立式按键的典 型应用如图9-3所示。
V CC
P 1.0 P 1.1 P 1.2 P 1.3 P 1.4 P 1.5 P 1.6 P 1.7
P1口某位结构

P1口电路中包含有一个数据输出锁存器、一个三态数据输入缓冲器 、一个数据输出的驱动电路。 P1口的功能和驱动能力

P1口只可以作为通用的I/O口使用;
P1可以驱动4个标准的TTL负载电路; 注意在P1口作为通用的I/O口使用时,在从I/O端口读入数据时,应 该首先向相应的I/O口内部锁存器写“1”。 举例:从P1口的低四位输入数据 MOV MOV P1,#00001111b ;;先给P1口底四位写1 A,P1 ;;再读P1口的底四位
依此规律循环,即可使各位数码管显 示将要显示的字符。虽然这些字符是在不 同的时刻分别显示,但由于人眼存在视觉 暂留效应,只要每位显示间隔足够短就可 以给人以同时显示的感觉。 采用动态显示方式比较节省I/O口,硬 件电路也较静态显示方式简单,但其亮度 不如静态显示方式,而且在显示位数较多 时,CPU要依次扫描,占用CPU较多的时 间。
矩阵式按键 单片机系统中,若使用按键较多时,通 常采用矩阵式(也称行列式)键盘 1.矩阵式键盘的结构及原理 矩阵式键盘由行线和列线组成,按键位 于行、列线的交叉点上,其结构如下图9-4 所示。
+5 V 0 4 8 12 0 1 5 9 13 1 2 6 10 14 2 3 7 11 15 3 0 1 2 3

实验一--键盘显示实验

实验一--键盘显示实验

实验一键盘显示系统实验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) 思考以上程序还有那些不完善的地方,如何改?。

一种实用的智能仪表键盘显示电路设计

一种实用的智能仪表键盘显示电路设计
J M P C 块 及A D 芯片 红 外 测 距 壁 障 模 块 采 用 的 传 感 器 是 夏 普 公 司的G P 2 Y O A 2 1 Y K I R ,A D 芯片 采用 的是 常 用的8 位 的A D O 8 0 9 芯 片,测 距精 度为0 . 3 c m 左 右 。G P 2 Y O A 2 1 Y K I R 是 夏普 公司推 出的一款 性 价 比 高 、最 常 用 的红 外 测 距 传 感 器 、 其 与
机 器 鱼 舵 机 组 是 由三 个 舵 机 构 成 , 以 鱼体波 函数 为核 心算法 的智 能机 器 ,在舵 机 的配合 运作 下完 成相应 动作 ,进 而来 实现 仿 生 机器 鱼 的游动 。其 中 ,单 片机 通过 所执 行
的程序 计算 出各 个关 节 的转 动角 度 , 以此 产 生十 五位 的不 同 占空 比 的P W M 波 ,控制 舵 机 旋转 ,继而 控制 “ 鱼体 ”摆 动 J 。
机器 鱼硬件 平 台模 块、 红外测 距避 障模 块 。
摄像 头视 角更为 宽广 ,可 以一 次性采 集 到周
硬件 构成框 图如 图1 所示 。 围环 境 的图像数 据 …。 工 作 流 程 是 : 首 先通 过 红 外传 感 器 传 1 . 2主 控器 模块 回 障碍物距 离 的模 拟 电压 信 息 ,通 过A D 芯片 在主 控制器的选择上 ,采用S T M 3 2 F - 转 换后 传送 给 C P U 进 行 判 断 ,根据 障 碍物 距 1 0 3 Z E T 6 芯 片 ,此 芯 片 具 有 7 2 M H z 的主 频 , 离 由C P U 发 出指 令 ,控 制机 器 鱼硬 件 平 台做 3 2 b i t 的位 宽 ,具 有 从2 5 6 K 至5 1 2 K 字 节 的闪 出动 作 ,与此 同时 双摄像 头将 采集 到 的图像 存程 序 储存 器 和6 4 K 字节 的S R A M ,数据 处 理

键盘显示电路图与程序

键盘显示电路图与程序

键盘显示电路图与程序一、引言键盘显示电路图与程序是一种常见的电子电路设计,它可以将按键输入转换为相应的显示输出。

本文将详细介绍键盘显示电路图的构成和相应的程序设计。

二、键盘显示电路图键盘显示电路图主要由以下几个部分组成:1. 键盘模块:键盘模块通常由多个按钮组成,每个按钮代表一个按键。

当按下某个按键时,键盘模块会输出一个对应的电信号。

2. 键盘扫描电路:键盘扫描电路负责扫描键盘模块中的按键状态。

它通过逐行或逐列扫描的方式,检测到按键的按下与释放。

3. 键盘编码电路:键盘编码电路将键盘扫描电路检测到的按键状态转换为相应的编码信号。

常见的编码方式有矩阵编码和直接编码。

4. 显示模块:显示模块通常由数码管或液晶显示屏组成,用于显示按键输入的结果。

它接收来自键盘编码电路的输出信号,并将其转换为相应的显示内容。

5. 控制电路:控制电路负责控制整个键盘显示电路的工作流程。

它可以包括时序控制、功能选择和数据传输等功能。

三、键盘显示程序设计键盘显示程序设计主要包括以下几个步骤:1. 初始化:在程序开始时,需要对键盘模块、显示模块和控制电路进行初始化设置。

这包括设置引脚方向、中断触发条件等。

2. 扫描按键:通过键盘扫描电路,逐行或逐列扫描键盘模块中的按键状态。

当检测到按键按下时,记录下对应的按键编码。

3. 编码处理:将扫描到的按键编码通过键盘编码电路进行处理,转换为相应的编码信号。

这可以根据具体的编码方式进行处理。

4. 显示输出:将编码信号传输给显示模块,显示模块将其转换为相应的显示内容,并在数码管或液晶显示屏上显示出来。

5. 循环检测:程序需要进行循环检测,以实时响应按键输入。

通过不断地扫描按键并更新显示内容,实现键盘显示的连续工作。

四、总结键盘显示电路图与程序是一种常见的电子电路设计,它可以将按键输入转换为相应的显示输出。

键盘显示电路图由键盘模块、键盘扫描电路、键盘编码电路、显示模块和控制电路组成。

键盘显示程序设计包括初始化、扫描按键、编码处理、显示输出和循环检测等步骤。

一、 独立式键盘接口电路及程序设计

一、 独立式键盘接口电路及程序设计
第3章 智能仪器人机接口
3.1 键盘与接口 3.2 LED显示及接口 3.3 键盘/LED显示器接口设计 3.4 CRT显示及接口 3.5 微型打印机及接口
第3章 智能仪器人机接口
人机交互功能即用户与仪器交换信息的功能。 这个功能有两方面的含义:一是用户对智能仪 器进行状态干预和数据输入;二是智能仪器向用户报 告运行状态与处理结果。
3.1 键盘与接口
3.1.1 键盘输入基础知识
一、 键盘的组织
键盘按其工作原理可分为编码式键盘和非编码式键盘。
编码式键盘由按键键盘和专用键盘编码器两部分构成。当键 盘中某一按键被按下时,键盘编码器会自动产生对应的按键代 码, 并输出选通脉冲信号与CPU 进行信息联络。
非编码键盘不含编码器,当某键按下时,键盘只送出一个简 单的闭合信号, 对应按键代码的确定必须借助于软件来完成。
一、 独立式键盘接口电路及程序设计
独立式键盘的每个按键占用一根测试线,它们可以直接与 单片机I/O 线相接或通过输入口与数据线相接,结构很简单。 这些测试线相互独立无编码关系,因而键盘软件不存在译码问 题,一旦检测到某测试线上有键闭合,便可直接转入到相应的 键功能处理程序进行处理。
一个实际三个按 键的独立式键盘接口 电路如右图所示:
3.1.1 键盘输入基础知识
一、 键盘的组织 二、 键盘的工作方式
编程扫描工作方式、中断工作方式和定时扫描工作方式。 (1) 编程扫描工作方式:也称查询方式。 (2) 中断工作方式:程扫描工作方式: 该方式也称查询方式,它是利用 CPU在完成其他工作的空余调用键盘扫描程序,以响应键输入 的要求。当CPU在运行其他程序时,它就不会再响应键输入要 求,因此,采用该方式编程时, 应考虑程序是否能对用户的每 次按键都会做出及时的响应。

4X4矩阵键盘及显示电路设计

4X4矩阵键盘及显示电路设计

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行列式键盘控制电路设计(三款电路设计原理图详解)

简单的4×4行列式键盘控制电路设计(三款电路设计原理图详解)

简单的4×4行列式键盘控制电路设计(三款电路设计
原理图详解)
 4X4行列式键盘控制电路(一)
1.概述
 键盘是一组按压式开关的集合,是微机系统不可缺少的输入设备,用于输入数据和命令。

键盘的每一个按键都被赋予一个代码,称为键码。

键盘系统的主要工作包括及时发现有键闭合,求闭合键的键码。

根据这一过程的不同,键盘可以分为两种,即编码键盘和非编码键盘。

编码键盘是通过一个编码电路来识别闭合键的键码,非编码键盘是通过软件来识别键码。

由于非编码键盘的硬件电路简单,用户可以方便地增减键的数量,因此在单片机应用系统中,非编码键盘得到广泛的应用,有较好的应用价值。

2.设计原理
 首先应该了解本次设计的基本要求和目的,再通过查找资料了解80C51
单片机的工作原理、结构图,数码显示管的结构和工作原理。

根据设计要求可以将单片机P3口接4&TImes;4键盘,P0口接数码显示管,根据扫描原理进行行扫描,用CJNE指令判断P3口的状态。

采用软件延时去抖动,用MOVCA,@A+DPTR取键值。

基于VHDL的矩阵键盘及显示电路设计

基于VHDL的矩阵键盘及显示电路设计

基于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) 矩阵键盘的行及列的扫描控制和译码。

该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行及列的扫描结果进行译码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四键盘显示电路驱动程序设计实验目的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、编写程序,在数码管上显示输入的键值。

相关文档
最新文档