标题: 51单片机三总线开发板开始设计 [打印本页]

作者: lyonkon    时间: 2022-3-26 20:18
标题: 51单片机三总线开发板开始设计
使用两片51单片机,一片做外围设备接口,另一片作主控。

IMG_20220326_195841.jpg (2.77 MB, 下载次数: 191)

IMG_20220326_195841.jpg

作者: w1179benp    时间: 2022-3-27 06:57
关注。加油!若资料全,照仿。
作者: man1234567    时间: 2022-3-27 11:53
很好的设计。问题是字写得太丑,建议用电脑软件
作者: lyonkon    时间: 2022-3-27 20:58
w1179benp 发表于 2022-3-27 06:57
关注。加油!若资料全,照仿。

好的,全力以赴
作者: lyonkon    时间: 2022-3-27 21:00
man1234567 发表于 2022-3-27 11:53
很好的设计。问题是字写得太丑,建议用电脑软件

下面这张图,我用正楷字写的,你看咋样
作者: lyonkon    时间: 2022-3-27 21:07


作者: Hephaestus    时间: 2022-3-27 21:10
没看出来三总线,数据总线和地址总线配合才能工作,只能算一个总线。
不过8051比较奇葩,有code和xram两套各64k寻址范围的总线,不过楼主只用了xram一条总线。
作者: lyonkon    时间: 2022-3-28 00:34
本帖最后由 lyonkon 于 2022-3-28 12:14 编辑
Hephaestus 发表于 2022-3-27 21:10
没看出来三总线,数据总线和地址总线配合才能工作,只能算一个总线。
不过8051比较奇葩,有code和xram两套 ...

因为89c52片内有8KB ROM,所以没有扩展片外ROM。但是扩展了32K片外RAM.HM62256芯片。
数据总线为P00--P07  
地址总线P00--P07经74ls373 锁存为16位地址线的低8位,P20--P27作为地址线高8位 ,就是16位地址线。
片外寻址64kB RAM,也寻址64KB ROM.  操作寻址片外RAM的时候,单片机WR RD引脚向RAM芯片发送脉冲时序。读取片外ROM的时候,单片机PSEN引脚向片外ROM发送脉冲时序。所以虽然总线接在一起,却不会混淆。
上面这张图单画了控制总线,怕数据总线和地址总线都画上去,线路看起来会很乱,所以想分开来画的。

作者: Y_G_G    时间: 2022-3-28 14:20
搞这个是干嘛使的呢?
作者: lyonkon    时间: 2022-3-29 00:48


作者: lyonkon    时间: 2022-3-29 06:29
Y_G_G 发表于 2022-3-28 14:20
搞这个是干嘛使的呢?

51单片机桌面系统
作者: 啤酒瓶子老大    时间: 2022-3-29 10:59
楼主你可能没注意你学习单片机的书的出版日期,严重被书中的内容带跑偏了。现在谁还用这个62256,一个个手推车8H8K64不够用吗?要不32G12K64。又373又138,累不累。就一个12864的时钟和一堆IO口搞那么复杂。真是有点直接给自己挖坑,面对实际一点好不好。就算做什么大型工程,也不能用89C52啊,分分钟被了。有啥意思呢?
作者: lyonkon    时间: 2022-3-29 21:18
先摆拍一下,顺便晒一下老开发板的侧脸

作者: lyonkon    时间: 2022-3-29 21:54
啤酒瓶子老大 发表于 2022-3-29 10:59
楼主你可能没注意你学习单片机的书的出版日期,严重被书中的内容带跑偏了。现在谁还用这个62256,一个个手 ...

谢谢你的建议和推荐,我知道我做的东西在大师和时代面前是不容易跟得上的。但我现在做的东西是简单的易学的。我下面又拍了一张照片,上面有两种开发板,一个是现在主流的,老手在教 新手在学的 也是坛里学习的主流      “市售板,另一个就是我现在正在做还没有完成的。你能看出来12864 和时钟,那么我问你一个问题:两种板,做同样功能的12864 时钟,两者操作的着重点是什么 ?
现在大家学单片机,都是学操作端口,却忽略了真正重要的东西,内存!
如果照片上两种开发板,你只能选择一种,你会选择哪一种。
市售开发板的开发重点在于操作端口。
我做的电路板,开发重点在于操作内存。
我想,这是单片机的两条不同的道路。也望能理解。
作者: lyonkon    时间: 2022-4-9 15:29


