- 打卡等级:偶尔看看I
- 打卡总天数:14
- 最近打卡:2025-06-11 10:21:13
已绑定手机
注册会员
- 积分
- 190
|
发表于 2025-5-6 14:02:40
|
显示全部楼层
交作业 ,第十课 虚拟键盘 + 虚拟数码管
没有输入是 8位数码管 显示 “- - - - - - - -” ,有输入时 按顺序从左边显示 输入 数字,当8位输入完成时,从左到右比对 是否为 “1 2 3 4 5 6 7 8” ,一样时 数码管显示“ open” 不一样时 显示“- - - - - - - -”
uchar Shou_Temp = 0, Num1 = 0;
uchar Seg_Temp[8] = {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40};
void PC_KEY_Task3(void)
{
uchar j;
SEG7_ShowCode(Seg_Temp);
if(Shou_Temp)
{
Seg_Temp[Num1] = DuanMa[Shou_Temp - 48];
Shou_Temp = 0;
if(++Num1 > 7)
{
Num1 = 0;
State[4] = 1;
}
}
if(State[4]) State[5]++;
if(State[5] == 2)
{
State[4] = 0; State[5] = 0;
printf("Seg_Temp 第一个元素是%d\r\n",(int)Seg_Temp[0]);
if(Seg_Temp[0] == 0x06) //0x5C, 0x73,0x79 ,0x54 // o p e n 段码
{
if(Seg_Temp[1] == 0x5B)
{
if(Seg_Temp[2] == 0x4F)
{
if(Seg_Temp[3] == 0x66)
{
if(Seg_Temp[4] == 0x6D)
{
if(Seg_Temp[5] == 0x7D)
{
if(Seg_Temp[6] == 0x07)
{
if(Seg_Temp[7] == 0x7F)
{
Seg_Temp[0] = 0x40; Seg_Temp[1] = 0x40;
Seg_Temp[2] = 0x5C; Seg_Temp[3] = 0x73;
Seg_Temp[4] = 0x79; Seg_Temp[5] = 0x54;
Seg_Temp[6] = 0x40; Seg_Temp[7] = 0x40;
}
}
}
}
}
}
}
}
else
{
for(j=0; j<8; j++)
{
Seg_Temp[j] = 0x40;
}
printf("Seg_Temp 第一个元素是%d\r\n",(int)Seg_Temp[0]);
}
}
}
任务调度
static TASK_COMPONENTS Task_Comps[]=
{
{0, 500, 500, LED0_Blink}, //任务1 500ms
{0, 1000, 1000, LED1_Blink}, //任务2 1000ms
{0, 2000, 2000, LED2_Blink}, //任务3 2000ms
// {0, 1, 1, Seg_Task},
{0, 10, 10, KEY_Task},
// {0, 50, 50, Time_Count},
{0, 500, 500, PC_KEY_Task3},
/* Add new task here */
};
主函数
void main(void)
{
Sys_Init();
usb_init(); //USB CDC 接口配置
Timer0_Init(); //启动定时器0
// Init_595();
EA = 1; //IE |= 0x80;
IE2 |= 0x80; //打开USB中断
P40 = 0; //LED灯开关打开
while (DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置
while(1)
{
if (bUsbOutReady) //如果收到数据 原路返回
{
Shou_Temp = UsbOutBuffer[5];
//USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
usb_OUT_done();
}
Task_Pro_Handler_Callback(); //执行函数
}
}
|
|