51键盘显示程序

发布者:快乐的旅程最新更新时间:2015-03-09 来源: laogu关键字:51键盘  显示程序 手机看文章 扫描二维码
随时随地手机看文章
主程序:

start:
      call disp
      lcall keyscan
      cjne a,#0ffh,nex
      sjmp start
nex:
      mov 20h,a
      sjmp start
;显示函数,显示从20h开始的3个单元的内容
disp:
      mov r0,#20h
      mov r1,#1
      mov r2,#01
lop: 

      mov a,@r0

      lcall displ
      mov a,@r0
      lcall disph
      inc r0
      djnz r1,lop
      ret
disph:
     swap a
displ:
     anl a,#0fh
     mov dptr,#tab
     movc a,@a+dptr
     mov dptr,#pb
     movx @dptr,a
     mov a,r2
     mov dptr,#pa

     movx @dptr,a
     rl a
     mov r2,a
     lcall delay
     clr a
     movx @dptr,a
     ret  
  ;键盘扫描子程序
keyscan:
    mov a,#0
    mov dptr,#4f02
    movx @dptr,a
 
    lcall testkey
    jnz kn1
    sjmp fret
kn1:

    lcall getkey
    mov r7,a
    lcall aga
    cjne r2,#0FFH,fret
    lcall delay
    lcall getkey
    xrl a,r7
    jnz fret
wait:
    call testkey
    jnz wait
    mov a,r7
    ret
fret:
    mov a,#0FFH
    ret
 
;测试是否有键按下 
testkey:
    mov dptr,#4f01
    clr a
    movx @dptr,a
    mov dptr,#4f03
    movx a,@dptr
    cpl a
    anl a,#0fh
    ret
;延时

delay:
    mov r0,#0
    djnz r0,$
    ret

;取得按下键的键值
getkey:
    mov r5,#8
    mov r3,#0FEH
lop1: 

    mov dptr,#4f01H
    mov a,r3
    movx @dptr,a
 
    ;mov b,a
    rl a
    mov r3,a
    mov dptr,#4F03H
    movx a,@dptr
    anl a,#0fh
    cjne a,#0fh,nex1
aga: 

    djnz r5,lop1
    mov r2,#0ffh
    ret
nex1:
    mov r1,a
    mov a,#9
    subb a,r5
    rl a
    rl a
    mov r2,a
    mov a,r1
    mov r1,#4
    cpl a
lop2: 

    rrc a
    jc exit
    inc r2
    djnz r1,lop2
exit:
    mov a,r2
    mov dptr,#keytable
    movc a,@a+dptr
    ret
;键值表

keytable:
   DB     00H,04H,08H,0CH
   DB     10H,14H,18H,1CH
   DB     01H,05H,09H,0DH
   DB     11H,15H,19H,1DH
   DB     02H,06H,0AH,0EH
   DB     12H,16H,1AH,1EH
   DB     03H,07H,0BH,0FH
   DB     13H,17H,1BH,1FH 
 ;8段码表
tab:

关键字:51键盘  显示程序 引用地址:51键盘显示程序

上一篇:51定时器实现频率检测
下一篇:基于单片机的高精度智能交直流电压数据采集系统设计

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

