单片机实训——主任务为电子秒表_第1页
单片机实训——主任务为电子秒表_第2页
单片机实训——主任务为电子秒表_第3页
单片机实训——主任务为电子秒表_第4页
单片机实训——主任务为电子秒表_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学校代码: 10128单片机工程实践题 目: 电子秒表(任务一) 目 录一、设计目的1二、设计任务12.1任务内容1基本任务自选任务2.2任务分工1三、框图3.1各任务硬件框图3.11蜂鸣器自检23.12键盘自检23.13 LED 显示器自检23.14 A/D自检53.15自选任务电子秒表 63.2各任务流程框图3.21蜂鸣器自检63.22键盘自检73.23 LED 显示器自检73.24 A/D自检83.25自选任务电子秒表8四、程序清单4.1蜂鸣器自检144.2键盘自检 154.3 LED 显示器自检164.4 A/D自检174.5自选任务电子秒表 19五、设计体会25六、参考资料271、

2、设计目的: 通过以51单片机为核心的智能仪表的硬件调试过程,掌握具有蜂鸣器、按键、LED 显示、A/D等接口电路的单片机应用系统的设计思想和方法,并熟悉定时器中断、外部中断系统的使用,进而对51单片机有更深层次的认识。 学习应用系统软件的模块化设计方法,通过源程序的编辑、汇编或编译、链接、仿真调试,合理分工,完成给定的任务。通过上述过程提高学生工程实践能力和素质。二、设计任务:2.1任务内容:基本任务:完成蜂鸣器、键盘、七段LED 显示器、A/D的自检程序设计。(1)蜂鸣器自检 要求:利用程序实现两种以上声音。 (2)键盘自检 要求:确定键盘正确。 (3)七段LED 显示器自检 要求:确定LE

3、D 显示器每一段均正确。(4) A/D自检要求:确定AD7109工作是正常的。自选任务:电子秒表功能:(1)显示时间范围059分59秒 (2)跑表时间范围059分59秒硬件环境:LED显示器、键盘等2.2任务分工:李晓乐(组长):各个小任务主程序编制,大任务的主程序编制,大任务程序流程图的绘制张保增:完成各个小任务流程图的编制与整理,部分大任务程序流程图的绘制,完成分配给的子程序的编制,实验报告整理与排版三、 框图(包括自检和任务的框图):1、 硬件编程框图 (1)蜂鸣器自检硬件编程框图P2.3 电路图:(2)键盘自检硬件编程框图P1P2.5P2.6P2.7LED蜂鸣器 电路图:(3)LED自

4、检硬件编程框图字型口字位口P0P2.7P2.6P2.5电路图:(4)A/D自检硬件编程框图A/D7109LED显示 P2.5P2.6P2.7模拟量输入P1INT0 电路图:(5)自选题目电子秒表编程框图:键盘K1:计时、暂停、续计K2跑表清零K3切换时间表单片机LED显示器138译码器2、各个任务框图(1) 蜂鸣器自检程序框图 开始蜂鸣器停 调用延时1 蜂鸣器响止蜂鸣器停调用延时2 蜂鸣器响蜂鸣器停调用延时3蜂鸣器响蜂鸣器停调用延时4蜂鸣器响 返回(2)键盘自检框图 开始 关蜂鸣器 键盘采样 否是否有键按下 调用延时去抖动 是 采样,按键是否在 否 是 蜂鸣器响 返回(3)LED显示器自检程序

5、框图一闪一闪显示good动态显示12345检测每一位数码管的每一段 开始(4)A/D自检程序框图 开始 蜂鸣器响数据溢出显示低八位中低四位数据显示低八位中高四位数据显示高八位中低四位数据 初始化 外部中断读高八位数值送是否溢出Y采集数据送值N 结束NY(5)自选题目:电子秒表框图一级框图 结束 定时器中断按条件改变初始值 初始化 跑表显示状态LED显示秒表 初始化 开始 二级框图 主程序 开始 初始化 按键扫描 K1? 秒表显示 跑表显示为00:00 K1? 跑表计时 跑表暂停 K1? K1? 跑表续计时 K1? K2? K3? K2? K3? N YY N NN NYNY下面为定时器框图,定

6、时器0用于跑表定时,定时器1用于秒表定时,以下两个框图中不满足条件的则直接跳出定时器中断服务程序(要不图画的比较乱) 定时器1中断 定时器0中断 初始值设定为50ms初始值设定为5msR3是否为20 R4是否为2 MIAO02加一MIAO22加一Miao02=10? miao22=10? Miao01加1miao11加1Miao01=6 ? miao11=10? Fen2加1 Fen22加1Fen2=10? Fen22=10? Fen1加1 Fen21加1 结束 Fen1清0Fen1=6? 结束 Fen21清0Fen21=10? 子程序框图(主要): 开始1)初始化框图缓冲区清零设定初置、开中

