找回密码
 立即注册
楼主: 千年***

接下来我在这个帖子里准备发对冲哥视频做的笔记

[复制链接]
  • TA的每日心情
    开心
    2024-2-28 07:06
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    5

    主题

    52

    回帖

    1334

    积分

    金牌会员

    积分
    1334
     楼主| 发表于 2022-12-22 10:01:43 | 显示全部楼层
    本帖最后由 千年老姚 于 2023-1-3 17:26 编辑

    第六集留下的作业:SOS求救灯光编写三短三长三短(. . . _ _ _ . . .)
    感谢姚总对我的实验箱的支持 但是目前实验箱还在路上呢
    那就稍微写一下代码大概的思路吧
    首先我使用的灯是P6.0,然后根据电路图,P4.0需要低电平,三极管才能打开。
    那么答案已经呼之欲出了——只需要P4.0 = 0、P6.0 = 0,delay_ms()翻转实行长和短。
    代码如下:(此处省略头文件已经访问速度,Delay.h等部分)
    1. sfr P0 = 0x80;
    2. sfr P0M1 = 0X93;
    3. sfr P0M0 = 0X94; //P0端口操作完成
    4. sfr P4 = 0XC0;
    5. sfr P4M1 = 0XB3;
    6. sfr P4M0 = 0XB4;//P4端口操作完成
    7. sfr P6 = 0XE8;
    8. sfr P6M1 = 0XCB;
    9. sfr P6M0 = 0XCC;//P6端口操作完成
    10. sbit P40 = P4^0; //三极管控制引脚
    11. sbit P60 = P6^0;//led控制引脚
    12. void main()
    13. {
    14.         P0M0=0X00;
    15.         P0M1=0X00;//配置P0为准双向口
    16.         P4M0=0X00;
    17.         P4M1=0X00;//配置P4为准双向口
    18.         P6M0=0X00;
    19.         P6M1=0X00;//配置P6为准双向口
    20.         while(1)      //死循环
    21.        {
    22.                 P40 = 0;//三极管引脚输出电平
    23.               /*以下为三短*/
    24.                 P60 = 0 ;
    25.                 delay_ms(100);
    26.                 P60 = 1;
    27.                 delay_ms(100);//短
    28.                 P60 = 0 ;
    29.                 delay_ms(100);
    30.                 P60 = 1;
    31.                 delay_ms(100);//短
    32.                 P60 = 0 ;
    33.                 delay_ms(100);
    34.                 P60 = 1;
    35.                 delay_ms(100);//短
    36.               /*以下为三长*/
    37.                 P60 = 0 ;
    38.                 delay_ms(1000);
    39.                 P60 = 1;
    40.                 delay_ms(1000);//长
    41.                 P60 = 0 ;
    42.                 delay_ms(1000);
    43.                 P60 = 1;
    44.                 delay_ms(1000);//长
    45.                 P60 = 0 ;
    46.                 delay_ms(1000);
    47.                 P60 = 1;
    48.                 delay_ms(1000);//长
    49.                /*以下为三短*/
    50.                 P60 = 0 ;
    51.                 delay_ms(100);
    52.                 P60 = 1;
    53.                 delay_ms(100);//短
    54.                 P60 = 0 ;
    55.                 delay_ms(100);
    56.                 P60 = 1;
    57.                 delay_ms(100);//短
    58.                 P60 = 0 ;
    59.                 delay_ms(100);
    60.                 P60 = 1;
    61.                 delay_ms(100);//短
    62.          
    63.        }
    64. }
    65. /*其实可以写成库函数的形式 但是我还没来得及写*/
    复制代码

    总体代码如上 若有错误,请各位指正:lol

    该用户从未签到

    550

    主题

    9228

    回帖

    1万

    积分

    管理员

    积分
    13928
    发表于 2022-12-22 10:02:29 | 显示全部楼层
    现在贴图方便了,点击右上方 【高级模式】就可以贴图了
    1.png

    该用户从未签到

    550

    主题

    9228

    回帖

    1万

    积分

    管理员

    积分
    13928
    发表于 2022-12-22 11:51:32 | 显示全部楼层
    对我的实验箱的支持 但是目前实验箱还在路上呢
    ====幸好昨日实验箱安排了,不知快递收件了没,即使快递收了,给不给你派送也是问题,
    你要跟踪下快递单号,安排的同仁也将快递单号发楼上兄弟,跟踪进度

    该用户从未签到

    550

    主题

    9228

    回帖

    1万

    积分

    管理员

    积分
    13928
    发表于 2022-12-22 12:04:00 | 显示全部楼层
    客服刚保证: 你的快递优待,预计明天送达,已发单号   
  • TA的每日心情
    开心
    2024-2-28 07:06
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    5

    主题

    52

    回帖

    1334

    积分

    金牌会员

    积分
    1334
     楼主| 发表于 2022-12-22 16:27:53 | 显示全部楼层
    本帖最后由 千年老姚 于 2023-1-3 17:31 编辑

    各位冬至好!刚才看完了第十和第十一集,以下为简略版笔记
    若笔记有误,请各位指正:lol
    第七章:按键点灯
    一.按键的原理
    1.按键的原理:
    常开按键/常闭按键——实验箱上都是常开按键
    10k上拉,300Ω限流
    机械开关会有震动,闭合时不会马上稳定接通,因此在开关瞬间会有一连串的抖动。
    二.按键的代码和实现过程
    1. //省略部分代码
    2. #define KEY1 P32 // 定义一个按键,引脚选择P32
    3. #define KEY1 P33 // 定义一个按键,引脚选择P33
    4. .......
    5. /*****按下点亮,松开熄灭******/
    6. if (KEY1== 0) //运算赋值,判断按键是否有被按下
    7. {
    8. Delay_ms(10);
    9. if (KEY1== 0)
    10. {
    11. printf("按键P32已经按下\r\n");
    12. }
    13. }
    14. /***按下熄灭,松开点亮****/
    15. if (KEY2== 0) //运算赋值,判断按键是否有被按下
    16. {
    17. Delay_ms(10);
    18. if (KEY2== 0)
    19. {
    20. printf("按键P33已经按下\r\n");
    21. }
    22. }
    复制代码


    三.按键的应用
    1. /*****按下点亮,松开熄灭******/
    2. if (KEY1== 0) //运算赋值,判断按键是否有被按下
    3. {
    4. Delay_ms(10);
    5. if (KEY1== 0)
    6. {
    7. printf("按键P32已经按下\r\n");
    8. P60 = 0;  //led0点亮
    9. P40 = 0;
    10. }
    11. }
    12. else  //如果没按下
    13. {
    14. P60 = 1;  //LED0熄灭
    15. P40 = 0;
    16. }
    复制代码
    1. /***按下熄灭,松开点亮****/
    2. if (KEY2== 0) //运算赋值,判断按键是否有被按下
    3. {
    4. Delay_ms(10);
    5. if (KEY2== 0)
    6. {
    7. printf("按键P33已经按下\r\n");
    8. P40 = 0;
    9. P67 = 1;
    10. }
    11. }
    12. else
    13. {
    14. P67 = 0;
    15. }
    复制代码
    1. /***按键按下一次,led状态改变一次***/
    2. if (KEY2== 0) //运算赋值,判断按键是否有被按下
    3. {
    4. Delay_ms(10);
    5. if (KEY2== 0)
    6. {
    7. printf("按键P33已经按下,LED取反一次\r\n");
    8. P40 = 0;
    9. P67 = !P67;  //LED熄灭
    10. //delay_ms(500);//取长延时,但是效果不好。
    11. while(KEY2 == 0)
    12. {
    13. }
    14. }
    15. }
    16. else
    17. {
    18. P67 = 0;
    19. }
    20. //while的位置可以使得按键按下后执行出来的状态不一样,具体要看场景应用
    复制代码
    1. /***按键按下一次,led向左移位***/
    2. if (KEY2== 0) //运算赋值,判断按键是否有被按下
    3. {
    4. Delay_ms(10);
    5. if (KEY2== 0)
    6. {
    7. printf("按键P33已经按下,LED取反一次\r\n");
    8. P40 = 0;
    9. P6 = ((P6<<1)+1);
    10. if (P6 = 0XFF)
    11. P6 =0XFE ;
    12. while(KEY2 == 0) //如果按键一直是按下的,一直执行while
    13. {
    14. }
    15. }
    16. }
    复制代码


    另解:
    1. u8 LED_Data = 0xfe
    2. P6 = LED_Data;
    3. if (KEY2== 0) //运算赋值,判断按键是否有被按下
    4. {
    5. Delay_ms(10);
    6. if (KEY2== 0)
    7. {
    8. printf("按键P33已经按下,LED\r\n");
    9. P40 = 0;
    10. LED_Data = ((LED_Data<<1)+1);
    11. if (LED_Data = 0XFF) //本来是直接输出P6,先计算,后输出
    12. LED_Data =0XFE ;
    13. P6=LED_Data
    14. while(KEY2 == 0) //如果按键一直是按下的,一直执行while
    15. {
    16. }
    17. }
    18. }
    19. /*初始状态
    20. 1111 1110——111 1110 0——11 1110 00
    21. 要想后面不补0——在左移位后+1
    22. 1111 1110——1111 1101——1111 1011
    23. 问题:后面全熄灭
    24. 增加判断语句
    25. 1111 1101
    26. 1111 1011 */
    复制代码


    四.数组的使用
    举例:
    1. /***P32按键按下一次,led向右移位***/
    2. P6=0XFE; delay_ms(500);
    3. P6=0XFD; delay_ms(500);
    4. P6=0XFB; delay_ms(500);
    5. P6=0XF7; delay_ms(500);
    6. P6=0XEF; delay_ms(500);
    7. P6=0XDF; delay_ms(500);
    8. P6=0XBF; delay_ms(500);
    9. P6=0X7F; delay_ms(500);
    10. /*1111 1110  0XFE
    11. 1111 1101 0XFD
    12. 1111 1011 0XFB
    13. 1111 0111 0XF7
    14. 1110 1111 0XEF
    15. 1101 1111 0XDF
    16. 1011 1111 0XBF
    17. 0111 1111 0X7F
    复制代码

    而用数组,便可以解决以上问题
    数组使用分为如下三步:
    1.定义
    类型 名称[长度] = { 数值 };
    2.使用
    赋值:名称[索引] = 数值
    在void main ()定义
    1. u8_LED_DataTab[8]={0XFE,0XFD,0xFB,0XF7,0XEF,0XDF,0XBF,0X7F};
    2. /***P32按键按下一次,led向右移位***/
    3. P6=LED_DataTab[num]; delay_ms(500);
    4. num++;
    5. if (num>7)
    6. num = 0;  //数组实现流水灯
    7. LED_DataTab[2] = 0XFE;
    8. //索引数组 数字-1
    复制代码


    总结:
    1.学会掌握按键的用法
    2.掌握数组
    课后练习:按下按键,切换led输出不同的效果。
  • TA的每日心情
    开心
    2024-2-28 07:06
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    5

    主题

    52

    回帖

    1334

    积分

    金牌会员

    积分
    1334
     楼主| 发表于 2022-12-22 16:29:21 | 显示全部楼层
    今天学习笔记就到此,最后祝各位冬至快乐!
    我是吃汤圆的 你们吃啥的:lol
  • TA的每日心情
    开心
    2024-2-28 07:06
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    5

    主题

    52

    回帖

    1334

    积分

    金牌会员

    积分
    1334
     楼主| 发表于 2022-12-22 16:34:29 | 显示全部楼层
    神农鼎 发表于 2022-12-22 11:51
    对我的实验箱的支持 但是目前实验箱还在路上呢
    ====幸好昨日实验箱安排了,不知快递收件了没,即使快递收了 ...

    好的!已收到
    漳州现在目前疫情态势稳定,应该能准时派送:victory:

    该用户从未签到

    550

    主题

    9228

    回帖

    1万

    积分

    管理员

    积分
    13928
    发表于 2022-12-22 17:09:11 | 显示全部楼层
    收到后,咱还是先 点灯大师 开始,上几张图片或视频

  • TA的每日心情
    开心
    2024-2-28 07:06
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    5

    主题

    52

    回帖

    1334

    积分

    金牌会员

    积分
    1334
     楼主| 发表于 2022-12-23 10:26:21 | 显示全部楼层
    本帖最后由 千年老姚 于 2023-1-3 17:32 编辑

    各位早上好!今天是2023考研的最后一天
    刚看完了第十二集,以下为今天本人的笔记,有误请各位指出!:lol
    祝各位考研学子能够取得好成绩!

    第八章:蜂鸣器的应用
    1.认识蜂鸣器
    有源蜂鸣器/无源蜂鸣器
    区别
    1、有源蜂鸣器内部带震荡源,所以只要一通电就会叫,而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。
    2、价格不同,有源蜂鸣器要比无源蜂鸣器贵,贵在里面多了震荡源。
    主要围绕有源蜂鸣器来开展。
    2.控制原理
    根据硬件原理图
    P54高电平打开,反之关闭

    file:///C:/Users/asus/Desktop/%E5%9B%BE%E7%89%871.png
    尝试:写按钮按下打开蜂鸣器,按钮按下关闭蜂鸣器
    省略部分代码
    1. <div align="left">#define BEEP P54</div><div align="left">......</div><div align="left">void main()</div><div align="left">{</div><div align="left">...</div><div align="left">while(1)</div><div align="left">{</div><p style="text-indent: 2em;">if (KEY1 == 0)</p><p style="text-indent: 2em;">{</p><p style="text-indent: 2em;">delay_ms(10);</p><p style="text-indent: 2em;">if (KEY1 == 0)</p><p style="text-indent: 2em;">{</p><p style="text-indent: 2em;">while        (KEY1 == 0)</p><p style="text-indent: 2em;">BEEP = !BEEP;</p><p style="text-indent: 2em;">}</p><p style="text-indent: 2em;">}</p><div align="left">}</div><div align="left">}</div>
    复制代码

    3.蜂鸣器实战运用
    需求分析:
    按键*2,LED*8,蜂鸣器*1
    1、按键1按下,蜂鸣10ms,LED1-8全部点亮200ms在熄灭,表示开机。
    2.开机后,按键2按下,蜂鸣10ms,LED1-8轮流点亮,表示切换煲汤、烧水等功能。
    3.开机后按键1再次按下,蜂鸣10ms,LED全部熄灭,表示关机。
    新建test.h和test.c
    test.c部分
    1. <div align="left">/****省略部分函数声明****/</div><div align="left">bit Run_Flag = 0;   //0-1 开关机变量</div><div align="left">u8 Run_Mode = 0;  //0-8 模式几 0:没有模式</div><div align="left">void Test(void)  //电磁炉的功能</div><div align="left">{</div><p style="text-indent: 2em;">if (KEY1 == 0)  //开关机键</p><p style="text-indent: 2em;">{</p><p style="text-indent: 2em;">delay_ms(10);</p><p style="text-indent: 2em;">if (KEY1 == 0)</p><p style="text-indent: 2em;">{</p><p style="text-indent: 2em;">while        (KEY1 == 0) ; //按钮按下,并等待按钮松开</p><p style="text-indent: 2em;">/**********还没有开机的时候执行这个开机功能************/</p><p style="text-indent: 2em;">if (Run_Flag == 0)  //还没开机</p><p style="text-indent: 2em;">{</p><p style="text-indent: 2em;">Run_Flag = 1; //开机变量值为1,表示已经开机</p><p style="text-indent: 2em;">BEEP = 0;     //打开蜂鸣器</p><p style="text-indent: 2em;">delay_ms(10);  //延时10ms</p><p style="text-indent: 2em;">BEEP = 1;     //关闭蜂鸣器</p><p style="text-indent: 2em;">P40 = 1;  //打开led三极管</p><p style="text-indent: 2em;">P6 = 0X00; //点亮全部LED;</p><p style="text-indent: 2em;">delay_ms(200);  //延时200ms</p><p style="text-indent: 2em;">P6 = 0XFF; //熄灭全部LED;</p><p style="text-indent: 2em;">}</p><p style="text-indent: 2em;">/***********已经开机的时候,执行关机功能************/</p><p style="text-indent: 2em;">else</p><p style="text-indent: 2em;">{</p><p style="text-indent: 2em;">Run_Flag = 0;</p><p style="text-indent: 2em;">BEEP = 0;    //打开蜂鸣</p><p style="text-indent: 2em;">delay_ms(10);    //延时10ms</p><p style="text-indent: 2em;">BEEP = 1;   //关闭蜂鸣</p><p style="text-indent: 2em;">P6 = 0XFF;   //熄灭全部LED</p><p style="text-indent: 2em;">Run_Mode = 0; //关机后runmode清零</p><p style="text-indent: 2em;">}</p><p style="text-indent: 2em;">}</p><p style="text-indent: 2em;">}</p>
    2. <p style="text-indent: 2em;">if (KEY2 == 0)</p><p style="text-indent: 2em;">{</p><p style="text-indent: 2em;">delay_ms(10);</p><p style="text-indent: 2em;">if(KEY2 == 0)</p><p style="text-indent: 2em;">{</p><p style="text-indent: 2em;">while(KEY2 == 0)  ; //等待松开执行</p><div align="left">BEEP = 0;    //打开蜂鸣</div><div align="left">delay_ms(10);    //延时10ms</div><div align="left">BEEP = 1;   //关闭蜂鸣</div><p style="text-indent: 2em;">Run_Mode ++ ;  //模式自加</p><p style="text-indent: 2em;">if (Run_Mode > 8)  //如果模式大于8</p><p style="text-indent: 2em;">Run_Mode =1;  //回到模式1</p>
    3. <div align="left">//P6 = 0XFE;  P6<<1+1;</div><div align="left">P6 = ^(1<< (Run_Mode-1) )  //1<<1   0000 0001  需要取反 1111 1110</div><p style="text-indent: 2em;">//8位取反,用的^取反</p><div align="left">}</div><p style="text-indent: 2em;">}</p><div align="left">}</div>
    复制代码

    总结:
    1.了解蜂鸣器怎么使用
    2.尝试去使用蜂鸣器
    课后练习:增加按键3,按下后表示启动,选择的对应的功能的LED持续闪烁,表示正在工作,且在工作的时候无法切换功能。

    file:///C:/Users/asus/Desktop/%E5%9B%BE%E7%89%872.png



  • TA的每日心情
    开心
    2024-2-28 07:06
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    5

    主题

    52

    回帖

    1334

    积分

    金牌会员

    积分
    1334
     楼主| 发表于 2022-12-23 10:30:35 | 显示全部楼层
    第八集补图:

    P3.4,P3.5引脚

    P3.4,P3.5引脚

    P5.4引脚图

    P5.4引脚图
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-4-27 21:38 , Processed in 0.080084 second(s), 65 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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