作者: Y_G_G    时间: 2022-4-9 16:21
看了半天都不知道这是在干嘛
51单片机桌面系统是个什么东西?
做时钟还用DS12C887这玩意?DS3231它不香吗?能省下多少个IO,而且还可以和24C02共用IIC总线
STC89C52是三块五一片
STC8A8K_64Pin的是四块三一片
多花8毛能把一堆74138,一堆上拉电阻,那个比单片机本身还贵的8位ADC:ADC0809
我甚至都不知道你做的这个是什么东西?是学习板还是个带12864的时钟?
单片机这种东西,没有捷径,但也没有杨过式另辟蹊径,老老实实的写代码验证,写代码验证,画板验证,画板验证,一遍又一遍单片机只是一个技术性的东西,技术就摆在那,你去学就行,前辈们已经指明了道路在那,你去走就行
你要是想像杨过一样,走不寻常道路,要么你的东西就在你的桌子上吃灰,要么你就沉浸你自己一个人世界里,像阿Q一样
在这个每个月有两次免费打样的年代,我实在看不出你那一堆线存在的意义是什么?
这是我画的开发板,所有IO有标志,哪个单口在哪里都知道,怎么用,用杜邦线插上就行,它不比你那一堆洞洞板好?



作者: lyonkon    时间: 2022-4-9 20:00
Y_G_G 发表于 2022-4-9 16:21
看了半天都不知道这是在干嘛
51单片机桌面系统是个什么东西?
做时钟还用DS12C887这玩意?DS3231它不香吗? ...

这块板子,我从构思到焊接完成大概用了3个月。因为买不到总线方式的51成品板,只能动手自己焊接。板上32k内存,ps2键盘接口,12864显示,还有时钟芯片。完成之后 就相当于一台电脑。所以我说是51桌面系统。
接下来就是测试这块板子各个器件是否正常工作。
作者: Y_G_G    时间: 2022-4-9 22:21
lyonkon 发表于 2022-4-9 20:00
这块板子,我从构思到焊接完成大概用了3个月。因为买不到总线方式的51成品板,只能动手自己焊接。板上32k ...

关键是你这玩意能干嘛?是不是还得自己写程序?
花那么大功夫去搞个这东西.连个ADC都没有,学单片机没有ADC,这能学会单片机机?
你看你这电路,连个上拉电阻都没有!也就是你运气好,12864是有内部上拉的,接个别的器件,能跑得来?
所有的芯片旁边,一个滤波电容都没有
你这么恐怖的电路,也就只有你觉得这是简单易学的
你花那么多的成本去搞这东东,两个单片机加一个内存,整体性能能跟一片20块的STM32比吗?
作者: 天ノ忆    时间: 2022-4-13 12:08
我的评价是:
自己感动自己系列
虽然很努力但是作用并不大
现在无论是做产品还是做教学,都不会用你这种,姑且算电路板吧
也不会手画电路图的
换句话说,能力够的人不会用你这电路板,能力不够的人也不会用你这电路板
作者: hhdsdy    时间: 2022-4-13 13:09
搞不懂为什么要这么使用,以及为什么要用两片单片机
作者: hhdsdy    时间: 2022-4-13 13:15
非要玩老元件,这个的功能够齐全的了,我学单片机,就是自己焊接组装的SCB-2-51单片单板机,还自行增加了台式微打端口,修改监控程序使之可以进行简单的反汇编并打印
作者: dalaoshi    时间: 2022-4-13 15:08
这些都是单片机早期使用的元件,现代单片机就是从这些元件的实际使用中逐渐发展起来的,现在买一粒几块钱的单片机,什么都在里面了,写几行代码就能用起来,但对内部总线的运作不甚了了,楼主这项工作,是一种返祖现象,人类胚胎的成长过程也要把全部进化过程演示一遍,最后出生是才是个人样,所以不要讥笑蜥蜴,鱼,鸡,我们胚胎时期都曾经有过这个样。

成才都需要有个学习过程,楼主经过这番折腾,以后肯定对计算机硬件的了解比一般人强些,成才的机会也大些。
作者: 啤酒瓶子老大    时间: 2022-4-14 10:39
顶起来,持续关注中。
作者: lyonkon    时间: 2022-4-18 20:51
今天是分享喜悦的日子,近十天的检查调试,每走一步都是相当的难,辛酸就不讲了。今天lcd显示终于完成。字符显示的那一刻真的是很开心。波形大的是51单片机psen引脚,波形小的是P2.7引脚。

