807964046 发表于 2019-11-18 16:52 嗯嗯打错了 改5功能就对了 |
| 延时做的不好,再改进一下 |
|
消隐的是led的段数据P0,而不是位数据P2,可按下面模式修改,并调整delay时间 P2=0X10; P0=a[h/1000]; delay(2); P0=0x00 delay(); |
|
解决了谢谢 最后一行 P0清零后先赋值位选后段选 代码如下#include<reg52.h> sbit KEY=P3^4; sbit KEY1=P3^5; sbit seg1=P2^4; sbit seg2=P2^5; sbit seg3=P2^6; sbit seg4=P2^7; void delay(unsigned int xms); int a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int h; void main() { h=6152; while(1) { if(KEY==0) { delay(1); if(KEY==0) { h++; } while(!KEY); } if(KEY1==0) { delay(1); if(KEY1==0) { h--; } while(!KEY1); } P2 = 0X00; P0=a[h/1000]; P2 = 0X10; delay(500); P2 = 0X00; P0=a[h%1000/100]; P2=0X20; delay(500); P2=0X00; P0=a[h%100/10]; P2=0X40; delay(500); P2=0X00; P0=a[h%10]; P2=0x80; delay(500); P2=0X00; } } void delay(unsigned int xms) { int i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--) {;} } |
本帖最后由 bh2030693 于 2019-11-18 13:50 编辑
编辑一下原因:直接粘贴的代码还是显示不全,要先粘贴到text,再复制粘贴到这里才能显示全。 |
消隐方式不当
|
| 尝试P0清零后,再给P2置位,再给P0斌值 |
| 您好,看程序没啥问题,是不是硬件的问题,可以考虑换个板子试一下。 |