- #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); //更新位碼,準備顯示下一位
- }
- }
- }
- }
- }
復制代碼 |