stm8的18b20温度显示程序
单片机源程序如下: #include stm8s.h #include Cry12864.h #include temp.h #include tim1.h void LcdDisplay(int temp) ; uint a; void main( void ) { CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//内部时钟1分频16m Ini_Lcd();//液晶初始化 Tim1_Init();//时钟初始化 while(1) {LcdDisplay(Ds18b20ReadTemp()); } }
[单片机]
51单片机的独立键盘
这几天打算好好开始看郭天祥的单片机视频,自己也写了一个独立键盘的51单片机程序,开发环境为Keil C51。 刚开始看,功能并不是很复杂,由51单片机的P1^7口接LED灯,P0口作为6位数码管的位选线和段选线,6位数码管每次显示相同的数字。位选和段选的控制由P2^7,P2^6口。按键只有一个,一端与地相连,一端接P3^7口。 当按下按键时,LED灯会发光,同时6位数码管显示的数字加1,从0~F后返回0。松开按键后,LED灯灭。 闲话少说,上代码: #include reg52.h #define uchar unsigned char sbit RDKey=P3^7; sbit LED=P1^7; s
[单片机]
基于LM032L液晶的电子时钟显示程序
元器件: Atmel89c51 LM032L液晶屏 Button 仿真已经测试通过,大家使用只需要自己修改液晶的端口即可. C程序代码: /*电子时钟 1062液晶显示 * @ * */ #include reg51.h #define uchar unsigned char #define uint unsigned int sbit LCD_EN=P3^4; sbit LCD_RS=P3^5; sbit s1=P3^0; sbit s2=P3^1; sbit s3=P3^2; sbit rd=P3^7; uchar count,s1num; char miao,shi,fen; uchar code table
[单片机]
基于LM032L液晶的电子时钟<font color='red'>显示</font><font color='red'>程序</font>
单片机空气质量传感器Proteus仿真程序 LCD12864显示
用LCD12864实现显示个人信息和空气中颗粒物质量浓度,根据PM2.5质量浓度分析空气质量等级并显示。 1. 第一个屏显示:设计任务名称,姓名,班级,学号后三位; 2. 第二个屏显示:PM1.0、PM2.5、PM10的质量浓度数据(带单位),显示空气质量等级; 3. 空气颗粒物质量浓度数据和学号后三位通过串口从模拟器接收后显示,显示数据可以与模拟器更改值同步; 4. 可通过按键进行屏幕换; 5. 通过串口上传空气质量等级数值给模拟器,等级数值对应为:1-优,2-良,3-轻度污染,4-中度污染,5-重度污染,6-严重污染,模拟器成功接收会自动显示空气质量等级。 单片机源程序如下: #include
[单片机]
单片机空气质量传感器Proteus仿真<font color='red'>程序</font> LCD12864<font color='red'>显示</font>
4×4键盘C51单片机程序源码分享
/*MCU:AT89S52*/ #include #include #define uchar unsigned char int key; int del; void Key_Scan(void); /************主程序*************/ void main(void) { void Key_Scan(void); void delay(int); while(1) { Key_Scan(); delay(2000); } } /********矩键查寻键值4*4程序******/ void Key_Scan(void) { uchar readkey; uchar x_temp,y_temp; P
[单片机]
4×4<font color='red'>键盘</font>C<font color='red'>51</font>单片机<font color='red'>程序</font>源码分享
1602液晶显示红外遥控解码C语言程序设计
#include at89x52.h #define uchar unsigned char #define uint unsigned int /*----------------------------控制I/O口设置,根据实际而定---------------*/ #define RS P2_0 //RS数据命令选择端,高电平数据,低电平命令 #define RW P2_1 //RW读写选择端,高电平读操作,低电平写操作 #define E P2_2 //E使能控制端,E高电平跳变为低电平时LCD执行命令 #define DATA P0 //数据端口定义 #define D0 P0_
[单片机]
mcs-51单片机 扫描矩阵键盘程序
#include reg52.h #define uint unsigned int #define uchar unsigned char sbit DSCQ=P2^6;//位定义段锁存器控制端 sbit WSCQ=P2^7;//位定义位锁存器控制端 uchar code table ={0x3f,0x06,0x5b,0x4f, //0,1,2,3 0x66,0x6d,0x7d,0x07, //4,5,6,7 0x7f,0x6f,0x77,0x7c, //8,9,a,b 0x39,0x5e,0x79,0x71};//c,d,e,f void delay(uint t);//声明延时函数 void keyscan()
[单片机]
LED显示摇棒全套方案及源程序
作者:nim 于 http://www.21icbbs.com 2005-1-7 email: linyige@yahoo.com 本设计版权归作者所有,请勿擅自用于商业目的,转载请注明作者及出处。 情人节我们做电的兄弟们送什么礼物给心仪已久的MM?在离情人节还有一个月的时间,给大家提供一个适合作为礼物的简单电路,自己动手做的漂亮玩具一定会是送给MM的最好的礼物。 显示效果图片upload/2005_01/050117013990931.jpg 原理图http://www.21icsearch.com/buzi/upimage/upfile/20047221015470.jpg 曾经在新手园地发
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved