按键控制LED灯和数码管,具体要求: 1.按下S1,控制流水灯从左到右;2.按下S2,控制流水灯从右到左;3.按下S3,控制数码管2位数或4位数计数; 4.按下S4,4个数码管亮灭交替显示数字9.
时间: 2023-05-22 10:04:54 浏览: 130
liushuideng.zip_site:www.pudn.com_从左到右LED灯
以下是C语言的代码实现,实现了按键控制LED灯和数码管的功能:
```
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P2^0; //LED1控制引脚
sbit LED2=P2^1; //LED2控制引脚
sbit LED3=P2^2; //LED3控制引脚
sbit LED4=P2^3; //LED4控制引脚
sbit KEY1=P3^0; //按键1
sbit KEY2=P3^1; //按键2
sbit KEY3=P3^2; //按键3
sbit KEY4=P3^3; //按键4
void delayms(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void ledLR() //流水灯从左到右
{
uchar i;
for(i=0;i<4;i++)
{
switch(i)
{
case 0:LED1=1;break;
case 1:LED2=1;break;
case 2:LED3=1;break;
case 3:LED4=1;break;
}
delayms(500);
LED1=0;LED2=0;LED3=0;LED4=0;
}
}
void ledRL() //流水灯从右到左
{
uchar i;
for(i=3;i>=0;i--)
{
switch(i)
{
case 0:LED1=1;break;
case 1:LED2=1;break;
case 2:LED3=1;break;
case 3:LED4=1;break;
}
delayms(500);
LED1=0;LED2=0;LED3=0;LED4=0;
}
}
void numCount() //数码管计数
{
uchar i,j;
for(i=0;i<10;i++)
{
for(j=0;j<100;j++)
{
P1=i;
delayms(5);
}
}
}
void numDisplay() //数码管交替显示数字9
{
uchar i;
for(i=0;i<10;i++)
{
P1=0x99;
delayms(500);
P1=0x00;
delayms(500);
}
}
void main()
{
KEYS:
if(KEY1==0) //按键1流水灯从左到右
{
ledLR();
}
else if(KEY2==0) //按键2流水灯从右到左
{
ledRL();
}
else if(KEY3==0) //按键3数码管计数
{
numCount();
}
else if(KEY4==0) //按键4数码管交替显示数字9
{
numDisplay();
}
delayms(10);
goto KEYS;
}
```
第二个问题:请给出lua closure factory的完整代码
```lua
function newCounter()
local i = 0
return function()
i = i + 1
return i
end
end
c1 = newCounter()
print(c1()) --> 1
print(c1()) --> 2
c2 = newCounter()
print(c2()) --> 1
print(c1()) --> 3
print(c2()) --> 2
```
以上是一个简单的Lua closure工厂示例,通过函数返回一个closure,可以实现类似于面向对象中的类和实例的效果。这段代码定义了一个newCounter函数,每次调用newCounter函数都会返回一个新的closure,该closure包含了一个计数器i,在每次调用时返回i的值,并且自增1。
我们可以通过调用newCounter函数创建不同的closure对象,这些对象之间互不干扰,各自维护自己的计数器状态。在示例代码中,我们首先创建了一个c1对象,执行c1()两次后,计数器的值分别为1和2。接着我们创建了一个c2对象,并执行了一些操作,可以看到每个对象都维护了自己的计数状态,互不影响。
第三个问题:中文加密是指什么?
中文加密是一种将中文字符转换为不易被破解的密文的方法。中文字符通常采用Unicode编码,为了便于处理,可以将Unicode编码转换为其他编码(如UTF-8、GB2312等),再进行加密。中文加密方法通常包括以下步骤:
1.字符编码转换:将Unicode编码的中文字符转换为其他编码格式(如UTF-8、GB2312等)。
2.加密算法处理:使用加密算法(如DES、AES等)将字符加密。
3.密钥设置:设置合适的密钥,增加加密的难度。
中文加密方法与普通文本加密方法略有不同,主要在于对中文字符的处理。为了能够正确地处理中文字符,需要了解相应的字符编码转换方法及相应的加密算法。
阅读全文