在这里,我我想分享一下我学习51单片机的经验:
1、我从来没说过51是基础。如果我这么说,也请把这句话理解为微机原理是基础。
2、 51单片机的操作本质上是寄存器的操作,其他单片机也是如此。库只是一个供用户使用的界面。
3、汇编语言在工作中很少用到,所以它知道这一点很好。
4、51单片机的P0口很特殊。
5、C语言是C语言,51单片机是51单片机,算法是算法,外围电路是外围电路,传感器是传感器,通信设备是通信设备,电路图是电路图,PCB图是PCB图,仿真是仿真。
再也不用51的时候,C语言的知识,算法,单片机最小系统的搭建技巧,传感器和通讯器件的使用方法,画电路图和PCB图,当然还有仿真。
6、51 MCU是这样的:
1.png(462.76 KB,下载次数:4)
下载附件并保存到相册中。
上传于2016年9月18日15: 24
7、当程序调试不尽如人意时,静下心来好好查查资料。51单片机最大的好处就是网上信息多,你的问题别人肯定遇到过。作为一个学习者,问别人可能更方便,但你可以不要一直培养解决问题的能力。
8、有些单片机初学者觉得看套路不好,看答案一样有罪恶感。其实对于初学者来说,读套路,了解套路,然后再看套路的注解,才是最好的学习方法。做实验、设计课程、做词条的时候也有可能移植程序,你不不需要自己重新实施(当然老师布置的作业还是独立完成比较好)。
但是要清楚,移植一个程序不等于学会一个单片机,最重要的是要知道这个例程是什么样的框架和实现方法。初始化了哪些寄存器,进行了哪些引脚配置,调用了哪些功能,这些功能是如何实现的,设置了哪些中断,哪些片上资源(UART、ADC等。)被使用,哪些状态被查询,如果状态改变(触发事件)将做什么,等等。由此,整理出一个流程图,知道如何实现。基本上这个套路就差不多学会了。
概述51单片机上拉电阻的作用;
1.它用于为OC和OD门电路提供驱动能力。
以OC(集电极开路)电路为例:
比如达林顿管的集成块ULN2003(其实是复合三级管)。如图所示,内部电路是集电极开路。
2.png(16.25 KB,下载次数:4)
下载附件并保存到相册中。
上传于2016年9月18日15: 24
其他设备可以如果没有拉出电阻,则不能在高电平下驱动。因为三极管闭合时,电流流动没有路径,更谈不上驱动。它这和在这个单片机的P0端口加一个拉电阻的原理是一样的。
2.增加高层潜力
P1端口外接一个44矩阵键盘。另外,P1.0~P1.3多路复用,与ULN2003连接,控制驱动步进电机。
实验中遇到的问题:键盘连接ULN2003时,可以工作;去掉ULN2003后,键盘工作正常,ULN2003工作正常。(注:这两部分根本不要同时工作)
分析:因为键盘的结构,无非就是两块金属的连接或者断开,但是可以连接到ULN2003后不能正常工作,这意味着连接到ULN2003影响了P1端口级别的变化。用万用表测得的电压,单片机输出高电平时,P1.0~P1.3约为1V,P1.4~P1.7约为4.3V,所以AT89s52的判断电位约为1.3V,这样,P1.0~P1.3始终处于低电平,键盘可以根本实现不了扫描功能。
解决方法:只要提高P1港在高水平上的潜力,它就能正常工作。
(1)在P1端口和ULN2003之间串联一个电阻来分压,这样可以提高电平。
(2)将上拉电阻连接到P1端口,并与P1端口的内部电阻并联,以减小电阻
另外,我在做LCD实验的时候,数据线用的P0口不能工作正常,没有不显示字符。但是乱动数据线就能完成显示,但显示现象不正常。人物不是一次写出来的,乱搞几次就能写出全部内容。正常情况下,所有内容应该一次显示。原因是我的P0口有6个端口并联了3个led。因为从数据中发现,端口P0的每个端口最大可吸收10mA电流,总电流不能超过26mA电流。这样我的总电流达到了40mA,怀疑是驱动的问题,所以拆了几个二极管,显示一切正常。看起来问题已经解决了,但还是有问题。于是经过几次测试,发现只有去掉端口P0.7的并联二极管,另接一个LED到其他端口,显示器才能正常工作。但是端口P0的吸收电流是38mA,比26mA大很多,所以吸收电流太大不是问题。仔细分析发现,当端口并联三个二极管时,相当于加了一个700欧姆左右的电阻,于是去掉二极管,换上一个1k欧姆的电阻,液晶无法显示。
我仔细分析后认为,由于P0.7是LCD忙信号的返回线,当该端口返回高电平时,说明LCD正在处理数据,无法接收新的数据。当它返回到0时,意味着它是空闲的,可以接收新的数据。
这样上拉电阻过小,液晶回到低电平时可能会高于1.3V(at89s 52高低电平的判定电位)。MCU收到后,不会认为是低电平,当然也不会显示(编程时检测到忙信号,继续检测)。
总结:上拉电阻的选择也是有要求的,不是越高越好,也不是越低越好。你得根据你的需求来选择。这也可以称为阻抗匹配。
标签:电阻单片方法