赞
踩
《单片机原理及应用》第二版 例5-7
单片机控制8只LED数码管,分别滚动显示单个数字1~8。程序运行后,单片机控制左边第1个LED数码管显示1,其他不显示,延时之后,控制左边第2个LED数码管显示1,其他不显示,直至控制第8个LED数码管显示1,其他不显示,反复循环上述过程。
如下图所示,P0口输出段码,P2口输出位控码,Proteus原理图中数码管型号为7SEG-MPX8-CA-BLUE。
参考代码:
#include <REGX52.H>
#include<intrins.h> //包含循环移位函数的头文件
#define uchar unsigned char
#define uint unsigned int
uchar code dis_code[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80}; //共阳极LED数码管段码表1~8
void delay(uint t) //延时函数
{
uchar i;
while(t--)for(i=0;i<200;i++);
}
void main()
{
uchar i,j=0x80;
while(1)//循环点亮
{
for(i=0;i<8;i++)
{
j=_crol_(j,1); //循环移位函数_crol_(j,1)将j循环左移1位
P0=dis_code[i]; //P0口输出段码
P2=j; //P1口输出位控码
delay(180); //延时,控制每位显示的时间
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。