PIC单片机键盘程序

发布者:Heavenly999最新更新时间:2012-12-31 来源: 51hei关键字:PIC单片机  键盘程序  电平变化 手机看文章 扫描二维码
随时随地手机看文章

;该pic单片机键盘程序通过PORTB的"电平变化中断"进行键盘的输入,使按下K1键时第一个数码管显示1,按下K2
;键时第一个数码管上显示2,按下K3键时第一个数码管上显示3,按下K4键时第一个数码管上显示4
;对键盘的扫描采用中断方式

LIST P=18F458
INCLUDE "P18F458.INC"

;所用的寄存器
JIANR EQU 0X20
DEYH EQU JIANR+1
DEYL EQU JIANR+2
ORG 0X00
GOTO MAIN
ORG 0X08
GOTO INTSERVE
ORG 0X30
;************以下为码值转换表**************
CONVERT ADDWF PCL,1
RETLW 0XC0 ;0,显示段码与具体的硬件连接有关
RETLW 0XF9 ;1
RETLW 0XA4 ;2
RETLW 0XB0 ;3
RETLW 0X99 ;4
RETLW 0X92 ;5
RETLW 0X82 ;6
RETLW 0XD8 ;7
RETLW 0X80 ;8
RETLW 0X90 ;9
RETLW 0X88 ;A
RETLW 0X83 ;B
RETLW 0XC6 ;C
RETLW 0XA1 ;D
RETLW 0X86 ;E
RETLW 0X8E ;F
RETLW 0X7F ;"."
RETLW 0XBF ;"-"
RETLW 0X89 ;H
RETLW 0XFF ;DARK
RETURN
;***************初始化子程序***************
INITIAL
CLRF INTCON ;禁止总中断和外围中断
BSF INTCON,RBIE ;B口变位中断允许
BCF INTCON2,7 ;使弱上拉有效
BSF INTCON2,0 ;B口变位中断高优先级
BSF RCON,7 ;使能中断优先级
BCF TRISA,5 ;置RA5为输出方式,以输出锁存信号
BCF TRISB,1
BCF TRISA,3
BCF TRISE,0
BCF TRISE,1
BSF TRISB,4 ;设置与键盘有关的各口的输入输出方式
BCF TRISC,5
BCF TRISC,3 ;设置SCK与SDO为输出方式
MOVLW 0XC0
MOVWF SSPSTAT ;设置SSPSTAT寄存器
MOVLW 0X30
MOVWF SSPCON1 ;设置SPI的控制方式,允许SSP方式,并在时钟下降
;沿发送数据,与“74HC595当其SCLK从低到高电平
;跳变时,串行输入数据(DI)移入寄存器"的特点相对应。
MOVLW 0X01
MOVWF JIANR ;显示值寄存器赋初值
BCF PORTB,1
BCF PORTA,3
BCF PORTE,0
BCF PORTE,1 ;K1,K2,K3,K4四条列线置0,为电平变化中断的
;产生创造初始条件
MOVF PORTB,W ;读PORTB端口,建立变位中断的初始条件
; (由高到低时中断)
RETURN ;返回
;*************中断服务子程序*****************
INTSERVE NOP
BCF INTCON,RBIF ;中断标志清0
CALL KEYDELAY ;调用8ms的软件延时子程序,以消除抖动
MOVF PORTB,W ;读PORTB的值,并同时改变中断发生的条件,可屏蔽
;一次按键松开时产生的无效的中断,又可以防止按键
;时间过长发生连续中断
BTFSC PORTB,4
RETFIE ;判断为干扰,则返回,并可以屏蔽一次无用的中断
CALL KEYSERVE ;调用键服务子程序,确定键值
BCF PORTB,1
BCF PORTA,3
BCF PORTE,0
BCF PORTE,1 ;送低电平至K1,K2,K3,K4,以防止键扫描时改变
;K1,K2,K3,K4的电平,从而改变中断条件
BCF INTCON,RBIF ;键扫描时可能会产生“电平变化”而使RBIF
;置1,再清除一次RBIF以求避免额外中断
MOVF JIANR,W ;把需要显示的值送给W寄存器
CALL CONVERT ;查要显示的段码
CALL DISPLAY ;调用显示子程序
RETFIE ;中断返回
;***************显示子程序******************
DISPLAY
CLRF PORTA
MOVWF SSPBUF
LOOP NOP
BTFSS PIR1,SSPIF
GOTO LOOP
NOP
BCF PIR1,SSPIF
BSF PORTA,5 ;详细程序语句请参考3. 1. 3节
RETURN
;*********键盘去抖子程序(8ms的延时)******************
KEYDELAY
MOVLW 0X0A
MOVWF DEYH
AGAIN2 MOVLW 0XFF
MOVWF DEYL
AGAIN1 DECFSZ DEYL,1
GOTO AGAIN1
DECFSZ DEYH,1
GOTO AGAIN2 ;具体程序语句参考3. 2节
RETURN
;***************键服务子程序******************
KEYSERVE
JIANZHI ;确定键值的子程序
BCF PORTB,1
BCF PORTA,3
MOVLW 0X03
MOVWF PORTE ;K1,K2置低电平,K3,K4置高电平
NOP
NOP ;使引脚电平稳定
BTFSS PORTB,4
GOTO K1K2 ;RB4为0,表示按键为K1,K2中的一个
GOTO K3K4 ;RB4为1,表示按键为K3,K4中的一个

