时间就是一切。
全部博文(36)
分类:
2007-05-28 23:57:26
8051-I/O口扩展流水灯
注:该课件是理论与实际相结合
作者:DEJUN
指导教师:NSM(副教授)
第一部分 设计结构框图及设计电路…………2
第二部分 8051单片机…………………………6
第三部分 2764程序存储器……………………7
第四部分 74LS373锁存器……………………8
第五部分 74LS02P或非门……………………9
第六部分 调试…………………………………9
第七部分 总结…………………………………12
设计结构框图
设计结构框图:使用8051芯片的P.0(p0~p7)口作片外输入输出;2764作片外程序存储器;74LS373作锁存;74LS02P作片选。
在设计过程中,总共分三大总线:数据线、地址线、控制线.
1.地址总线 由P2口提供高8位地址线,此口具有输出锁存的功能,能保留地址信息;由P0口提供低8位地址线。由于P0口是地址、数据分时使用的口线,所以为保存地址信息,需外加地址锁存器锁存低8位的地址信息。一般用单片机的ALE正脉冲信号的下降沿控制锁存时刻。
2.数据总线 由P0口提供。此口是双向数据总线的通道口。
元件清单:
元气件名称 |
规格 |
数量 |
单片机 |
|
1 |
EPROM |
2764 |
1 |
8D锁存器 |
74LS373 |
5 |
或非门 |
74LS02 |
1 |
电解电容 |
25V22uf&&1.0uf |
1&&5 |
瓷片电容 |
30p |
2 |
电阻 |
200 |
1 |
1k |
1 | |
300 |
32 | |
晶体振荡器 |
11.059MHz |
1 |
按键开关 |
|
1 |
发光二极管 |
红色 |
9 |
黄色 |
11 | |
绿色 |
12 | |
管脚 |
40p |
1 |
28p |
1 | |
20p |
5 | |
14p |
1 | |
万用板 |
33mil*60mil |
1 |
导线 |
Φ |
若干 |
第二部分
8051单片机
8051引脚排列及功能:
主电源引脚Vss(20脚)和Vcc(40脚);
时钟电路引脚XTAL1(19脚)和XTAL2(18脚),与晶振连接.控制信号引脚RST(9脚),RST复位(9脚)输入24个时钟脉冲周期宽度以上H电平复位;ALE(30脚)与74LS373的11脚连接,锁存扩展地址低位字节控自信号,或EPROM编程时输入编程脉冲;
PSEN(29脚)与2764的22脚连接,访问片外程序存储器是输出负脉冲作片选控制信号,12个始终周期2次生效,但访问片外RAM时无效;/EA或Vpp(31)程序储存地址的选择,H时先选片内超址时自动跳到片外ROM,或编程时施加编程电压。
第三部分
2764程序存储器
EPROM存储器:2764(8K
①A0~A11——地址输入线;
②D0~D7——数据线,三态双向,读时为输出线,编程时为输入线,禁止时为高阻;
③
④
⑤
⑥VPP——编程电源输入线;
⑦VCC——电源,一般为+5V;
⑧GND——地线。
该部分主要受8051单片机的PSEN(29脚)的控制。由该脚输出“0”或“1“来使该芯片“写”或“读”。实现数据的传输。
第四部分
74LS373锁存器
74LS373锁存器引脚:
其中D7~D0为输入数据端,Q7~Q0为输出数据端,G为输入数据锁存端,
在一个指令周期中ALE两次出现高平,当我们用MOVX @DPTR,A送数到外部存储器时,因为MOVX是单字节双周期指令,先从ROM中读取指令,然后对外部RAM进行写操作,在第一个机器周期,在ALE出现一个高电平时,读取指令(即操作码)有效,第二机器周期时,进行外部RAM访问,此时ALE信号无关,所以,第二机器周期不产生取指操作,利用74LS373锁存作用,锁存低8位地址线A0~A7。当ALE为低电平时,并输出供系统使用。
第五部分
74LS02P或非门
74LS02P或非门引脚:
74LS02是4个2输入或非门,用来作为74HC573的片选控制信号的来源,它是将
第六部分
调试
使用最简单的程序来调试硬件的正确与否。
org 0000h ;定义开始地址
strat:
mov R0,#0000h ;清零R0
mov r0,#08h
mov a,#0ffh ;发光二极管全灭
mov dptr,#0fffh ;设置片外指针
L0:cpl a ;发光二极管全亮
lcall delay
movx @dptr,a
djnz r0,L0
mov dptr,#0efffh
mov r0,#08h ;
L1:rr a
movx @dptr,a
lcall delay
djnz r0,L1
mov a,#000ffh ;将A中的值复位
movx @dptr,a
mov dptr,#0dfffh
mov r1,#08h
mov a,#0feh
L2:rr a
movx @dptr,a
lcall delay
djnz r1,L2
mov a,#000ffh
movx @dptr,a
mov dptr,#0bfffh
mov r1,#08h
mov a,#0feh
L3:rr a
movx @dptr,a
lcall delay
djnz r1,L3
mov a,#000ffh
movx @dptr,a
mov dptr,#07fffh
mov r1,#08h
mov a,#0feh
L4:rr a
movx @dptr,a
lcall delay
djnz r1,L4
mov a,#000ffh
movx @dptr,a
ljmp strat
以下为延时程序。
delay:nop
nop
mov r2,#0ffh
m1:mov r3,#0aah
m2:mov r4,#0aah
m3:djnz r4,m3
m4:djnz r3,m4
djnz r2,m1
ret
以上程序经运行检查无错误。但是不是本人预先所想象的那种效果,本来是想全亮八次的(闪烁八次);结果只亮了4 次后来。发现标号(L0)放错了。因该放在:mov a,#0ffh这里才对。
第七部分
总结
本次制作可说是:酸、甜、苦、辣什么味都有。由于是初次使用《Protel 99 SE》做PCB板,一点经验也没有,所以在制作的时候走了很多弯路,犯了许多地低级的错误。绘制电路图有错(没有放置电源(在PCB中及时纠错)、连线交叉(调试发现)、元器件地I/O口没有检查)、PCB放置元件有错(X方向翻转)等等许许多多地错误导致花费了很多地时间在上面,完全是事倍功半。不过还好俺有耐心也有信心去继续做下去。在多次地折腾下终于把它折腾出来开了。不过现在从做一我想不会象以前那样费劲了。
参考文献
1:多数来于网上资源
2:《单片机初级教程》北京航空航天大学出版社 张迎新 杜小平 樊桂花 雷道振 编著