一,74ls138同时只能片选1只引脚,而lcd rs,rw 需要两者引脚,所以用138作lcd rs rw控制不合适。
二,51单片机的EA引脚要接
三,lcd第三脚,就是调整对比度的要接,不接不显示。
四,P0口驱动lcd,不加上拉电阻,可以显示
五,12兆晶振51单片机 总线法驱动lcd1602,12864,时序没问题
下面是测试代码
                  SJMP        MAIN
WRCMD:                                                                                   //写指令子程序
                                push        ACC                    
                  lcall        READ12864BF
                                  POP        ACC                    
                                  MOV        A,R3
                                  MOV        DPTR,#009000H                  //lcd写指令地址 9000H
                                  MOVX        @DPTR,A
                  RET
WRDAT:                                        //写数据子程序      
                         push        ACC         
                                  lcall        READ12864BF
                                  POP        ACC        
                                  MOV        A,R4
                                  MOV        DPTR,#00B000H                  //lcd写写数据地址        B000H
                                  MOVX        @DPTR,A               
                  RET
INIT:                                                                                  //lcd初始化程序
                MOV                R3,#0X38               
                LCALL        WRCMD
                MOV                R3,#0X38                     
                LCALL        WRCMD
                MOV                R3,#0X0c                       
                LCALL        WRCMD            
                MOV                R3,#0X06
                LCALL        WRCMD              
                MOV                R3,#0X01                       
                LCALL        WRCMD
                RET
MAIN:                                         //主程序                     
                                LCALL        INIT                              
                    D1:         
                                                                MOV          R3,#0x80        
                                LCALL        WRCMD
                                                                   MOV        R4,#0X35                           //5
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x81
                                                                LCALL        WRCMD
                                                            MOV        R4,#0X31                           //1
                                                                LCALL        WRDAT
                                                                   MOV         R3,#0x82
                                                                LCALL        WRCMD
                                                                MOV        R4,#0X48                           //H
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x83        
                                LCALL        WRCMD
                                                                   MOV        R4,#0X45                          //E
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x84            
                                                                LCALL   WRCMD
                                                                MOV        R4,#0X49                          //I
                                                                LCALL        WRDAT
                                                                MOV         R3,#0x85
                                                                LCALL        WRCMD
                                                                MOV        R4,#0X2E                          //.
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x86        
                                LCALL        WRCMD
                                                                   MOV        R4,#0X43                          //C
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x87
                                                                LCALL   WRCMD
                                                                MOV        R4,#0X4F                          //O
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x88
                                                                LCALL   WRCMD
                                                                MOV        R4,#0X4D                          //M
                                                                LCALL        WRDAT        
                                                                SJMP        $
READ12864BF:                                    //判断忙子程序
                 MOV        DPTR,#0XD000           //lcd读指令地址          D000H
                MOVX        A,@DPTR         
                JB        ACC.7,READ12864BF
            ret
END      



作者: lyonkon    时间: 2022-4-18 21:01
本帖最后由 lyonkon 于 2022-4-18 22:43 编辑
hhdsdy 发表于 2022-4-13 13:15
非要玩老元件,这个的功能够齐全的了,我学单片机,就是自己焊接组装的SCB-2-51单片单板机,还自行增加了台 ...

这个是老哥本人设计的吗软件硬件设计功力深厚啊。
作者: lyonkon    时间: 2022-4-18 23:13
本帖最后由 lyonkon 于 2022-4-19 08:25 编辑

本来程序中准备定义数组的,奈何数组不肯显示

DSC00079.JPG (4.57 MB, 下载次数: 169)

P2.7引脚输出波形

P2.7引脚输出波形

DSC00078.JPG (4.12 MB, 下载次数: 160)

psen引脚输出波形

psen引脚输出波形

DSC00083.JPG (4.45 MB, 下载次数: 160)

DSC00083.JPG

作者: lyonkon    时间: 2022-4-25 14:45
双机通讯测试完成,没想到被使用中断卡了十几天,从机程序一直改,一直改不成功,今天在本论坛两位老师指正下,完成了双机数据交换测试。至此板上的除了时钟芯片没有检测,其他器件都可以正常工作了。lcd1602地址会自动加1,导致满屏跑数字
下一步ASCII键盘测试,不知道会不会被串口卡。
下面就是被中断卡住了的原因
汇编情况下
一,程序中如果使用中断,那么该中断地址不能被占用。
外部中断0入口地址    0003H
定时计数器T0溢出中断 000BH
外部中断1入口地址    0013H
定时计数器T1溢出中断 001BH
串口中断    0023H
定时计数器T2溢出中断  002BH    (89C52系列含有T2)