K1K2 BCF PORTB,1
BSF PORTA,3 ;K1置低电平,K2置高电平
NOP
NOP ;使引脚电平稳定
BTFSS PORTB,4
GOTO K1 ;RB4为0,表示按键为K1
GOTO K2 ;RB4为1,表示按键为K2

K3K4 BCF PORTE,0
BSF PORTE,1 ;K3置低电平,K4置高电平
NOP
NOP ;使引脚电平稳定
BTFSS PORTB,4
GOTO K3 ;RB4为0,表示按键为K3
GOTO K4 ;RB4为1,表示按键为K4,以上对键盘进行扫描,
;来确定是哪一个键按下
K1 MOVLW 0X03
MOVWF JIANR
GOTO RET
K2 MOVLW 0X05
MOVWF JIANR
BCF PORTA,3
GOTO RET
K3 MOVLW 0X07
MOVWF JIANR
GOTO RET
K4 MOVLW 0X09
MOVWF JIANR ;以上根据按下的键把相应的值送给JIANR
BCF PORTE,1
RET NOP
RETURN
;****************************************
MAIN NOP
CALL INITIAL ;调用初始化子程序
BSF INTCON,GIE ;总中断允许
HERE GOTO HERE ;等待中断发生
END
全部程序完毕,欢迎转载请保留http://www.51hei.com 51hei单片机学习网的链接

关键字:PIC单片机  键盘程序  电平变化 引用地址:PIC单片机键盘程序

上一篇:PIC单片机开发的一些问题
下一篇:PIC单片机PWM波形产生程序

推荐阅读最新更新时间:2024-03-16 13:15

pic单片机学习教材(一):接口设计
PIC单片机(Peripheral Interface Controller)是一种用来开发去控制外围设备的集成电路(IC)。现在PIC单片机应用领域已经相当广泛,为了方便广大工程师能够很好的学习PIC单片机,电子发烧友网整理了PIC单片机的相关知识应用,现在先带您学习下PIC单片机在接口设计中的应用吧。    一、SPI串行EEPROM与PIC单片机的接口设计 目前市场上有许多种单片机用在嵌入式控制系统设计中,这些嵌入式控制系统中的很大一部分都要用到非易失性存储器。由于串行EEPROM 具有封装尺寸小,存储容量灵活,对I/O 引脚要求低,和低功耗低成本等特点,已成为非易失性存储器的首选。      详情请阅读:S
[模拟电子]
<font color='red'>pic单片机</font>学习教材(一):接口设计
基于PIC单片机的逆变电路设计初探
  针对现代电源变频调幅的要求,提出了利用PIC16F873产生SPWM波控制IR2136触发IGBT产生PWM波作用于逆变器产生标准的正弦波形,从而实现变频调幅。同时利用AD模块对逆变桥输出进行采样并进行滤波处理,实现对系统的PI闭环控制。通过MATLAB中的SIMULINK组件进行仿真分析,结果表明此方案输出电压动态响应速度快,具有良好的精度控制及实时性、波形失真小、可靠性高。   随着科学技术的进步,电源质量越来越成为各种电气设备正常和良好工作的基础。电源技术领域的一个持续的研究课题即是研究作为电子信息产业命脉的电源的可靠性和稳定性。   而逆变器作为电源的核心部分,其调制技术很大程度上决定了电源输出电压的质量。目前最常用的