7、断、栈顶设计结束2)蜂鸣器延时子程序框图返回 关蜂鸣器 延时使蜂鸣器响 开始 3) 显示子程序框图(包括秒表显示与跑表显示) 返回 延时显示位选数码管 开始送偏移地址,送要显示的内容25四、 程序清单:(1)蜂鸣器自检START: ORG 0000H QQ: MOV R5,#50H ;第一声音延迟时间AA: SETB P2.3 CLR P2.3 ;第一个声音 LCALL DELAY1 LCALL DELAY2 SETB P2.3 LCALL DELAY1DJNZ R5,AA MOV R5,#0A0HBB: SETB P2.3 CLR P2.3 ;第二个声音 LCALL DELAY1 SETB

8、P2.3 LCALL DELAY1DJNZ R5,BB MOV R5,#60H CC: CLR P2.3 ;第三声音 LCALL DELAY1 SETB P2.3 LCALL DELAY2 DJNZ R5,CC MOV R5,#60HDD: CLR P2.3 ;第四声音 LCALL DELAY3 SETB P2.3 LCALL DELAY2 DJNZ R5,DD LJMP QQ;* ; 三个延时程序,2最长,1次之,3最短;*DELAY1:MOV R6,#05H ;外循环次数 延时2.5毫秒LOOP1:MOV R7,#0F8H ;内循环次数 NOPLOOP2:DJNZ R7,LOOP2 DJN

9、Z R6,LOOP1 RETDELAY2:MOV R6,#14H ;延时 1秒LOOP21:MOV R7,#0F8H NOPLOOP22:DJNZ R7,LOOP22 DJNZ R6,LOOP21 RETDELAY3:MOV R6,#14H ;2.3毫秒LOOP31:MOV R7,#0A4H NOPLOOP32:DJNZ R7,LOOP32 DJNZ R6,LOOP31 RET(2) 键盘自检:START:MOV P0,#0C1: LCALL SEL8 ;开按键三态门 MOV P1,#0FFH MOV A,P1 CJNE A,#0FFH,C2 ;是否有键按下 SJMP C1 ;如没有键按下 循

10、环等待C2:LCALL DELAY1 ;有键按 下降沿消抖 CJNE A,#0FFH,K1 SJMP C1 ;再次判断是否真正按下K1: JB ACC.0,K2 ;判断第一;个按键 ,可屏蔽拨盘影响K11: LCALL SEL3 ;选择数码管第三位 MOV A,#0CH MOV P0,A LCALL BEEP LCALL SEL8 ;打开三态门重新 取此键值,实现“键连锁保护 MOV P1,#0FFH MOV A,P1 JNB ACC.0,K11 ; LCALL DELAY1 JNB ACC.0,K11K2: JB ACC.1,K3K21: LCALL SEL3 MOV A,#0B6H MOV

11、 P0,A LCALL BEEP LCALL SEL8 MOV P1,#0FFH MOV A,P1 JNB ACC.1,K21 LCALL DELAY1 ;松开按键上升;沿去抖动 JNB ACC.1,K21K3: JB ACC.2,K4K31: LCALL SEL3 MOV A,#9EH MOV P0,A LCALL BEEP LCALL SEL8 MOV P1,#0FFH MOV A,P1 MOV A,P1 JNB ACC.2,K31 LCALL DELAY1 ;松开按键上 ;升沿去抖动 JNB ACC.2,K31K4: JB ACC.3,c3K41: LCALL SEL3 MOV A,#0

12、CCH MOV P0,A LCALL BEEP LCALL SEL8 MOV P1,#0FFH MOV A,P1 JNB ACC.3,K41 LCALL DELAY1 ;松开按键 上升沿去抖动 JNB ACC.3,K41c3: AJMP C1;* ;延时子程序DELAY1: MOV R6,#1AH LOOP1:MOV R7,#0F8H NOP LOOP2:DJNZ R7,LOOP2 DJNZ R6,LOOP1 RETDELAY2: MOV R3,#0FFH LOOP21: MOV R2 ,#0F8H NOPLOOP22: DJNZ R2,LOOP22 DJNZ R3,LOOP21 RET;*;

