七节显示器实验案例程序分享
大小:0.1 MB 人气: 2017-09-06 需要积分:0
1、4个七节显示器跑马灯实验
/* ch05-4-3.c - 4个七节显示器跑马灯实验,P1.0~3 为扫描信号 P2接七节显示器 *///==声明区==================================
#include
#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
} // 主程序结束
//==子程序====================================
/* 延迟函数,延迟约x*1ms */
void delay1ms(int x) // 延迟函数开始
{ int i,j; // 声明整数变数i,j
for (i=0;i
} // 延迟函数结束
/* 扫瞄字组函数,显示第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
#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
} // 延迟函数结束
/* 扫瞄字组函数,显示第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
#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
} // 延迟函数结束
/* 扫瞄字组函数,显示第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
#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
} // 延迟函数结束
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%