程序实例1:
- #include
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 -
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
- sbit LATCH2 = P2^3;// 位锁存
-
- unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
- unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
- unsigned char TempData[8]; //存储显示值的全局变量
-
- void Delay(unsigned int t); //函数声明
- void Display(unsigned char FirstBit,unsigned char Num);
-
-
- /*------------------------------------------------
- 主函数
- ------------------------------------------------*/
- main()
- {
- unsigned int i,k,j;
- unsigned char s;
- while(1)
- {
- j++;
- if(j==20)
- {
- j=0;
- if(0==k)
- {
- for(s=0;s<8;s++) //完全循环完成后清零所有缓冲区
- TempData[s]=0;
- }
- TempData[8-i]=DuanMa[k]; //把需要显示的字符依次送缓冲区
- TempData[8+1-i]=0; //不需要显示的区域清零
- if(i==(8-k))
- {
- i=0;
- k++;
- if(k==8)
- k=0;
- }
- i++;
- }
- Display(0,8);//从第一位显示,共显示8位
- }
- }
- /*------------------------------------------------
- 延时函数,含有输入参数 unsigned int t,无返回值
- unsigned int 是定义无符号整形变量,其值的范围是
- 0~65535
- ------------------------------------------------*/
- void Delay(unsigned int t)
- {
- while(--t);
- }
- /*------------------------------------------------
- 显示函数,用于动态扫描数码管
- 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
- 如输入0表示从第一个显示。
- Num表示需要显示的位数,如需要显示99两位数值则该值输入2
- ------------------------------------------------*/
- void Display(unsigned char FirstBit,unsigned char Num)
- {
- unsigned char i;
-
- for(i=0;i
- {
- DataPort=0; //清空数据,防止有交替重影
- LATCH1=1; //段锁存
- LATCH1=0;
-
- DataPort=WeiMa[i+FirstBit]; //取位码
- LATCH2=1; //位锁存
- LATCH2=0;
-
- DataPort=TempData[i]; //取显示数据,段码
- LATCH1=1; //段锁存
- LATCH1=0;
-
- Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
- }
二、数码管右移显示:
程序实例2:
- #include
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 -
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
- sbit LATCH2 = P2^3;// 位锁存
-
- unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
- unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
- unsigned char TempData[8]; //存储显示值的全局变量
-
- void Delay(unsigned int t); //函数声明
- void Display(unsigned char FirstBit,unsigned char Num);
-
- /*------------------------------------------------
- 主函数
- ------------------------------------------------*/
- main()
- {
- unsigned int i,k,j;
- unsigned char s;
- while(1)
- {
- j++;
- if(j==20)
- {
- j=0;
- if(0==k)
- {
- for(s=0;s<8;s++) //完全循环完成后清零所有缓冲区
- TempData[s]=0;
- }
- TempData[8-i]=DuanMa[k]; //把需要显示的字符依次送缓冲区
- TempData[9-i]=0; //不需要显示的区域清零
- if(i==(8-k))
- {
- i=0;
- k++;
- if(k==8)
- k=0;
- }
- i++;
- }
- Display(0,8);//从第一位显示,共显示8位
- }
- }
- /*------------------------------------------------
- 延时函数,含有输入参数 unsigned int t,无返回值
- unsigned int 是定义无符号整形变量,其值的范围是
- 0~65535
- ------------------------------------------------*/
- void Delay(unsigned int t)
- {
- while(--t);
- }
- /*------------------------------------------------
- 显示函数,用于动态扫描数码管
- 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
- 如输入0表示从第一个显示。
- Num表示需要显示的位数,如需要显示99两位数值则该值输入2
- ------------------------------------------------*/
- void Display(unsigned char FirstBit,unsigned char Num)
- {
- unsigned char i;
-
- for(i=0;i
- {
- DataPort=0; //清空数据,防止有交替重影
- LATCH1=1; //段锁存
- LATCH1=0;
-
- DataPort=WeiMa[i+FirstBit]; //取位码
- LATCH2=1; //位锁存
- LATCH2=0;
-
- DataPort=TempData[7-i]; //取显示数据,段码 这里只需要 把扫描方向更换一下即可
- LATCH1=1; //段锁存
- LATCH1=0;
-
- Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
- }
三、数码管右移显示:
程序实例3:
- #include
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 -
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
- sbit LATCH2 = P2^3;// 位锁存
-
- unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
- unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
- unsigned char TempData[8]; //存储显示值的全局变量
-
- void Delay(unsigned int t); //函数声明
- void Display(unsigned char FirstBit,unsigned char Num);
- /*------------------------------------------------
- 主函数
- ------------------------------------------------*/
- main()
- {
- unsigned int i,k,j;
- unsigned char s;
- while(1)
- {
- j++;
- if(j==20)
- {
- j=0;
- if(0==k)
- {
- for(s=0;s<8;s++) //完全循环完成后清零所有缓冲区
- TempData[s]=0;
- }
- TempData[8-i]=DuanMa[k]; //把需要显示的字符依次送缓冲区
- TempData[9-i]=0; //不需要显示的区域清零
- if(i==(8-k))
- {
- i=0;
- k++;
- if(k==8)
- k=0;
- }
- i++;
- }
- Display(0,8);//从第一位显示,共显示8位
- }
- }
- /*------------------------------------------------
- 延时函数,含有输入参数 unsigned int t,无返回值
- unsigned int 是定义无符号整形变量,其值的范围是
- 0~65535
- ------------------------------------------------*/
- void Delay(unsigned int t)
- {
- while(--t);
- }
- /*------------------------------------------------
- 显示函数,用于动态扫描数码管
- 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
- 如输入0表示从第一个显示。
- Num表示需要显示的位数,如需要显示99两位数值则该值输入2
- ------------------------------------------------*/
- void Display(unsigned char FirstBit,unsigned char Num)
- {
- unsigned char i;
-
- for(i=0;i
- {
- DataPort=0; //清空数据,防止有交替重影
- LATCH1=1; //段锁存
- LATCH1=0;
-
- DataPort=WeiMa[i+FirstBit]; //取位码
- LATCH2=1; //位锁存
- LATCH2=0;
-
- DataPort=TempData[7-i]; //取显示数据,段码 这里只需要 把扫描方向更换一下即可
- LATCH1=1; //段锁存
- LATCH1=0;
-
- Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
- }
四、数码管右移显示:
程序实例4:
- #include
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 -
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
- sbit LATCH2 = P2^3;// 位锁存
-
- unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
- unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
- unsigned char TempData[8]; //存储显示值的全局变量
-
- void Delay(unsigned int t); //函数声明
- void Display(unsigned char FirstBit,unsigned char Num);
-
- /*------------------------------------------------
- 主函数
- ------------------------------------------------*/
- main()
- {
- unsigned int i,k,j;
- unsigned char s;
- while(1)
- {
- j++;
- if(j==20)
- {
- j=0;
- if(0==k)
- {
- for(s=0;s<8;s++) //完全循环完成后清零所有缓冲区
- TempData[s]=0;
- }
- TempData[i-1]=DuanMa[k]; //把需要显示的字符依次送缓冲区
- TempData[i-2]=0; //不需要显示的区域清零
- if(i==(8-k))
- {
- i=0;
- k++;
- if(k==8)
- k=0;
- }
- i++;
-
- }
- Display(0,8);//从第一位显示,共显示8位
- }
- }
- /*------------------------------------------------
- 延时函数,含有输入参数 unsigned int t,无返回值
- unsigned int 是定义无符号整形变量,其值的范围是
- 0~65535
- ------------------------------------------------*/
- void Delay(unsigned int t)
- {
- while(--t);
- }
- /*------------------------------------------------
- 显示函数,用于动态扫描数码管
- 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
- 如输入0表示从第一个显示。
- Num表示需要显示的位数,如需要显示99两位数值则该值输入2
- ------------------------------------------------*/
- void Display(unsigned char FirstBit,unsigned char Num)
- {
- unsigned char i;
-
- for(i=0;i
- {
- DataPort=0; //清空数据,防止有交替重影
- LATCH1=1; //段锁存
- LATCH1=0;
-
- DataPort=WeiMa[i+FirstBit]; //取位码
- LATCH2=1; //位锁存
- LATCH2=0;
-
- DataPort=TempData[i]; //取显示数据,段码
- LATCH1=1; //段锁存
- LATCH1=0;
-
- Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
- }
五、数码管循环左移显示:
程序实例5:
- #include
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 -
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
- sbit LATCH2 = P2^3;// 位锁存
-
- unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
- unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
- unsigned char TempData[8]; //存储显示值的全局变量
-
- void Delay(unsigned int t); //函数声明
- void Display(unsigned char FirstBit,unsigned char Num);
- /*------------------------------------------------
- 主函数
- ------------------------------------------------*/
- main()
- {
- unsigned int i,j,k=7,m;
- unsigned char *pa=TempData,*pb=DuanMa;//定义2个指针,并赋值2个数组初始地址
- //*pa=TempData 等效于 *pa=&TempData[0]
- while(1)
- {
- j++;
- if(j==20) //用于延时,改变值可以改变延时长度
- {
- j=0; //延时到重新赋值
- for(i=0;i<(8-k);i++) //循环把显示的字符值赋值,给临时缓冲数组TempData
- {
- *(pa+k+i)=*(pb+i+m);//使用指针操作赋值
- }
-
- //8位左移出去,右边空出来的数
- //码管需要熄灭,
- //所有赋值0 m表示移出位置,同
- //时也表示右边需要熄灭位数
- for(i=0;i
- *(pa+8-m+i)=0;
- if(k>0) //判断这些值以便循环显示
- k--;
- if(m<8&&k==0)
- m++;
- else if(m==8)
- {m=0;k=7;}
- }
- Display(0,8);//从第一位显示,共显示8位
- }
- }
- /*------------------------------------------------
- 延时函数,含有输入参数 unsigned int t,无返回值
- unsigned int 是定义无符号整形变量,其值的范围是
- 0~65535
- ------------------------------------------------*/
- void Delay(unsigned int t)
- {
- while(--t);
- }
- /*------------------------------------------------
- 显示函数,用于动态扫描数码管
- 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
- 如输入0表示从第一个显示。
- Num表示需要显示的位数,如需要显示99两位数值则该值输入2
- ------------------------------------------------*/
- void Display(unsigned char FirstBit,unsigned char Num)
- {
- unsigned char i;
-
- for(i=0;i
- {
- DataPort=0; //清空数据,防止有交替重影
- LATCH1=1; //段锁存
- LATCH1=0;
-
- DataPort=WeiMa[i+FirstBit]; //取位码
- LATCH2=1; //位锁存
- LATCH2=0;
-
- DataPort=TempData[i]; //取显示数据,段码
- LATCH1=1; //段锁存
- LATCH1=0;
-
- Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
-
- }
六、数码管循环右移显示:
程序实例6:
- #include
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 -
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
- sbit LATCH2 = P2^3;// 位锁存
-
- unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
- unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
- unsigned char TempData[8]; //存储显示值的全局变量
-
- void Delay(unsigned int t); //函数声明
- void Display(unsigned char FirstBit,unsigned char Num);
- /*------------------------------------------------
- 主函数
- ------------------------------------------------*/
- main()
- {
- unsigned int i,j,k=7,m;
- unsigned char *pa=TempData,*pb=DuanMa;//定义2个指针,并赋值2个数组初始地址
- //*pa=TempData 等效于 *pa=&TempData[0]
- while(1)
- {
- j++;
- if(j==20) //用于延时,改变值可以改变延时长度
- {
- j=0; //延时到重新赋值
- for(i=0;i<(8-k);i++) //循环把显示的字符值赋值给临时缓冲数组TempData
- {
- *(pa+k+i)=*(pb+i+m);//使用指针操作赋值
- }
- for(i=0;i
//8位左移出去,右边空出来的数码管需要熄灭,所有赋值0 m表示移出位置,同时也表示右边需要熄灭位数 - *(pa+8-m+i)=0;
- if(k>0) //判断这些值以便循环显示
- k--;
- if(m<8&&k==0)
- m++;
- else if(m==8)
- {m=0;k=7;}
- }
- Display(0,8);//从第一位显示,共显示8位
- }
- }
- /*------------------------------------------------
- 延时函数,含有输入参数 unsigned int t,无返回值
- unsigned int 是定义无符号整形变量,其值的范围是
- 0~65535
- ------------------------------------------------*/
- void Delay(unsigned int t)
- {
- while(--t);
- }
- /*------------------------------------------------
- 显示函数,用于动态扫描数码管
- 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
- 如输入0表示从第一个显示。
- Num表示需要显示的位数,如需要显示99两位数值则该值输入2
- ------------------------------------------------*/
- void Display(unsigned char FirstBit,unsigned char Num)
- {
- unsigned char i;
-
- for(i=0;i
- {
- DataPort=0; //清空数据,防止有交替重影
- LATCH1=1; //段锁存
- LATCH1=0;
-
- DataPort=WeiMa[i+FirstBit]; //取位码
- LATCH2=1; //位锁存
- LATCH2=0;
-
- DataPort=TempData[7-i]; //取显示数据,段码 取反显示顺序,就把左移变成右移
- LATCH1=1; //段锁存
- LATCH1=0;
-
- Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
-
- }
七、数码管循环右移1显示:
程序实例7:
- #include
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 -
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
- sbit LATCH2 = P2^3;// 位锁存
-
- unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
- unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
- unsigned char TempData[8]; //存储显示值的全局变量
- void Delay(unsigned int t); //函数声明
- void Display(unsigned char FirstBit,unsigned char Num);
- /*------------------------------------------------
- 主函数
- ------------------------------------------------*/
- main()
- {
- unsigned int i,j,k=7,m;
- unsigned char *pa=TempData,*pb=DuanMa;//定义2个指针,并赋值2个数组初始地址
- //*pa=TempData 等效于 *pa=&TempData[0]
- while(1)
- {
- j++;
- if(j==20) //用于延时,改变值可以改变延时长度
- {
- j=0; //延时到重新赋值
- for(i=0;i<(8-k);i++) //循环把显示的字符值赋值给临时缓冲数组TempData
- {
- *(pa+k+i)=*(pb+i+m);//使用指针操作赋值
- }
- for(i=0;i
//8位左移出去,右边空出来的数码管需要熄灭,所有 - //赋值0 m表示移出位置,同时也表示右边需要熄灭位数
- *(pa+8-m+i)=0;
- if(k>0) //判断这些值以便循环显示
- k--;
- if(m<8&&k==0)
- m++;
- else if(m==8)
- {m=0;k=7;}
- }
- Display(0,8);//从第一位显示,共显示8位
- }
- }
- /*------------------------------------------------
- 延时函数,含有输入参数 unsigned int t,无返回值
- unsigned int 是定义无符号整形变量,其值的范围是
- 0~65535
- ------------------------------------------------*/
- void Delay(unsigned int t)
- {
- while(--t);
- }
- /*------------------------------------------------
- 显示函数,用于动态扫描数码管
- 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
- 如输入0表示从第一个显示。
- Num表示需要显示的位数,如需要显示99两位数值则该值输入2
- ------------------------------------------------*/
- void Display(unsigned char FirstBit,unsigned char Num)
- {
- unsigned char i;
-
- for(i=0;i
- {
- DataPort=0; //清空数据,防止有交替重影
- LATCH1=1; //段锁存
- LATCH1=0;
-
- DataPort=WeiMa[i+FirstBit]; //取位码
- LATCH2=1; //位锁存
- LATCH2=0;
-
- DataPort=TempData[7-i]; //取显示数据,段码
- //取反显示顺序,就把左移变成右移
- LATCH1=1; //段锁存
- LATCH1=0;
-
- Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影
- }
- }
八、数码管循环右移2显示:
程序实例8:
- #include
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 -
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit LATCH1 = P2^2;//定义锁存使能端口 段锁存
- sbit LATCH2 = P2^3;// 位锁存
-
- unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
- unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
- unsigned char TempData[8]; //存储显示值的全局变量
-
- void Delay(unsigned int t); //函数声明
- void Display(unsigned char FirstBit,unsigned char Num);
-
-
- /*------------------------------------------------
- 主函数
- ------------------------------------------------*/
- main()
- {
- unsigned int i,j,k=7,m;
- unsigned char *pa=&TempData[7],*pb=DuanMa;//定义2个指针,并赋值2个数组初始地址
- //*pb=dofly_DuanMa 等效于 *pb=&dofly_DuanMa[0]
- while(1)
- {
- j++;
- if(j==20) //用于延时,改变值可以改变延时长度
- {
- j=0; //延时到重新赋值
- for(i=0;i<(8-k);i++) //循环把显示的字符值
- //赋值给临时缓冲数组TempData
- {
- *(pa-k-i)=*(pb+i+m);//使用指针操作赋值
- }
- for(i=0;i
//8位右移出去, - //左边空出来的数码管需要熄灭,
- //所有赋值0 m表示移出位置,同时也表示左边需要熄灭位数
- *(pa-8+m-i)=0;
- if(k>0) //判断这些值以便循环显示
- k--;
- if(m<8&&k==0)
- m++;
- else if(m==8)
- {m=0;k=7;}
- }
- Display(0,8);//从第一位显示,共显示8位
- }
- }
- /*------------------------------------------------
- 延时函数,含有输入参数 unsigned int t,无返回值
- unsigned int 是定义无符号整形变量,其值的范围是
- 0~65535
- ------------------------------------------------*/
- void Delay(unsigned int t)
- {
- while(--t);
- }
- /*------------------------------------------------
- 显示函数,用于动态扫描数码管
- 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示
- 从第三个数码管开始显示
- 如输入0表示从第一个显示。
- Num表示需要显示的位数,如需要显示99两位数值则该值输入2
- ------------------------------------------------*/
- void Display(unsigned char FirstBit,unsigned char Num)
- {
- unsigned char i;
-
- for(i=0;i
- {
- DataPort=0; //清空数据,防止有交替重影
- LATCH1=1; //段锁存
- LATCH1=0;
-
- DataPort=WeiMa[i+FirstBit]; //取位码
- LATCH2=1; //位锁存
- LATCH2=0;
-
- DataPort=TempData[i]; //取显示数据,段码
- LATCH1=1; //段锁存
- LATCH1=0;
-
- Delay(200); // 扫描间隙延时,时间太长会闪烁,
- //太短会造成重影
- }
- }
-
相关阅读:
AlexNet论文解读
windows安装部署node.js并搭建Vue项目
基于PHP+MySQL学生成绩管理系统的设计与实现
软件工程概述-----RUP开发模式
网络安全架构:建立安全架构方法的指导框架
docker通过挂载conf文件启动redis
从您输入网站 URL 到其在屏幕上完成加载的整个过程
【无标题】BOOT SERVICES函数实现原型:
【MATLAB】详解 M 文件与 M 函数
Axure教程—动态单散点图(中继器)
-
原文地址:https://blog.csdn.net/m0_49968063/article/details/132789270