标题: 我建议初学者学 51单片机直接使用三总线接法,暂时不要学模拟接口 [打印本页]

作者: lyonkon    时间: 2022-3-5 01:00
标题: 我建议初学者学 51单片机直接使用三总线接法,暂时不要学模拟接口
      我学习51单片机很长时间了,C语言学废了。转学汇编,现在能用汇编语言实现一些简单的想法。比较之前学C语言的时候,像1602lcd用模拟端口接法,既要延时 又要写写数据程序 写指令程序。很麻烦,       我C语言没学下去在lcd显示控制这方面卡了好长时间,以至于没有机会做想做的东西,整天消耗在控制硬件上失败再调试 再失败再调试。真正的算法没来得及应用,已经被模拟端口操作整的晕头转向。     51单片机可以用三总线模式,接lcd1602就像图上那样,编程的时候根本不需要考虑什么时序 什么延时 和写数据指令。数据直接塞进去就显示。不是很好吗。模拟总线操作真的让人感到痛苦。特别是新手。
      像18b20 这些单总线器件 更是让人难受,当你学会这些器件操作的时候,你当初学习单片机的想法 目的 激情,可能已经消散殆尽。

      作为初学者,我真正经历这种痛苦。我不想再在控制时序方面折磨自己。

       所以,我对初学者的建议是,直接使用8位并口器件接P0口,用控制三总线法 来控制器件  尽量不使用需要模拟端口的器件。
       这样你可以集中精神在算法 逻辑 功能上 ,这样学起来会更好。

无标题.jpg (57.86 KB, 下载次数: 55)

无标题.jpg

作者: GEECGYJ    时间: 2022-3-5 08:24
LCD1602也可以用I2C转接模块驱动,两个I/0就可以了!!
作者: xiexugang    时间: 2022-3-5 08:54
接口信号时序都是基础的知识,稍加练习,都容易掌握的.
作者: a399288395    时间: 2022-3-5 14:00
与C和汇编没有关系; 对于各种周边外设, 首先自己仔细的把时序图理清楚,51 本来就是通过IO口模拟各种时序, 如果时序都搞不懂, 我想你搞汇编一样也搞不明白;
作者: lyonkon    时间: 2022-3-6 08:44
比如用总线法接LCD1602.
要在80H地址显示字符A,
MOV R1,80H    ;80H值传递给R1
MOV A,0X41     ;0X41传递给累加器
MOVX @R1,A    ;将0x41传递到片外80H地址
end
用汇编总共用3句话,
用C语言应该更简单      
片外寻址指令   80H   =  "A";
只用一句话。
这样可以让新手直接针对数据和算法和目标, 而不是针对硬件
作者: 风158    时间: 2022-3-6 10:02
LCD1602是常用模块,有现成驱动程序,搬过来嵌入主程序就行。增加硬件不麻烦吗?
作者: hp34401a    时间: 2022-3-8 17:55
呵呵,我觉得LZ还是初学者。。。
作者: auxccc    时间: 2022-3-9 18:40
我只会C呢,和你相反。
作者: datouyuan    时间: 2022-3-11 08:44
lyonkon 发表于 2022-3-6 08:44
比如用总线法接LCD1602.
要在80H地址显示字符A,
MOV R1,80H    ;80H值传递给R1

新手就不需要知道函数吗?(汇编叫子程序,C叫函数)
不管是总线法,还是接口法,甚至更换MCU,都可以封装成同一个函数lcd1602_write(cmd,dat).
这才是让新手“直接针对数据和算法和目标”的正确方式。
作者: 君工创    时间: 2022-3-11 09:27
其实学单片机,串口.并口都要学。这是基础。我使用12864一直都是使用串口,为了节省IO口。还没用过并口。
作者: myemcu    时间: 2022-3-11 10:05
你选择了Intel时序。
作者: lyonkon    时间: 2022-3-14 10:40
myemcu 发表于 2022-3-11 10:05
你选择了Intel时序。

你说之前我还不知道有Intel时序,现在我知道了
作者: 一事无成    时间: 2022-3-15 23:04
只会C,表示单总线确实难搞,主要是延时不准,I2C倒是用的挺顺手。
作者: rsx9583    时间: 2022-3-16 08:30
我感觉我就没楼主遇到的这些问题,因为我都是抄别人的程序




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1