还剩32页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
1设计课题任务、功能要求说明及总体方案介绍
1.1设计课题任务
(一)设计题目单片机抢答器课程设计
(二)设计任务通过理论知识的运用和实物制作相结合,写出抢答器汇编程序,做出抢答器实物,掌握和理解《单片机技术》书本中所学的理论知识和实验方法,掌握一些单片机应用系统的设计方法,掌握keil和proteus软件的使用方法,提高自己的思维能力、学习能力以及动手实践能力,为以后从事电子电路设计、研发电子产品打下良好的基础
1.2功能要求说明设计一个具有特定功能的抢答器该抢答器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态主持人按下开始按钮后,抢答开始并限定时间30S;10S内无人抢答,蜂鸣器发出音响;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮开始30S内,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,数码管显示违规台号蜂鸣器发出音响;各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮
1.3设计总体方案介绍设计中采用AT89S52芯片、LED显示器、蜂鸣器、LED灯、数码管和一些独立式按键构成一个简易六路抢答器设计中是采用单片机的内部定时器进行定时,原理框图如图1所示图1抢答器原理框图整个抢答器的工作原理是在正常的供电状态下显示“P.”,开始抢答时利用单片机倒计时,并由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则执行相应的键功能程序2抢答器的硬件系统的设计
2.1抢答器硬件系统各模块功能简要介绍该抢答器主要由单片机最小系统、按键电路模块、LED显示电路模块、蜂鸣电路模块和LED指示灯电路模块组成各模块的功能如下
(1)单片机最小系统单片机最小系统包括AT89S52单片机如图
2、晶振电路如图3所示、复位电路如图4所示只有当单片机有了这些电路才会工作电源电路给单片机供电,晶振电路给单片机提供计数时间,复位电路可以实现单片机的复位图2AT89S52单片机芯片图3晶振电路图4复位电路
(2)独立键盘电路模块如图5所示运用独立键盘电路,设计一段公共接地,另一端通过上拉电阻接到P1口,当有按键按下,相应的口就会变成低电平,产生一个下降沿图5独立键盘电路
(3)LED显示电路模块如图6所示采用两个四位一体共阳型数码管显示器进行显示由于位控线的驱动电流较大,因此在P2口线上接了8个PNP型三极管提高驱动能力;在单片机的P1口线和P2口线上接了16个470Ω的电阻,这些电阻起限流的作用将段控口a--dp接在P
0.0--P
0.7上,位控口接在P2口线上,实现对显示的控制LED显示电路模块主要用来指示第一抢答者,显示倒计时和违规的台号图6LED显示电路模块
(4)蜂鸣电路模块如图7所示单片机P
3.1口线上接上一个1KΩ电阻然后再通过一个PNP型三极管与蜂鸣器相连接组成蜂鸣器电路,接入PNP型三极管是为了增强蜂鸣器的驱动电流蜂鸣电路主要完成提示和违规报警功能图7蜂鸣电路模块
(5)LED指示灯电路模块如图8所示单片机P
3.2口线上经过一个470Ω的电阻与LED灯的阴极相连接,LED灯的阳极接正五伏电压470Ω的电阻起限流的作用LED指示灯电路模块主要用来指示用违规操作发生图8LED指示灯电路模块
(6)下载口电路模块如图9所示下载口的1脚接P
1.5口,2脚悬空,3脚接单片机的复位口,4脚接P
1.6口5脚接P
1.7口,6脚接地,
7、
8、
8、10脚接地图9下载口电路
2.2抢答器电路原理图、PCB图、元器件布局图Proteus原理图、PCB顶层图、PCB底层图、元器件布局图分别见附录A附录B附录C以及附录D
2.3抢答器元器件清单元器件清单见附录E3抢答器软件系统的设计
3.1抢答器使用单片机资源的情况该抢答器使用了单片机的定时器的功能,其中具体用到了单片机的定时器0和定时器1,并且让它们都以中断方式工作,没有用到外部中断寄存器用到了第0组,第1组,第2组在数据的显示时,采用查表的方法,因此需要将表格、数据存放在单片机的程序存储器上用到的LED显示器接到了单片机的P0口线上和P2口线上LED指示灯和蜂鸣器接在P3口线上
3.2抢答器软件系统各模块功能简要介绍该抢答器所用的软件模块有定时器模块、按键模块、LED显示模块
(1)定时器模块选择定时器0,设置定时器定时方式为方式1以中断方式工作,设置定时时间为50ms
(2)按键模块采用独立式键盘,共用七个按键对电路进行控制和操作,分别为S
1、S
2、S
3、S
4、S
5、S
6、S7来控制抢答器S
1、S
2、S
3、S
4、S
5、S6代表选手;S7为答完键、S8为开始键、S9为复位键
(3)数码管显示模块抢答器上电显示“P.”,按开始键开始抢答,显示器显示倒计时30s,10s内若无人抢答报警一次,若30s内都无人抢答,报警并灯亮若没按下开始键为无效抢答则显示器显示违规台号并报警
3.3抢答器软件系统程序流程框图
3.
3.1主程序流程框图主程序流程框图如图10所示图10主程序流程框图
3.
3.2开始键程序流程框图开始键程序流程框图如图11所示���开始�开定时器0,标志2置1�定时器0赋初值30秒�调显示子程序�判断S1是否按下?�判断S2是否按下?�执行S2按键程序�执行S3按键程序�执行S4按键程序�执行S5按键程序�定时30秒无人抢答�执行S6按键程序�结束执行S1按键程序�YN判断S3是否按下?�判断S4是否按下?�判断S5是否按下?�判断S6是否按下?�判复位键是否按下?�执行复位键程序�NNNNNNYYYYYY图11开始键程序流程框图
3.
3.3抢答键程序流程框图抢答键程序流程框图如图12所示图12开始键程序流程框图
3.
3.4答完键程序流程框图答完键程序流程框图如图13所示图13答完键程序流程框图
3.
3.5复位键程序流程框图复位键程序流程框图如图14所示图14答完键程序流程框图
3.4程序清单见附录F4抢答器的设计结论、心得体会、教学建议
4.1抢答器的设计结论
4.
1.1抢答器的设计结论通过对单片机进行外接键盘和LED数码管的操作以及加上硬件电路和软件的结合,实现了抢答器P.显示以及抢答倒计时的显示,正常抢答时显示台号,抢答违规时显示违规台号、违规指示灯亮、蜂鸣器报警本课程设计直接在实物数码管板子上测试和修改,没有仿真该抢答器完成了设计任务,符合设计要求
4.
1.2使用说明本设计的S2到S7为抢答键,S8为自定义复位键,S9为开始键,S1为系统复位键当开始键按下后才能进行抢答,抢答时间为30秒,抢答时,其他按键无效,答完后,答题人按下答完键,答题结束若10S内无人抢答,蜂鸣器发出警示音,若计时到仍无人抢答则违规指示灯亮,蜂鸣器报警若没有按下开始就抢答则违规,违规灯亮,显示违规者台号若倒计时时间到,还没按下答完键则违规,违规灯亮各台数字显示的消除、蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位键来实现
4.2抢答器课题心得体会及教学建议临近期末考试,学了一个学期的单片机课了,虽然感觉要掌握的知识内容很复杂,而且需要完成的实验也比较多,但是真正觉得学到了不少东西通过这次抢答器课程设计,不仅加深了我对书本知识的认识,而且更加深一步地掌握了单片机的接口技术以及汇编语言的应用和功能在刚刚接触单片机汇编语言的时候,别说自己编相关的程序,就是要我看懂某个不太难的程序都感觉有点吃力,然在进行了一系列的知识学习、实验实践,特别是这次的抢答器课程设计以后,让我深刻的了解了单片机的汇编功能以及方法,不仅可以看懂许多的程序,而且也能编写一些不是太难的程序,也使得自己也不再像以前那样,总把汇编看成是一个老大难的问题当然在这其中,也出现了不少问题比如说在进行数码管的焊接时,因没去了解其不同引脚的排列顺序,导致数码管正反顺序焊反,从而使得显示数字也变法了这算是个自己不细心导致的,所以以后再做此类相关的课程设计或者实验的时候,许多细节方便一定得多注意些从这个学期开始到结束,凌云老师一直都兢兢业业的指导我们学好单片机这门课程,很感谢老师的这份责任心总体来说,我觉得老师的教学还是挺好的,要说建议的话,可能还真说不上一两点什么结束语将本设计的程序下载到单片机中,通过测试,基本上完成了任务书的要求,并且抢答的精确度也比较高,因为在调用键扫描函数的时候是在500ms函数中,基本上每50ms就会调用一次键扫描函数当然对于高精度的抢答比赛,本设计的精度还是不够的,还需要进一步的改进,甚至可以精度提高到微秒级还有就是抢答的人数有限,只有六个人,所以当有更多的人抢答时,应该把独立式键盘改接成行列式键盘而且制作工艺比较粗糙通过本次单片机课程设计,让我更加深刻的了解了AT89S52芯片在电气工程各方面的应用,掌握了keil软件和proteus软件的使用操作而且通过本次单片机课程设计,让我也意识到了自己的理论知识掌握的不够熟练,动手实践能力也有待加强,所以在以后的学习中,一定要努力学会掌握书本上的知识,锻炼自己在专业设计方面的动手能力致谢在本次抢答器课程设计的过程中,得到了凌云老师的悉心指导和同学们的热情帮助,在这里特别要感谢老师和同学们虽然说我们是凌云老师教的第一届学生,老师在教学经验和方法上和其他一些有着丰富教学经验的老师相比,可能欠缺一点,但是真心觉得老师的教学很不错,特别是不像其他老师那样管得特别死板,很有活力也很注重和同学们的沟通和交流,是我们的良师益友哦参考文献[1]马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计[M]北京北京航空航天大学出版社,2006MaZhongmeiJishunxinZhangKaiMaYan.MCUClanguageprogramdesign[M].beijing:Beijingaerospaceuniversitypress2006[2]李广弟,朱月秀,冷祖祁.单片机基础[M].北京北京航空航天大学出版社,2007LiGuangdiZhuYuexiuLengZuqi.Microcontroller[M].Beijing:Beijinguniversityofaeronauticsandpress2007[3]李光飞.单片机课程设计实例指导[M].北京北京航空航天大学出版社,
2004.9LiGuangfei.Thiscoursedesignexampleguide[M].Beijing:Beijinguniversityofaeronauticsandpress
2004.9[4]邢增平.Protel99SE设计专家指导[M].北京中国铁道出版社2004XingZengping.Protel99SEdesignexpertguidance[M].Beijing:Chinarailwaypublishinghouse2004附录Aproteus原理图附录BPCB顶层图附录CPCB底层图附录D元器件布局图附录E元器件清单元器件名称规格数量AT89S521底座40脚3晶振12MHz1发光二极管9单排插40脚1三极管90129蜂鸣器1小按键9下载口座子十芯1六脚开关1USB电源线加接口1电阻200Ω1电阻1K3电阻470Ω24电解电容220µF1瓷片电容33pF2排阻10K2短路帽3杜邦线8p1PCB板子1附录F汇编语言程序清单**************************************************************************项目名称抢答器设计者谢湘平时间2012年12月14日项目功能该抢答器上电或按键复位后能自动显示系统提示符P.,进入准备工作状态主持人按下开始按钮后,抢答开始并限定时间30S;10S内无人抢答,蜂鸣器发出音响;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮开始30S内,答完按钮没;按下,则作超时处理,超时处理时,违规指示灯亮,数码管显示违规台号蜂鸣器发出音响;各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮伪指令定义**************************************************************************GEQU78H;赋值命令EQUSHIEQU79HX1EQU7FHX2EQU7EHX3EQU7DHX4EQU7CHX5EQU7BHX6EQU7AH系统起始程序区**************************************************************************ORG0000HLJMPMAIN;跳转主程序ORG000BH;定时器0中断向量区LJMPTTC0;跳转中断服务子程序ORG001BH;定时器1中断向量区LJMPTTC1;跳转中断服务子程序监控程序区**************************************************************************ORG0030HMAIN:MOVSP#60H;设置栈底为60HSETBEA;定时器和中断初始化SETBET0;允许定时器0中断SETBET1;允许定时器1中断MOVTMOD#11H;定时器0/定时器1选择工作方式1MOVTH0#3CH;定时器0设置计数初值MOVTL0#0B0HMOVTH1#3CH;定时器1设置计数初值MOVTL1#0B0HMOVDPTR#DISBH;系统初始化后提示符P.字符代码表首地址MOVR5#08HMOVR0#78HDISPTSF:CLRA;上电显示PMOVCA@A+DPTR;查表MOV@R0AINCR0;R0自动加1INCDPTR;DPTR自动加1DJNZR5DISPTSF;减1条件转移D:LCALLDISP;调用显示子程序LCALLKEY;调键扫描程序;判断键值JB20H.7KEY7;指定位状态为1转移JB20H.0KEY1;20H单元地址的第0位JB20H.1KEY2;20H单元地址的第1位JB20H.2KEY3;20H单元地址的第2位JB20H.3KEY4;20H单元地址的第3位JB20H.4KEY5;20H单元地址的第4位JB20H.5KEY6;20H单元地址的第6位LJMPD;跳转回D键功能程序区**************************************************************************;开始键KEY7:MOVA#30;按下开始键,时间30秒MOVR2A;将A送入R2LOOP:LCALLJS;计算当前秒并送给显示缓冲区MOVX1#0FFHLCALLDISP;调用显示子程序LCALLZ1;显示当前秒DECR2;R2自减1MOVAR2;将R2的值送入寄存器AJZTZ;判断30秒是否到CJNER2#20PDCY;判断是否过了10秒SJMPFM;跳转FMPDCY:CJNER2#10LOOP;R2为10跳转FM:MOVR7#125FM1:CLRP
3.1;过了10秒开蜂鸣器DJNZR7FM1;判断R7是否为1跳转SETBP
3.1;P
3.1置1LJMPLOOP;返回循环TZ:LCALLJS;停止在00处TZ1:LCALLDISP;调用显示子程序CLRP
3.1;P
3.1清零LCALLKEYJNB20H.6TZ1;LJMPFUWEI;跳转复位程序违规区**************************************************************************1号选手违规;1号违规显示1号台和违规灯KEY1:CLRP
3.0;P
3.0清零CLRP
3.1;P
3.1清零MOV7FH#01H;01H赋值给7FHLCALLDISP;调用显示子程序LCALLKEYJNB20H.6KEY1LJMPFUWEI;跳转复位程序2号选手违规;2号违规显示2号台和违规灯KEY2:CLRP
3.1;P
3.1清零CLRP
3.1;P
3.1清零MOV7FH#10HMOV7EH#02HLCALLDISP;调用显示子程序LCALLKEYJNB20H.6KEY2LJMPFUWEI;跳转复位程序3号选手违规;3号违规显示3号台和违规灯KEY3:CLRP
3.2;P
3.2清零CLRP
3.1;P
3.1清零MOV7FH#10HMOV7DH#03HLCALLDISP;调用显示子程序LCALLKEYJNB20H.6KEY3LJMPFUWEI;跳转复位程序4号选手违规;4号违规显示4号台和违规灯KEY4:CLRP
3.3;P
3.3清零CLRP
3.1;P
3.1清零MOV7FH#10HMOV7CH#04HLCALLDISP;调用显示子程序LCALLKEYJNB20H.6KEY4LJMPFUWEI;跳转复位程序5号选手违规;5号违规显示5号台和违规灯KEY5:CLRP
3.4;P
3.4清零CLRP
3.1;P
3.1清零MOV7FH#10HMOV7BH#05HLCALLDISP;调用显示子程序LCALLKEYJNB20H.6KEY5LJMPFUWEI;跳转复位程序6号选手违规;6号违规显示6号台和违规灯KEY6:CLRP
3.5;P
3.5清零CLRP
3.1;P
3.1清零MOV7FH#10HMOV7AH#06HLCALLDISP;调用显示子程序LCALLKEYJNB20H.6KEY6LJMPFUWEI;跳转复位程序抢答区**************************************************************************1号抢答;1号抢答倒计时30秒KEY11:MOVR1#01HMOVA#30;预置时间30秒MOVR2ALOOP10:LCALLJS;调用JSMOVX1#01H;送入#7FHCLRP
3.1;P
3.1清零LCALLDISP;调用显示子程序LCALLZ2;调用Z2程序DJNZR2LOOP10;满1跳转循环LCALLJS;继续调用JSLOOP11:LCALLDISP;调用显示子程序CLRP
3.0;P
3.0清零CLRP
3.1;P
3.1清零LCALLKEYJNB20H.6LOOP11LJMPFUWEI;跳转复位程序2号抢答;2号抢答倒计时30秒KEY22:MOVR1#2MOVA#30;预置时间30秒MOVR2ALOOP20:LCALLJS;调用JSMOVX2#02H;送入#7EHCLRP
3.1;P
3.1清零LCALLDISP;调用显示子程序LCALLZ2;调用延时子程序DJNZR2LOOP20;满1跳转循环LCALLJS;继续调用JSLOOP21:LCALLDISP;调用显示子程序CLRP
3.0;P
3.0清零CLRP
3.1;P
3.1清零LCALLKEYJNB20H.6LOOP21LJMPFUWEI;跳转复位程序3号抢答;3号抢答倒计时30秒KEY33:MOVR1#3MOVA#30;预置时间30秒MOVR2ALOOP30:LCALLJS;调用JSMOVX3#03H;送入#7DHCLRP
3.1;P
3.1清零LCALLDISP;调用显示子程序LCALLZ2;调用延时子程序DJNZR2LOOP30;满1跳转循环LCALLJS;继续调用JSLOOP31:LCALLDISPCLRP
3.0;P
3.0清零CLRP
3.1;P
3.1清零LCALLKEYJNB20H.6LOOP31LJMPFUWEI;跳转复位程序4号抢答;4号抢答倒计时30秒KEY44:MOVR1#4MOVA#30;预置时间30秒MOVR2ALOOP40:LCALLJS;调用JSMOVX4#04H;送入#7CHCLRP
3.1;P
3.1清零LCALLDISP;调用显示子程序LCALLZ2;调用延时子程序DJNZR2LOOP40;满1跳转循环LCALLJS;继续调用JSLOOP41:LCALLDISPCLRP
3.0;P
3.0清零CLRP
3.1;P
3.1清零LCALLKEYJNB20H.6LOOP41LJMPFUWEI;跳转复位程序5号抢答;5号抢答倒计时30秒KEY55:MOVR1#5MOVA#30;预置时间30秒MOVR2ALOOP50:LCALLJS;调用JSMOVX5#05H;送入#7BHCLRP
3.1;P
3.1清零LCALLDISP;调用显示子程序LCALLZ2;调用延时子程序DJNZR2LOOP50;满1跳转循环LCALLJS;继续调用JSLOOP51:LCALLDISPCLRP
3.0;P
3.0清零CLRP
3.1;P
3.1清零LCALLKEYJNB20H.6LOOP51LJMPFUWEI;跳转复位程序6号抢答;6号抢答倒计时30秒KEY66:MOVR1#6MOVA#30;预置时间30秒MOVR2ALOOP60:LCALLJS;调用JSMOVX6#06H;送入#7AHCLRP
3.1;P
3.1清零LCALLDISP;调用显示子程序LCALLZ2;调用延时子程序DJNZR2LOOP60;满1跳转循环LCALLJS;继续调用JSLOOP61:LCALLDISPCLRP
3.0;P
3.0清零CLRP
3.1;P
3.1清零LCALLKEYJNB20H.6LOOP61LJMPFUWEI;跳转复位程序答完区**************************************************************************KEY111:CJNER1#1TT1;1号答完显示台号和当前剩余时间SETBP
3.1;开启P
3.1LCALLDISP;调用显示子程序LCALLKEYJB20H.6FUWEILJMPKEY111TT1:LJMPFFKEY222:CJNER1#2TT2;2号答完显示台号和当前剩余时间SETBP
3.1;开启P
3.1LCALLDISP;调用显示子程序LJMPKEY222TT2:LJMPFFKEY333:CJNER1#3TT3;3号答完显示台号和当前剩余时间SETBP
3.1;开启P
3.1LCALLDISP;调用显示子程序LCALLKEYJB20H.6FUWEILJMPKEY333TT3:LJMPFFKEY444:CJNER1#4TT4;4号答完显示台号和当前剩余时间SETBP
3.1;开启P
3.1LCALLDISP;调用显示子程序LCALLKEYJB20H.6FUWEILJMPKEY444TT4:LJMPFF;跳转FFKEY555:CJNER1#5TT5;5号答完显示台号和当前剩余时间SETBP
3.1;开启P
3.1LCALLDISP;调用显示子程序LCALLKEYJB20H.6FUWEILJMPKEY555TT5:LJMPFFKEY666:CJNER1#6TT6;6号答完显示台号和当前剩余时间SETBP
3.1;开启P
3.1LCALLDISP;调用显示子程序LCALLKEYJB20H.6FUWEILJMPKEY666TT6:LJMPFFFUWEI:MOVP3#0FFHLJMPMAIN*************************************************************************子程序区;*************************************************************************定时器延时子程序******************延时子程序延时1秒用于抢答时的倒计时延时Z1:PUSHPSW;堆栈保护CLRRS0;开启寄存器组2SETBRS1SETBTR0;启动定时器0MOVR5#20EE:LCALLDISP;调用显示子程序LCALLKEYJB20H.0K1JB20H.1K2JB20H.2K3JB20H.3K4JB20H.4K5JB20H.5K6CJNER5#0CC;判断R5为0跳转CCCLRTR0;定时器0清零POPPSWLJMPBB;跳转BBCC:LJMPEE;跳转EEBB:RET;中断返回跳转区*************************************;由于跳转范围有限在此设一跳转区K1:LJMPKEY11K2:LJMPKEY22K3:LJMPKEY33K4:LJMPKEY44K5:LJMPKEY55K6:LJMPKEY66K11:LJMPKEY111K22:LJMPKEY222K33:LJMPKEY333K44:LJMPKEY444K55:LJMPKEY555K66:LJMPKEY666定时延时子程序2***************延时子程序延时1秒用于回答问题倒计时时的延时Z2:PUSHPSW;堆栈保护CLRRS0;开启寄存器组2SETBRS1SETBTR1;开启定时器1MOVR6#20FF:LCALLDISP;调用显示子程序LCALLKEYJB20H.0K11JB20H.1K22JB20H.2K33JB20H.3K44JB20H.4K55JB20H.5K66CJNER6#0FF;判断R6为0跳转FFCLRTR1;定时器1清零POPPSW;恢复现场RET;中断返回计算字符序号子程序;把当前秒分成十位和个位送往显示缓冲数组JS:MOVAR2MOVB#10DIVABMOVSHIAMOVGB;键盘扫瞄子程序KEY:LCALLKEYCHU;调P1口数据处理子程序JZEXIT;没有键按下,转返回LCALLDISP;调显示子程序去抖动LCALLDISP;LCALLKEYCHU;调P1口数据处理子程序JZEXIT;没有键按下,转返回MOVB20H;保存取反后的键值KEYSF:LCALLKEYCHU;调P1口数据处理子程序JZKEYA;键释放,转恢复键值LCALLDISP;调显示子程序延时LJMPKEYSF;等待键释放KEYA:MOV20HB;键值送20H保存EXIT:RETKEYCHU:PUSHPSW;保护现场MOVP1#0FFH;先向P1口写1MOVAP1;读P1口数据CPLA;P1口数据取反ANLA#0FFH;MOV20HA;POPPSW;;恢复现场RET;;中断返回;数码管显示子程序DISP入口7FH7EH7DH7CH7BH7AH79H78HLED7LED6LED5LED4LED3LED2LED1LED0DISP:PUSHDPH;堆栈保护PUSHDPLPUSHACCPUSHPSWCLRRS1;改变当前寄存器组为组1SETBRS0MOVR1#78H;显示缓冲存储单元首地址MOVR2#0FEH;从右至左显示DISP1:MOVA@R1MOVDPTR#TABMOVCA@A+DPTRMOVP0A;送段控MOVP2R2;送位控LCALLDL;延时2毫秒MOVAR2JNBACC.7DISP2RLAINCR1MOVR2ALJMPDISP1DISP2:POPPSW;恢复当前寄存器组的组号POPACCPOPDPLPOPDPHRET;中断返回;延时1毫秒子程序DL:PUSHPSW;堆栈保护SETBRS1;开启寄存器组3SETBRS0MOVR7#02HDL1:MOVR6#0FFHDL2:DJNZR6DL2DJNZR7DL1POPPSW;恢复现场RET;中断服务程序**************************************************************************TTC0:PUSHPSW;重赋初值R5自减CLRRS0SETBRS1MOVTH0#3CHMOVTL0#0B0HDECR5POPPSWRETI;中断返回TTC1:PUSHPSW;赋值初值R6自减CLRRS0SETBRS1MOVTH1#3CHMOVTL1#0B0HDECR6POPPSWRETI;中断返回************************************************************************常数表格区系统初始化后提示符P.字符代码表DISBH:DB10H10H10H10H10H10H10H11H显示字符段选码表共阳极代码TAB:DB0C0H0F9H0A4H0B0H99H92H82H0F8H80HDB90H88H83H0C6H0A1H86H8EH0FFH0CH;0-89ABCDEF灭END。