按下按键1,8位共阴极数码管输出2022-606。
按下按键2,8位共阴极数码管输出606-1132。
在1和2之间显示内容切换。
哪位路人知道的,请帮我解答一下,万能的CSDN区
单片极的共阴极数码管按下按键1和按键2输出的内容
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 百色彭于晏 2022-06-14 01:51关注
#include<reg52.h> #define DataPort P0 sbit K1=P3^0; sbit K2=P3^1; sbit LATCH1=P2^2; sbit LATCH2=P2^3; unsigned char seg7code[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选 unsigned char str1[9]={0x7d,0x3f,0x7d,0x40,0x06,0x06,0x4f,0x5b};//606-1132 unsigned char str2[9]={0x5b,0x3f,0x5b,0x5b,0x40,0x7d,0x3f,0x7d};//2022-606 unsigned char i=0; unsigned char j=0; void Delay(int x) //@12.000MHz { //延时函数x,参数代表延时的毫秒数 while(x--){ unsigned char i, j; i = 2; j = 239; do{ while (--j); } while (--i); } } void key_scan() {//按键扫描 if(!K1){Delay(20);if(!K1){while(!K1);j=1;}} if(!K2){Delay(20);if(!K2){while(!K2);j=2;}} } void display() { if(j==1) { DataPort=seg7code[i];//送位选 LATCH2=1;//开位选 LATCH2=0;//关位选,到这里完成了位选信号的输送 DataPort=str2[i];//送段选(2022-606) LATCH1=1;//开段选 LATCH1=0;//关段选,到这里,完成了段选信号的输送 Delay(1);//延时一下,让数码管稳定显示1毫秒 i++; //让位选码和段选码数组下标加1 if(8==i) //因为数码管只有8位,数组长度也只有八位,i不能超过8 i=0; //超过8要让i=0; } if(j==2) //同上 { DataPort=seg7code[i]; LATCH2=1; LATCH2=0; DataPort=str1[i];//606-1132 LATCH1=1; LATCH1=0; Delay(1); i++; if(8==i) i=0; } } main() { while(1) { key_scan();//按键扫描 display();//显示 } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 微信会员卡等级和折扣规则
- ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
- ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
- ¥15 gdf格式的脑电数据如何处理matlab
- ¥20 重新写的代码替换了之后运行hbuliderx就这样了
- ¥100 监控抖音用户作品更新可以微信公众号提醒
- ¥15 UE5 如何可以不渲染HDRIBackdrop背景
- ¥70 2048小游戏毕设项目
- ¥20 mysql架构,按照姓名分表
- ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分