- #include <STC89C5xRC.H>
- #include "intrins.h"
- #define uchar unsigned char
- #define uint unsigned int
- sbit duan=P2^6;
- sbit wei=P2^7;
- uchar code tab[18]={0x06,0x6f,0x7f,0x06,0x06,0x06,0x6d,0x66,0x5b,0x06,0x5b,0x6f,0x00,0x00,0x00,0x00,0x00,0x00};
- //共阴极数码管段码表
- uchar idata dis_buf[6]={17,17,17,17,17,17};
- //显示缓冲区数据(十进制)
- void delayms(uint i) //延时1ms函数
- {
- uint j;
- for(;i>0;i--)
- for(j=120;j>0;j--)
- {;}
- }
- void main() //主函数
- {
- uchar k,m,n,bitcode,segcode;
- while(1)
- {
- for(n=0;n<17;n++)
- {
- dis_buf[0]=dis_buf[1]; //数据移动
- dis_buf[1]=dis_buf[2];
- dis_buf[2]=dis_buf[3];
- dis_buf[3]=dis_buf[4];
- dis_buf[4]=dis_buf[5];
- dis_buf[5]=n;
- for(m=0;m<100;m++) //100次扫描,大约600ms
- {
- bitcode=0xfe; //起始位码
- for(k=0;k<6;k++)
- {
- P0=0xff; //消影
- wei=1;
- wei=0;
- segcode=dis_buf[k]; //取数据
- P0=tab[segcode]; //送段码
- duan=1;
- duan=0;
- P0=bitcode; //送位码
- wei=1;
- wei=0;
- delayms(1);
- bitcode=_crol_(bitcode,1); //更新位码,准备显示下一位
- }
- }
- }
- }
- }
复制代码 |