单片机C语言程序设计:8 只数码管滚动显示数字、字符
/* 名称:8 只数码管滚动显示单个数字
说明:数码管从左到右依次滚动显示
0~7,程序通过每次仅循环选通一只数码
管
*/
#includereg51.h>
#includeintrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t120;t++);
}
//主程序
void main()
{
}
uchar i,wei=0x80;
while(1)
{
for(i=0;i8;i++)
{
P2=0xff; //关闭显示
wei=_crol_(wei,1);
P0=DSY_CODE[i];发送数字段码
P2=wei; //发送位码
DelayMS(300);
}
}
/* 名称:8 只数码管动态显示多个不同字符
说明:数码管动态扫描显示 0~7。
*/
#includereg51.h>
#includeintrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t120;t++);
}
//主程序
void main()
{
uchar i,wei=0x80;
while(1)
{
for(i=0;i8;i++)
{
P0=0xff;
P0=DSY_CODE[i];发送段码
wei=_crol_(wei,1);
}
}
}
/* 名称:8 只数码管闪烁显示数字串
*/
说明:数码管闪烁显示由 0~7 构成的一串数字
本例用动态刷新法显示一串数字,在停止刷新时所有数字显示消失。
#includereg51.h>
#define uchar unsigned char
#define uint unsigned int
//段码表
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//位码表
uchar code DSY_IDX[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t120;t++);
}
//主程序
void main()
{
uchar i,j;
while(1)
{
for(i=0;i30;i++)
{
for(j=0;j8;j++)
{
P0=0xff;
P0=DSY_CODE[j]; //发送段码
P2=DSY_IDX[j]; //发送位码
DelayMS(2);
}
}
P2=0x00; //关闭所有数码管并延时
DelayMS(1000);
}
}
/* 名称:8 只数码管滚动显示数字串
说明:数码管向左滚动显示 3 个字符构成的数字串
*/
#includereg51.h>
#includeintrins.h>
#define uchar unsigned char
#define uint unsigned int
//段码表
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//下面数组看作环形队列,显示从某个数开始的 8 个数(10 表示黑屏)
uchar Num[]={10,10,10,10,10,10,10,10,2,9,8};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t120;t++);
}
//主程序
void main()
{
uchar i,j,k=0,m=0x80;
while(1)
{ //刷新若干次,保持一段时间的稳定显示
for(i=0;i15;i++)
{
for(j=0;j8;j++)
{ //发送段码,采用环形取法,从第 k 个开始取第 j 个
P0=0xff;
P0=DSY_CODE[Num[(k+j)%11]];
m=_crol_(m,1);
P2=m; //发送位码
DelayMS(2);
}
}
k=(k+1)%11; //环形队列首支针 k 递增,Num 下标范围 0~10,故对 11 取余
}
}
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)