hidssrbm 发表于 2025-1-31 13:39:42

学习支持一下

dyx811 发表于 2025-1-31 18:59:06

16集了,太厉害了!

何志扬 发表于 2025-1-31 19:50:03

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

木木01 发表于 2025-1-31 21:02:09

学习中{:4_165:}

乐高 发表于 2025-2-1 13:38:02

第十六集 DS18B20测温数码管闪烁问题


数码管闪烁是由于18B20的读写中采用了阻塞延时程序(软件延时)影响了主程序的运行,要采用非阻塞程序才能使数码管不闪烁。
非阻塞写法有多种,我现在找到了一种:定时器中断方式。用定时器中断来实现精确延时。
本程序中使用定时器1,设置定时长度为60us, 480us就是8个定时周期,420us正好是7个定时周期。
18B20全部的读写过程都在定时中断中实现
void Timer1_Isr(void) interrupt 3         //定时时间60us,就是60us走一步
{
      switch(t1_num)
                {
                case 0 :
                case 33 :
                bz = 1; DQ = 0; break;
                case 8 :                                                                                                                        //0-8步时间间隔480us
                case 41 :
                DQ = 1; break;
                case 9 :                                                                                                                        //8-9步时间间隔60us
                case 42 :
                bz = DQ; break;
                case 16 :                            //9-16步时间间隔420us
                case 49 :
                if(bz)                                                                                                                         //如果bz为1,则初始化失败,关闭定时器1,等待下次采集。
                {
                        TR1 = 0;
                        break;}
                else                                                                                                                                 //如果bz为0,则开始写入命令cmd
                {
                  dat = cmd;
                        DQ = 0;
                        Delay1us();
                  dat >>= 1;
                        DQ = CY;
                        break;
                }
                case 17 : //cmd
                case 18 :
                case 19 :
                case 20 :
                case 21 :
                case 22 :
                case 23 :

                case 25 : //cmd
                case 26 :
                case 27 :
                case 28 :
                case 29 :
                case 30 :
                case 31 :

                case 50 : //cmd
                case 51 :
                case 52 :
                case 53 :
                case 54 :
                case 55 :
                case 56 :

                case 58 : //cmd
                case 59 :
                case 60 :
                case 61 :
                case 62 :
                case 63 :
                case 64 :
               DQ = 1;
               Delay1us();
               DQ = 0;
               Delay1us();                                          //开始下一位
               dat >>= 1;
               DQ = CY;
                break;
                case 24 :
                case 57 :
                DQ = 1;
                Delay1us();                                           //写第一个字节结束
                dat = cmd;      
                DQ = 0;
                Delay1us();                                           //写第二个字节
                dat >>= 1;
                DQ = CY;
                break;
                case 32 :
                DQ = 1;
                Delay1us();                                           //写第二个字节结束 0x44
                case 65 :
                DQ = 1;
                Delay1us();                                    //0xbe 命令发完
                dat = 0;                        
                dat >>= 1;
                DQ = 0;
                Delay1us();
                DQ = 1;
                Delay1us();
                if(DQ) dat |= 0x80;
                break;
                case 66 :
                case 67 :
                case 68 :
                case 69 :
                case 70 :
                case 71 :
                case 72 :

                case 74 :
                case 75 :
                case 76 :
                case 77 :
                case 78 :
                case 79 :
                case 80 :
                dat >>= 1;
                DQ = 0;
                Delay1us();
                DQ = 1;
                Delay1us();
                if(DQ) dat |= 0x80;
                break;
                case 73 :
                TempL = dat;
                dat = 0;         
                dat >>= 1;
                DQ = 0;
                Delay1us();
                DQ = 1;
                Delay1us();
                if(DQ) dat |= 0x80;
                break;
                case 81 :
                TempH = dat;
                TR1 = 0;
                break;
                default : break;
                }      
      t1_num++;
}586
欲了解详情请点击下面链接
AI8051U教学视频课后小练 - 第3页 - 学习打卡区 | 感悟 国芯技术交流网站 - AI32位8051交流社区

jceovo 发表于 2025-2-1 17:36:54

第一集主要演示了功能,知道为什么要学好这一课,以及有非常实用的硬件功能。
Ai8051U的强项:
从STC 进化到AI
1.屏幕显示和视频播放(flash编程器):优化了QSPI的一些Flash芯片的读写能,对于视频播放有了质的提升
(1)屏幕显示:

可以实现各种界面的一个刷新,帧率不低(包括汉字、英文、图片、刷屏、旋转显示......)
8080八位并口
(2)视频播放:


2.IIS录放音

3. PWM_DMA

可以直接实现1000多颗的2812的灯进行显示,不会有任何干扰
4. 频谱分析仪(上位机)通过浮点乘除单元更好地实现

可帮助快速分析频率
5. 演示手写计算器


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

batcd 发表于 2025-2-1 23:58:12

过年了又更新了一集

dyx811 发表于 2025-2-2 10:49:23

每天都特别期待更新!

白水大虾2016 发表于 2025-2-3 11:29:00

今天进攻虚拟键盘LED和数码管,加油!

白水大虾2016 发表于 2025-2-3 15:47:28

天哪今天网速超级卡!{:4_199:}
页: 61 62 63 64 65 66 67 68 69 70 [71] 72 73 74 75 76 77 78 79 80
查看完整版本: 《8051U深度入门到32位51大型实战视频》,【免费 + 包邮 送】实验箱@Ai8051U,100万套