用51单片机在数码管上实现 P.移动
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/* P.显示程序*/
/* crystal=12Mhz */
/* P2口位控口,P0口段控口*/
#include"reg52.h"
#include
/*共阳数码管字型码*/
/*0,1,2,3,4,5,6,7,8,9,p.,灭*/
char code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0x8c,0xff};
/*"P."显示代码序号*/
char code find_code[8]={10,10,10,10,10,10,10,10};
/********************************************************/
//函数名:void DelayX1ms(uint count)
//功能:延时时间为1ms
//调用函数:
//输入参数:count,1ms计数
//输出参数:
//说明:总共延时时间为1ms乘以count,crystal=12Mhz
/********************************************************/
#define uchar unsigned char
#define uint unsigned int
void DelayX1ms(uint count)
{
uint j;
while(count--!=0)
{
for(j=0;j<80;j++);
}
}
/*显示函数*/
void disp()
{
char i,j=0xfe;
char k;
for(i=0;i<8;i++)
{
P2=j;
k=find_code[i];
P0=dis_code[k];
DelayX1ms(1);
j=_crol_(j,1);
}
}
/*主函数*/
void main()
{ char m,n=0xfe;
char k;
while(1)
{
disp();
P0=0xff;
for(m=0;m<8;m++)
{
P2=n;
k=find_code[m];
P0=dis_code[k];
DelayX1ms(1000);
n=_crol_(n,1);
}
}
}