32位8051-AI 发表于 2024-11-29 11:30:21

《8051U深度入门到32位51大型实战教学视频》学习打卡

跟着冲哥一起学习AI8051U

打卡第三集   跟着冲哥敲代码,成功点亮第一颗LED灯---附手敲代码




32位8051-AI 发表于 2024-11-29 11:38:51

第四集   跟着冲哥成功实现USB不停电下载,非常实用----附手敲代码





32位8051-AI 发表于 2024-11-29 16:47:28

打卡第五集,C语言基础

1、C语言 USB-CDC串四之printf函数的实现
2、数的进制:2进制、10进制、16进制
3、C语言常用运算符




附手敲代码


32位8051-AI 发表于 2024-11-30 16:24:36

打卡第六集   IO口输入输出

1、什么是GPIO
2、按键输入检测
敲代码时未注意中英文下的符号,导致编译失败,不过及时发现后改正,成功通过




attach://66792.mp4




32位8051-AI 发表于 2024-12-3 17:03:28

打卡第七集:定时器中断



附手敲代码


32位8051-AI 发表于 2024-12-6 17:15:04

打卡第八集:定时器周期性任务调度

讲的真仔细,总结了常遇到的错误
刚开始未勾选使能定时器中断,导致下载后灯不亮,最后成功点亮








附手敲代码







32位8051-AI 发表于 2024-12-24 16:53:37

打卡第九集 数码管

任务1   数码管静态的显示一个数字


任务2:数码管显示“12345678”

任务3:数码管显示“00-00-00”分别代表时分秒,每过1秒钟秒+1;


擎天柱打卡






32位8051-AI 发表于 2024-12-31 11:10:35

打卡第十集

任务一、P2口流水灯,P10闪烁

#include "io.h"

u8 State1=0;
u8 State2=0;
u8 State3=0;
u16 Key_Vol ;

void LED0_Blink(void)
{
      State1=!State1;
      P00=State1;
}

void LED1_Blink(void)
{
      State2=!State2;
      P01=State2;
}

void LED2_Blink(void)
{
      State3=!State3;
      P02=State3;
}
void KEY_Task(void)
{
      if( P32 == 0 )
      {
                Key_Vol++;
                if( Key_Vol==5 )
                {
                        //按键按下的任务
                        printf( "按键单击\r\n" );
                }
      }
      else
      {
                Key_Vol = 0;
      }
      
}

u8 P2_STATE = 0x01;
u8 P10_STATE = 0;
void TASK_1(void)
{
      LED40_SetPort(2,~P2_STATE);
      P2_STATE = (P2_STATE<<1);
      if(P2_STATE==0)
         P2_STATE=1;
      
      if(P10_STATE==0)
                LED40_SetBit(1,0);
      else
                LED40_ClrBit(1,0);
      P10_STATE = !P10_STATE;
      
}



任务二、左边数码管显示P32按下次数,右边数码管显示P33按下次数

#include "io.h"

u8 State1=0;
u8 State2=0;
u8 State3=0;
u16 Key_Vol;
u16 Key_Vol_2;

void LED0_Blink(void)
{
      State1=!State1;
      P00=State1;
}

void LED1_Blink(void)
{
      State2=!State2;
      P01=State2;
}

void LED2_Blink(void)
{
      State3=!State3;
      P02=State3;
}
u16 KEY1_COUNT = 0;
u16 KEY2_COUNT = 0;

void KEY_Task(void)
{
      if( P32 == 0 )
      {
                Key_Vol++;
                if( Key_Vol==5 )
                {
            KEY1_COUNT++;
                }
      }
      else
      {
                Key_Vol = 0;
      }
      
      if( P33 == 0 )
      {
                Key_Vol_2++;
                if( Key_Vol_2==5 )
                {
            KEY2_COUNT++;
                }
      }
      else
      {
                Key_Vol_2 = 0;
      }
}

u8 P2_STATE = 0x01;
u8 P10_STATE = 0;
void TASK_1(void)
{
      LED40_SetPort(2,~P2_STATE);
      P2_STATE = (P2_STATE<<1);
      if(P2_STATE==0)
         P2_STATE=1;
      
      if(P10_STATE==0)
                LED40_SetBit(1,0);
      else
                LED40_ClrBit(1,0);
      P10_STATE = !P10_STATE;
      
}


