文章目录 1.6个9显示 2.两位输出7 3.0_9循环显示 4.两位循环0_9 5.123456显示 6.13.14.15静态显示 1.6个9显示
# include <reg52.h> sbit dula= P3^ 4 ; sbit wela= P1^ 6 ; void main ( ) { wela= 1 ; P0= 0xc0 ; wela= 0 ; dula= 1 ; P0= 0x6f ; dula= 0 ; while ( 1 ) ; 2.两位输出7
# include <reg52.h> sbit dula= P3^ 4 ; sbit wela= P1^ 6 ; void main ( ) { wela= 1 ; P0= 0xde ; wela= 0 ; dula= 1 ; P0= 0x07 ; dula= 0 ; while ( 1 ) ; } 3.0_9循环显示
# include <reg52.h> // 头文件 # define uchar unsigned char # define uint unsigned int // 定义锁存器控制引脚 sbit dula= P3^ 4 ; // 锁存器U2(段选) sbit wela= P1^ 6 ; // 锁存器U3(位选) // 共阴极数码管段码表 uchar code seg_code[ ] = { 0x3F , // 0 0x06 , // 1 0x5B , // 2 0x4F , // 3 0x66 , // 4 0x6D , // 5 0x7D , // 6 0x07 , // 7 0x7F , // 8 0x6F // 9 } ; // 延时函数 void delay ( uint ms) { uint i, j; for ( i= ms; i> 0 ; i-- ) for ( j= 110 ; j> 0 ; j-- ) ; } // 数码管展示函数 void display_digit ( uchar digit) { P0= seg_code[ digit] ; // 发送数字对应的段码 dula= 1 ; // 打开段选 delay ( 5 ) ; // 稳定信号 dula= 0 ; // 关闭段选 } // 主函数 void main ( ) { uchar digit; while ( 1 ) { // 1.位选控制 wela= 1 ; // 打开位选 P0= 0xc0 ; // 位选6个数码管 1100 0000 wela= 0 ; // 关闭位选 // 2.段选控制 for ( digit= 0 ; digit< 10 ; digit++ ) // 轮流显示0到9 { // 补充代码 P0= seg_code[ digit] ; delay ( 700 ) ; } } } 4.两位循环0_9
# include <reg52.h> // 头文件 # define uchar unsigned char # define uint unsigned int // 定义锁存器控制引脚 sbit dula= P3^ 4 ; // 锁存器U2(段选) sbit wela= P1^ 6 ; // 锁存器U3(位选) // 共阴极数码管段码表 uchar code seg_code[ ] = { 0x3F , // 0 0x06 , // 1 0x5B , // 2 0x4F , // 3 0x66 , // 4 0x6D , // 5 0x7D , // 6 0x07 , // 7 0x7F , // 8 0x6F // 9 } ; // 延时函数 void delay ( uint ms) { uint i, j; for ( i= ms; i> 0 ; i-- ) for ( j= 110 ; j> 0 ; j-- ) ; } // 数码管展示函数 void display_digit ( uchar digit) { P0= seg_code[ digit] ; // 发送数字对应的段码 dula= 1 ; // 打开段选 delay ( 5 ) ; // 稳定信号 dula= 0 ; // 关闭段选 } // 主函数 void main ( ) { uchar digit; while ( 1 ) { // 1.位选控制 wela= 1 ; // 打开位选 P0= 0xf3 ; // 位选6个数码管 1100 0000 wela= 0 ; // 关闭位选 // 2.段选控制 for ( digit= 0 ; digit< 10 ; digit++ ) // 轮流显示0到9 { // 补充代码 P0= seg_code[ digit] ; delay ( 700 ) ; } } } 5.123456显示
# include <reg52.h> // 头文件 ```c # define uchar unsigned char # define uint unsigned int // 定义锁存器控制引脚 sbit dula= P3^ 4 ; // 段选锁存器U2 sbit wela= P1^ 6 ; // 位选锁存器U3 // 数码管的段码表(定义0-9的段码) uchar code TableDula[ ] = { 0x3F , // 0 0x06 , // 1 0x5B , // 2 0x4F , // 3 0x66 , // 4 0x6D , // 5 0x7D , // 6 0x07 , // 7 0x7F , // 8 0x6F // 9 } ; // 数码管显示位码,对应第1到第6个数码管(需要将2进制转换成16进制) uchar code TableWela[ ] = { // 补充代码 // 1111 1110 -> 第1位(P0.0 置低,其它为高)=> 选中第1位数码管 0xfe , // 1111 1101 -> 第2位(P0.1 置低)=> 选中第2位数码管 0xfd , // 1111 1011 -> 第3位(P0.2 置低)=> 选中第3位数码管 0xfb , // 1111 0111 -> 第4位(P0.3 置低)=> 选中第4位数码管 0xf7 , // 1110 1111 -> 第5位(P0.4 置低)=> 选中第5位数码管 0xef , // 1101 1111 -> 第6位(P0.5 置低)=> 选中第6位数码管 0xdf } ; // 延时函数 void delay ( uchar x) { uchar j; while ( x-- ) { for ( j= 0 ; j< 125 ; j++ ) ; } } // 主函数 void main ( ) { uchar i; while ( 1 ) { for ( i= 0 ; i< 6 ; i++ ) { P0= 0x00 ; // 清空之前的输出 dula= 0 ; wela= 0 ; P0= TableWela[ i] ; // 先送位码,依次选中1-6位数码管 wela= 1 ; // 锁存位码 wela= 0 ; P0= TableDula[ i+ 1 ] ; // 再送段码,第1个数码管显示0,第2个数码管显示1... dula= 1 ; // 锁存段码 dula= 0 ; delay ( 2 ) ; // 保持一段时间 } } } 6.13.14.15静态显示
# include <reg52.h> # define uchar unsigned char # define uint unsigned int sbit dula= P3^ 4 ; // 段选锁存器 sbit wela= P1^ 6 ; // 位选锁存器 // 数码管的段码表(0~9) uchar code TableDula[ ] = { 0x3F , // 0 0x06 , // 1 0x5B , // 2 0x4F , // 3 0x66 , // 4 0x6D , // 5 0x7D , // 6 0x07 , // 7 0x7F , // 8 0x6F // 9 } ; // 数码管段码表(0~9,带小数点) uchar code TableDulaPoint[ ] = { 0xBF , // 0. => 10111111 // 补充代码 // 1. => 10000110 0x86 , // 2. => 11011011 0xdb , // 3. => 11001111 0xcf , // 4. => 11100110 0xe6 , // 5. => 11101101 0xed , // 6. => 11111101 0xfd , // 7. => 10000111 0x87 , // 8. => 11111111 0xff , // 9. => 11101111 0xef } ; // 数码管显示位码,对应第1到第6个数码管 uchar code TableWela[ ] = { 0xfe , // 1111 1110 -> 第1位(P0.0 置低,其它为高)=> 选中第1位数码管 0xfd , // 1111 1101 -> 第2位(P0.1 置低)=> 选中第2位数码管 0xfb , // 1111 1011 -> 第3位(P0.2 置低)=> 选中第3位数码管 0xf7 , // 1111 0111 -> 第4位(P0.3 置低)=> 选中第4位数码管 0xef , // 1110 1111 -> 第5位(P0.4 置低)=> 选中第5位数码管 0xdf // 1101 1111 -> 第6位(P0.5 置低)=> 选中第6位数码管 } ; // 延时函数 void delay ( uchar x) { uchar j; while ( x-- ) { for ( j= 0 ; j< 125 ; j++ ) ; } } void main ( ) { uchar i; // 显示数据:对应的数字内容 uchar displayData[ 6 ] = { 1 , 3 , 1 , 4 , 1 , 5 } ; // 小数点标志位:1表示该位需要小数点 uchar pointFlag[ 6 ] = { 0 , 1 , 0 , 1 , 0 , 0 } ; // 第2位和第4位显示带小数点 while ( 1 ) { for ( i= 0 ; i< 6 ; i++ ) { P0= 0x00 ; // 清除显示 dula= 0 ; wela= 0 ; // 位选 P0= TableWela[ i] ; wela= 1 ; wela= 0 ; // 段码:判断是否需要小数点 if ( pointFlag[ i] == 1 ) { P0= TableDulaPoint[ displayData[ i] ] ; } else { P0= TableDula[ displayData[ i] ] ; } dula= 1 ; dula= 0 ; delay ( 2 ) ; // 稍作延时 } } }