单片机工程实践报告

  • 格式:doc
  • 大小:464.50 KB
  • 文档页数:16

学校代码: 10128(第5组)题目:电子秒表 (任务一)组长:张双(电子08-1班)学号:200810203026组员:王楷(电子08-1班)学号:200810203003银霞(电子08-1班)学号:200810203005指导教师:刘伟、刘海伦、裴岩、杨传颖、斯日古楞、高鹏、韩海波、陈宇(研)设计时间:2011年3月7日~2011年3月18日一、设计目的:通过一个以8 位单片机为核心的模拟量数字表的硬件调试过程,掌握具有A/D、七段LED 显示、RS-485 通信、Watchdog 等接口电路的单片机应用系统的设计思想和方法。

学习应用系统软件的模块化设计方法,通过源程序的编辑、汇编或编译、链接、仿真调试,完成给定的任务。

通过上述过程提高学生工程实践能力和素质。

二、设计任务:题目1:电子秒表功能:(1)显示时间范围0~59分59秒(2)跑表时间范围0~59分59秒硬件环境:LED显示器、键盘等任务分工:定时模块、程序检错由王楷负责;显示模块、数据计算由银霞负责;计数模块、程序流程图由张双负责。

三、框图:四、程序清单:(1)蜂鸣器自检程序:org 0000hajmp mainorg 0030hmain: mov r6,#017ch ;音阶3响1秒lop3: clr p2.3acall yinjie3setb p2.3acall yinjie3djnz r6,lop3mov r6,#062h ;暂停1/4秒lop9: setb p2.3acall yinjie1djnz r6,lop9mov r6,#017ch ;音阶3响1秒lop10: clr p2.3acall yinjie3setb p2.3acall yinjie3djnz r6,lop10mov r6,#062h ;暂停1/4秒lop11: setb p2.3acall yinjie1djnz r6,lop11mov r6,#076ch ;音阶3响1/6秒lop12: clr p2.3acall yinjie3setb p2.3acall yinjie3djnz r6,lop12mov r6,#092h ;音阶5响1/6秒lop4: clr p2.3acall yinjie5setb p2.3acall yinjie5djnz r6,lop4mov r6,#062h ;音阶1响1/6秒lop5: clr p2.3acall yinjie1setb p2.3acall yinjie1djnz r6,lop5mov r6,#06eh ;音阶2响1/6秒lop6: clr p2.3acall yinjie2setb p2.3acall yinjie2djnz r6,lop6mov r6,#0eah ;音阶3响1/3秒lop7: clr p2.3acall yinjie3setb p2.3acall yinjie3djnz r6,lop7mov r6,#062h ;停顿1/4秒lop8: setb p2.3acall yinjie1djnz r6,lop8sjmp main ;重新开始演奏yinjie3:mov r0,#008h ;音阶3的频率所需要时间的1/2 loop1: mov r1,#047hloop2: djnz r1,loop2djnz r0,loop1retyinjie5:mov r0,#007h ;音阶5的频率所需要时间的1/2 loop5: mov r1,#08ehloop6: djnz r1,loop6djnz r0,loop5retyinjie1:mov r0,#008h ;音阶1的频率所需要时间的1/2 loop3: mov r1,#078hloop4: djnz r1,loop4djnz r0,loop3retyinjie2:mov r0,#056h ;音阶2的频率所需要时间的1/2 loop7: mov r1,#078hloop8: djnz r1,loop8djnz r0,loop7ret(2)键盘自检程序:Org 0000hljmp startorg 0030hstart: setb p2.3mov p1,#0ffhkey: jnb p1.0,spk0;k1按下则蜂鸣器发出声音0 Jnb p1.1,spk1;k2按下则蜂鸣器发出声音1jnb p1.2,spk2;k3按下则蜂鸣器发出声音2jnb p1.3,spk3;k4按下则蜂鸣器发出声音3ljmp keyspk0: mov r7,#001hClr p2.3acall delaysetb p2.3acall delayretspk1: mov r7,#005hclr p2.3acall delaysetb p2.3acall delayretspk2: mov r7,#010hClr p2.3acall delaysetb p2.3acall delayretspk3: mov r7,#015hClr p2.3acall delaysetb p2.3acall delayretdelay: MOV R6, #010hloop2: mov r5, #010hloop1: DJNZ R5, loop1DJNZ R6, loop2djnz r7, delayRETEnd(3)LED自检程序:la equ 30hstart: mov r0,#la;r0=30hmov A,#02hMov @r0,A;30h地址里放02hinc r0mov A,#04hmov @r0,A;31h地址里放04hinc r0mov A,#08hmov @r0,A;32h地址里放08hinc r0mov A,#10hMov @r0,A;33h地址里放10hinc r0mov A,#20hmov @r0,A;33h地址里放20hInc r0Mov A,#40hMov @r0,A;33h地址里放40hInc r0mov A,#80hmov @r0,A;33h地址里放80hinc r0mov A,#01hmov @r0,A;33h地址里放01hInc r0Mov A,#07ehMov @r0,A;33h地址里放07hInc r0mov A,#0chMov @r0,A;33h地址里放0chInc r0Mov A,#0b6hmov @r0,A;33h地址里放0b6hinc r0Mov A,#09ehmov @r0,A;33h地址里放09ehInc r0Mov A,#0cchMov @r0,A;33h地址里放0cchInc r0Mov A,#0dahMov @r0,A;33h地址里放0dahInc r0mov A,#0fahmov @r0,A;33h地址里放0fahInc r0mov A,#0ehmov @r0,A;33h地址里放0ehInc r0mov A,#0fehMov @r0,A;33h地址里放0fehinc r0mov A,#0dehmov @r0,A;33h地址里放0dehmov r0,#la;30h地址里数据送r0Mov r5,#012h;循环18次LED1: mov A,@r0;r0mov p0,A;输出30h地址里控制字,显示lcall sel1lcall d100mslcall sel2lcall d100mslcall sel3lcall d100mslcall sel4lcall d100mslcall sel5lcall d100mslcall d1slcall spk;发声Inc r0;r0+1djnz r5,led1sjmp startd100ms:mov r7,#0c8hloop1: mov r6,#0f8hnoploop2: djnz r6,loop2djnz r7,loop1retd1s: mov r4,#0ahmov r6,#0c8hloop3: mov r7,#0f8hnoploop4: djnz r7,loop4djnz r6,loop3djnz r4,loop3retsel1: clr p2.5Clr p2.6clr p2.7retsel2: clr p2.5Clr p2.6setb p2.7retsel3: clr p2.5setb p2.6clr p2.7retsel4: clr p2.5setb p2.6setb p2.7retsel5: setb p2.5clr p2.6Clr p2.7retspk: clr p2.3lcall yindiaosetb p2.3lcall yindiaoretyindiao:mov r6,#008hloop5: mov r7,#047hloop6: djnz r7,loop6djnz r6,loop5ret(4)电子秒表程序:Org 0000hljmp mainorg 000bhljmp jishu1org 0001bhljmp jishu2org 0030hmain: lcall qingling1;计数清零lcall qingling2mov tmod,#11h;定时1Smov tl0,#0c0hmov th0,#63hsetb easetb et0mov r0,#0hsetb tr0t5: lcall xianshi1;显示电子时钟 lcall sel8jb p1.0,t5mov r2,#0hmov tl1,#0c0hmov th1,#63hsetb et1t7: setb tr1t6: lcall xianshi2;显示跑表lcall sel8jnb p1.1,zanting;暂停lcall sel8jb p1.3,t6lcall qingling2;计数清零 ljmp t5zanting:clr tr1lcall sel8jnb p1.2,t7ljmp zantingretxianshi1:mov dptr,#tablcall sel5Mov a,75hmovc a,@a+dptrmov p0,alcall delay1mslcall sel4mov a,74hmovc a,@a+dptrmov p0,alcall delay1mslcall sel3Mov a,73hmovc a,@a+dptrMov p0,alcall delay1mslcall sel2mov a,72hmovc a,@a+dptrMov p0,alcall delay1msretjishu1:inc r0mov a,r0lcall chuzhicjne a,#25,t0mov r0,#0hInc 75hMov a,75hcjne a,#0ah,t0Inc 74hmov 75h,#0mov a,74hcjne a,#06h,t0inc 73hMov 74h,#0cjne a,#0ah,t0Inc 72hmov 73h,#0hmov a,72hcjne a,#06h,t0mov 72h,#0hT0: retichuzhi:mov tl0,#0c0hmov th0,#63h retchuzhi2:mov tl1,#0c0h mov th1,#63h retjishu2:inc r2push amov a,r2lcall chuzhi2cjne a,#25,t1mov r2,#0hinc 65hmov a,65hcjne a,#0ah,t1Inc 64hmov 65h,#0mov a,64hcjne a,#06h,t1Inc 63hMov 64h,#0mov a,63hcjne a,#0ah,t1inc 62hmov 63h,#0hmov a,62hcjne a,#66h,t1Mov 62h,#0ht1: pop aretixianshi2:mov dptr,#tablcall sel5Mov a,65hmovc a,@a+dptrmov p0,alcall delay1mslcall sel4movc a,@a+dptrmov p0,alcall delay1mslcall sel3mov a,63hmovc a,@a+dptrMov p0,alcall delay1mslcall sel2mov a,62hmovc a,@a+dptrMov p0,alcall delay1msretorg 1000htab: db 7eh,0ch,0b6h,9eh,0cch,0dah,0fah,0eh,0feh,0deh delay1ms: mov r3,#002hdelay1ms0: mov r4,#0f8hnopdelay1ms1: djnz r4,delay1ms1djnz r3,delay1ms0retsel2: clr p2.5clr p2.6setb p2.7retsel3: clr p2.5setb p2.6clr p2.7retsel4: clr p2.5setb p2.6setb p2.7retsel5: setb p2.5Clr p2.6Clr p2.7retsel8: setb p2.5setb p2.6setb p2.7retqingling1: mov 75h,#0hmov 74h,#0hmov 72h,#0hretqingling2: mov 65h,#0hmov 64h,#0hMov 63h,#0hmov 62h,#0hret五、设计体会张双(学号200810203026):通过近两个星期的单片机工程实践,使我熟练的掌握运用仿真系统调试,以及对51单片机的基本功能扩展口的基本认识。