我想要實現(xiàn)的動能:當我一直按下按鍵的時候,點陣上一直顯示文字,直到松開時才熄滅。。但是我寫出來的這個程序是當我按下按鍵的時候,點陣上的文字只是亮了一下,然后就滅了,沒有等到松手就滅了,再次按下也是亮一下就滅了。
單片機源碼如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
-
- sbit SRCLK=P3^6;
- sbit RCLK=P3^5;
- sbit SER=P3^4;
- sbit k2=P3^0;
- sbit led=P2^5;
- uchar ledduan[]={0x10,0x30,0x70,0xff,0x70,0x34,0x1e,0x00};
- uchar ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
- void delayms(uint ms)
- {
- uchar i;
- while(ms--)
- for(i=0;i<123;i++);
- }
- void h595send(uchar t)
- {
- uchar i;
- SRCLK=0;
- RCLK=0;
- for(i=0;i<8;i++)
- {
- SER=t>>7;
- t<<=1;
- SRCLK=1;
- _nop_();
- _nop_();
- SRCLK=0;
-
- }
- RCLK=1;
- _nop_();
- _nop_();
- RCLK=0;
- }
- void main()
- {
- uchar i;
- h595send(0x00);
- P0=0x7f;
-
- while(1)
- {
- if(k2==0)
- {
- delayms(10);
- if(k2==0)
- {
- for(i=0;i<8;i++)
- {
- P0=ledwei[i];
- h595send(ledduan[i]);
- delayms(1);
- h595send(0x00); //消隱
- }
- }
- while(!k2); //松手檢測
- }
- else h595send(0x00);
- }
- }
復制代碼
|