/*************************一位共阴数码管静态显示************************************ * 文件名 : 数码管显示.c * 描述 : 该程序为数码管静态显示程序。 程序实现了最右边数码管的显示一个5,大家可以在程序中修改相应的值而在数码管上显示相应的数字。 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int //数码管的段码编码 uchar table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //下一行的数组可以显示数值外,还可以显示数码管的点 uchar table_d[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1}; /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void main() { uchar i = 0; P2 = 7; //通过74HC138来控制数码管的位选,P2=0或1,2,3,4,5,6,7点亮相应的数码管 P0 = table[5]; //显示5,大家可以修改里面的数据。 while(1) { } }
/**************************一位数码管静态显示(带小数点)************************************* * 文件名 : 数码管显示.c * 描述 : 该程序为数码管静态显示程序。 程序实现了最右边数码管的显示一个5,大家可以在程序中修改相应的值而在数码管上显示相应的数字。 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int //数码管的段码编码 uchar table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //下一行的数组可以显示数值外,还可以显示数码管的点 uchar table_d[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1}; /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void main() { uchar i = 0; P2 = 7; //数码管的最后一位显示 P0 = table_d[5]; //显示5,大家可以修改里面的数据。 while(1) { } }
/******************************************************************** * 描述 : 用单个数码管来模拟流水灯。 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int //数码管的段码编码 uchar table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //下一行的数组可以显示数值外,还可以显示数码管的点 uchar table_d[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1}; /******************************************************************** * 名称 : Delay() * 功能 : 延时,延时时间为 10ms * del * 输入 : del * 输出 : 无 ***********************************************************************/ void Delay(uint del) { uint i,j; for(i=0; i<del; i++) for(j=0; j<1827; j++) ; } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void main() { uchar i = 0; P2 = 7; while(1) { P0 = 0xfe; for(i=0;i<8;i++) { Delay(20); P0 = P0 << 1; P0 = P0 | 0x01; } } }
/******************************************************************** * 文件名 : 动态显示.c * 描述 : 8位数码管低两位交替显示 “1,2” 这里是做一个动态的演示实验。 最开始,两个数码管闪烁间隔时间为150豪秒,每闪烁一次, 间隔时间减少2毫秒,当间隔时间小到一定程度的时候, 因为人的视觉暂留现象,就不会发现数码管在闪烁了。 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay(uint i) { uint x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } /******************************************************************** * 名称 : Main() * 功能 : 数码管的显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { uchar i=100; //最大闪烁值为0.15秒 while(1) { P0 = 0; //这里让数码管每段不显示 ,这样可以取掉余晖。 P2 = 6; //点亮第二位数码管(从右往左数) P0 = table[1]; // i 值的 个位数 Delay(i); P0 = 0; P2 = 7; //点亮第一位数码管 P0 = table[2]; // i 值的 个位数 Delay(i); if(i!=2) //假如i没有减小到2,执行括号里的语句 { i=i-2; //数码管每闪烁一次,i的值减2 } } }
/******************************************************************** * 文件名 : 动态显示.c * 描述 : 8位数码管低两位分别显示 1,2 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code LED_W[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay(uint i) { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } /******************************************************************** * 名称 : Main() * 功能 : 数码管的显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { while(1) { P0 = 0; //消隐 P2 = 6; //点亮第二位数码管(从右往左数) P0 = table[1]; // i 值的 个位数 Delay(3); P0 = 0; //消隐 P2 = 7; //点亮第一位数码管 P0 = table[2]; // i 值的 个位数 Delay(3); } }
/******************************************************************** * 文件名 : 动态显示.c * 描述 : 八位数码管依次显示0,1,2,3,4,5,6,7 这里是做一个动态的演示实验。 最开始,两个数码管闪烁间隔时间为50豪秒,每闪烁一次, 间隔时间减少1毫秒,当间隔时间小到一定程度的时候, 因为人的视觉暂留现象,就不会发现数码管在闪烁了。 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay(uint i) { uint x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } /******************************************************************** * 名称 : Main() * 功能 : 数码管的显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { uchar i,j=50; while(1) { for(i=0;i<8;i++) { //每位数码管依次闪烁 P0 = 0; //消隐 P2 = i; //选择哪一位数码管点亮 P0 = table[i]; //赋值段码给P0口 Delay(j); //延时 } if(j>=3) //当大于3毫秒的时,执行括号中的语句 { j-=1; //延时时间自减1毫秒 } } }
/******************************************************************** * 文件名 : 动态显示.c * 描述 : 八位数码管依次显示0,1,2,3,4,5,6,7 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay(uint i) { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } /******************************************************************** * 名称 : Main() * 功能 : 数码管的显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { uchar i; while(1) { for(i=0;i<8;i++) { P0 = 0; P2 = i; //选择哪一位数码管点亮 P0 = table[i]; //赋值段码给P0口 Delay(2); //延时0.02秒 } } }
/******************************************************************** * 文件名 : 数码管滚动显示.c * 描述 : 八个数码管显示0--7,每个0.5秒钟,数据从左往右移动一位 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay(uint i) { uint x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } /******************************************************************** * 名称 : Main() * 功能 : 数码管的显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { uchar i; while(1) { for(i=0;i<8;i++) { P0 = table[5]; //数码管段值 P2 = i; //点亮某一位数码管 Delay(200); } } }
/******************************************************************** * 文件名 : 数码管滚动显示.c * 描述 : 八个数码管显示0--7,每个0.64秒钟,数据从左往右移动一位 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code LED_W[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uint LED_temp = 0; /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay(uint i) { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } /******************************************************************** * 名称 : Main() * 功能 : 数码管的显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { uchar i,j; while(1) { //j自加一次,在内层循环已经走了16毫秒 for(j=0;j<40;j++) { for(i=0;i<8;i++) { P0 = 0; //消隐 P2 = i; //点亮某一位数码管 P0 = table[(i - LED_temp) % 8]; //数码管段值 Delay(2); //延时0.02秒 } } LED_temp -=1; //LED_temp这个变量自减1 } }
/******************************************************************** * 文件名 : 数码管滚动显示.c * 描述 : 八个数码管显示0--7,每个0.64秒钟,数据从左往右移动一位 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uint LED_temp = 0; /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay(uint i) { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } /******************************************************************** * 名称 : Main() * 功能 : 数码管的显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { uchar i,j; while(1) { for(j=0;j<40;j++) //j自加一次,在内层循环已经走了16毫秒 { for(i=0;i<8;i++) { P0 = 0; //消隐 P2 = i; //点亮某一位数码管 P0 = table[(i + LED_temp) % 8]; //数码管段值 Delay(2); //延时0.02秒 } } LED_temp +=1; //LED_temp 自加1 } }