昨晚,做了一次电灯泡
来源:电子工程专辑 发布时间:2023-03-05 分享至微信
昨晚回家后,打算再做一次这种电灯泡。于是找出尘封已久的单片机,20分钟编写并调完程序,烧录后,跑起来,看动图:
一. 单片机那些往事
当初,为了钱,从嵌入式转到了互联网,面试准备得还可以,没啥问题。不过转行的头几个月,还是挺痛苦呢,很多东西要学。
虽然,现在工作与单片机硬件软件完全无关,却喜欢偶尔弄下这些玩意儿,体会下程序直接(无操作系统)运行在硬件上的感觉。
下图是我曾经的单片机,其型号是STC89C52,有点爱不释手的感觉,每次整理房间都要去擦擦它的灰尘,然后再观摩一番:
下图是我曾经玩的单片机开发板,好久不玩这些东西了。这些玩意儿,我还是挺熟悉的。很喜欢用程序直接控制硬件的感觉。
Lab Center Electronics公司做出了proteus软件,可以仿真和调试单片机。用Keil生成hex后,直接导入到单片机中。
二. 单片机点亮灯泡
下面,我们用C语言编写程序,来控制8051单片机。先来看用单片机点亮灯泡,其实就是置高电平操作,C语言程序如下:
#include<reg51.h>
void main()
{
while(1)
{
P1 = 1;
}
}
三. 单片机闪烁灯泡
#include<reg51.h>
void delay(int n)
{
int i = 0;
int j = 0;
for(i = n; i > 0; i--)
{
for(j = 110; j > 0; j--)
{
;
}
}
}
void main()
{
P1 = 1;
while(1)
{
P1 = 1 - P1;
delay(1000);
}
}
delay函数的作用是延时, main函数中 P1 = 1 - P1 的作用是让D1右边的电平在0和1这两个值中轮流变化,即对应高低电平。
四. 单片机玩流水灯
#include<reg51.h>
void delay(int n)
{
int i = 0;
int j = 0;
for(i = n; i > 0; i--)
{
for(j = 110; j > 0; j--)
{
;
}
}
}
int a[8] = {1, 2, 4, 8, 16, 32, 64, 128};
void main()
{
int i = 0;
P1 = 1;
while(1)
{
P1 = a[i++];
delay(1000);
if(i == 8)
{
i = 0;
}
}
}
可见,与C语言相比,汇编语言繁杂冗余太多了。我有点搞不懂,为什么很过高校还用汇编语言来写单片机程序。
本文很简单,但能在20分钟内把上述流水灯做出来,还是小小开心,毕竟有很久没玩了。嵌入式宝刀,依旧不老。
最后,想说一下,学这些东西,一定要多实践多调试。在结束本文之前,我手绘流水灯玩一下,烘托出节日气氛。
👆长按图片,扫码申请👆
[ 新闻来源:电子工程专辑,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论
暂无评论哦,快来评论一下吧!
电子工程专辑
开创IC领域,共创美好未来!
查看更多
相关文章
ARM CEO:伦敦二次上市非优先事项
2024-10-24
uLED投影灯MLP3000首次亮相
2024-09-25
SpaceX星舰第五次试飞成功
2024-10-16
热门搜索