51单片机100例实例之20例

//项目20:数码管显示拨码开关编码
//项目再创作者:科技小宅神
//说明:系统显示拨码开关所设置的编码000~255
//资源来自网络,由小宅神收集,整理,注释,讲解,说明,修正。
仿真图:

代码:
#include <reg51.h>
#include <intrins.h>//c51内部移位函数
#define uchar unsigned char
#define uint unsigned int
//共阴极数码管显示数组
uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//待显示的数据缓冲区,显示3位
uchar DSY_Buffer[3]={0,0,0};
//1毫秒延时函数
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主程序
void main()
{
uchar i,m,Num;//定义3个局部变量
P0 = 0xff;//P0初始化
P2 = 0xff;//P2初始化
while(1)//死循环
{
m = 0xfe;// 1111 1110
Num = P1;//读取拨码开关的值
//存放拨码值(16进制数转换成3位表示的十进制数)
DSY_Buffer[0] = Num/100;
DSY_Buffer[1] = Num/10%10;
DSY_Buffer[2] = Num%10;
for(i=0;i<3;i++)//刷新显示在数码管上
{
m = _crol_(m,1);//循环左移
P2 = m;
P0 = DSY_CODE[DSY_Buffer[i]];
DelayMS(10);
}
}
}
祝大家学(白)习(嫖)愉快!喜欢可以关注,三连up主一波!