版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、陈新2014/7/2117:32:03QQ可以找到历史记录的陈新17:33:15无痕的回忆17:01:52LED_LOOP: MOV R1, #251 ;1s的显示延时(好奇怪,居然不准)LED_LOOP_1: MOV R4, #14 ;使用了寄存器R1,R4(估计可以使用堆栈临时释放)LED_LOOP_2: LCALL DISPLAY_MOVEDJNZR4, LED_LOOP_2DJNZR1, LED_LOOP_1RET无痕的回忆23:10:36ORG 0000HAJMP MAINORG 0030H HC595_SCK BIT P0.4HC595_RCK BIT P0.5HC595_RST
2、BIT P0.6HC595_DAT BIT P0.7 MAIN: MOV A, #00HMOV P0, ACLR HC595_RSTLOOP0: MOV R0, #0LOOP1: MOV R1, #100LOOP2: MOV R4, #10LOOP3: LCALL DISPLAYDJNZR4, LOOP3DJNZR1, LOOP2INC R0LJMP LOOP1DELEY0: MOV R6, #4 ;1ms延时的子程序DELEY1: MOV R7, #123DELEY2: DJNZ R7, DELEY2DJNZ R6, DELEY1NOPRETDISPLAY: MOV A, R0MOV B,
3、#100DIV ABMOV B, #10DIV AB;MOV A, #0LCALL SHOW_NUMMOV A, P0ANL A, #0F0HORL A, #1MOV P0, A ;延时LCALL DELEY0 ;延时LCALL DELEY0MOV A, R0 ;有问题MOV B, #100DIV AB;MOV A, #7LCALL SHOW_NUMMOV A, P0ANL A, #0F0HORL A, #2MOV P0, A ;延时LCALL DELEY0 ;延时LCALL DELEY0MOV A, R0MOV B, #100DIV ABXCH A, BMOV B, #10DIV AB;MO
4、V A, #7LCALL SHOW_NUMMOV A, P0ANL A, #0F0HORL A, #4MOV P0, ALCALL DELEY0 ;延时LCALL DELEY0 ;延时MOV A, R0MOV B, #10DIV ABXCH A, B;MOV A, #7LCALL SHOW_NUMMOV A, P0ANL A, #0F0HORL A, #8MOV P0, ALCALL DELEY0 ;延时LCALL DELEY0RET SHOW_NUM: MOV DPTR,#SEGMOVC A, A+DPTRLCALL SEND_BYTERETSEND_BYTE: MOV R2, #8 ;注意
5、这个循环次数控制,有误差则会影响数码管显示MOV R6, #01HSEND_LOOP: MOV R3, AANL A, R6JZ ZEROJNZ NZEROZERO: CLR HC595_DATAJMP NEXTNZERO: SETB HC595_DATNEXT: SETB HC595_SCKCLR HC595_SCKMOV A, R6RL AMOV R6, AMOV A, R3 DJNZ R2, SEND_LOOPCLR HC595_RCKSETB HC595_RCKRETSEG: DB 0FCHDB 60HDB 0DAHDB 0F2HDB 66HDB 0B6HDB 0BEHDB 0E0HD
6、B 0FEHDB 0F6HEND无痕的回忆23:10:04int8utab_abc=0xee,0x3e,0x9c,0x7a,0x9e,0x8e;罐头17:36:46还有那个循环的呢陈新18:18:36已经发给你了啊DISPLAY:MOV A, KEY;将KEY转移给ALCALLSHOW_NUMMOV P0, #0FFH ;打开所有的数码管即设置为静态显示MOVP0,A LCALLDELAY_1MS ;延时注意到在动态显示中,点亮每位数码管都需要2秒钟LCALL DELAY_1MS ;延时。LCALL DELAY_1MS ;延时。RETDISPLAY: MOV A,KEYMOV B, #100D
7、IV ABMOV B, #10DIV AB;MOV A, #0LCALL SHOW_NUMMOV A, P0ANL A, #0F0HORL A, #1MOV P0, A ;延时LCALL DELAY_1MS ;延时LCALL DELAY_1MSMOV A, KEY ;有问题MOV B, #100DIV AB;MOV A, #7LCALL SHOW_NUMMOV A, P0ANL A, #0F0HORL A, #2MOV P0, A ;延时LCALL DELAY_1MS ;延时LCALL DELAY_1MSMOV A, KEYMOV B, #100DIV ABXCH A, BMOV B, #10
8、DIV AB;MOV A, #7LCALL SHOW_NUMMOV A, P0ANL A, #0F0HORL A, #4MOV P0, ALCALL DELAY_1MS;延时LCALL DELAY_1MS;延时MOV A, KEYMOV B, #10DIV ABXCH A, B;MOV A, #7LCALL SHOW_NUMMOV A, P0ANL A, #0F0HORL A, #8MOV P0, ALCALL DELAY_1MS ;延时LCALL DELAY_1MSRETDISPLAY:MOV A, KEY;将KEY转移给ALCALLSHOW_NUMMOV A, P0 ;打开所有的数码管即设
9、置为静态显示ANL A,#0F0H;ORL A, #15;MOVP0,A LCALLDELAY_1MS ;延时注意到在动态显示中,点亮每位数码管都需要2秒钟LCALL DELAY_1MS ;延时。 RETDISPLAY:MOV A, KEY;将KEY转移给A;LCALLSHOW_NUM MOV DPTR, #SEGMOVCA, A+DPTRMOVP0,A LCALLDELAY_1MS ;延时注意到在动态显示中,点亮每位数码管都需要2秒钟LCALL DELAY_1MS ;延时。 RETSEG: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH7.26课程设计最终
10、版代码;-;-;*华南理工大学电子与信息学院信息工程2班* ;*;* 第 二 组*;*;* 高文冠 刘翠玲 王志健 * ;*;* 单片机课程设计 *;-;- ; - ;分配各地址 ;-KEY EQU 40H AJMP START ORG 0003H ; 入口地址AJMP JINT0 ;外部中断0入口ORG 0013H ;AJMP JINT1 ; 外部中断1入口地址ORG 0030H ; -;定义这个实验中所需要的管脚,其中HCHC595是八位移位寄存器,BEEP是蜂鸣器;-HC595_SCKBITP0.4HC595_RCK BITP0.5HC595_RST BITP0.6HC595_DAT B
11、ITP0.7BEEP BIT P1.3 ;定义蜂鸣器的管脚; -;程序以及初始化硬件代码,主要是对中断以及一些端口进行初始化;-START: MOVA,#00H ;先将数码管的所有段均置0,即都不选 ; SETB BEEP;关闭蜂鸣器 MOVP0,A CLR HC595_RSTMOV SP,#60H;堆栈地址为60HSETB EA;允许全局中断SETB EX0;允许外部中断0SETB EX1;允许外部中断1 SETB PX1;设外部中断1为高优先级SETB IT1; 设外部中断1边沿触发 CLR IT0; 设外部中断0低电平触发; -;判断是否按键按下,并且赋予键值的键盘扫描代码;-GWG0:
12、 NOP MOV P2,#0FFH ; 判第0行是否有键按下CLR P2.0 ; 将P2.0清零MOV A,P2 ANL A,#0F0H ; 屏蔽低4位,即消除行线的影响XRL A,#0F0H JZ NOKEY0 ;A为0,转向NOKEY0LCALL DELAY_10MS ; 延时,去抖动 MOV A,P2 ; 再确认一次ANL A,#0F0H XRL A,#0F0H JZ NOKEY0 ; A为0,转向NOKEY0,表示第一行没有按键按下MOV A,P2 ; 判哪一个键按下ANL A,#0F0H CJNE A,#0E0H,NEXT1 MOV KEY,#0 ; 按下的键值是0LCALL DIS
13、PLAY;根据按键在数码管上和LED上显示键值 LJMP GWG0;继续检测NEXT1: CJNE A,#0D0H,NEXT2 MOV KEY,#1 ; 按下的键值是1LCALL DISPLAY LJMP GWG0;继续检测NEXT2: CJNE A,#0B0H,NEXT3 MOV KEY,#2 ; 按下的键值是2LCALL DISPLAY LJMP GWG0;继续检测 NEXT3: CJNE A,#70H,NOKEY0 MOV KEY,#3 ;按下的键值是3LCALL DISPLAY LJMP GWG0;继续检测NOKEY0: MOV P2,#0FFH ; 判第1行是否有键按下CLR P2.
14、1 ; 将P2.1清零MOV A,P2 ANL A,#0F0H ;屏蔽低4位,即行线的影响XRL A,#0F0H JZ NOKEY1 ;A为0,转向NOKEY1LCALL DELAY_10MS ;延时,去抖动MOV A,P2 ; 再确认一次ANL A,#0F0H XRL A,#0F0H JZ NOKEY1 ;A为0,转向NOKEY1MOV A,P2 ;判断哪个按键按下ANL A,#0F0H CJNE A,#0E0H,NEXT5 MOV KEY,#4 ;按下的键值是4LCALL DISPLAY ;根据按键在数码管上和LED上显示键值LJMP GWG0 ; 继续检测NEXT5: CJNE A,#0
15、D0H,NEXT6 MOV KEY,#5 ; 按下的键值是5LCALL DISPLAY LJMP GWG0 ; 继续检测NEXT6: CJNE A,#0B0H,NEXT7 MOV KEY,#6 ;按下的键值是6LCALL DISPLAY LJMP GWG0 ; 继续检测NEXT7: CJNE A,#70H,NOKEY1 MOV KEY,#7 ;按下的键值是7LCALL DISPLAYLJMP GWG0 ; 继续检测NOKEY1: MOV P2,#0FFH ;判第2行是否有键按下CLR P2.2 ;将P2.2清零MOV A,P2 ANL A,#0F0H ;屏蔽掉低四位,即消除行线的影响XRL A
16、,#0F0H JZ NOKEY2 ;A为0,转向NOKEY2LCALL DELAY_10MS ;延时,去抖动MOV A,P2 ; 再确认一次ANL A,#0F0H XRL A,#0F0H JZ NOKEY2 ;A为0,转向NOKEY2MOV A,P2 ;判哪一个键按下ANL A,#0F0H CJNE A,#0E0H,NEXT9 MOV KEY,#8 ;按下的键是8LCALL DISPLAY ;根据按键在数码管上和LED上显示键值LJMP GWG0 ;继续检测NEXT9:CJNE A,#0D0H,NEXT10 MOV KEY,#9 ;按下的键值是9LCALL DISPLAY LJMP GWG0
17、; 继续检测NEXT10:CJNE A,#0B0H,NEXT11 MOV KEY,#10 ;按下的键值是10LCALL DISPLAY LJMP GWG0 ; 继续检测NEXT11:CJNE A,#70H,NOKEY2 MOV KEY,#11 ;按下的键值是11LCALL DISPLAYLJMP GWG0 ; 继续检测NOKEY2:MOV P2,#0FFH ;判第2行是否有键按下CLR P2.3 ;将P2.3清零MOV A,#P2 ANL A,#0F0H ; 屏蔽高4位XRL A,#0F0H JZ NEXT16 ; A为0,转向NEXT16LCALL DELAY_10MS ; 延时,去抖动MO
18、V A,P2 ; 再确认一次ANL A,#0F0H XRL A,#0F0H JZ NEXT16 ;A为0,转向NEXT16MOV A,P2 ;判哪一个键按下ANL A,#0F0H CJNE A,#0E0H,NEXT13 MOV KEY,#12 ;按下的键值是12LCALL DISPLAY ;根据按键在数码管上和LED上显示键值 LJMP GWG0 ;继续检测NEXT13:CJNE A,#0D0H,NEXT14 MOV KEY,#13 ;按下的键值是13LCALL DISPLAY LJMP GWG0 ;继续检测NEXT14:CJNE A,#0B0H,NEXT15 MOV KEY,#14 ;按下的
19、键值是14LCALL DISPLAY LJMP GWG0 ;继续检测NEXT15:CJNE A,#70H,NEXT16 MOV KEY,#15 ;按下的键值是15LCALL DISPLAY LJMP GWG0 ;继续检测NEXT16:LJMP GWG0 ; -;外部中断0服务程序,即实现功能3闪烁显示ERR-和拓展功能蜂鸣器播放音乐; -JINT0: NOP LCALL SMG_ERROR_1s ;显示ERR- LCALL DELAY_1S ;延时MOVA,#00H ;熄灭所有数码管,达到闪烁的效果 MOVP0,A LCALL DELAY_1S ;延时LCALL SMG_ERROR_1s ;第
20、二次显示ERR- LCALL DELAY_1S ;延时1s MOV P0,#00H ;再次熄灭所有数码管LCALL DELAY_1S ;延时1sLCALL SMG_ERROR_1s ;第三次显示ERR- LCALL DELAY_1S ;延时1sMOV P0,#00H ;对P0端口和R4寄存器进行清0MOV R4,#0 RETI; -; 外部中断1服务程序,即实现功能4,跑马灯; -JINT1: MOV R1,#10 ;控制跑马灯的次数为10次JJHH: MOV P0,#0FFH;将LED全部置1, MOV A,#0FEH ;点亮第一个LED MOV R4,#8;控制左移次数为8次,即依次点亮8
21、个LEDLOOP_PMD:MOV P0, A LCALL DELAY_1S;在动态显示中,点亮每位数码管都需要2MS RL A;对A左移进行左移,实现流水灯的效果 DJNZ R4,LOOP_PMD;R4不为0,则对A继续进行左移,直到所有的LED都被点亮为止 DJNZ R1,JJHH ;R1不为0,则继续进行跑马灯显示,总共10次 LCALL DELAY_1S LCALL DELAY_1S RETI; -;根据按键在数码管上和LED上显示键值,即实现功能一、二; -DISPLAY:LCALL DISPLAY_SMG ;转向显示程序 LCALL DISPLAY_LED ;转向显示程序 MOVP0
22、,#00H ;将数码管的所有位均置0,即都不选 CLRHC595_RST RET; -;根据按键在数码管上显示键值,采用动态显示的方式; -DISPLAY_SMG: MOV R1,#8DISPLAY_SMG_1:MOV R4,#255 ;使用了寄存器R4DISPLAY_SMG_2:MOV A, KEY ;将KEY转移给ALCALL SHOW_NUM_SMGMOV A,P0 ;打开所有的数码管即静态显示模式ANL A,#0F0H;ORL A,#8MOV P0,A LCALL DELAY_1MS ;在动态显示中,点亮每位数码管都需要2MSLCALL DELAY_1MS ;延时。MOV A, #0L
23、CALL SHOW_NUM_SMGMOV A,P0 ;打开所有的数码管即静态显示模式ANL A,#0F0H;ORL A,#7 ;点亮低三位数码管,使之显示为0,实现在一位数码管显示键值MOV P0,A LCALL DELAY_1MS ;在动态显示中,点亮每位数码管都需要2MSLCALL DELAY_1MS ;延时。 DJNZ R4,DISPLAY_SMG_2;显示255次,可以看到4位数码管同时显示不同的值 DJNZ R1,DISPLAY_SMG_1;显示255次,可以看到4位数码管同时显示不同的值 RET; - ;根据按键进行相应的LED显示 ; -DISPLAY_LED:MOV A, KE
24、Y ;将KEY转移给A CJNE A,#8,LP1 ;A不等于8,转移AJMP LOOP ;A等于8LP1: JNC LOOP ;A大于8,就不进行LED操作AJMP DISPLAY_LED_OK ; A小于8,才进行LED操作DISPLAY_LED_OK:CLR BEEP ;蜂鸣器响起,进入LED显示模式LCALL DELAY_1S;SETB BEEP ;关闭蜂鸣器MOV A,KEY MOV DPTR,#TABLE_LEDMOVC A,A+DPTR ;查表MOV P0,A LCALL DELAY_1S ;延时 LCALL DELAY_1S LCALL DELAY_1S LCALL DELAY
25、_1SLCALL DELAY_1SLOOP:NOP RET; -;循环显示数码管,显示为ERR-; -SMG_ERROR_1s: MOV R4,#255;使用了寄存器R4SMG_ERROR_1s_1:LCALL DISPLAY_ERROR;循环显示每位数码管的值,达到动态显示显示的效果 DJNZ R4,SMG_ERROR_1s_1;显示255次,可以看到4位数码管同时显示不同的值 RETDISPLAY_ERROR: MOV A,#0 ;显示表中第一个字母LCALL SHOW_NUM_ERROR;将E对应的8位数送进HC595MOV A, P0;打开第一位数码管ANL A, #0F0HORL A
26、, #1MOV P0, A ;显示LCALL DELAY_10MS ;延时MOV A,#1 ;显示表中第二个字母RLCALL SHOW_NUM_ERROR ;将R对应的8位数送进HC595MOV A, P0 ;打开第二位数码管ANL A, #0F0HORL A, #2MOV P0, A ;显示LCALL DELAY_10MS ;延时MOV A, #2;显示表中第三个字母RLCALL SHOW_NUM_ERROR ;将R对应的8位数送进HC595MOV A, P0ANL A, #0F0HORL A, #4MOV P0, A ;显示LCALL DELAY_10MS;延时MOV A, #3 ;显示表中第四个字母- LCALL SHOW_NUM_ERROR ;将-对应的8位数送进HC595MOV A, P0ANL A, #0F0HORL A, #8MOV P0, A ;显示LCALL DELAY_10MS ;延时RET; - ;数码管显示ERROR ;-SHOW_NUM_ERROR: MOVDPTR, #TABLE_ERROR; 查表 MOVC A, A+DPTR; LCALL SEND_BYTE ;将八位数送进HC595RET; -;查表和进行移位操作 ;-SHOW_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 洗车场水电管理工作制度
- 派出所创新工作制度汇编
- 温州麦当劳工作制度规定
- 煤矿一季一整治工作制度
- 爱国卫生迎复审工作制度
- 生殖中心手术室工作制度
- 2025无锡城市职业技术学院教师招聘考试题目及答案
- 2025江西信息应用职业技术学院教师招聘考试题目及答案
- 2025成都信息工程大学教师招聘考试题目及答案
- 2026年辽宁材料科学招聘考试试题及答案
- 小儿隐睾超声课件
- 2025咨询《工程项目组织与管理》冲关宝典
- 2025年四川省从“五方面人员”中选拔乡镇领导班子成员考试历年参考题库含答案详解(5套)
- 单位收入管理办法
- 伊利公司库房管理制度
- 中国玫瑰痤疮诊疗指南(2025版)解读
- 船舶维修服务的组织结构及岗位职责
- 2025新疆农业大学辅导员考试试题及答案
- 建筑与市政工程施工现场临时用电安全技术标准JGJT46-2024
- 2024-2025学年福建省三明市宁化县九年级上学期期中考试数学试卷
- 纺织品生产流程:从棉花到成衣的完整旅程
评论
0/150
提交评论