云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 51单片机键盘数码管显示 - 利用8255和51单片机实现数码管显示按键数值的程序(带程序) - 图文

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

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 3:25:22

【单片机源程序】

#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’

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

【单片机源程序】 #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[

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com