13、 蜂鸣器响子程序BEEP: CLR P2.3 LCALL DELAY2 SETB P2.3 LCALL DELAY2 RET;*; 打开三态门,位选子程序SEL8: SETB P2.7 SETB P2.6 SETB P2.5 RETSEL3: CLR P2.7 SETB P2.6 CLR P2.5 RET(3) LED自检程序:LED0 EQU 30HLED1 EQU 31HLED2 EQU 32HLED3 EQU 33HLED4 EQU 34HMAIN: LCALL SEL1 ;测第1个数码管 LCALL ST2 LCALL SEL2 ;测第2个数码管 LCALL ST1 LCALL SEL

14、3 ;测第3个数码管 LCALL ST1 LCALL SEL4 ;测第4个数码管 LCALL ST1 LCALL SEL5 ;测第5个数码管 LCALL ST1 MOV R0,#30H MOV R1,#1H MOV DPTR,#TAB SS: MOV A,R1 ;动态显示12345 MOVC A,A+DPTR MOV R0,A INC R0 INC R1 CJNE R1,#7DH,SS MOV R3,#32H WW: LCALL DISPLAY ;动态显示;12345延时一段时间 DJNZ R3,WW LCALL SEL7 LCALL DELAY MOV R0,#30H ;缓冲区送;对应的ta

15、b值,最终显示 good MOV R0,#0CH INC R0 MOV R0,#0DEH INC R0 MOV R0,#7EH INC R0 MOV R0,#7EH INC R0 MOV R0,#0BCH ZZ: MOV R3,#0AH ;最终显示;为good,在此循环KK: LCALL DISPLAY DJNZ R3,KK LCALL SEL7 LCALL DELAY SJMP ZZ;* ;第2到第5个数码管段选显示子程序 ST1 : MOV A,#01H T1: MOV P0,A ACALL DELAY MOV P0,#00H ;消 RL A JNB ACC.0,T1 RET;*;第一个数

16、码管单独段选显示,避开二;极管检测子程序ST2: MOV A,#01H MOV P0,A ACALL DELAY MOV A,#04H MOV P0,A ACALL DELAY MOV A,#08H MOV P0,A ACALL DELAY MOV A,#80H MOV P0,A ACALL DELAY RET;* ;检查每一段时的延迟时间子程序 DELAY: MOV R6,#0FFH LOOP1: MOV R7,#0FFH NOPLOOP2: DJNZ R7,LOOP2 DJNZ R6,LOOP1 RET;*;动态扫描延时时间DELAY1: MOV R6,#2aH LOOP21: MOV R

17、7,#2aH LOOP22:DJNZ R7,LOOP22;延时3.425ms DJNZ R6,LOOP21 RET;* ;位选子程序 SEL1: CLR P2.7 CLR P2.6 CLR P2.5 RETSEL2: SETB P2.7 CLR P2.6 CLR P2.5 RETSEL3: CLR P2.7 SETB P2.6 CLR P2.5 RETSEL4: SETB P2.7 SETB P2.6 CLR P2.5 RETSEL5: CLR P2.7 CLR P2.6 SETB P2.5 RETSEL7:SETB P2.5;关全部位选 CLR P2.6 SETB P2.7 RET;* ;动

18、态显示子程序DISPLAY:LCALL SEL7 MOV P0,LED0 LCALL SEL1 LCALL DELAY1 MOV P0,LED1 LCALL SEL2 LCALL DELAY1 MOV P0,LED2 LCALL SEL3 LCALL DELAY1 MOV P0,LED3 LCALL SEL4 LCALL DELAY1 MOV P0,LED4 LCALL SEL5 LCALL DELAY1 RET TAB:DB 7EH,0CH,0B6H,9EH, 0CCH,0DAH ,0FAH,0EH,0FEH,0DEH,0FFH(4) A/D自检程序:AD_BUF EQU 30HORG000

19、0H;;程序入口AJMPMAIN;;转向主程序ORG0003H;;外部中断0入口地址AJMPINT00;;转到中断服务子程序ORG0030HMAIN: SETB EA ;开总中断 SETB EX0 ;开INT0中断 MOV DPTR,#TAB ;tab表头地址START: MOV R1,#AD_BUF ; 将;D_BUF中存放采集的高八位的数据,;将高八位赋给r1 MOV A,R1 MOVC A,A+DPTR ;将要显的;对应数据从tab表中取得 MOV P0,A ;显示 MOV R2,A LCALL SEL2 LCALL DELAY1 INC R1 MOV A,R1 ;从31H中取低八位 M

