华南师范大学实验
学生姓名: 学号:2007230342--
专业:电子信息科学与技术(非师范) 年级、班级:07电子非师4班
课程名称:单片机原理实验 实验项目:现实人体视觉暂留特性测试实验
实验类型:验证 实验时间:2009、11、19
实验指导老师: 实验评分:
一、实验目的
1.进一步熟悉利用 Kei l C51 软件编辑、调试(包括仿真调试、单步调试)和运行单片机程序的步骤和方法。
2.通过实验熟悉51单片机的定时/计数器,并掌握它们的应用。
3.掌握键盘、LED显示的工作原理。
4. 学习编写定时和外中断服务程序
二、实验设备
PC机一台,实验教学板一块
三、实验
1.按实验题目要求设计好硬件电路,画出电路原理图。
2. 要求画出主程序、子程序、中断服务程序流程图,设计出相应程序并给程序加上较详细的注释。
3. 在Keil C51编译环境下完成程序编译。
4. 通过下载线和下载软件STC-ISP V39将编译后的程序下载到单片机。
5. 运行程序,用实验结果验证程序的正确性。若不能达到要求,分析原因、查找错误,修改源程序,再次汇编、连接,重新下载、运行,直至达到题目的要求。
四、程序流程图
程序流程图
主程序
五、程序清单
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME_0
ORG 001BH
LJMP TIME_1
;-----------------主程序-----------------------
MAIN: MOV TMOD,#11H ;置定时器0、1方式1定时
MOV SP,#6FH ;置堆栈
MOV R7,#8 ;400ms计算次数
MOV R0,#10 ;10Hz
CLR P2.5
MOV P3,#7FH ;检测K1键
STA1: JB P3.3,$
JB P3.3,STA1
JNB P3.3,$ ;K1被按下
SHE: MOV TH0,#3CH ;重置定时器初值
MOV TL0,#0B0H
MOV TH1,#4CH
MOV TL1,#00H
MOV P2,#10H ;发光二极管输出使能,P2.4=1
MOV R0,#10
SETB TR0 ;开定时器
SETB TR1
MOV IE,#8AH ;中断使能
MOV P3,#7FH ;检测K2键
STA2: JB P3.2,$
JB P3.2,STA2
JNB P3.2,$ ;K2被按下
CLR TR0 ;关定时器
CLR TR1
DD:
LCALL DISP ;调用显示子程序
MOV P3,#7FH ;再次检测K1键
STA3: JB P3.3,DD
LCALL DELAY30MS ;去抖动
JB P3.3,STA3
JNB P3.3,$ ;K1被按下
AJMP SHE ;重新开始
;----------------LED动态显示子程序-----------------
DISP: PUSH ACC
MOV A,R0
MOV B,#10
DIV AB
MOV 31H,A ;十位送缓冲区31H单元
MOV 30H,B ;个位送缓冲区30H单元
SETB RS0 ;换工作寄存器组
MOV R1,#00H ;设定显示时间
MOV R0,#30H ;显示缓冲区首址送R0
MOV A,@R0 ;显示各位送A
MOV DPTR,#TAB3 ;指向字形表首址
MOVC A,@A+DPTR ;查表取得字形码
MOV P0,A ;字型码送p0口
MOV P2,#02H
DJNZ R1,$ ;延时0.5ms
DJNZ R1,$ ;延时0.5ms
INC R0 ;指向下一缓冲区地址
MOV A,@R0 ;缓冲区数据送A
MOV DPTR,#TAB3 ;指向字形表首址
MOVC A,@A+DPTR ;查表取得字形码
MOV P0,A ;字型码送p0口
MOV P2,#01H
DJNZ R1,$ ;延时0.5ms
DJNZ R1,$
MOV P0,#0FFH ;关发光二极管
CLR RS0 ;恢复第0组工作寄存器
POP ACC
RET
TAB3: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;-------------T0中断子程序------------------- TIME_0: CLR EA
PUSH ACC
PUSH PSW
SETB EA
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R7,RENM
MOV R7,#08H
INC R0 ;频率指针加1
CJNE R0,#100,RENM ;频率指针未超过99,继续循环
MOV R0,#10 ;频率指针超过99,指针回10
RENM: CLR EA
POP PSW
POP ACC
SETB EA
RETI
;------------------T1中断子程序---------------
TIME_1: CLR EA
PUSH ACC
PUSH PSW
SETB EA
MOV A,R0 ;查表,重装各频率所对应的计数初值
MOV DPTR,#TAB1
MOVC A,@A+DPTR ;置TH1
MOV TH1,A
MOV A,R0
MOV DPTR,#TAB2
MOVC A,@A+DPTR ;置TL1
MOV TL1,A
CPL P0.0
CLR EA
POP PSW
POP ACC
SETB EA
RETI
TAB1: DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,4CH,5CH,6AH,75H,7FH,88H,8FH,96H,9CH,0A1H
DB 0A6H,0AAH,0AEH,0B1H,0B5H,0B8H,0BAH,0BDH,0BFH,0C1H,0C4H,0C5H,0CFH,0C9H,0CBH
DB 0CCH,0CEH,0CFH,0D0H,0D1H,0D3H,0D4H,0D5H,0D6H,0D7H,0D8H,0D8H,0D9H,0DAH,0DBH
DB 0DCH,0DCH,0DDH,0DEH,0DEH,0DFH,0DFH,0E0H,0E0H,0E1H,0E2H,0E2H,0E6H,0E3H,0E3H
DB 0E4H,0E4H,0E5H,0E5H,0E5H,0E6H,0E6H,0E7H,0E7H,0E7H,0E8H,0E8H,0E8H,0E8H,0E9H
DB 0E9H,0E9H,0EAH,0EAH,0EAH,0EAH,0EBH,0EBH,0EBH,0EBH,0ECH,0ECH,0ECH,0ECH,0ECH
DB 0EDH,0EDH,0EDH,0EDH,0EDH
TAB2: DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,5DH,00H,8AH,6EH, 00H,80H,1EH,00H,43H
DB 00H,49H,2FH,0BDH,00H,00H,0C5H,55H,0B7H,0EEH,00H,0EFH,0C0H,74H,0FH
DB 92H,00H,5AH,0A2H,0D9H,00H,19H,25H,24H,17H, 00H,0FFH,0B4H,80H,44H
DB 00H,0B5H,62H,0AH,0ABH, 46H,0DBH,6CH,0F7H,7EH,00H,7EH,0E0H,6EH,0E0H
DB 4FH,0BAH,22H,88H,0EAH, 49H,0A6H,00H,58H,0ADH, 00H,51H,0A0H,0ECH,37H
DB 80H,0C7H,0CH,50H,92H,0D3H,12H,4FH,8CH,0C6H, 00H,38H,6FH,0A5H,0DAH
DB 0DH,40H,71H,0A2H,0D1H
DELAY30MS: SETB RS1 ;2MS延时
MOV R3,#2
DD1: MOV R4,#30
DD2: MOV R5,#100
DJNZ R5,$
DJNZ R4,DD2
DJNZ R3,DD1
CLR RS1
RET
END
上善若水于华师大
2009.11.9