xx新编基于at89c51单片机键盘控制动态显示器设计内容摘要:

101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10VCC40GND20IC18031Y1C1 C2C3 10UR1510R2510R3510R4510R5510R6510R7510R81KR91KR101KR111KR121KR131KR141KR151KR16100R171KD1D2D3D4 D5D6D7D8123456789*0S13VCCVCCVCCP1.0P1.1P1.2P1.3P1.4P1.5P1.6abfcgdeDPY[LEDgn]1 2 3 4 5 6 7a b c d e f gabfcgdeDPY[LEDgn]1 2 3 4 5 6 7a b c d e f gabfcgdeDPY[LEDgn]1 2 3 4 5 6 7a b c d e f gabfcgdeDPY[LEDgn]1 2 3 4 5 6 7a b c d e f gabfcgdeDPY[LEDgn]1 2 3 4 5 6 7a b c d e f gabfcgdeDPY[LEDgn]1 2 3 4 5 6 7a b c d e f gabfcgdeDPY[LEDgn]1 2 3 4 5 6 7a b c d e f gabfcgdeDPY[LEDgn]1 2 3 4 5 6 7a b c d e f gY1Y2Y3Y4Y5Y6Y7Y8 第四章 软件设计 键盘扫描、按键判断程序 12 图( ) 先扫描键盘的列,从第一行开始判断按键是否按下。 若有则存储数据,否则继续扫描。 开始 扫描列 判断第一行第一列按键 …. 存储数字 判断第一行第二列按键 …. 无 有 无 有 有 判断第四行第三列按键 13 图( ) 将存储的数据按第一个放最右面,存放第若个数时第一个左移,第二个数放后面的顺序,依次显示。 储存的数 显示最后位 显示在最后位 前面的数左移 显示在最后位 前面的数左移 第 一个数 第 二个数 第 N 个 数 … .. 14 图 ( ) 先扫描键盘看是否有键按下,若有则先消抖,在识别键功能,然后存开始 扫描 判断是否 有按键 延时 判断 存储数字 动态显示 超过 8位数字左移 结束 删除最后一个数, 并左移 识别功能键 无 有 数字 键 功能键 功能键 A 功能键 B 删除所有数字 15 储数据。 由位控制来确定显示的具体位置。 若无键按下则继续重复操作。 ORG 0000H START: MOV P2,0FFH ;开始 MOV R4,08H MOV R0,30H CLEAR: MOV @R0,0FFH ;复位 INC R0 DJNZ R4,CLEAR L1: MOV R3,0F7H MOV R1,00H L2: MOV A,R3 MOV P1,A MOV A,P1 MOV R4,A JNB ,KEYIN ;判断第一列是否有按键 INC R1 JNB ,KEYIN ;判断第二列是否有按键 INC R1 JNB ,KEYIN ;判断第三列是否有按键 INC R1 LCALL DISP ;调用显示子程序 MOV A,R3 SETB C RRC A ;将 A里面的内容右移 MOV R3,A JC L2 LJMP L1 KEYIN: MOV R7,60 D2: MOV R6,248 DJNZ R6,$ DJNZ R7,D2 ;延时 D3: MOV A,P1 XRL A,R4 JZ D3 MOV A,R1 MOV DPTR,TABLE MOVC A,@A+DPTR ;查表 MOV R7,A 16 XRL A,0AH MOV A,R7 XRL A,0BH JZ START MOV A,R7 XCH A,30H XCH A,31H XCH A,32H XCH A,33H XCH A,34H XCH A,35H XCH A,36H XCH A,37H LCALL DISP LJMP L1 DISP: MOV DPTR,TABLE1 ;显示子程序 MOV A,30H MOVC A,@A+DPTR MOV P0,A CLR LCALL DELAY ;调用延时 SETB ;显示第一位 MOV A,31H MOVC A,@A+DPTR MOV P0,A CLR LCALL DELAY SETB ;显示第二位 MOV A,32H MOVC A,@A+DPTR MOV P0,A CLR LCALL DELAY SETB ;显示第三位 MOV A,33H MOVC A,@A+DPTR MOV P0,A CLR LCALL DELAY SETB ;显示第四位 MOV A,34H MOVC A,@A+DPTR MOV P0,A CLR 17 LCALL DELAY SETB ;显示第五位 MOV A,35H MOVC A,@A+DPTR MOV P0,A CLR LCALL DELAY SETB ;显示第六位 MOV A,36H MOVC A,@A+DPTR MOV P0,A CLR LCALL DELAY SETB ;显示第七位 MOV A,37H MOVC A,@A+DPTR MOV P0,A CLR LCALL DELAY SETB ;显示第八 位 RET DELAY: MOV R7,06 ;延时 D1: MOV R6,125 DJNZ R6,$ DJNZ R7,D1 RET TABLE: DB 0AH,00H,0BH DB 07H,08H,09H DB 04H,05H,06H DB 01H,02H,03H TABLE1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END 18 第五 章 检测与调试 5. 1 硬件调试 :硬件调试是利用开发系统、基本测试仪器(万用表、示 波器等),检查用户系统硬件中存在的故障。 硬件调试可分为静态调试与动态调试两步进行。 静态调试是在用户系统未工作时的一种硬件检测。 第一步 :目测。 检查外部的各种元件或者是电路是否有断点。 第二步: 用万用表测试。 先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。 第三步: 加电检测。 给板加电,检测所有的插座或 是器件的电源端是否符合要求的值 第四步: 是联机检查。 因为只有用单片机开发系统才能完成对用户系统的调试。 2. 动 态调试 动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。 动态调试的一般方法是由近及远、由分到合。 由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的 器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。 当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间 可能存在的相互联系进行调试。 由分到合的调试既告完成。 由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。 调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。 软件调试: 软件调试是通过对拥护程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。 程序后,编辑,查看程序是否有逻辑的错误。 首先把源程序用伟福汇编下 ,如果通不过则有可能伟福汇编器与 Intel 汇编器在书写格式上除了大部分相同外有一些不同,例如包含头文件伪指令 include指令,伟福格式为: incude“ 文件名 ” , Intel 格式为: $inlcude(文件名 ).在使用伟福汇编器时,提示 “ 重复定义 ” 错误,有可能是在使用伟福汇编器,可以使用伟福预定义符,当用户变量全部由用户定义的时候,不能使用伟福预定义符,否则会出现 “ 重复定义 ” 错误。 如果调试时不能在源程序上进行则打开仿真器设置语言,在 ASM、 C、 PL/M 命令行,查看默认设置的控制项是否被删除。 19 第六章 元件清单。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。