找回密码
 立即注册
查看: 788|回复: 13

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

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2024-11-29 11:30:21 | 显示全部楼层 |阅读模式
跟着冲哥一起学习AI8051U

打卡第三集   跟着冲哥敲代码,成功点亮第一颗LED灯---附手敲代码
截图202411291128283819.jpg
截图202411291128442921.jpg
03.zip (38.51 KB, 下载次数: 35)

QQ:1463035472,微信:19952583954
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2024-11-29 11:38:51 | 显示全部楼层
第四集   跟着冲哥成功实现USB不停电下载,非常实用----附手敲代码

截图202411291132504112.jpg
截图202411291133482435.jpg
04示例代码.zip (86.6 KB, 下载次数: 37)

QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2024-11-29 16:47:28 | 显示全部楼层
打卡第五集,C语言基础

1、C语言 USB-CDC串四之printf函数的实现
2、数的进制:2进制、10进制、16进制
3、C语言常用运算符
截图202411291645271483.jpg
截图202411291645388864.jpg
截图202411291645588749.jpg
截图202411291646594660.jpg
附手敲代码 05示例代码.zip (86.36 KB, 下载次数: 34)


QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2024-11-30 16:24:36 | 显示全部楼层
打卡第六集   IO口输入输出

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






06示例代码.zip

93.82 KB, 下载次数: 39

QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2024-12-3 17:03:28 | 显示全部楼层
打卡第七集:定时器中断

截图202412031701442179.jpg

附手敲代码
AI8051U教学视频第7集定时器学习程序.zip (98.46 KB, 下载次数: 32)

QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2024-12-6 17:15:04 | 显示全部楼层
打卡第八集:定时器周期性任务调度

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



附手敲代码
AI8051U教学视频第8集定时器周期性任务调度学习程序.zip (156.35 KB, 下载次数: 33)






QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2024-12-24 16:53:37 | 显示全部楼层
打卡第九集 数码管

任务1   数码管静态的显示一个数字
截图202412241651334654.jpg
截图202412241655513600.jpg
任务2:数码管显示“12345678”
截图202412241651561797.jpg
任务3:数码管显示“00-00-00”分别代表时分秒,每过1秒钟秒+1;
截图202412241656304783.jpg

擎天柱打卡


AI8051U教学视频第9集shu码管学习程序.zip (163.18 KB, 下载次数: 27)



QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 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);
}

擎天柱-AI8051U教学视频第10集虚拟LED.zip (157.54 KB, 下载次数: 27)


QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 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[8]=
{
        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 ROW1  P06
#define ROW2  P07
#define COL1  P00
#define COL2  P01
#define COL3  P02
#define COL4  P03
*/
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[17],~T_NUM[0]);
//        else
//        Display_Seg(SEG_NUM[key_num],~T_NUM[0]);
//}

u8 passward[8]={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[passward[0]],~T_NUM[0]);
        }
        else if(Seg_no==1)
        {

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

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

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

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

           Display_Seg(SEG_NUM[passward[7]],~T_NUM[7]);
        }
        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[0] = 16;
                                        passward[1] = 16;
                                        passward[2] = 16;
                                        passward[3] = 16;
                                        passward[4] = 16;
                                        passward[5] = 16;
                                        passward[6] = 16;
                                        passward[7] = 16;                               
                        }
                        passward[key_no]=key_num;
                        key_no ++;
//                        passward[7] = 17;
                        if(key_no == 8)
                        {
                                if((passward[0]==1)&&(passward[1]==2)&&(passward[2]==3)&&(passward[3]==4)&&(passward[4]==5)&&(passward[5]==6)&&(passward[6]==7)&&(passward[7]==0))
                                {
                                        passward[0] = 17;
                                        passward[1] = 17;
                                        passward[2] = 17;
                                        passward[3] = 17;
                                        passward[4] = 17;
                                        passward[5] = 17;
                                        passward[6] = 17;
                                        passward[7] = 1;
                                }
                                else
                                {
                                        passward[0] = 16;
                                        passward[1] = 16;
                                        passward[2] = 16;
                                        passward[3] = 16;
                                        passward[4] = 16;
                                        passward[5] = 16;
                                        passward[6] = 16;
                                        passward[7] = 16;
                                }
                                key_no = 0;
                        }
                }
        }
        else
        {
                Key_Vol3 = 0;
        }
}

AI8051U教学视频第11集矩阵按键学习程序.zip (165.7 KB, 下载次数: 10)
QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 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[8]=
{
        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 ROW1  P06
#define ROW2  P07
#define COL1  P00
#define COL2  P01
#define COL3  P02
#define COL4  P03
*/
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[17],~T_NUM[0]);
//        else
//        Display_Seg(SEG_NUM[key_num],~T_NUM[0]);
//}

u8 passward[8]={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[passward[0]],~T_NUM[0]);
        }
        else if(Seg_no==1)
        {

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

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

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

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

           Display_Seg(SEG_NUM[passward[7]],~T_NUM[7]);
        }
        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[0] = 16;
                                        passward[1] = 16;
                                        passward[2] = 16;
                                        passward[3] = 16;
                                        passward[4] = 16;
                                        passward[5] = 16;
                                        passward[6] = 16;
                                        passward[7] = 16;                               
                        }
                        passward[key_no]=key_num;
                        key_no ++;
//                        passward[7] = 17;
                        if(key_no == 8)
                        {
                                if((passward[0]==1)&&(passward[1]==2)&&(passward[2]==3)&&(passward[3]==4)&&(passward[4]==5)&&(passward[5]==6)&&(passward[6]==7)&&(passward[7]==0))
                                {
                                        passward[0] = 17;
                                        passward[1] = 17;
                                        passward[2] = 17;
                                        passward[3] = 17;
                                        passward[4] = 17;
                                        passward[5] = 17;
                                        passward[6] = 17;
                                        passward[7] = 1;
                                }
                                else
                                {
                                        passward[0] = 16;
                                        passward[1] = 16;
                                        passward[2] = 16;
                                        passward[3] = 16;
                                        passward[4] = 16;
                                        passward[5] = 16;
                                        passward[6] = 16;
                                        passward[7] = 16;
                                }
                                key_no = 0;
                        }
                }
        }
        else
        {
                Key_Vol3 = 0;
        }
}

AI8051U教学视频第12集复位学习程序.zip (166.98 KB, 下载次数: 10)
QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 10:26 , Processed in 0.154426 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表