个人总结:单片机C语言实现数码管显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EX2.1、最低位显示“A”
实验源程序:(全部程序请参考本章实验的程序文件夹)
//******************************************************************* ********** //主函数
//******************************************************************* ********** void main() //主函数
{
while(1) //进入while死循环
{
P1=0x7f; //0x7f=0111 1111,即选通数码管最低位
LE1=1; //锁存位
LE1=0; //断开锁存,位选573的Q7~Q0仍为0x7f
P1=0x77; //0x77为"A"的编码
LE2=1; //锁存段码
LE2=0; //断开锁存,段选573的Q7~Q0仍为0x77
}
}
备注0~9,A~F:
uchar code table[]= {
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
EX2.2、最低位显示0~9
实验源程序:(全部程序请参考本章实验的程序文件夹)
//********************************************************* //主函数
//********************************************************* void main() //主函数
{
uchar i;
while(1) //进入while死循环
{
P1=0x7f; //0x7f=0111 1111,即选通数码管最低位
LE1=1; //锁存位
LE1=0; //断开锁存,位选573的Q7~Q0仍为0x7f
for(i=0;i<10;i++) //如果要实现0~F循环,只需要将10改为16 {
P1=dis[i]; //0~9的编码
LE2=1; //锁存段码
LE2=0; //断开锁存,段选573的Q7~Q0仍为dis[i]
delay(5000); //延时保持一下
}
}
}
EX2.3、8位全部显示字母“E”
实验源程序:(全部程序请参考本章实验的程序文件夹)
//********************************************************* //主函数
//********************************************************* void main() //主函数
{
while(1) //进入while死循环
{
P1=0x00;//0x00=0000 0000,即选通数码管的全部8位
LE1=1; //锁存位
LE1=0; //断开锁存,位选573的Q7~Q0仍为0x00 P1=0x79; //0x79为"E"的编码
LE2=1; //锁存段码
LE2=0; //断开锁存,段选573的Q7~Q0仍为0x79 }
}
EX2.4、8位显示0~F
实验源程序:(全部程序请参考本章实验的程序文件夹)
//********************************************************* //主函数
//*********************************************************
void main() //主函数
{
uchar i;
while(1) //进入while死循环
{
P1=0x00; //0x7f=0000 0000,即选通数码全8位
LE1=1; //锁存位
LE1=0; //断开锁存,位选573的Q7~Q0仍为0x00
for(i=0;i<16;i++)//如果要实现0~10循环,只需要将16改为10
{
P1=dis[i]; //0~F的编码
LE2=1; //锁存段码
LE2=0; //断开锁存,段选573的Q7~Q0仍为dis[i]
delay(5000); //延时保持一下
}
}
}
EX2.5、8位动态扫描显示01234567
实验源程序:(全部程序请参考本章实验的程序文件夹)
//********************************************************* //主函数
//********************************************************* void main() //主函数
{
wei=0x01; //初始化位为0x01,即为最高位
i=0; //初始化段码为0
while(1) //进入while死循环
{
scan(); //数码管扫描函数
}
}
//********************************************************* //动态扫描函数
//********************************************************* scan()
{
P1=~wei;//由于共阴,低电平来选通某1位,所以需取反
LE1=1; //锁存位
LE1=0; //断开锁存,位选573的Q7~Q0仍保持
wei<<=1; //左移一位
P1=dis[i]; //0~7的编码
LE2=1; //锁存段码
LE2=0; //断开锁存,段选573的Q7~Q0仍保持