找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1572|回复: 0
收起左侧

stm32板子学前准备(正点原子精英开发板)+四个模式LED转换

[复制链接]
ID:687158 发表于 2021-3-31 23:28 | 显示全部楼层 |阅读模式

我是一个大学在校生,想要分享一下自己是如何一步步走入单片机这一有趣的世界里来的。我在单片机的世界里就是一个普通到不能再普通的一个小学生了。在刚开始时接触它时,我以为这门课与其他的科目一样就只是书上理论而已。但是随着在老师的带领下我发现这一科目是一个有趣到爆的科目。我从单片机中找到了以前学习的乐趣。

我最开始接触的是51单片机,在51单片机中我慢慢摸索,慢慢跟着老师的节奏往前走,不知不觉已经接触51单片机已经快两年了,中间在学完自己该学的课后,在老师推荐下参加了一个小小的比赛,那才是我真正的踏入单片机大门的那一刻。我用一年的时间来准备这一比赛,我相信大家都会有过像我一样的感受,在自己写出程序成功后开心到半夜睡不着。有时因为一点代码上的错误会和一起的伙伴争执半天的经历吧。

那一年备赛是我大学生涯最爱的一段时间,感谢陪我一起的兄弟姐妹,更要感谢给我指导的老师,谢谢他们。

好了说了这么多是回顾一下以前,从今天开始我要开始一段新的学习,因为已经一年时间过去了,我最好的小伙伴已经因一些特殊原因不再玩单片机了,所以我想再这里找到和我一起学习的小伙伴。

我前两天买的正点原子精英板到了,我从明天开始学习32板子了,希望大家和我一起努力。

最后我给大家分享一个我前几天写的一个LED显示系统的仿真和一个代码吧。

LED显示系统仿真图:

VZ1Q26HW~D76CJLG$M0M3MT.png

四个模式转换 单片机程序:


  1. /******************************************************************************
  2. **文件名:LED模式切换
  3. **日 期:2021/01/7
  4. **描 述:通过独立按键控制LED灯模式之间的切换。
  5. ******************************************************************************/
  6. #include <reg52.h>
  7. #include "intrins.h"

  8. sbit k1=P3^5;
  9. sbit k2=P3^4;
  10. sbit k3=P3^3;
  11. sbit k4=P3^2;

  12. void moshi();
  13. void anjian();
  14. void Delay50ms();
  15. void Delay10ms();

  16. unsigned char mo,n;
  17. unsigned char moshiyi[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  18. unsigned char moshier[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  19. unsigned char moshisan[]={0xe7,0xdb,0xbd,0x7e,0xe7,0xdb,0xbd,0x7e};
  20. unsigned char moshisi[]={0x7e,0xbd,0xdb,0xe7,0x7e,0xbd,0xdb,0xe7};
  21. /******************************************************************************
  22. **函数名称:主函数
  23. **函数功能:程序循环的主要途径及开始的入口
  24. **入口参数:无
  25. **出口参数:无
  26. **备    注:无
  27. ******************************************************************************/
  28. void main()
  29. {
  30. while(1)
  31. {
  32. moshi();anjian();
  33. }
  34. }
  35. /******************************************************************************
  36. **函数名称:模式选择函数
  37. **函数功能:判断模式
  38. **入口参数:无
  39. **出口参数:无
  40. **备    注:无
  41. ******************************************************************************/

  42. void moshi()
  43. {
  44.         if(mo==1)
  45.         {
  46.         P0=moshiyi[n];Delay50ms();n++;if(n==8) n=0;
  47.         }

  48.         if(mo==2)
  49.         {
  50.         P0=moshier[n];  Delay50ms();n++;        if(n==8) n=0;
  51.         }

  52.         if(mo==3)
  53.         {
  54.         P0=moshisan[n];        Delay50ms();n++;        if(n==8) n=0;
  55.         }

  56.         if(mo==4)
  57.         {
  58.         P0=moshisi[n];        Delay50ms();n++;        if(n==8) n=0;
  59.         }
  60. }
  61. /******************************************************************************
  62. **函数名称:按键函数
  63. **函数功能:判断按键并做出相应选择
  64. **入口参数:无
  65. **出口参数:无
  66. **备    注:无
  67. ******************************************************************************/

  68. void anjian()
  69. {
  70.         if(k1==0)
  71.         {
  72.         Delay10ms();
  73.         if(k1==0)
  74.         {
  75.         mo=1;
  76.         }
  77.         while(!k1);
  78.         }
  79.         
  80.         if(k2==0)
  81.         {
  82.         Delay10ms();        if(k2==0)
  83.         {
  84.         mo=2;
  85.         }
  86.         while(!k2);
  87.         }        
  88.   if(k3==0)
  89.         {
  90.         Delay10ms();if(k3==0)
  91.                 {
  92.                 mo=3;
  93.                 }
  94.                 while(!k3 );
  95.         }
  96.         
  97.                 if(k4==0)
  98.         {
  99.         Delay10ms();
  100.         if(k4==0)
  101.         {
  102.         mo=4;
  103.         }
  104.         while(!k4);
  105.         }
  106. }
  107. /******************************************************************************
  108. **函数名称:延时函数
  109. **函数功能:延时50ms
  110. **入口参数:无
  111. **出口参数:无
  112. **备    注:无
  113. ******************************************************************************/

  114. void Delay50ms()                //@11.0592MHz
  115. {
  116.         unsigned char i, j, k;

  117.         _nop_();
  118.         _nop_();
  119.         i = 3;
  120.         j = 26;
  121.         k = 223;
  122.         do
  123.         {
  124.                 do
  125.                 {
  126.                         while (--k);
  127.                 } while (--j);
  128.         } while (--i);
  129. }
  130. /******************************************************************************
  131. **函数名称:延时函数
  132. **函数功能:延时10ms
  133. **入口参数:无
  134. **出口参数:无
  135. **备    注:无
  136. ******************************************************************************/

  137. void Delay10ms()                //@11.0592MHz
  138. {
  139.         unsigned char i, j;

  140.         i = 108;
  141.         j = 145;
  142.         do
  143.         {
  144.                 while (--j);
  145.         } while (--i);
  146. }
复制代码
附件截图:

17S_7T`K]SPNO5B9WZTRG~Y.png

全部资料51hei下载地址:

LED四模式.zip (82.57 KB, 下载次数: 7)

评分

参与人数 1黑币 +90 收起 理由
admin + 90 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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