u32 KEY_Count = 0;
void TASK_2(void)
{
      KEY_Count = KEY1_COUNT*10000+KEY2_COUNT;
      SEG7_ShowLong(KEY_Count,10);
}


任务三、按下数字按键在数码管显示对应的按键数字

#include "io.h"

u8 State1=0;
u8 State2=0;
u8 State3=0;
u16 Key_Vol;
u16 Key_Vol_2;

void LED0_Blink(void)
{
      State1=!State1;
      P00=State1;
}

void LED1_Blink(void)
{
      State2=!State2;
      P01=State2;
}

void LED2_Blink(void)
{
      State3=!State3;
      P02=State3;
}
u16 KEY1_COUNT = 0;
u16 KEY2_COUNT = 0;

void KEY_Task(void)
{
      if( P32 == 0 )
      {
                Key_Vol++;
                if( Key_Vol==5 )
                {
            KEY1_COUNT++;
                }
      }
      else
      {
                Key_Vol = 0;
      }
      
      if( P33 == 0 )
      {
                Key_Vol_2++;
                if( Key_Vol_2==5 )
                {
            KEY2_COUNT++;
                }
      }
      else
      {
                Key_Vol_2 = 0;
      }
}

u8 P2_STATE = 0x01;
u8 P10_STATE = 0;
void TASK_1(void)
{
      LED40_SetPort(2,~P2_STATE);
      P2_STATE = (P2_STATE<<1);
      if(P2_STATE==0)
         P2_STATE=1;
      
      if(P10_STATE==0)
                LED40_SetBit(1,0);
      else
                LED40_ClrBit(1,0);
      P10_STATE = !P10_STATE;
      
}


u32 KEY_Count = 0;
void TASK_2(void)
{
      KEY_Count = KEY1_COUNT*10000+KEY2_COUNT;
      SEG7_ShowLong(KEY_Count,10);
}

u32 REC_NUM = 0;
void TASK_3(void)
{
      SEG7_ShowLong(REC_NUM,10);
}




32位8051-AI 发表于 2025-1-24 16:37:32

打卡第十一集
任务一



任务二



#include "io.h"

u8 State1=0;
u8 State2=0;
u8 State3=0;
u16 Key_Vol ;

u8 SEG_NUM[]=
{
        0x3F,       /*'0', 0*/
    0x06,       /*'1', 1*/
    0x5B,       /*'2', 2*/
    0x4F,       /*'3', 3*/
    0x66,       /*'4', 4*/
    0x6D,       /*'5', 5*/
    0x7D,       /*'6', 6*/
    0x07,       /*'7', 7*/
    0x7F,       /*'8', 8*/
    0x6F,       /*'9', 9*/
    0x77,       /*'A', 10*/
    0x7C,       /*'B', 11*/
    0x39,       /*'C', 12*/
    0x5E,       /*'D', 13*/
    0x79,       /*'E', 14*/
    0x71,       /*'F', 15*/
    0x40,       /*'-', 16*/
    0x00,       /*' ', 17*/
    0x80,       /*'.', 18*/
};

u8 T_NUM=
{
        0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80
};

void LED0_Blink(void)
{
        State1=!State1;
        P00=State1;
}

void LED1_Blink(void)
{
        State2=!State2;
        P01=State2;
}