20、OV B,A ;暂存A中的数据于B SWAP A ; 高八位与第四位交换 ANL A,#0FH ; 处理出7109;低八位中的高四位数据 MOVC A,A+DPTR;在tab中查;要显示的对应数据 MOV P0,A ; 显示 MOV R3,A LCALL SEL3 LCALL DELAY1 MOV A,B ANL A,#0FH ;处理7109;低八位中的低四位数据 MOVC A,A+DPTR ;在tab中;查找要显示的对应数据 MOV P0,A ;显示 MOV R4,A LCALL SEL4 LCALL DELAY1;因为超出5伏对应显示的数据为000,;用以下三条语句判断是否为000,若;

21、超出范围,蜂鸣器报警 CJNE R2,#7EH,START CJNE R3,#7EH,START CJNE R4,#7EH,START LCALL BEEP SJMP START ;主程序循环运行;*;数码管动态扫描延时时间DELAY1: MOV R6,#2AH LOOP1: MOV R7,#2AH LOOP2:DJNZ R7,LOOP2;延时3.425ms DJNZ R6,LOOP1 RET;*;蜂鸣器响延时时间 DELAY2: MOV R6,#0FFH LOOP21: MOV R7 ,#0F8H NOPLOOP22: DJNZ R6,LOOP22 DJNZ R7,LOOP21 RET;*

22、SEL2: SETB P2.7 ;位选第二个数码管 CLR P2.6 CLR P2.5 RET SEL3: CLR P2.7 ;位选第三个数码管 SETB P2.6 CLR P2.5 RET SEL4: SETB P2.7 ; 位选第四个数码管 SETB P2.6 CLR P2.5 RET;*;蜂鸣器响 BEEP: CLR P2.3 LCALL DELAY2 LCALL DELAY2 SETB P2.3 RET;* ;中断程序INT00: CLR EA ;关中断 MOV R0,#AD_BUFAD1: CLR P2.0 CLR P2.1 ;读高8位 MOV A,P1 SETB P2.1 MOV

23、C,ACC.4;是否溢出? JC AD2 ANL A,#0FH MOV R0,A INC R0 CLR P2.2 ;读低8位 MOV A,P1 SETB P2.2 SETB P2.0 MOV R0,A ;最终采集 ;到的7109的高八位数据放在30;中 低八位数据放到31h中 AD2: SETB EA RETI;*TAB:DB 7EH,0CH,0B6H,9EH,0CCH,0DAH,0FAH,0EH,0FEH,0DEH,0EEH,0F8H,72H,0BCH,0F2H,0E2H ; tab表,对应显示0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,;*自选题目:电子秒表程序:; 本

24、小组任务:电子秒表; 硬件环境:LED显示器、键盘等; 组别:7; 小组成员:李晓乐、张保增; 功能描述:通过K1键控制跑表的暂停、;计时、续计时的功能,K2键为清零键,以; 便从新计时,K3键为返回秒表键; FEN1 EQU 30H FEN2 EQU 31H MIAO1 EQU 32H MIAO2 EQU 33H FEN21 EQU 34H FEN22 EQU 35H MIAO21 EQU 36H MIAO22 EQU 37H ORG 0000H AJMP MAIN ORG 000BH AJMP T01 ORG 001BH AJMP T11MAIN: MOV 30H,#0H MOV 31H,

25、#0H MOV 32H,#0H MOV 33H,#0H MOV TMOD,#11H ;工作方式1 MOV TH0,#0EEH MOV TL0,#15H ;装初值,每50ms MOV TH1,#4CH MOV TL1,#0D0H SETB EA ;开总中断 SETB ET0 ;开定时器0中断 SETB ET1 ;开定时器1中断 SETB TR1 ;启动定时器1 MOV SP,#40H LCALL MBXIANSHI LCALL AJSAOMIAO JB ACC.0,START1;按下则顺序执行,;没按下则跳转 LCALL DELAY2 ;延时去抖动 LCALL AJSAOMIAO JB ACC.

26、0,START1 LCALL BEEPSTART11: LCALL MBXIANSHI LCALL AJSAOMIAO JNB ACC.0,START11 ST: LCALL QINGLING ;第一次按下HOU;显示 00:00 LCALL PBXIANSHI LCALL AJSAOMIAOJB ACC.0,K2LCALL DELAY2 ;延时去抖动 LCALL AJSAOMIAO JB ACC.0,K2 SETB TR0;第二次按下 ,开始计时,;没按下判断K2,K3键 LCALL BEEPST1: LCALL PBXIANSHI LCALL AJSAOMIAO JNB ACC.0, ST

