我是一个大学在校生,想要分享一下自己是如何一步步走入单片机这一有趣的世界里来的。我在单片机的世界里就是一个普通到不能再普通的一个小学生了。在刚开始时接触它时,我以为这门课与其他的科目一样就只是书上理论而已。但是随着在老师的带领下我发现这一科目是一个有趣到爆的科目。我从单片机中找到了以前学习的乐趣。 我最开始接触的是51单片机,在51单片机中我慢慢摸索,慢慢跟着老师的节奏往前走,不知不觉已经接触51单片机已经快两年了,中间在学完自己该学的课后,在老师推荐下参加了一个小小的比赛,那才是我真正的踏入单片机大门的那一刻。我用一年的时间来准备这一比赛,我相信大家都会有过像我一样的感受,在自己写出程序成功后开心到半夜睡不着。有时因为一点代码上的错误会和一起的伙伴争执半天的经历吧。 那一年备赛是我大学生涯最爱的一段时间,感谢陪我一起的兄弟姐妹,更要感谢给我指导的老师,谢谢他们。 好了说了这么多是回顾一下以前,从今天开始我要开始一段新的学习,因为已经一年时间过去了,我最好的小伙伴已经因一些特殊原因不再玩单片机了,所以我想再这里找到和我一起学习的小伙伴。 我前两天买的正点原子精英板到了,我从明天开始学习32板子了,希望大家和我一起努力。 最后我给大家分享一个我前几天写的一个LED显示系统的仿真和一个代码吧。 LED显示系统仿真图:
四个模式转换 单片机程序:
- /******************************************************************************
- **文件名:LED模式切换
- **日 期:2021/01/7
- **描 述:通过独立按键控制LED灯模式之间的切换。
- ******************************************************************************/
- #include <reg52.h>
- #include "intrins.h"
- sbit k1=P3^5;
- sbit k2=P3^4;
- sbit k3=P3^3;
- sbit k4=P3^2;
- void moshi();
- void anjian();
- void Delay50ms();
- void Delay10ms();
- unsigned char mo,n;
- unsigned char moshiyi[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- unsigned char moshier[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
- unsigned char moshisan[]={0xe7,0xdb,0xbd,0x7e,0xe7,0xdb,0xbd,0x7e};
- unsigned char moshisi[]={0x7e,0xbd,0xdb,0xe7,0x7e,0xbd,0xdb,0xe7};
- /******************************************************************************
- **函数名称:主函数
- **函数功能:程序循环的主要途径及开始的入口
- **入口参数:无
- **出口参数:无
- **备 注:无
- ******************************************************************************/
- void main()
- {
- while(1)
- {
- moshi();anjian();
- }
- }
- /******************************************************************************
- **函数名称:模式选择函数
- **函数功能:判断模式
- **入口参数:无
- **出口参数:无
- **备 注:无
- ******************************************************************************/
- void moshi()
- {
- if(mo==1)
- {
- P0=moshiyi[n];Delay50ms();n++;if(n==8) n=0;
- }
- if(mo==2)
- {
- P0=moshier[n]; Delay50ms();n++; if(n==8) n=0;
- }
- if(mo==3)
- {
- P0=moshisan[n]; Delay50ms();n++; if(n==8) n=0;
- }
- if(mo==4)
- {
- P0=moshisi[n]; Delay50ms();n++; if(n==8) n=0;
- }
- }
- /******************************************************************************
- **函数名称:按键函数
- **函数功能:判断按键并做出相应选择
- **入口参数:无
- **出口参数:无
- **备 注:无
- ******************************************************************************/
- void anjian()
- {
- if(k1==0)
- {
- Delay10ms();
- if(k1==0)
- {
- mo=1;
- }
- while(!k1);
- }
-
- if(k2==0)
- {
- Delay10ms(); if(k2==0)
- {
- mo=2;
- }
- while(!k2);
- }
- if(k3==0)
- {
- Delay10ms();if(k3==0)
- {
- mo=3;
- }
- while(!k3 );
- }
-
- if(k4==0)
- {
- Delay10ms();
- if(k4==0)
- {
- mo=4;
- }
- while(!k4);
- }
- }
- /******************************************************************************
- **函数名称:延时函数
- **函数功能:延时50ms
- **入口参数:无
- **出口参数:无
- **备 注:无
- ******************************************************************************/
- void Delay50ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- _nop_();
- _nop_();
- i = 3;
- j = 26;
- k = 223;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- /******************************************************************************
- **函数名称:延时函数
- **函数功能:延时10ms
- **入口参数:无
- **出口参数:无
- **备 注:无
- ******************************************************************************/
- void Delay10ms() //@11.0592MHz
- {
- unsigned char i, j;
- i = 108;
- j = 145;
- do
- {
- while (--j);
- } while (--i);
- }
复制代码 附件截图:
全部资料51hei下载地址:
LED四模式.zip
(82.57 KB, 下载次数: 7)
|