作者: wysh_2004    时间: 2022-4-25 23:38
佩服佩服,不但玩起了三总线,还玩了汇编,精神可嘉。
作者: lyonkon    时间: 2022-4-26 01:12
wysh_2004 发表于 2022-4-25 23:38
佩服佩服,不但玩起了三总线,还玩了汇编,精神可嘉。

雕虫小技,不敢班门弄斧
作者: lyonkon    时间: 2022-5-8 21:24
作为初学者,稍不留神就被卡。卡在Ps2键盘上折腾俩周了,现在还没有好方法,也不想加芯片。因为基础不好,现在在串口,计数器,中断之间来回绕。不断尝试,希望能成功
作者: lyonkon    时间: 2022-11-13 15:20
框架写大体差不多了,下一步准备写内容。 https://v.youku.com/v_show/id_XNTkxODA1NDcxMg==.html?spm=a2hcb.profile.app.5~5!2~5~5!3~5!2~5~5~A先测试一下手工计算
作者: 1261867136qq    时间: 2022-11-25 08:44
突然感觉,51单片机要当PC机,不加芯片是不行的。就目前这些芯片来说,就算当年乔布斯和盖兹 ,也不能用这么几个芯片做出个PC机吧?
作者: macadam    时间: 2022-11-25 09:18
有点当年苹果机的样子。
作者: feeling1791    时间: 2022-11-25 16:17
楼主应该是前辈!具51汇编和硬件功底!
有这基础,3个月就可学会C语言,看康辉的C语视频教程。然后芯片先转STC,得意的汇编程序用C改写一次,成功后,可选择马上转STM32,您会体会到现在芯片的强大,以前的8位芯片扩展I/O,扩展内存,双机通讯,都太过时了。现在的单片机,资源非常丰富,用不完的内存和寄存器,各种定时器,数量巨大的GPIO且多功能,多的用不完的ADC高精度检测端口,DMA,PWM,I2C,I2S,USART,SPI,USB,看门狗,CAN。。。你想要的键盘,LED、LCD、LCM,各种你想要驱动的外设都可编程实现,用C,好玩的很!
作者: Longan.Wang    时间: 2022-11-25 17:16
呵呵!看到最后,还是不知道楼主做的是什么!
作者: 大漠落日    时间: 2022-11-28 21:23
20多年前,你这还是可以学习的,现在已经落后了,我当时学的时候还是比C51更老的8751,那才真是三总线,单片机是个祼机,没有程序,程序是在片外的。
作者: lyonkon    时间: 2022-11-29 23:15
Longan.Wang 发表于 2022-11-25 17:16
呵呵!看到最后,还是不知道楼主做的是什么!

就相当于用键盘输入程序,然后运行输入的程序。类似于basic。可以实时控制硬件。但basic我现在知识不够。支持汇编程序我想尝试一下
作者: lyonkon    时间: 2022-11-29 23:36
feeling1791 发表于 2022-11-25 16:17
楼主应该是前辈!具51汇编和硬件功底!
有这基础,3个月就可学会C语言,看康辉的C语视频教程。然后芯片先 ...

实在惭愧,几年前学一段时间c当时想写64卦的。学了大概好几个月,实在做不出东西来,连12864都没学会21年底学的汇编,一路学一路做就这块板子。其实我算初学者,stm32前几天我也想试试看的,毕竟没学过32。自己做的板子修怕了,1602接触不良,又也找不到原因所以用开发版试机。刚好从坛友那学了一点硬件知识,准备板子改进一下。随便改线路。准备这块板子完成再学32
作者: lyonkon    时间: 2022-11-30 07:21
1261867136qq 发表于 2022-11-25 08:44
突然感觉,51单片机要当PC机,不加芯片是不行的。就目前这些芯片来说,就算当年乔布斯和盖兹 ,也不 ...

