https://pan.baidu.com/s/1vDTN2o8ffvczzNQGfyjHng?pwd=gdzf
链接里压缩包的解压密码:51 ,如果打不开请复制链接到浏览器再打开
在D盘中建立一个文件夹Keil防止文件散落。
安装完成之后以管理员身份运行Keil
随便填写下一步即可。
点击这个按钮复制CID
粘贴到下图可生成通行证
粘贴到此处即可破解
拖出来双击即可使用
双击安装即可
建立相关的文件夹
#include
void main()
{
P2 = 0x55;//0101 0101
while(1)
{
}
}
原理:LED编码是1111 1111 表示全灭只需要将最后一位变成0即可 即1111 1110
分别对应0xFF和0xFE
Delay函数是STA-ISP自动生成
代码如下
#include
#include
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2 = 0xFE;
Delay500ms();
P2 = 0xFF;
Delay500ms();
}
}
#include
#include
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2 = 0xFE;//1111 1110
Delay500ms();
P2 = 0xFD;//1111 1101
Delay500ms();
P2 = 0xFB;//1111 1011
Delay500ms();
P2 = 0xF7;//1111 0111
Delay500ms();
P2 = 0xEF;//1110 1111
Delay500ms();
P2 = 0xDF;//1101 1111
Delay500ms();
P2 = 0xBF;//1011 1111
Delay500ms();
P2 = 0x7F;//0111 1111
Delay500ms();
P2 = 0xFF;//1111 1111
Delay500ms();
}
}
原理:调整延时函数变成可输入参数形式,每次延时完成参数减一。
#include
#include
void Delay1ms(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms)
{
_nop_();
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1)
{
P2 = 0xFE;//1111 1110
Delay1ms(500);
P2 = 0xFD;//1111 1101
Delay1ms(500);
P2 = 0xFB;//1111 1011
Delay1ms(500);
P2 = 0xF7;//1111 0111
Delay1ms(500);
P2 = 0xEF;//1110 1111
Delay1ms(500);
P2 = 0xDF;//1101 1111
Delay1ms(500);
P2 = 0xBF;//1011 1111
Delay1ms(500);
P2 = 0x7F;//0111 1111
Delay1ms(500);
P2 = 0xFF;//1111 1111
Delay1ms(500);
}
}
原理是按键按下则表示P3_0==0此处为同时按下K2(P3_0)和K1(P3_1)则LED灯(P2_0)亮,否则灭。
#include
void main()
{
P2_0 = 0;
P2_0 = 1;
while(1)
{
if(P3_1 == 0 && P3_0 == 0)
{
P2_0=0;
}
else
{
P2_0 = 1;
}
}
}
按下按键灯亮,再次按下按键灯灭
#include
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1 == 0);
Delay(20);
P2_0=~P2_0;
}
}
}
#include
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
unsigned char LEDNumber=0;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
//1111 1111
LEDNumber++;//0000 0000
P2=~LEDNumber;
}
}
}
控制左移右移
#include
void Delay(unsigned int xms);
unsigned char LEDNum;
void main()
{
P2=~0x01;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
if(LEDNum>=8)
LEDNum=0;
P2=~(0x01<
位选:P2_4,P2_3,P2_2.用3-8译码器方式来实现第几位亮
段选:用以下代码分别表示0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,空
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00
#include
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};
void Nixie(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NixieTable[Number];
}
void main()
{
Nixie(3,2);//第几位数码管显示什么数字
while(1)
{
}
}
数码管显示时延时归零,不然会导致段选位选错位
#include
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void Nixie(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NixieTable[Number];
Delay(1);
P0=0x00;
}
void main()
{
while(1)
{
Nixie(1,1);//第几位数码管显示什么数字
//Delay(500);
Nixie(2,2);
//Delay(500);
Nixie(4,5);
//Delay(500);
}
}