27、1;第二次按下后弹起;向下执行 ,常按不松开,循环执行显示跑;表计时 START2: LCALL PBXIANSHI;仍然 续计时 LCALL AJSAOMIAO JB ACC.0,START2 LCALL DELAY2 ;延时去抖动 LCALL AJSAOMIAO JB ACC.0,START2 CLR TR0 ;第三次按下;则顺序执行 ,暂停显示,没按下则跳转,;仍然继续显示跑表计时 LCALL BEEPSTART22:CLR TR0 LCALL PBXIANSHI LCALL AJSAOMIAO JNB ACC.0,START22 ;第三次若弹;起,则顺序执行,暂停显示,常按 则跳转,;

28、 也暂停显示START3: CLR TR0;K1第三次按下,暂停显示 LCALL PBXIANSHI LCALL AJSAOMIAOJB ACC.0,K21 LCALL DELAY2 ;延时去抖动 LCALL AJSAOMIAO JB ACC.0,K21 SETB TR0 ;第四次按下后,开定;时器0,续时 LCALL BEEP START33: LCALL PBXIANSHI ;若第四次没弹;起,则循环跳转续时,若弹起,则;顺序执行 LCALL AJSAOMIAO JNB ACC.0, START33 START4: LCALL PBXIANSHI LCALL AJSAOMIAO JB AC

29、C.0,START4 LCALL DELAY2 LCALL AJSAOMIAO JB ACC.0,START4 LCALL BEEP SJMP START22K2: JB ACC.1,K3 LCALL DELAY2 LCALL AJSAOMIAO JB ACC.1,K3 LCALL BEEPK2221: LCALL PBXIANSHI LCALL AJSAOMIAO JNB ACC.1,K2221 LJMP STK3: JB ACC.2,ST33 LJMP ST34 ST33:LJMP ST ST34:LCALL DELAY2 LCALL AJSAOMIAO JB ACC.2,ST3 LJMP

30、 ST4 ST3: LJMP ST ST4: LCALL BEEP LJMP START1K21:JB ACC.1,K31 LCALL DELAY2 ;延时去抖动 LCALL AJSAOMIAO JB ACC.1,K31 LCALL BEEP LJMP STK31: JB ACC.2,K311 SJMP K312 K311: LJMP START3 K312: LCALL DELAY2 JB ACC.2,K313 SJMP K314 K313:LJMP START3 K314:LCALL BEEP LJMP START1;* ;蜂鸣器响 ;* BEEP: CLR P2.3 LCALL DELA

31、Y3 SETB P2.3 RETDELAY1: MOV R6,#2aH ;数码管动态扫;描时间延时子程序 LOOP21: MOV R7,#2aH LOOP22:DJNZ R7,LOOP22;延时;3.425ms DJNZ R6,LOOP21 RET;*;延时10ms,消除抖动子程序;*DELAY2: MOV R6,#1AH LOOP1: MOV R7,#0F8H NOP LOOP2:DJNZ R7,LOOP2 DJNZ R6,LOOP1 RET;*;蜂鸣器延时时间子程序;* DELAY3: MOV R3,#0FFH LOOP31: MOV R2 ,#0F8H NOPLOOP32: DJNZ R

32、2,LOOP32 DJNZ R3,LOOP31 RET;*;秒表动态显示子程序;*MBXIANSHI: MOV DPTR,#TAB ;记表格表头地址START1: MOV R0,#FEN1 MOV A,R0 MOVC A,A+DPTR MOV P0,A LCALL SEL2 LCALL DELAY1 INC R0 MOV A,R0 MOV DPTR,#TAB1 MOVC A,A+DPTR MOV P0,A LCALL SEL3 LCALL DELAY1 MOV DPTR,#TAB INC R0 MOV A,R0 MOVC A,A+DPTR MOV P0,A LCALL SEL4 LCALL D

33、ELAY1 INC R0 MOV A,R0 MOVC A,A+DPTR MOV P0,A LCALL SEL5 LCALL DELAY1 RET;*;跑表动态显示子程序* PBXIANSHI: MOV R0,#FEN21 MOV A,R0 MOVC A,A+DPTR MOV P0,A LCALL SEL2 LCALL DELAY1 MOV DPTR,#TAB1 INC R0 MOV A,R0 MOVC A,A+DPTR MOV P0,A LCALL SEL3 LCALL DELAY1 MOV DPTR,#TAB INC R0 MOV A,R0 MOVC A,A+DPTR MOV P0,A LCALL SEL4 LCALL DELAY1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论