void LED2_Blink(void)
{
        State3=!State3;
        P02=State3;
}
void KEY_Task(void)
{
        if( P32 == 0 )
        {
                Key_Vol++;
                if( Key_Vol==5 )
                {
                        //按键按下的任务
                        printf( "按键单击\r\n" );
                }
        }
        else
        {
                Key_Vol = 0;
        }
       
}
/*
#define ROW1P06
#define ROW2P07
#define COL1P00
#define COL2P01
#define COL3P02
#define COL4P03
*/
u8 key_num = 0xff;
void Task_1(void)
{
        COL1 = 0;
        COL2 = 0;
        COL3 = 0;
        COL4 = 0;
        ROW1 = 1;
        ROW2 = 1;
       
        if((ROW1 == 0)|| (ROW2 == 0))
        {
                if((ROW1 == 0)&&(ROW2 == 0))
                {

                }
                else if(((ROW1 == 1)&&(ROW2 == 0))||((ROW1 == 0)&&(ROW2 == 1)))
                {
                        if(ROW1 == 0)
                           key_num = 0;
                        else if (ROW2 == 0)
                           key_num = 4;
                        COL1 = 1;
                  COL2 = 1;
                  COL3 = 1;
                  COL4 = 1;
                  ROW1 = 0;
                  ROW2 = 0;
                        if(COL1 == 0)
                        {
//                                key_num = key_num;
                        }
                        else if(COL2 == 0)
                        {
                                key_num = key_num+1;
                        }
                        else if(COL3 == 0)
                        {
                                key_num = key_num+2;
                        }
                        else if(COL4 == 0)
                        {
                                key_num = key_num+3;
                        }
                }
        COL1 = 0;
        COL2 = 0;
        COL3 = 0;
        COL4 = 0;
        ROW1 = 1;
        ROW2 = 1;
        }
        else
        {
                key_num = 0xff;
        }
}

void Init_595(void)
{
        HC595_SER = 0;
        HC595_RCK = 0;       
        HC595_SCK = 0;       
}
void Send_595(u8 dat)
{
        u8 i;
        for(i=0;i<8;i++)
        {
                dat<<=1;
                HC595_SER = CY;
                HC595_SCK = 1;
                HC595_SCK = 0;
        }
}
void Display_Seg(u8 HC595_1,u8 HC595_2)
{
        Send_595(HC595_1);
        Send_595(HC595_2);
       
        HC595_RCK = 1;
        HC595_RCK = 0;
}

//void SEG_Task(void)
//{
//        if(key_num == 255)
//        Display_Seg(SEG_NUM,~T_NUM);
//        else
//        Display_Seg(SEG_NUM,~T_NUM);
//}

u8 passward={16,16,16,16,16,16,16,16};
u8 Seg_no = 0;
void SEG_Task(void)
{
        u8 num=0;
        if(Seg_no==0)
        {
           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==1)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==2)
        {
           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==3)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==4)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==5)
        {
           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==6)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==7)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else
        {
               
        }
           Seg_no++;
           if(Seg_no>7)
           Seg_no=0;
}

u8 Key_Vol3=0;
u8 key_no= 0;
void PW_write_Task(void)
{
                if( key_num <0xff )
        {
                Key_Vol3++;
                if( Key_Vol3==5 )
                {
                        if(key_no == 0)
                        {
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;                               
                        }
                        passward=key_num;
                        key_no ++;
//                        passward = 17;
                        if(key_no == 8)
                        {
                                if((passward==1)&&(passward==2)&&(passward==3)&&(passward==4)&&(passward==5)&&(passward==6)&&(passward==7)&&(passward==0))
                                {
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 1;
                                }
                                else
                                {
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                }
                                key_no = 0;
                        }
                }
        }
        else
        {
                Key_Vol3 = 0;
        }
}


32位8051-AI 发表于 2025-1-24 16:39:18

打卡第十二集

任务一


#include "io.h"

u8 State1=0;
u8 State2=0;
u8 State3=0;
u16 Key_Vol ;

u8 SEG_NUM[]=
{
        0x3F,       /*'0', 0*/
    0x06,       /*'1', 1*/
    0x5B,       /*'2', 2*/
    0x4F,       /*'3', 3*/
    0x66,       /*'4', 4*/
    0x6D,       /*'5', 5*/
    0x7D,       /*'6', 6*/
    0x07,       /*'7', 7*/
    0x7F,       /*'8', 8*/
    0x6F,       /*'9', 9*/
    0x77,       /*'A', 10*/
    0x7C,       /*'B', 11*/
    0x39,       /*'C', 12*/
    0x5E,       /*'D', 13*/
    0x79,       /*'E', 14*/
    0x71,       /*'F', 15*/
    0x40,       /*'-', 16*/
    0x00,       /*' ', 17*/
    0x80,       /*'.', 18*/
};

u8 T_NUM=
{
        0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80
};

void LED0_Blink(void)
{
        State1=!State1;
        P00=State1;
}

