您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>C/C++语言编程>

七节显示器实验案例程序分享

大小:0.1 MB 人气: 2017-09-06 需要积分:0
七节显示器实验案例程序分享

1、4个七节显示器跑马灯实验

/* ch05-4-3.c - 4个七节显示器跑马灯实验,P1.0~3 为扫描信号 P2接七节显示器 */
//==声明区==================================
#include       // 定义8051暂存器之标头档,P2-17~19 
#define SCANP P1  // 定义扫瞄码由Port 1输出 
#define SEG7P P2  // 定义七节显示码由Port 2输出 
char code TAB[11]={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99,   // 数字0-4
       0x92, 0x83, 0xf8, 0x80, 0x98, 0xbf }; // 数字5-9,-
#define  counts  6  // 声明字组数量 
char disp[counts+7]={10,10,10,10,1,2,3,4,5,6,10,10,10};  //----123456--- 
void delay1ms(int);  // 声明延迟函数 
void scanner(char);  // 扫瞄函数 
//==主程序===================================
main()     // 主程序开始 
{ char i;    // 声明变数i
 while(1)   // 无穷循环,程序一直跑 
  for(i=0;i    scanner(i); // 扫瞄第i列字组 
}      // 主程序结束 
//==子程序====================================
/* 延迟函数,延迟约x*1ms */
void delay1ms(int x) // 延迟函数开始 
{ int i,j;   // 声明整数变数i,j 
 for (i=0;i   for (j=0;j<120;j++); // 计数120次,延迟1ms 
}      // 延迟函数结束 
/* 扫瞄字组函数,显示第x组数字 */
void scanner(char x) // 扫瞄字组函数开始 
{ char i,j,BCD,scan; // 声明变数 
 for (i=0;i<30;i++) // 扫瞄30次i循环 
 { scan=0xf7;  // 扫瞄信号初值1111 0111
  for (j=0;j<4;j++) // 扫瞄4个数字j循环 
  { SEG7P=0xff; // 关闭七段显示器(防止闪动)
   SCANP=scan; // 输出扫瞄信号(低4位元)
   BCD=disp[x+j]; // 读取第x组第j个数字之BCD码 
   SEG7P=TAB[BCD]; // 输出至七节显示器 
   delay1ms(4); // 延迟4ms
   scan>>=1; // 产生下个扫瞄信号 
  }    // 结束扫瞄4个数字j循环 
 }     // 结束扫瞄30次i循环 
}      // scanner函数结束 
 

2、直接驱动4位七节显示器实验

/* ch05-4-2.c - 直接驱动4位七节显示器实验,P1.0~3为扫描信号 P2接七节显示器 */
//==声明区====================================
#include     // 定义8051暂存器之标头档,P2-17~19 
#define SCANP P1   // 定义扫瞄码由Port 1输出 
#define SEG7P P2   // 定义七节显示码由Port 2输出 
char code TAB[10]={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, //数字0-4
       0x92, 0x83, 0xf8, 0x80, 0x98 }; //数字5-9
char code disp[2][4]={ {2,0,0,8}, // 显示资料(第0组)
      {0,3,1,5}}; // 显示资料(第1组)
void delay1ms(int);    // 声明延迟函数 
void scanner(char);    // 扫瞄函数 
//==主程序====================================
main()       // 主程序开始 
{ char i,j;     // 声明变数i,j
 while(1)     // 无穷循环,程序一直跑 
 { for(i=0;i<2;i++)  // 显示第0,1行字组,for循环(字组i)开始 
   for(j=0;j<3;j++) // 闪烁三次 
   { scanner(i);  // 扫瞄第i行字组 
    SCANP=0xff;  // 全灭 
    delay1ms(480); // 延迟480 1m=0.48s
   }
 }       // while循环结束 
}        // 主程序结束 
//==子程序====================================
/* 延迟函数,延迟约x 1ms */
void delay1ms(int x)   // 延迟函数开始 
{ int i,j;     // 声明整数变数i,j 
 for (i=0;i   for (j=0;j<120;j++); // 计数120次,延迟1ms 
}        // 延迟函数结束 
/* 扫瞄字组函数,显示第x组数字 */
void scanner(char x)   // 扫瞄字组函数开始
{ char i,j,BCD,scan;   // 声明变数 
 for (i=0;i<30;i++)   // 扫瞄30次i循环 
 { scan=0xf7;    // 扫瞄信号初值1111 0111
  for (j=0;j<4;j++)  // 扫瞄4个数字j循环 
  { SEG7P=0xff;   // 关闭七段显示器(防止闪动)
   SCANP=scan;   // 输出扫瞄信号(低4位元)
   BCD=disp[x][j];  // 读取第x组第j个数字之BCD码 
   SEG7P=TAB[BCD];  // 输出至七节显示器 
   delay1ms(4);  // 延迟4ms
   scan>>=1;   // 产生下个扫瞄信号 
  }      // 结束扫瞄4个数字j循环 
 }       // 结束扫瞄30次i循环 
}        // scanner函数结束 
 

3、7447解码之4位数七节显示器实验

/* ch05-4-1.c -7447解码之4位数七节显示器实验,P1.3~0为扫描信号,P1.7~4接7447 */
//==声明区=================================
#include    // 定义8051暂存器之标头档,P2-17~19 
#define SCANP  P1    // 定义扫瞄信号由P1输出 
char code disp[2][4]={ {2,0,0,8}, // 显示资料(第0组)
      {0,3,1,5}}; // 显示资料(第1组)
void delay1ms(int);    // 声明延迟函数 
void scanner(char);    // 扫瞄函数 
//==主程序=================================
main()       // 主程序开始 
{ char i,j;     // 声明变数i,j
 while(1)     // 无穷循环,程序一直跑 
 { for(i=0;i<2;i++)  // 显示第0,1列字组,for循环(字组i)开始 
   for(j=0;j<3;j++) // 闪烁三次 
   { scanner(i);  // 扫瞄第i列字组 
    SCANP=0xff;  // 全灭 
    delay1ms(480); // 延迟480 1m=0.48s
   }
 }       // while循环结束 
}        // 主程序结束 
//==子程序====================================
/* 延迟函数,延迟约x 1ms */
void delay1ms(int x)   // 延迟函数开始 
{ int i,j;     // 声明整数变数i,j 
 for (i=0;i   for (j=0;j<120;j++); // 计数120次,延迟1ms 
}        // 延迟函数结束 
/* 扫瞄字组函数,显示第x组数字 */
void scanner(char x)   // 扫瞄字组函数开始
{ char i,j,BCD,scan;   // 声明变数 
 for (i=0;i<30;i++)   // 扫瞄30次i循环 
 { scan=0xf7;    // 扫瞄信号初值1111 0111
  for (j=0;j<4;j++)  // 扫瞄4个数字j循环 
  { BCD=disp[x][j];  // 读取第x组第j个数字之BCD码 
   SCANP=(BCD<<4)|(scan&0x0f);
   // 输出BCD码(高4位元)与扫瞄信号(低4位元)
   delay1ms(4);  // 延迟4ms
   scan>>=1;   // 产生下个扫瞄信号 
  }      // 结束扫瞄4个数字j循环 
 }       // 结束扫瞄30次i循环 
}        // scanner函数结束 
 
 
 

4、七节显示器实验程序

/* ch03-3-4.c - 七节显示器实验程序  */
//==声明区=====================================
#include  // 定义8051暂存器的标头档,P2-17~19 
#define SEG P0  // 定义七节显示器接至Port 0
/* 声明七节显示器驱动信号阵列(共阳) */
char code TAB[10]={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, // 数字0-4
     0x92, 0x83, 0xf8, 0x80, 0x98 }; // 数字5-9
void delay(int);  // 声明延迟函数 
//==主程序=====================================
main()     // 主程序开始 
{ unsigned char i; // 声明无号数字元变数i
 while(1)   // 无穷循环,程序一直跑 
  for(i=0;i<10;i++) // 显示0-9,共10次 
 { SEG=TAB[i];  // 显示数字 
   delay(500); // 延迟500 1m=0.5秒 
  }    // for循环结束 
}      // 主程序结束 
//==子程序=====================================
/* 延迟函数,延迟约x 1ms */
void delay(int x)  // 延迟函数开始 
{ int i,j;   // 声明整数变数i,j 
 for (i=0;i   for (j=0;j<120;j++);// 计数120次,延迟1ms 
}      // 延迟函数结束 
 

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!