找回密码
 立即注册
查看: 143|回复: 7

学习AI8051U试验箱送实验箱=====实验箱已安排发出

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-27 15:37:55
已绑定手机

3

主题

20

回帖

67

积分

注册会员

积分
67
发表于 2025-2-17 11:55:20 | 显示全部楼层 |阅读模式
第一集知道了实验箱的一些功能,包括能够手写识别,录入视频等
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-27 15:37:55
已绑定手机

3

主题

20

回帖

67

积分

注册会员

积分
67
发表于 2025-2-17 11:58:48 | 显示全部楼层
第二集学习了开发板的硬件模块,包括ai8051芯片以及外围电路,常见的GPIO口,USB下载,USB转串口下载等
还有需要用到keil5工具,通过isp工具,将芯片资料注入到keil5中,方便后续开发。
芯片能够兼容8位的8051,因此在写程序时应当注意,有8位的,有32位的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-27 15:37:55
已绑定手机

3

主题

20

回帖

67

积分

注册会员

积分
67
发表于 2025-2-17 12:29:38 | 显示全部楼层
第三集开始烧录,不过缺少实验箱,没法做,看看代码
#include "ai8051u.h"                //调用头文件


void main(void)
{
        P0M0 = 0;                //P0端口(P00-P07)为准双向口
        P0M1 = 0;
       
        P4M0 = 0;                //P4端口为准双向口
        P4M1 = 0;       
       
        while(1)
        {
                P40 = 0;        //P40端口输出0V
                P00 = 0;        //P00端口输出0V
                P01 = 0;        //P01端口输出0V
        }
}

代码里面0就是输出0V,while意思是一直循环执行,一直输出0V
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-27 15:37:55
已绑定手机

3

主题

20

回帖

67

积分

注册会员

积分
67
发表于 2025-2-17 12:34:03 | 显示全部楼层
第四集,在写程序时,一定要记得头文件
#include "ai8051u.h"                        //调用头文件
#include "stc32_stc8_usb.h"                //调用头文件

这俩要和main.c文件放在一起
usb_init();  这行是配置usb口的,不用管
while (DeviceState != DEVSTATE_CONFIGURED);   等usb程序弄完
char *USER_STCISPCMD = "@STCISP#";  后面的@STCISP# 相当于密码,可以自己在isp上设置,就有个独一无二的密码了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-27 15:37:55
已绑定手机

3

主题

20

回帖

67

积分

注册会员

积分
67
发表于 2025-2-17 12:41:33 | 显示全部楼层
第五集
#define u8  unsigned char                这个定义的是8位无符号变量,总共0-255
#define u16 unsigned int                这个定义的是16位无符号变量是0-65535
if( X && Y )
else      if和else是判断语句,选择执行哪个
&& 与符号,前面和后面都必须满足才能算
printf("条件为真\r\n");  括号内的直接输出
printf("X / Y = %u \r\n",(u16)(X/Y));       %u用来替换变量,有很多种,什么/n等,都有自己的作用
后面有个u16,加个括号,就是转换位无符号16位的数
常用的运算符 + - */ %等
       
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-27 15:37:55
已绑定手机

3

主题

20

回帖

67

积分

注册会员

积分
67
发表于 2025-2-17 13:03:59 | 显示全部楼层
第六集仍然是点灯,只需要检测到端口被按下,就可以改变电平
代码:
按键按下就是   P32 == 0

还学习了一个消抖方法,延时消抖:
oid Delay20ms(void)        //@24.000MHz  Delay20ms();
{
        unsigned long edata i;

        _nop_();
        _nop_();
        i = 119998UL;
        while (i) i--;
}

延时20ms的话,经过isp计算,i应当= 119998UL
这样正好是20ms
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-27 15:37:55
已绑定手机

3

主题

20

回帖

67

积分

注册会员

积分
67
发表于 2025-2-17 13:38:53 | 显示全部楼层
第七集定时器中断。
单片机是单核,没有办法执行多条命令,就需要想办法控制时间
利用定时器完成时间的计算、延时。
1.采用isp直接生成定时函数,要设置延时时间、定时器选择,通用就行
2. 复制代码到程序中
使用的时候在main函数里面使用
1. 先将定时器初始化   Timer0_Init();
2. 三秒执行一次的函数,也就是三秒钟,状态翻转一次 !的意思是取反
void Timer0_Isr(void) interrupt 1
{
        state = !state;               
       
        P00 = state;
        P01 = !state;
}

定时器原理
系统时钟,1微秒计数24次---24M
可以通过8分频寄存器,放慢速度,或者通过辅助寄存器设置时钟12分频
定时器0的模式0较难:16位的重载模式。通过两个隐藏的寄存器TH0 TL0实现
结合代码看:
TM0PS = 0x0F;                 用来分频的 --0x05位15
AUXR &= 0x7F;                      设置定时器时钟模式
TMOD &= 0xF0;               设置定时器模式
TL0 = 0xDC;                      设置定时初始值TL0的
TH0 = 0x0B;                       设置定时初始值TH0的
TF0 = 0;                              清除TF0标志
TR0 = 1;                              定时器0开始计时
ET0 = 1;                              使能定时器0中断

定时器本质上就是从0到65535后,溢出,置一次标志位,就可以中断了
最后,带领我们写了一个救护车灯控制器
任务3:救护车灯控制器,按下报警按钮,红蓝交替闪烁(LED1和LED2              表示红和蓝灯),再按一下报警按钮,红蓝灯停止。
if( P32 == 0 )                                                                //判断P32按钮是否按下
{
        Delay20ms();                                                        //延时20ms消抖
        if( P32 == 0 )
        {
        Run_State = !Run_State;                                //运行状态取反
        if( Run_State==1 )                                        //运行
        {
                Timer0_Init();
        }else{
        TR0 = 0;                                                //关闭定时器
        P00 = 1;
        P01 = 1;
}
P00 = 0;
Timer0_Init();
while( P32 == 0 );等待P32松开
}
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-27 15:37:55
已绑定手机

3

主题

20

回帖

67

积分

注册会员

积分
67
发表于 2025-2-17 13:39:44 | 显示全部楼层
七楼最后应该是65536 溢出,不是65535
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 22:22 , Processed in 0.119841 second(s), 87 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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