天祥板子只有6位数码管,楼主初学单片机写这个程序有点难度。给你稍改一下基本可以满足设计目标。
- #include<reg52.h>
- #include<intrins.h>
- sbit dula=P2^6; //送段选数据的那个锁存端,对应U1锁存器(后面有图)
- sbit wela=P2^7; //送位选数据的锁存端,对应U2锁存器
- unsigned char code table[]={//数码管字库
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
- // H J K L N o P U
- 0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E};
- unsigned char aa;// ↑这个是数码管的字母表,分别实现0—9,a--f的字符显示,虽然我实在不明白a 怎么显示。。。
- void delayms(unsigned int xms); //实现延迟
- void main()
- {
- unsigned int i=0,j=0;
- while(1)
- {
- // aa=0XFE; //每次for语句前重启aa地址
- // for(i=0;i<16;i++)
- // {
- dula=1;
- P0=table[i];
- dula=0;
- // P0=0Xff;
-
- aa=~(0x01<<i%6);
- wela=1;
- P0=aa; //共阴极接法,0的时候对应的数码管亮
- wela=0;
- delayms(1000);
- i=++i%24;
- // aa=_crol_(aa,1);
- // }
- // if(j>15)
- // j=0; //防j越界
- }
- }
- void delayms(unsigned int xms)
- {
- unsigned int p,q;
- for(p=xms;p>0;p--)
- for(q=110;q>0;q--);
- }
复制代码 |