51单片机键盘数码管显示 - 利用8255和51单片机实现数码管显示按键数值的程序(带程序) - 图文

2026/4/29 8:47:44

【单片机源程序】

#include //51单片机头文件 #include //该可使用其中定义的宏来访问绝对地址 #include

#define uchar unsigned char //宏的定义变量类型 uchar 代替 unsigned char #define uint unsigned int //宏的定义变量类型 uint 代替 unsigned int

#define PA8255 XBYTE[0x4000] // 8255的A口地址 #define PB8255 XBYTE[0x4001] // 8255的B口地址 #define PC8255 XBYTE[0x4002] // 8255的C口地址 #define PD8255 XBYTE[0x4003] // 8255的控制口地址

uchar temp,key; //定义变量temp,key为按键键值,无实际意义

void delay(uint z) //延迟程序 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

void ini_8255() //初始化8255函数 {

PD8255 = 0x81; }

void display() //显示函数,不可删除,删除出现连闪情况 {

PB8255 = 0xff; // PB8255全部置1,数码管清0 PA8255 = 0x00; // PA8255全部置0,对数码管进行位选,选中六个数码管 delay(100); //延迟 }

void keyscan(void) //按键扫描程序,让数码管显示按键数值 {

PC8255 = 0xef; //PC8255选中JL1列,JL1置0,其他置1

if(temp != 0xef) { delay(10); //延迟防抖 temp = PC8255;

switch(temp) { case 0xee: key = 0x0f; PB8255 = 0x8e; //第15按键键值,数码管显示‘F’ break;

case 0xed: key = 0x0b; PB8255 = 0x83; //第11按键键值,数码管显示‘B’ break;

case 0xeb: key = 0x07; PB8255 = 0xf8; //第7按键键值,数码管显示‘7’ break;

case 0xe7: key = 0x03; PB8255 = 0xb0; //第3按键键值,数码管显示‘3’ break; } while(temp != PC8255); }

PC8255 = 0xdf; if(temp != 0xdf) //PC8255选中JL2列,JL2置0,其他置1 { delay(10); temp = PC8255; switch(temp) { case 0xde: key = 0x0e; PB8255 = 0x86; //第14按键键值,数码管显示‘E’ break;

case 0xdd: key = 0x0a; PB8255 = 0x88; //第10按键键值,数码管显示‘A’ break;

case 0xdb: key = 0x06; PB8255 = 0x82; //第6按键键值,数码管显示‘6’ break;

case 0xd7: key = 0x02; PB8255 = 0xa4; //第2按键键值,数码管显示‘2’ break; } while(temp != PC8255); }

PC8255 = 0xbf; //PC8255选中JL3列,JL3置0,其他置1 if(temp != 0xbf) { delay(10); temp = PC8255; switch(temp) { case 0xbe: key = 0x0c; PB8255 = 0xa1; //第13按键键值,数码管显示‘C’


51单片机键盘数码管显示 - 利用8255和51单片机实现数码管显示按键数值的程序(.doc 将本文的Word文档下载到电脑
搜索更多关于: 51单片机键盘数码管显示 - 利用8255和51单片机实现数 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219