本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
大家好 我今年大三 学期末有单片机的课设 在实验室的其中一个实验是让6位7段 数码管显示123456
我做的不太成功 想回家用porteus重新做一遍,遇到了些问题 我认为很初级 估计各位很快就能解答出来。
1.我选了P87C51RC+作为单片机的芯片来仿真,在设计图上放一个芯片,然后什么都不连,直接play,结果是p1,p2,p3的引脚都呈现高电平(就是引脚上方有红色小方块),但是作为数据总线的p0口显示的是灰色的小方块,我上网查了一下,表示的是高阻态。于是我在keil里写了MOV P0,#00H烧录到单片机中 但还是没有反应,无论我做什么,都呈现高阻态,又上网查了一下,似乎要加个上拉电阻,可我在实验室用试验箱做的时候没有这么复杂,怎么回事。
2.刚开始,我没有想一步成功,就想让8255的A口输出我想要的数值,目的是掌握51与8255相结合的用法,因为有上面的那个问题,于是我没有用51的p0口接8255的D0-D7,而是用的p2口。
接着我直接定义了a0 a1接到51上引脚的电平,都是低电平,目的是指向A口,"RD非"接1,“WD非”接0,低电平接CS非。程序就是
mov p3,#00h
mov dptr,#7f03h
mov a,#80h
movx @dptr,a
mov dptr,#7f00h
mov a,#07h
movx @dptr,a
end
结果是a口输出的是7f00h的高位"7f",我把"7f"改成什么就输出什么。完全没有体现我的控制字,和A口地址的作用。这就是我最大的一个困惑:单片机如何用ABC口地址和控制字来控制A0A1以及输出?
A0A1。而且我觉得我的接线有问题。
写得有点长,这些问题困扰了我好几天了,望各位解惑,谢谢!
附同学做成功的代码:
复制代码- ORG 0000H
- LJMP MAIN
- ORG 0030H
- MAIN:MOV R0,#7AH
- MOV R6,#06H
- MOV A,#01H
- LOOP:MOV @R0,A
- INC A
- INC R0
- DJNZ R6,LOOP
-
- A1:LCALL DIR6
- NOP
- SJMP A1
- DIR6:MOV R0,#7AH
- MOV R3,#0FEH
- MOV A,R3
- DIR1:MOV DPTR,#7F00H
- MOVX @DPTR,A
- INC DPTR
- MOV A,@R0
- ADD A,#0DH
- MOVC A,@A+PC
- MOVX @DPTR,A
- ACALL DELAY
- INC R0
- MOV A,R3
- JNB ACC.5,DIR2
- RL A
- MOV R3,A
- AJMP DIR1
- DIR2:RET
- SEGP:DB 3FH,06H,5BH,4FH,66H,7DH,07H,7FH,6FH,17H,7CH
- DELAY:MOV R5,#02H
- DELAY1:MOV R4,#0FFH
- DELAY2:
- DJNZ R4,DELAY2
- DJNZ R5,DELAY1
- RET
- END MAIN
复制代码
|
|