|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
今年暑假,我留校学习了8位单片机的知识,当时只是无聊到想打发一个暑假。随着学习的深入,我发现单片机是一个很实用的东西。一个小小的芯片,通过改变引脚的电压值,就可以控制外围的设备和电路。通过烧写一些程序,我们可以让单片机实现一些特定的功能,这点和FPGA板子有异曲同工之处。在日常生活中,单片机的应用无处不在,一些比较简单的机器,如洗衣机,电冰箱,空调甚至非智能汽车都会以单片机作为核心模块而扩展成一个具有特殊功能的工具。可以说成千上万片单片机构成了电子产品的世界。我们电脑中的CPU从某种程度上也可以理解为某种特殊化的单片机,那应当算上是比较高端的单片机了,其功能之强大能达到每秒计算的千万40次。
记得暑假时买的8位dofly单片机,适合于初学者和业余爱好者把玩的东东。一个笔记本大小的板子上焊上了不下于40个芯片,共同构成了多功能的外部电路,其核心是STC51单片机,DIP封装,也就一个手指大小的芯片,市场价仅5元左右,却包含了今年我们所学的微机原理实验板上的所有内容。通过特定的编程和烧写软件,下载到单片机中,用杜邦线连接好外围电路,就可以实现目标功能。举一个简单的例子,C语言是大家都学过的高级编程语言,之所以说它高级完完全全是因为它离我们用户比较接近,而离计算机较远(距离计算机较近的语言是汇编,机器语言则是对计算机直接操作了),这种语言的好处就是易于理解和使用,但是由于需要转换成低级语言的缘故,所以效率比较低下。先用C语言举一个最简单的例子:
如果我想让板子上的一个LED发光,我只需要在LED的正端加上一个合适的电压即可。那么我在对单片机编程时只需要写如下的代码:
#include
main()
{
while(1)
0x80=0;
}
把这个代码下载到单片机中就OK了,0X80是十六进制的单片机P1口地址,将它赋值为0(负逻辑,实际相当于赋予1),就会送出一个电压,将P1口连接到LED上,LED就会发光了。
当然使一个LED发光只是最简单的例子,你可以加入其它语句使其完成更复杂的效果,同样相同的电压加在不同的元件上会有不同的效果,如果这个电压加在蜂鸣器端子上,蜂鸣器就会发声了,这从某种程度上就实验了报警。先来上几张8位单片机的效果图,先一睹为快:
→以上是8位单片机部分
32位单片机是在8位单片机上进一步发展的新型单片机,可实现更为复杂的功能,这就好比早期的CPU8086与今天电脑普遍采用的CPU酷睿系列一样。32位单片机实现的功能十分强大,已经可以运行一些比较智能的操作系统,相当于一台配置低端的电脑,今天之所以写这篇文章,完完全全是为了给现在这个32位机子上的操作系统拍个遗照,因为今晚我就要将它清除去完成我自己的实验了,先来上几张图,晚上拍的,效果不太好,不过可以看出大概:
32位单片机的电路板,中间的那个正方形芯片就是STM32单片机
网上可以购买的触摸电容屏,我们手机上使用的就是这种,通过手指的压力是屏幕上的某点与屏幕下的感电层接触,进而检测到这点被按下,实现一定功能。
摄像机镜头模块。这是一个摄像头,把它连接到板子上在编一个启动代码就可以进行图像采集。
J-link模块,功能是硬件下载,调试程序不可少的工具。
串口通讯线,可以实现多台具有串口通信功能的机器之间的通讯,用它连接单片机与电脑,可实现两者之间信息的传输。
USB线,供电和连接使用。这个不必解释。
特定的J-link模块传输线。下载时使用的连接工具。
红外遥控器,代码编好后可遥控单片机完成特殊功能。
- -这个就不用说名字了吧,任天堂红白机适用的游戏机手柄,可以在单片机上打游戏,当然这个游戏也是得我们自己写出来,或者从原本的小霸王游戏机的NES游戏中转换,写入单片机实现的。
好吧,开机,屏幕上显现电路板各部分的状态。
即使是会说哈的汤姆猫,也可以在单片机上运行。
用单片机来打小霸王游戏超级玛丽,也是不错的选择, 就是速度有点慢,因为我的晶振频率貌似低了。
以上的所有效果都需要我们自己写入,包括在屏幕哪个地方显示菜单,都需要自己预先把坐标值写好,写入hex文件中,再用J-link烧进去,这是一个十分漫长的过程。因为这么多的代码需要不停地敲得话也得需要一整天,更别说每个功能之间的调试了,当时为了烧这个程序搞了我一晚没睡觉。我在想,如果在搞毕业论文的设计时,我以这个为方向,自己焊接一个电路板,以市场上出售的单片机为核心,外部焊接上晶振,电容,电阻,显示屏,通讯模块,电话卡插槽,是否就能把手机做出来,当然这个是一个较为困难的选择。简单一点的,我有个学长正在尝试做收音机,当然这个都不是说说才能做出来的,即使是失败,也不能轻易放弃,因为成功始终在失败的后方。 |
|