嵌入式开发交流网论坛

标题: 来和菜鸟一起编程控制单片机 [打印本页]

作者: 看狡灿鼻    时间: 2018-11-7 20:01
标题: 来和菜鸟一起编程控制单片机
大家好,我是一名学习电子的菜鸟,深知网络上一定有很多大神,如果觉得我发的东西对你太简单了的话不要嘲笑哈,因为大神都是从菜鸟走过来的。仅仅是觉得电子蛮好玩的,所以发一发。

今天我们一起编程用单片机实现一个简单的跑马灯。后面会再演示其他操作。
另外想对刚刚开始学习电子的同学们说点题外话,学习单片机有什么用呢?如果你是一名电子信息类专业的同学,那么学习单片机是很有必要,动手操作更是必须要会的,这对你大四的毕业设计很有帮助,很多题目都可以用单片机很轻松的就搞定。另外学习了单片机,能帮助你更好的过渡到更复杂的嵌入式的学习,能帮助你在未来的工作中完成复杂产品的开发。只会模数电那些理论知识是不够的,因为出来工作了,很少会有什么工作是要你用模数电知识搭一个什么运放电路之类的,基本都是芯片的应用,软件硬件的结合来完成复杂功能的符合商业要求的整机产品的开发。为什么很多大学生毕业了找不到工作,因为没有动手能力,还连基本理论都没学好。当然我们的高等教育也有问题,太多乱七八糟的没有必要的课程了,什么思修啦近代史啊马克思主义啦。好了不废话了,下面开始讲正题吧。

学校里最具代表性的单片机就是51单片机,今天我们用单片机控制8颗发光二极管,实现流水灯效果。
下面是硬件电路,我们将LED灯正极接电源,负极依次接到单片机P1口上,LED上串连100欧的电阻限流,这样当芯片IO口送出低电平时,LED灯就亮了。
[attach]16143[/attach]
下面是要实现流水灯的C程序代码
------------------------------------------------------------------------------------------------------------------------------------
#include
#include /*解释,这里在头文件包含了一些常用的函数库,并不是都需要*/
#include
#include
#define unchar unsigned char
#define uint unsigned int
void main()
{uint i,j; (定义两个整型数)
while(1) /*while里面写1,目的是要程序无限循环永不停息的执行*/
{
P1=0xfe; /* 0Xfe是十六进制的写法,就是二进制的11111110,我们把P1口最低为写低电 平, 这样就点亮最低位的LED灯*/
for(i=400;i>0;i--) */ 两个for循环嵌套,目的是让程序空跑一段时间实现延时大概零点几秒钟*/
for(j=110;j>0;j--);
P1=0xfd; /*和上面同理,fd=11111101,点亮第二个LED*/
for(i=350;i>0;i--)
for(j=110;j>0;j--);
P1=0xfb;
for(i=300;i>0;i--)
for(j=110;j>0;j--);
P1=0xf7;
for(i=250;i>0;i--)
for(j=110;j>0;j--);
P1=0xef;
for(i=200;i>0;i--)
for(j=110;j>0;j--);
P1=0xdf;
for(i=150;i>0;i--)
for(j=110;j>0;j--);
P1=0xbf;
for(i=100;i>0;i--)
for(j=110;j>0;j--);
P1=0x7f;
for(i=50;i>0;i--)
for(j=110;j>0;j--);
}
}
-------------------------------------------------------------------------------------------------------------------------------

好啦我们将上面的程序编译后放到单片机仿真软件中运行仿真,也可以下载到真的电路板上运行,下面就是实际动态效果,如果你觉得还算有趣的话就关注我吧
[attach]16144[/attach]




欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/) Powered by Discuz! X3.2