51的内部RAM低128字节暂时是够用的,剩下高128字节内存做用户内存,只有8行。的确有点小。51单片机比6502多个程序存储器,和io端口,所以做起来省不少事。
作者: lyonkon    时间: 2022-12-11 19:55
刚学汇编的时始做这块板到今天快一年,因为51单片机没有总线模式成品板选择所以必须自己做。板子经过多少次修改,也多次想过换更高级别的mcu,但是我还没有学过那些mcu,就是51单片机我还是初学者。到今天,这块板子终于做到自己满意了。以后可以专心学习51汇编了,至于后期程序能不能跑现在还不清楚。
但是板子,今天完工,非常开心!!

作者: 美琴的备胎    时间: 2022-12-22 14:29
楼主,支持你,想做就做,不要管别人怎么说,因为你会的东西比别人多
作者: a399288395    时间: 2023-2-26 13:31
啤酒瓶子老大 发表于 2022-3-29 10:59
楼主你可能没注意你学习单片机的书的出版日期,严重被书中的内容带跑偏了。现在谁还用这个62256,一个个手 ...

同意你的观点,站在“巨人”的肩膀上往上爬就好了;没有必要再去研究“巨人”为什么会长这么高的。

这也好比玩电脑;现在都是i7 的CPU了; 只要重点去发掘如何把i7 超频到i9的性能;不至于还有人想着把 奔腾4超到5GHZ吧;

难道还有人在玩“塞班”?

所以, 有现成的更高速更方便的大容量STC 或者更高级的STM32  回过来再折腾C52的片外扩展 就没有必要了;24C02 我都好久没有驱动过了;MCU内置EPROM方便好用;


他可能还不知道AT89C52的ATMEL都已经被MicroChip 收购了;



要跟上时代的步伐;不然就会被时代淘汰;当然,了解下是可以没有必要去深究!

作者: zmc419    时间: 2023-2-27 21:45
复古30年前的单片机结构,扩展一下,将程序下到外部RAM中运行更好。
作者: lyonkon    时间: 2023-3-8 12:35
a399288395 发表于 2023-2-26 13:31
同意你的观点,站在“巨人”的肩膀上往上爬就好了;没有必要再去研究“巨人”为什么会长这么高的。

这 ...

把自己灵魂写进电脑,然后加块太阳能电池,就可以永远活着,我是抱着这个期待学习单片机的,在几年前。自从学了单片机之后,就一再退而求其次,退一步的目标是做一个机器人,陪自己散步聊天,再退一步人工视觉,又退一步听觉。在方位计算的时候,我不知道用什么公式。于是又退一步,12864,1302,c语言写一个包含64卦的时钟。直到最终卡在了那个地方。于是放下了几年,直到去年学了汇编,就一路做到了现在这个样子。现在我离第一目标仍然遥遥无期,现在我学习主要用我这块开发版。我本想依据这个设计再改善改善,参选论坛名人堂评选,在民族电子工业史上留下我的名字,但版主不肯
。所以下一步只能把这个线路做成板子出售为下一步,声音方位辨别器,或者两足平衡行走凑点力量。这块板子是可以运行外部内存中的代码的。

作者: lyonkon    时间: 2023-3-17 20:41
现在进入数据调试阶段,比我预想的要晚。P1口接了一组led,当输入p1赋值指令后无论赋值多少,p1总是等于0x37.

作者: angmall    时间: 2023-3-20 23:44
梅花易数C语言



梅花易数C语言.zip

86.29 KB, 下载次数: 4, 下载积分: 黑币 -5


作者: lyonkon    时间: 2023-4-6 09:18
片外内存赋值,welcom第一个字母地址是1700h。测试了一下。 点亮第一个led灯下面是sfr赋值,用P1口测试 ,51单片机不知道开机时候能不能设置ie 和计数器,以后测试吧 。现在加法表达式无法确定,用ffffh=#ffh+#ffh 地址=立即数+立即数。ffffh=P1+FFFFH,地址=sfr+地址 因为变化很多 ffffh》=ffffh!#ffh ,如果要是设置变量,a=ffffh+p1 p1=a+b ffffh=p1+a 。  因为内存 sfr 端口可以赋值  也可以接收 就造成运算表达式 繁琐。像P1=SBUF+#43h。我希望能有简单的方式就是直接地址不参与表达式像 SBUFF=B+C 改成 A=B+C       SBUFF=A 这样

作者: lyonkon    时间: 2023-4-12 16:12
https://v.youku.com/v_show/id_XNTk1NTE5NDM1Ng==.html     手动测试流水灯,和sfr





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