Chinaunix首页 | 论坛 | 博客
  • 博客访问: 203822
  • 博文数量: 36
  • 博客积分: 2501
  • 博客等级: 少校
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-18 23:27
个人简介

时间就是一切。

文章分类

全部博文(36)

文章存档

2023年(1)

2017年(2)

2016年(6)

2014年(1)

2009年(1)

2008年(15)

2007年(10)

我的朋友

分类:

2007-05-28 23:57:26

8051I/O口扩展流水灯

注:该课件是理论与实际相结合

作者:DEJUN

指导教师:NSM(副教授)

 

第一部分   设计结构框图及设计电路…………2

第二部分   8051单片机…………………………6

第三部分   2764程序存储器……………………7

第四部分   74LS373锁存器……………………8

第五部分   74LS02P或非门……………………9

第六部分   调试…………………………………9

第七部分   总结…………………………………12

第一部分

设计结构框图

设计结构框图:使用8051芯片的P.0p0~p7)口作片外输入输出;2764作片外程序存储器;74LS373作锁存;74LS02P作片选。

   在设计过程中,总共分三大总线:数据线、地址线、控制线.

1.地址总线  P2口提供高8位地址线,此口具有输出锁存的功能,能保留地址信息;由P0口提供低8位地址线。由于P0口是地址、数据分时使用的口线,所以为保存地址信息,需外加地址锁存器锁存低8位的地址信息。一般用单片机的ALE正脉冲信号的下降沿控制锁存时刻。

2.数据总线  P0口提供。此口是双向数据总线的通道口。

 

3.控制总线  扩展系统时常用的控制信号为地址锁存信号ALE,片外程序存储器读选通信号 ,访问外部程序存储器的控制信号 ,复位信号RESET,第二功能状态下P3口的某些控制如 等。

 

元件清单:

元气件名称

规格

数量

单片机

80c51

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

导线

Φ3.5mm

若干

 

第二部分

8051单片机

8051引脚排列及功能:

主电源引脚Vss20脚)和Vcc40脚);

时钟电路引脚XTAL119脚)和XTAL218脚),与晶振连接.控制信号引脚RST9脚),RST复位(9脚)输入24个时钟脉冲周期宽度以上H电平复位;ALE30脚)与74LS37311脚连接,锁存扩展地址低位字节控自信号,或EPROM编程时输入编程脉冲;

PSEN29脚)与276422脚连接,访问片外程序存储器是输出负脉冲作片选控制信号,12个始终周期2次生效,但访问片外RAM时无效;/EAVpp31)程序储存地址的选择,H时先选片内超址时自动跳到片外ROM,或编程时施加编程电压。

 

 

第三部分

2764程序存储器

EPROM存储器:27648K 8)给出它的引脚: 

A0A11——地址输入线;

D0D7——数据线,三态双向,读时为输出线,编程时为输入线,禁止时为高阻;

——片选信号输入,低电平有效;

——读选通信号输入线,低电平有效;

——编程脉冲输入线,低电平有效;

VPP——编程电源输入线;

VCC——电源,一般为+5V

GND——地线。

该部分主要受8051单片机的PSEN29脚)的控制。由该脚输出“0”或“1“来使该芯片“写”或“读”。实现数据的传输。

 

 

第四部分

74LS373锁存器

74LS373锁存器引脚:

其中D7D0为输入数据端,Q7Q0为输出数据端,G为输入数据锁存端, 为输出数据控制端。只要 端接高电平,锁存器输出呈高阻态;当G接正脉冲时,可将输入数据D7D0暂存在锁存器内部;一旦当 端施加低电平信号,暂存数据才反映到输出数据端Q7Q0上。将 端始终接一低电平,保持输出常通。使G端与单片机的ALE30脚)相连。

在一个指令周期中ALE两次出现高平,当我们用MOVX @DPTRA送数到外部存储器时,因为MOVX是单字节双周期指令,先从ROM中读取指令,然后对外部RAM进行写操作,在第一个机器周期,在ALE出现一个高电平时,读取指令(即操作码)有效,第二机器周期时,进行外部RAM访问,此时ALE信号无关,所以,第二机器周期不产生取指操作,利用74LS373锁存作用,锁存低8位地址线A0~A7。当ALE为低电平时,并输出供系统使用。  

第五部分

74LS02P或非门

74LS02P或非门引脚:

74LS0242输入或非门,用来作为74HC573的片选控制信号的来源,它是将80C51/WR16脚)分别与P2.5P2.6P2.7P2.8或非后送到4片灯控74HC73G脚,H电平选中。 

第六部分  

调试

使用最简单的程序来调试硬件的正确与否。

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:《单片机初级教程》北京航空航天大学出版社 张迎新 杜小平 樊桂花 雷道振 编著

阅读(3128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~