void LED1_Blink(void)
{
        State2=!State2;
        P01=State2;
}

void LED2_Blink(void)
{
        State3=!State3;
        P02=State3;
}
void KEY_Task(void)
{
        if( P33 == 0 )
        {
                Key_Vol++;
                if( Key_Vol==5 )
                {
                        //按键按下的任务
//                        printf( "按键单击\r\n" );
                        USB_Reset_U();
                        IAP_CONTR = 0X20;
                }
        }
        else
        {
                Key_Vol = 0;
        }
       
}
/*
#define ROW1P06
#define ROW2P07
#define COL1P00
#define COL2P01
#define COL3P02
#define COL4P03
*/
u8 key_num = 0xff;
void Task_1(void)
{
        COL1 = 0;
        COL2 = 0;
        COL3 = 0;
        COL4 = 0;
        ROW1 = 1;
        ROW2 = 1;
       
        if((ROW1 == 0)|| (ROW2 == 0))
        {
                if((ROW1 == 0)&&(ROW2 == 0))
                {

                }
                else if(((ROW1 == 1)&&(ROW2 == 0))||((ROW1 == 0)&&(ROW2 == 1)))
                {
                        if(ROW1 == 0)
                           key_num = 0;
                        else if (ROW2 == 0)
                           key_num = 4;
                        COL1 = 1;
                  COL2 = 1;
                  COL3 = 1;
                  COL4 = 1;
                  ROW1 = 0;
                  ROW2 = 0;
                        if(COL1 == 0)
                        {
//                                key_num = key_num;
                        }
                        else if(COL2 == 0)
                        {
                                key_num = key_num+1;
                        }
                        else if(COL3 == 0)
                        {
                                key_num = key_num+2;
                        }
                        else if(COL4 == 0)
                        {
                                key_num = key_num+3;
                        }
                }
        COL1 = 0;
        COL2 = 0;
        COL3 = 0;
        COL4 = 0;
        ROW1 = 1;
        ROW2 = 1;
        }
        else
        {
                key_num = 0xff;
        }
}

void Init_595(void)
{
        HC595_SER = 0;
        HC595_RCK = 0;       
        HC595_SCK = 0;       
}
void Send_595(u8 dat)
{
        u8 i;
        for(i=0;i<8;i++)
        {
                dat<<=1;
                HC595_SER = CY;
                HC595_SCK = 1;
                HC595_SCK = 0;
        }
}
void Display_Seg(u8 HC595_1,u8 HC595_2)
{
        Send_595(HC595_1);
        Send_595(HC595_2);
       
        HC595_RCK = 1;
        HC595_RCK = 0;
}

//void SEG_Task(void)
//{
//        if(key_num == 255)
//        Display_Seg(SEG_NUM,~T_NUM);
//        else
//        Display_Seg(SEG_NUM,~T_NUM);
//}

u8 passward={16,16,16,16,16,16,16,16};
u8 Seg_no = 0;
void SEG_Task(void)
{
        u8 num=0;
        if(Seg_no==0)
        {
           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==1)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==2)
        {
           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==3)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==4)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==5)
        {
           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==6)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else if(Seg_no==7)
        {

           Display_Seg(SEG_NUM],~T_NUM);
        }
        else
        {
               
        }
           Seg_no++;
           if(Seg_no>7)
           Seg_no=0;
}

u8 Key_Vol3=0;
u8 key_no= 0;
void PW_write_Task(void)
{
                if( key_num <0xff )
        {
                Key_Vol3++;
                if( Key_Vol3==5 )
                {
                        if(key_no == 0)
                        {
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;                               
                        }
                        passward=key_num;
                        key_no ++;
//                        passward = 17;
                        if(key_no == 8)
                        {
                                if((passward==1)&&(passward==2)&&(passward==3)&&(passward==4)&&(passward==5)&&(passward==6)&&(passward==7)&&(passward==0))
                                {
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 17;
                                        passward = 1;
                                }
                                else
                                {
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                        passward = 16;
                                }
                                key_no = 0;
                        }
                }
        }
        else
        {
                Key_Vol3 = 0;
        }
}


页: [1] 2
查看完整版本: 《8051U深度入门到32位51大型实战教学视频》学习打卡