(单片机原理与应用)并行口设计数字键盘实验
来源:互联网 发布:火箭nba 知乎 编辑:程序博客网 时间:2024/05/20 18:03
一、实验内容
并行口实现数字0~9、A~F、L、U、P、n总共19个键盘,将按键的结果用4位数码管(例如:7SEG-MPX-CA-BLUE)显示(可选——按键控制移位)出来。
二、实验目的
掌握动态显示、动态扫描键盘的工作原理及硬、软件的设计、调试方法
掌握80C51接口硬件电路设计方法及软件编程方法
了解80C51外部中断的使用和编程方法
三、实验设备
DELL台式机 、keilC51版本7、proteus版本6
四、实验电路图
五、程序流程图
六、程序源码
#include<reg51.h>#define uchar unsigned char#define uint unsigned int //0-9,A~F,L,U,P,n的数码管断码uchar code DSY_CODE[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x38,0x3e,0x73,0x37};sbit P2_0=P2^0;uchar pre_key=20,key=20;//延时void DelayMS(uint ms){uchar t;while(ms--)for(t=0;t<120;t++);}//键盘矩阵扫描void keys_scan(){uchar temp;P0=0x0f;P2_0=0;DelayMS(1);//按键后P2_0=0,00001111将变成P2_0=0,0000XXXX,X中有1个为0,3个仍为1//下面的异或操作会把3个1变成0,唯一的0变成1temp=P0^0x0f;//判断按键发生于0~3列中的哪一列switch(temp){case 1:key=0;break;case 2:key=1;break;case 4:key=2;break;case 8:key=3;break;}P0=0xf0;P2_0=1;DelayMS(1);//按键后,P2_0=1,11110000将变成P2_1=X,XXXX0000,X中有1个为0,3个仍为1//下面的表达式会判断P2_1或者会将高4位移到低4位,并将其中唯一的0变为1,其余为0if(P2_0==0)key+=16;else{temp=P0>>4^0x0f;switch(temp){case 1:key+=0;break;case 2:key+=4;break;case 4:key+=8;break;case 8:key+=12;break;}}}void main(){ P1=0x00;P2_0=0;while(1){P0=0xf0;P2_0=1;if(P0!=0xf0||P2_0!=1)keys_scan();//扫描键盘获取按键序号Keyif(pre_key!=key){P1=DSY_CODE[key];//显示pre_key=key;}DelayMS(100); } }
0 0
- (单片机原理与应用)并行口设计数字键盘实验
- (单片机原理与应用)并行口设计花样流水灯
- (单片机原理与应用)外部中断设计实验
- (单片机原理与应用)定时器/计数器设计实验
- 并行口设计花样流水灯实验
- (单片机原理与应用)智能温度监测系统(设计)
- 6课:单片机并行口结构
- 读书笔记之《单片机原理与应用》
- 单片机驱动蜂鸣器原理与设计
- (单片机原理与应用)计算器的设计和实现(综合)
- (单片机原理与应用)大液晶屏的游戏设计(推箱子)
- 数据压缩原理与应用 实验六 MPEG音频编码实验
- 《AVR单片机嵌入式系统原理与应用实践》读书笔记
- 单片机原理与应用技术
- 《8051单片机典型模块设计与应用》摘录
- (单片机原理与应用)理解单片机串行口实现通信的各种工作方式
- (单片机原理与应用)proteus(嵌入式系统设计仿真与开发平台)的使用和编译环境(汇编版)
- 单片机原理及应用第一章
- Problem C: 通话记录
- (单片机原理与应用)并行口设计花样流水灯
- os_study01
- Android在非UI线程中显示Toast
- Windows 7安装Eclipse 3.7搭建C/C++开发环境
- (单片机原理与应用)并行口设计数字键盘实验
- hdu 5035 指数概率分布+积分
- 求解一棵树的直径
- 6174问题 C源码
- 大括号,中括号,小括号匹配问题
- (单片机原理与应用)外部中断设计实验
- Ubuntu上libvirt的安装
- 算法提高 约数个数
- 求最大递增数