找回密码
 立即注册
楼主: 电子DIY小家

《8051U深度入门到32位51大型实战视频》,【免费 + 包邮 送】实验箱@Ai8051U,100万套

   火... [复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-01-31 13:33:09
已绑定手机

0

主题

2

回帖

8

积分

新手上路

积分
8
发表于 2025-1-31 13:39:42 | 显示全部楼层
学习支持一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:139
  • 最近打卡:2025-05-04 00:08:25
已绑定手机

4

主题

65

回帖

802

积分

高级会员

积分
802
发表于 2025-1-31 18:59:06 | 显示全部楼层
16集了,太厉害了!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:58
  • 最近打卡:2025-03-14 12:08:00
已绑定手机

5

主题

48

回帖

277

积分

中级会员

积分
277
发表于 2025-1-31 19:50:03 | 显示全部楼层
新年好,冲哥,我对第十五集按键计数器还有疑问,我用擎天柱不能复现。1.将重装载值设置为65526,即10个脉冲进行一次计数,是否为按下按键超过一个计时单位就算一次计数。2.在最后显示的计算,我的理解是:如果第三次按下按键, Count_num = 10,这时 Count_T1 = 3,当前计数值为 65530,当前周期脉冲数 = 65530 - 65526 = 4,总脉冲数 = 3×10 + 4 = 34,就不符合现实结果,请问正确的理解是什么。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-02 09:46:41
已绑定手机

4

主题

178

回帖

540

积分

高级会员

积分
540
发表于 2025-1-31 21:02:09 | 显示全部楼层
学习中
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:112
  • 最近打卡:2025-05-04 11:26:34
已绑定手机

1

主题

60

回帖

291

积分

中级会员

积分
291
发表于 2025-2-1 13:38:02 | 显示全部楼层
第十六集 DS18B20测温  数码管闪烁问题
18B20阻塞程序导致数码管显示闪烁.png

数码管闪烁是由于18B20的读写中采用了阻塞延时程序(软件延时)影响了主程序的运行,要采用非阻塞程序才能使数码管不闪烁。
非阻塞写法有多种,我现在找到了一种:定时器中断方式。用定时器中断来实现精确延时。
本程序中使用定时器1,设置定时长度为60us, 480us就是8个定时周期,420us正好是7个定时周期。
18B20全部的读写过程都在定时中断中实现
  1. void Timer1_Isr(void) interrupt 3         //定时时间60us,就是60us走一步
  2. {
  3.         switch(t1_num)
  4.                 {
  5.                 case 0 :
  6.                 case 33 :
  7.                 bz = 1; DQ = 0; break;
  8.                 case 8 :                                                                                                                        //0-8步时间间隔480us
  9.                 case 41 :
  10.                 DQ = 1; break;
  11.                 case 9 :                                                                                                                        //8-9步时间间隔60us
  12.                 case 42 :
  13.                 bz = DQ; break;
  14.                 case 16 :                            //9-16步时间间隔420us
  15.                 case 49 :
  16.                 if(bz)                                                                                                                         //如果bz为1,则初始化失败,关闭定时器1,等待下次采集。
  17.                 {
  18.                         TR1 = 0;
  19.                         break;}
  20.                 else                                                                                                                                 //如果bz为0,则开始写入命令cmd[cmd_n++]
  21.                 {
  22.                   dat = cmd[cmd_n++];
  23.                         DQ = 0;
  24.                         Delay1us();
  25.                   dat >>= 1;
  26.                         DQ = CY;
  27.                         break;
  28.                 }
  29.                 case 17 : //cmd[0]
  30.                 case 18 :
  31.                 case 19 :
  32.                 case 20 :
  33.                 case 21 :
  34.                 case 22 :
  35.                 case 23 :
  36.                 case 25 : //cmd[1]
  37.                 case 26 :
  38.                 case 27 :
  39.                 case 28 :
  40.                 case 29 :
  41.                 case 30 :
  42.                 case 31 :
  43.                 case 50 : //cmd[2]
  44.                 case 51 :
  45.                 case 52 :
  46.                 case 53 :
  47.                 case 54 :
  48.                 case 55 :
  49.                 case 56 :
  50.                 case 58 : //cmd[3]
  51.                 case 59 :
  52.                 case 60 :
  53.                 case 61 :
  54.                 case 62 :
  55.                 case 63 :
  56.                 case 64 :
  57.                  DQ = 1;
  58.                  Delay1us();  
  59.                  DQ = 0;
  60.                  Delay1us();                                          //开始下一位
  61.                  dat >>= 1;
  62.                  DQ = CY;
  63.                 break;
  64.                 case 24 :
  65.                 case 57 :
  66.                 DQ = 1;
  67.                 Delay1us();                                           //写第一个字节结束
  68.                 dat = cmd[cmd_n++];      
  69.                 DQ = 0;
  70.                 Delay1us();                                           //写第二个字节
  71.                 dat >>= 1;
  72.                 DQ = CY;
  73.                 break;
  74.                 case 32 :
  75.                 DQ = 1;
  76.                 Delay1us();                                           //写第二个字节结束 0x44
  77.                 case 65 :
  78.                 DQ = 1;
  79.                 Delay1us();                                    //0xbe 命令发完
  80.                 dat = 0;                        
  81.                 dat >>= 1;
  82.                 DQ = 0;
  83.                 Delay1us();  
  84.                 DQ = 1;
  85.                 Delay1us();  
  86.                 if(DQ) dat |= 0x80;
  87.                 break;
  88.                 case 66 :
  89.                 case 67 :
  90.                 case 68 :
  91.                 case 69 :
  92.                 case 70 :
  93.                 case 71 :
  94.                 case 72 :
  95.                 case 74 :
  96.                 case 75 :
  97.                 case 76 :
  98.                 case 77 :
  99.                 case 78 :
  100.                 case 79 :
  101.                 case 80 :
  102.                 dat >>= 1;
  103.                 DQ = 0;
  104.                 Delay1us();  
  105.                 DQ = 1;
  106.                 Delay1us();  
  107.                 if(DQ) dat |= 0x80;
  108.                 break;
  109.                 case 73 :
  110.                 TempL = dat;
  111.                 dat = 0;         
  112.                 dat >>= 1;
  113.                 DQ = 0;
  114.                 Delay1us();
  115.                 DQ = 1;
  116.                 Delay1us();
  117.                 if(DQ) dat |= 0x80;
  118.                 break;
  119.                 case 81 :
  120.                 TempH = dat;
  121.                 TR1 = 0;
  122.                 break;
  123.                 default : break;
  124.                 }        
  125.         t1_num++;
  126. }
复制代码

欲了解详情请点击下面链接
AI8051U教学视频课后小练 - 第3页 - 学习打卡区 | 感悟 国芯技术交流网站 - AI32位8051交流社区
demo3.zip (206.9 KB, 下载次数: 148)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-02-12 13:49:46
已绑定手机

1

主题

7

回帖

45

积分

新手上路

积分
45
发表于 2025-2-1 17:36:54 | 显示全部楼层
第一集主要演示了功能,知道为什么要学好这一课,以及有非常实用的硬件功能。
Ai8051U的强项:
从STC 进化到AI
1.屏幕显示和视频播放(flash编程器):优化了QSPI的一些Flash芯片的读写能,对于视频播放有了质的提升
(1)屏幕显示:
屏幕截图 2025-02-01 165031.png
可以实现各种界面的一个刷新,帧率不低(包括汉字、英文、图片、刷屏、旋转显示......)
8080八位并口
(2)视频播放:
屏幕截图 2025-02-01 171028.png

2.IIS录放音
屏幕截图 2025-02-01 165640.png
3. PWM_DMA
屏幕截图 2025-02-01 165946.png
可以直接实现1000多颗的2812的灯进行显示,不会有任何干扰
4. 频谱分析仪(上位机)通过浮点乘除单元更好地实现
屏幕截图 2025-02-01 170403.png
可帮助快速分析频率
5. 演示手写计算器
屏幕截图 2025-02-01 170524.png

6. 最新功能:QSPI,PWM移相,硬件乘除,单精度浮点

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:195
  • 最近打卡:2025-05-05 01:05:02

3

主题

50

回帖

933

积分

高级会员

积分
933
发表于 2025-2-1 23:58:12 | 显示全部楼层
过年了又更新了一集
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:139
  • 最近打卡:2025-05-04 00:08:25
已绑定手机

4

主题

65

回帖

802

积分

高级会员

积分
802
发表于 2025-2-2 10:49:23 | 显示全部楼层
每天都特别期待更新!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2025-04-29 08:26:08

6

主题

217

回帖

350

积分

中级会员

积分
350
发表于 2025-2-3 11:29:00 | 显示全部楼层
今天进攻虚拟键盘LED和数码管,加油!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2025-04-29 08:26:08

6

主题

217

回帖

350

积分

中级会员

积分
350
发表于 2025-2-3 15:47:28 | 显示全部楼层
天哪今天网速超级卡!
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-5 04:06 , Processed in 0.512101 second(s), 122 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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