大家好,这里是蓝影DIY电路。
这里采用的是protues软件对51单片机进行仿真,代码是利用keil进行编程,其语法格式为C语言。
核心代码如下:
#include
#define uchar unsigned char
#define uint unsigned int
//段码
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//位码
uchar code DSY_Index[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
//待显示到各数码管的数字缓冲(开始仅在0位显示0,其他黑屏)
uchar Display_Buffer[]={0,10,10,10,10,10,10,10};
//延时
void DelayMS(uint x)
{
uchar i;
while(x–) for(i=0;i
}
void Show_Count_ON_DSY()
{
uchar i;
for(i=0;i
{
P0=0xff;
P0=DSY_CODE[Display_Buffer[i]];
P2=DSY_Index[i];
DelayMS(5);
}
}
//主程序
void main()
{
uchar i,Key_NO,Key_Counts=0;
P0=0xff;
P1=0xff;
P2=0x00;
while(1)
{
Show_Count_ON_DSY();
P1=0xff;
Key_NO=P1;
//P1口按键状态分别为K1-0xfe,K2-0xfd,K3-0xfb
switch(Key_NO)
{
case 0xfe:Key_Counts++;
if(Key_Counts>8) Key_Counts=8;
Display_Buffer[Key_Counts-1]=Key_Counts;
break;
case 0xfd:if(Key_Counts>0)Display_Buffer[–Key_Counts]=10;
break;
case 0xfb:Display_Buffer[0]=0;
for(i=1;i
Key_Counts=0;
}
//若键未释放则仅刷新显示,不进行键扫描
while(P1!=0xff) Show_Count_ON_DSY();
}
}

本次代码的核心在于条件选择语句
switch(表达式){
case 值1: 表达式的值和 值1匹配上了,需要执行的代码; break;
case 值2: 表达式的值和 值2匹配上了,需要执行的代码; break;
case 值3: 表达式的值和 值3匹配上了,需要执行的代码; break;
default: 如果表达式的值和以上的case后面的值都没有匹配上,那么就执行这里的代码。 break;
}
//不写break会直接执行下一个case语句直到遇到break才终止,若是没有break语句,则一直向下执行所有语句。
举 /反馈
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览115690 人正在系统学习中 相关资源:菜鸟耍人专用-软件测试其他资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!