[电源管理]
基于<font color='red'>PIC单片机</font>的逆变电路设计初探
PIC单片机在MPLAB-IDE中使用HitechC编译器
PIC单片机的C语言使用(一) 在MPLAB-IDE中使用HitechC编译器 一、装入编译器: 1、启动MPLAB-IDE,如下图所示选择Project-》Install Language Tool 2、在弹出的安装语言工具对话框里“Language Suite”选项现在显示的是Microchip,点击后面的箭头来选择语言。 我使用的工具是HI-TECH PICCME,所以选择为“HI-TECH PICC”。 3、接下来在“Tool Name”里选择编译器组件的调用路径,这里有“PICC Compiler”(C编译器)、“PICC Assembler”(汇编器)和“PICC Linker”(链接器)3项都需要设置。
[单片机]
<font color='red'>PIC单片机</font>在MPLAB-IDE中使用HitechC编译器
基于PIC12F508的交流接触器节电器设计
  CJ系列交流接触器以价格便宜及使用寿命长的优势,广泛应用于低压配电,但在运行当中电能损耗大,噪音大,并且经常烧毁线圈。本文针对交流接触器运行噪声大,耗电高,线圈铁心运行温度高,易烧毁的难题,设计了一款适合CJ系列交流接触器的节电器,主要是采用单片机PICl2F508控制可控硅的导通角,也就是控制加在负载(交流接触器线圈)上的电压波形,从而实现交流接触器的大电流直流吸合,低压小电流维持运行,达到无声节能的目的。    1 电路工作原理   图1是交流接触器的原理框图,主要由220 V交流电输入、可控硅、单片机控制电路和负载等组成。单片机控制电路主要是控制可控硅的导通时间。最终加在负载(交流接触器线圈)上的电压波形如图2所示。
[单片机]
PIC18F452+Proteus双机通信 串口通信 键盘更改波特率源程序
系统功能 1、实现双机之间的通信 (1)在主机上通过4*4键盘上的键值“1”“2”“3”设定波特率(2400、4800、9600),发给从机,两者正常通信; (2)从机将采集到的压力信号传到主机,主机通过LCD显示在第一行,我们可以观察到主机的LCD显示的数和从机的保持一致。 (3)主机通过获取按键“5”“6”“7”,改变从机的ADC采样率分别为“10s”“20s”“30s”,由于ADC采样率不易直接观察改变,可将采样率的值通过从机的三个不同颜色的小灯显示。 2、从机通过ADC采样获取压力传感器模拟输出端口的电压值,并将电压值转化为压力值,通过自身的LCD显示; 3、主机获得从机采集的压力值之后,和初始设定的压力值(我设置
[单片机]
PIC18F452+Proteus双机通信 串口通信 <font color='red'>键盘</font>更改波特率源<font color='red'>程序</font>
如何使用单片机驱动标准PC机键盘?C51程序详细说明
  功能:实现pc机键盘(p/s2接口)与8位单片机连接使用   原理:键盘时钟接在p3.2口,既8051的外部中断int0上,键盘数据接到p1.0上   每次按键,键盘会向单片机发脉冲使单片机发生外部中断,数据有p1.0口一位一位传进来   传回的数据格式为:1位开始位(0),8位数据位(所按按键的通码,用来识别按键),1位校验位(奇校验)   1位结束位(1)   实现:将键盘发回的数据放到一个缓冲区里(数组),当按键结束后发生内部中断来处理所按的按键   缺点:由于51单片机的容量有限所以缓冲区不可以开的太大,这就导致可以记录键盘的按键次数过少,   也就是容错性一般。不过如果正常使用键盘是不会出错
[单片机]
如何使用单片机驱动标准PC机<font color='red'>键盘</font>?C51<font color='red'>程序</font>详细说明
AVR 矩阵键盘程序源代码V3.5(有连续按键功能,有组合键功能)
程序特点: 1.有连续按键功能 2.有组合键功能 3.连续按键起始时间和间隔时间自定义 4.可根据需要扩展组合键 使用方法: 将文件 Keypad.h 和 Keypad.c 放入您的工程,将按键需要执行的函数赋值给对应的函数指针 注:需要执行的函数必须为无参数,无返回值 例:您按下A时需要执行以下函数: void fun(void) { printf( 我按下了A ); } 只需执行下列语句 p_Key_A = MenuExit; 并在主循环中调用 KeypadPoll(); 以下是两个文件源码 Keypad.h /******** AVR 4*4矩阵键盘扫描程序 ******** * 版
[单片机]
基于PIC单片机控制的RLC智能测量仪
在使用电子元器件时,首先需要了解其参数,这就要求能够对元器件的参数进行精确测量。采用传统的仪表进行测量时,首先要从电路板上焊开器件,再根据元件的类型,手动选择量程档位进行测量,这样不仅麻烦而且破坏了电路板的美观。经过理论分析和实验研究,采用正交采样算法,并由单片机控制实现在线测量、智能识别、量程自动转换等多种功能,可大大提高测量仪的测量速度和精度,扩大测量范围。因此这种RLC测量仪既可改善系统测量的性能,又保持了印刷电路的美观,较传统的测量仪还具有高度的智能化和功能的集成化,在未来的应用中将具有广阔的前景。 1 硬件电路设计 此测量仪硬件设计思路如图1所示。 由于PIC单片机只能正确采集0~5 V之间的电压,而输入的信
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved