名奢网 名表 最新资讯 查看内容

单片机4*4按键数码管显现0-9

2023-1-6 15:31| 发布者: 挖安琥| 查看: 141| 评论: 0

放大 缩小
简介:#includereg51.h#define KEY P1 //键盘#define SEG P0 //数码管sbit COM=P2^0; // 数码管comsbit OC = P2^1;//573锁存器char code TAB={//0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0 ...

#include<reg51.h>


#define KEY P1 //键盘


#define SEG P0 //数码管


sbit COM=P2^0; // 数码管com


sbit OC = P2^1;//573锁存器


char code TAB[]={//0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x84,0x84,0xbf,0x7f};//共阳极


0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7D,0x07,0x7f,0x6F}; //共阴极


unsigned char scan[4]={0xef,0xdf,0xbf,0x7f}; //扫描码 低电平动作扫描


void delay1ms(int x);


void main(void)


{


unsigned char col,row; //定义列行


unsigned char rowkey,kcode; //定义按键,按键码


COM=0; //点亮数码管


OC=0; // 低电平使能


while(1)


{


for(col=0;col<4;col++) //4列按键


{


KEY =scan[col];


rowkey = ~KEY&0X0F; //例如 读入低4位 反相肃高傲4位,求出行键值


while(rowkey!=0) //假如按下键


{


if(rowkey==0x01) row = 0; //假如第0行被按下


if(rowkey ==0x02) row = 1; //假如第1行被按下


if(rowkey == 0x04) row = 2; //假如第2行被按下


if(rowkey == 0x08) row = 3; //假如第3行被按下


kcode = 4*col+row; //算出按键号码


SEG = TAB[kcode]; //显现


while(rowkey!=0) //假如未放开


rowkey = ~ KEY&0x0f; //再次读入


}


delay1ms(1); //消弭颤动1ms


}


}


}


void delay1ms(int x) //延迟消抖


{


int i,j;


for(i=0;i<x;i++)


for(j=0;j<120;j++); // 120 * 8 = 960us = 1ms


}


原文链接:



路过

雷人

握手

鲜花

鸡蛋
已有 0 人参与

会员评论

最新文章

文章列表

 名表回收网手机版

官网微博:名表回收网服务平台

今日头条二维码 1 微信公众号二维码 1 抖音小程序二维码 1
浙江速典奢贸易有限公司 网站经营许可证 备案号:浙ICP备19051835号2012-2022
名表回收网主要专注于手表回收,二手名表回收/销售业务,可免费鉴定(手表真假),评估手表回收价格,正规手表回收公司,浙江实体店,支持全国范围上门回收手表
返回顶部