十、虚拟键盘LED和数码管
1.虚拟显示——LED
1.1 硬件准备


1.2 软件准备(最新的ISP软件)

1.3 参数设置


1.4 选择指定的接口和协议匹配


DIP40封装LED接口




任务1:P2口流水灯,P10闪烁
u8 P2_STATE = 0X01;
u8 P10_STATE = 0;
// 任务1:P2口流水灯,P10闪烁
void TASK_1( void )
{
// ----------------------- p2端口流水灯 -----------------------
LED40_SetPort(2,~P2_STATE); //点亮P20端口
P2_STATE = (P2_STATE<<1); //1000 0000 -> 1 0000 0000
if( P2_STATE == 0 )
P2_STATE = 1;
// ----------------------- p10端口闪烁 -----------------------
if( P10_STATE == 0 )
LED40_SetBit(1,0);
else
LED40_ClrBit(1,0);
P10_STATE = !P10_STATE;
}
2.虚拟显示——数码管

7段数码管接口




任务2:左边数码管显示P32按下次数 右边数码管显示P33按下次数
u16 Key_Vol ; //按键按下持续时间
u16 Key_Vol_2 ; //按键按下持续时间
u16 KEY1_COUNT = 0; //P32按钮计数
u16 KEY2_COUNT = 0; //P33按钮计数
void KEY_Task(void)
{
// ------------P32按钮计数------------
if( P32 == 0 )
{
Key_Vol++;
if( Key_Vol==5 )
{
KEY1_COUNT++;
}
}
else
{
Key_Vol = 0;
}
// ------------P33按钮计数------------
if( P33 == 0 )
{
Key_Vol_2++;
if( Key_Vol_2==5 )
{
KEY2_COUNT++;
}
}
else
{
Key_Vol_2 = 0;
}
}
u32 KEY_Count = 0;
// 任务2:左边数码管显示P32按下次数, 右边数码管显示P33按下次数
void TASK_2( void )
{
KEY_Count = KEY1_COUNT *10000 + KEY2_COUNT;
SEG7_ShowLong( KEY_Count ,10);
}
3.虚拟键盘

虚拟键盘接口

任务3:按下数字按键在数码管显示对应的按键数字!
task.c
u32 REC_NUM = 0;
// 任务3:按下数字按键在数码管显示对应的按键数字!
void TASK_3( void )
{
SEG7_ShowLong( REC_NUM ,10);
}
main.c
extern u32 REC_NUM;
while(1)
{
if (bUsbOutReady) //如果接收到了数据
{
REC_NUM = UsbOutBuffer[5]-48;
//USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
usb_OUT_done();
}
Task_Pro_Handler_Callback(); //执行功能函数
}