已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
常州大学硬件实习报告 序号: 学号: 10446234 实 习 报 告实习课程名称: 硬 件 综 合 设 计 学 生 姓 名: 朱京 学 院(系): 信息科学与工程 专 业 班 级: 电子102班 校内指导教师: 周炯如 专业技术职务: 高级实验师 _实 习 单 位: 信息科学与工程学院实验中心 校外指导教师: 职务/职称: 实习时间: 2013 年 6 月 14 日 2013 年 6 月 28 日 硬件实习任务书1、 设计题目六位十进制计数器设计(led显示计数值)二、设计背景七段led显示屏在很多场合有着广泛的应用,led显示产品的使用存在于社会的各个角落。如银行利率电子显示屏,价格表电子显示屏,车站班次时刻表,安全天数电子显示屏等。了解led显示技术及其相关的电路组成和显示控制方法非常重要,在很多智能化仪表中,键盘和显示器是不可能缺少的一部分。三、设计内容及目的设计内容:利用8255键盘显示接口电路,设计一个十进制计数器,对外部脉冲进行计数,计满即清0,用小键盘设置计数值及计数器的启、停.显示器由右向左为个,十,百,千,万。1、c键:清零.2、a键:开始计数,3、d键:停止计数,4、b键:设置计数值。5、e键:程序退出。设计目的:1. 进一步撑握8255键盘显示电路的编程方法。2. 进一步撑握定时器的使用和编程方法。 3. 进一步撑握中断处理程序的编程方法。 四、进度安排周次工 作 内 容预 定 目 标第1周周一选题,图书馆查阅相关资料写出该题的过去、现在、未来及应用场合第1周周二系统硬件设计及软件设计书面画出系统框图、软件框图并上交第1周周三设计成果检查及指导组长汇报方案,完善设计方案第1周周四、周五完善硬件及软件设计;画出系统硬件原理图、软件详细框图第2周一至周二完成硬件静态测试、软件调试调试好系统,写出硬件实习报告第2周三周至四完成实习任务;完善实习报告。第2周五答辩并验收实习报告答辩并上交实习报告五、设计时间:12 年 4 月 20 到 12 年 6 月 20 日 通信工程 系 指导教师: 周炯如 1. 前言11.1 设计背景12. 设计要求12.1 设计内容12.2 硬件实习的目的13. 硬件设计13.1 设计方案13.2 芯片介绍23.2.1 mcs-51芯片介绍23.2.2 8255可编程芯片33.2.3 74ls138译码器53.2.4 74ls373锁存器63.3 硬件原理图设计83.3.1 并行i/o口扩展83.3.2 led数码管驱动及显示设计83.3.3 键盘接口113.3.4 最小系统图124. 软件设计134.1 程序流程图设计134.2程序代码分析144.2.1汇编程序代码分析144.2.2 c语言代码分析235. 系统调试及分析296. 实物图297.心得体会308.参考文献301. 前言1.1 设计背景七段led显示屏在很多场合有着广泛的应用,led显示产品的使用存在于社会的各个角落。如银行利率电子显示屏,价格表电子显示屏,车站班次时刻表,安全天数电子显示屏等。了解led显示技术及其相关的电路组成和显示控制方法非常重要,在很多智能化仪表中,键盘和显示器是不可能缺少的一部分。利用数字电路技术数出给定时间内所通过的脉冲数并显示计数结果的数字化仪器。电子计数器是其他数字化仪器的基础。在它的输入通道接入各种模数变换器,再利用相应的换能器便可制成各种数字化仪器。电子计数器的优点是测量精度高、量程宽、功能多、操作简单、测量速度快、直接显示数字,而且易于实现测量过程自动化,在工业生产和科学实验中得到广泛应用。电子计数器可具有以下三种基本功能: 频率测量周期或时间间隔测量 累加计数 在这些功能的基础上再增加某些辅助电路或装置,计数器还可完成多周期平均、时间间隔平均、频率比值和频率扩展等功能。电子计数器性能指标主要包括:频率、周期、时间间隔测量范围、输入特性(灵敏度、输入阻抗和波形)、精度、分辨度和误差(计数误差、时基误差和触发误差)等。电子计数器按功能可分三类:通用计数器:可测频率、周期、多周期平均、时间间隔、频率比和累计等。频率计数器:专门用于测量高频和微波频率的计数器,主要用于测频率。计算计数器:一种带微处理器的具有计算功能的计数器,除了具有通用计数器的功能之外,还能进行数学运算,求解比较复杂的方程式,可靠程序控制进行测量计算和显示等全部工作。2. 设计要求2.1 设计内容利用8255键盘显示接口电路,设计一个十进制计数器,对外部脉冲进行计数,计满即清0,用小键盘设置计数值及计数器的启、停。显示器由左向右为个,十,百,千,万,十万。1、c键:清零.2、a键:开始计数,3、d键:停止计数,4、b键:设置计数值。4、e键:程序退出。2.2 硬件实习的目的(1)进一步撑握8255键盘显示电路的编程方法。(2)进一步撑握定时器的使用和编程方法。 (3)进一步撑握中断处理程序的编程方法。(4)进一步掌握8255多个七段码的动态显示方法。3. 硬件设计3.1 设计方案本计数器系统以atmel公司生产的单片微处理器at89c51为核心,外接扩展接口、晶振电路、复位电路、led驱动电路、键盘接口,外部脉冲等构成,硬件结构框图如图2-6所示。本系统利用单片机的内部振荡器外加石英晶体构成时钟源,为了工作可靠,晶体振荡频率选为11.0592mhz。本系统的计数脉冲信号从外部获取,选用计数器0,t0(p3.4)接手动脉冲,高电平计数。六位数码管单片机 8255扩展芯片键盘扫描图3-1 六位十进制计数系统框图3.2 芯片介绍3.2.1 mcs-51芯片介绍单片微型计算机简称为单片机,又称为微型控制器,是微型计算机的一个重要分支。单片机是70年代中期发展起来的一种大规模集成电路芯片,是cpu、ram、rom、i/o接口和中断系统于同一硅片的器件。80年代以来,单片机发展迅速,各类新产品不断涌现,出现了许多高性能新型机种,现已逐渐成为工厂自动化和各控制领域的支柱产业之一。mcs-51是标准的40引脚双列直插式集成电路芯片,引脚分布如图3-2。图3-2 mcs-51芯片引脚图按照引脚功能可分为电源引脚vcc与vss;外接晶振引脚xtal1与xtal2;控制和复位引脚ale,psen,ea,rst;32个i/o引脚。其中p2与p0作为地址总线,p2作为地址线的高8位,p0作为地址线的低八位,p0还可以作为数据总线负责传出或传入数据,p1为用户自定义i/o引脚,p3主要作为控制总线,包括了串行输入与输出端,外部中断0,1触发端,定时器0,1外部脉冲计数端,允许读写信号端。 8051单片机内部有4kb的程序存储器,地址范围为0000h到0fffh,当ea引脚为高电平时,程序存储空间的0000h到0fffh在单片机内部,1000h到ffffh在单片机外部;8051单片机内部有128b的数据存储器,地址范围为00h到7fh 8051单片机内部地址范围从80h到ffh为特殊功能寄存区,单片机的输入输出端口,计数器/定时器,串行通信口,累加器以及一些控制寄存器等都在这个地址空间。 8051单片机有5个中断源,分别为外部中断0,外部中断1,时钟中断0,时钟中断1和串行通信中断,这些中断分为两个优先级,每个中断源的优先级都是可编程的 8051单片机有两个16位定时/计数器,通过编程可以实现4中工作方式,内部ram开设了4个通用工作寄存区,共32个通用寄存器,以适应多种中断或子程序嵌套的使用。 8051单片机有一个功能齐全的指令系统。包括加、减、乘、除等算术运算指令,逻辑运算指令,位操作指令,数据传送指令及多种程序转移指令。3.2.2 8255可编程芯片8255a是目前应用最广的可编程并行接口电路。不可编程并行接口电路的特点是电路简单,使用方便。但是,它们在硬件连接好了之后,功能就很难改变。可编程并行接口电路的特点就在于使用灵活,可以在不改变硬件的情况下通过软件编程来改变芯片的功能。8255a可以与mcs-51系统单片机以及外设直接相连,广泛用作外部并行i/o扩展接口。其内部结构图及引脚图如下图3-3。图3-3 8255内部结构与引脚图引脚介绍由图可见,8255由以下几个部分组成:数据端口a、b、c(其中,c口被分成c口上半部分和c口下半部分两个部分),a组和b组控制逻辑,数据总线缓冲器和读/写控制逻辑。8255部包含3个8位的输入输出端口a、b和c,通过外部的24根输入输出线与外设交换数据或进行通信联络。端口a和端口b都可以用作一个8位的输入口或8位的输出口,c口既可以作为一个8位的输入口或输出口用,又可作为两个4位的输入输出口(c口上半部分和c口下半部分)使用,还常常用来配合a口和b口工作,分别用来产生a口和b口的输出控制信号和输入a口和b口的端口状态信号。内部结构8255a由数据总线缓冲器、读/写控制逻辑电路、a组和b组控制电路以及数据端口a、b和c组成。数据总线缓冲器是8255a与系统数据总线的接口,cpu输入输出的数据、cpu输出的控制字和外设的状态信息都是通过这个缓冲器传送的。读/写控制逻辑电路把cpu的控制命令或输出数据送至相应的端口,把外设的状态信息或输入数据通过相应的端口送至cpu。数据端口pa和pb都包含一个8位输出锁存器/缓冲器和一个8位输入锁存器,pc口包含一个8位输出锁存器/缓冲器和一个8位输入缓冲器(不锁存输入信号)。在工作方式1或方式2下,pc口分成高4位和低4位两个输入口作为pa和pb的控制信号输出或状态信号输入。、a0、a1、和决定端口的地址。引脚功能 8255a的引脚功能如表3-1所示。数据总线(8条):d0d7,用于传送cpu和8255a间的数据、命令和状态字。 控制总线(6条):reset:复位信号,高电平有效。该信号有效时,将8255控制寄存器内容都清0,并将所有的端口(a、b和c)都置成输入方式。 cs:片选信号,低电平有效,由地址总线经i/o端口译码电路产生。只有当该信号有效时,cpu与8255之间才能进行通信,也就是cpu可对8255进行读/写等操作。 /rd、/wr:/rd为读命令线,/wr为写命令线,皆为低电平有效。a0、a1:用于选中pa、pb、pc口和控制寄存器中哪一个工作。当a1a0=000时,选中端口a;a1a0=01时,选中端口b;a1a0=10时,选中端口c;a1a0=11时,选中控制字寄存器端口。并行i/o总线(24条):用于和外设相连,共分a、b、c三组。 表3-1 8255引脚功能表8255a控制字8222a有两类控制字,一类控制字用于定义各端口的工作方式,称为方式选择控制字;另一类控制字用于对c端口的任一位进行置位或复位操作,称为置位复位控制字。对8255a进行编程时,这两种控制字都被写入控制字寄存器中。但方式选择控制字的d7位总是1,而置位复位控制字的d7位总是0。8255a正是利用这一位来区分这两个写入同一端口的不同控制字的,d7位也称为这两个控制字的标志位。8255a具有3种基本的工作方式,在对8255a进行初始化编程时,应向控制字寄存器写入方式选择控制字,用来规定8255a各端口的工作方式。这3种基本工作方式是:方式0基本输入输出方式;方式1选通输入输出方式;方式2双向总线i/o方式。 当系统复位时,8255a的reset输入端为高电平,使8255a复位,所有的数据端口都被置成输入方式;当复位信号撤除后,8255a继续保持复位时预置的输入方式。如果希望它以这种方式工作,就不用另外再进行初始化。 通过用输出指令对8255a的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不同的方式工作。其中,端口a可工作于3种方式中的任一种;端口b只能工作于方式0和方式1,而不能工作于方式2;端口c常被分成两个4位的端口,除了用作输入输出端口外,还能用来配合a口和b口工作,为这两个端口的输入输出操作提供联络信号。方式选择控制字的格式如图3-4所示:图3-4 方式选择控制字格式其中,d7位为标志位,它必须等于1;d6d5位用于选择a口的工作方式;d2位用于选择b口的工作方式;其余4位分别用于选择a口、b口、c口高4位和c口低4位的输入输出功能,置1时表示输入,置0表示输出。3.2.3 74ls138译码器当一个选通端(s1)为高电平,另两个选通端(/s2和/s3)为低电平时,可将地址端(a0、a1、a2)的二进制编码在y0至y7对应的输出端以低电平译出。比如:a2a1a0=110时,则y6输出端输出低电平信号,引脚功能如表3-2.。利用 e1、e2和e3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。若将选通端中的一个作为数据输入端时,74ls138还可作数据分配。 图3-5 74ls138引脚图 表3-2 三八译码器真值表3.2.4 74ls373锁存器373为三态输出的八 d 透明锁存器,共有54s373 和 74ls373 两种线路。我们使用的是74ls373,其引脚图如下图3-6。 表3-3 74ls373真值表 图3-6 74ls373引脚图引出端符号:d0d7是数据输入端;/oe是三态允许控制端(低电平有效);le是锁存允许端;q0q7是输出端。其引脚功能如表3-3所示。当三态允许控制端 /oe 为低电平时,q0q7为正常逻辑状态,可用来驱动负载或总线。当 /oe 为高电平时,q0q7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。 当锁存允许端 le 为高电平时,q 随数据 d 而变。当 le 为低电平时,d 被锁存在已建立的数据电平。当 le 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mv。3.2.5 74ls04反相器74ls04是反相器。其结构图和真值表如图3-7。 图3-7 74ls04结构图和真值表 由真值表可知,当输入为高电平时,输出为低电平;当输入为低电平时,输出为高电平。293.3 硬件原理图设计3.3.1 并行i/o口扩展8255a可以工作在3种工作方式,图3-8是其一种接口逻辑。图3-8 i/o接口扩展电路 单片机的p0口作数据总线,引到8255芯片的数据输入端d0d7,用于传送cpu和8255a间的数据、命令和状态字。p0经过锁存器用作地址总线,锁存器的q0,q1接到8255的口地址选择信号线a0,a1,用来选择8255的输出端口pa、pb和pc;锁存器的q3、q4、q5接到译码器的地址端(a、b、c),译出q3、q4、q5的编码信号;q6和q7接译码器的使能端/e2和/e3。p2.7接译码器的使能端e1,高电平有效。控制线有/rd、/wr、reset、/cs。 3.3.2 led数码管驱动及显示设计 led数码管介绍按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(com)的数码管,共阳数码管在应用时应将公共极com接到+5v,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(com)的数码管,共阴数码管在应用时应将公共极com接到地线gnd上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。数码管的外形及其结构如图3-9及3-10。 图3-9数码管外形图 图3-10数码管结构图此次使用到的是共阳极数码管,低电平点亮,每个字符对应的编码如下图所示:表3-4 led字符编码表驱动设计方案静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的i/o端口进行驱动,或者使用如bcd码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用i/o端口多,如驱动6个数码管静态显示则需要68=48根i/o端口来驱动。实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。动态显示驱动动态驱动是将所有数码管的显示的每一段a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通com端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的com端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o端口,而且功耗更低。需要点亮6个数码管,经以上论证分析,我们选用更为灵活的动态显示。led驱动及显示8255a的pa口用来段选,以控制每个数码管显示的字形。pa后接反相器,所以当pa口输出高电平时led被点亮,如图3-11所示。图3-11 led驱动原理图8255a的pc口的pc3pc5后接3-8译码器用来位选,位选表3-5如下:pc5pc4pc3pc口选中的数码管00000h8(个位)00108h7(十位)01010h6(百位)01118h5(千位)10020h4(万位)10128h3(十万位)表3-5 led位选表3.3.3 键盘接口如图3-12所示,8255a的pc口作扫描线,输出键盘的扫描信号,pb口作输入口,用来接收键盘读入的信号。先给pc0赋值0,扫描键盘第一行,若pb口不全为高电平,则先延时10ms去抖动,然后接着读b口,若仍不全为高,说明确实有键按下,由b口的低电平可确定按键。图3-12 键盘接口电路3.3.4 最小系统图 图3-13 最小系统图4. 软件设计4.1 程序流程图设计 开始调用keyscan()函数,判断按键值按下b键,设置计数值外部脉冲计数按下c键,计数器清零按下e键,退出程序按下d键,停止计数调用ending()函数,关外部中断调用exit()函数,退出所有程序数码管显示调用clear()函数,数码管清零 调用zhishu()函数,键盘扫描置数值 结束按下a键,开始计数调用start()函数,开外部中断,对外部脉冲计数(1) 主程序 图4-1 主程序流程图(2) 置数按键扫描 置数 数码管显示 i6 转主程序 n y y图4-2 置数模块框图4.2程序代码分析 4.2.1汇编程序代码分析c8255 equ 0f22bh ;8255命令口地址p8255a equ 0f228h ;8255 pa口地址p8255b equ 0f229h ;8255 pb口地址p8255c equ 0f22ah ;8255 pc口地址org 0000h ljmp main org 0020hmain:mov sp,#60hmov tmod,#05h ;p3.4脉冲:设定定时器t0为计数模式mov th0,#00hmov tl0,#00hmov 36h,#00h ;存tl0,判断是否加1mov 30h,#00h ;个位mov 31h,#00h ;十位mov 32h,#00h ;百位mov 33h,#00h ;千位mov 34h,#00h ;万位mov 35h,#00h ;十万位 panduan: mov dptr,#c8255 ;写8255控制字mov a,#82hmovx dptr,amov a,#01h ;扫描键盘第二行mov dptr,#p8255cmovx dptr,amov dptr,#p8255bmovx a,dptrcjne a,#0ffh,keya ;有键按下则判断功能ljmp disp ;无键则显示当前计数值keya:cjne a,#0fbh,keyblcall start ;开始计数ljmp dispkeyb:cjne a,#0f7h,keycljmp zhsh ;置数keyc:cjne a,#0efh,keydlcall clear ;清零ljmp dispkeyd:cjne a,#0dfh,keyelcall ending ;停止计数ljmp dispkeye:cjne a,#0bfh,panduanljmp exit ;程序退出;*start:setb tr0ret;-zhsh:key_l0: mov a,#02h ;键盘扫描第一行 mov dptr,#p8255c movx dptr,a mov dptr,#p8255b movx a,dptr cjne a,#0ffh,j_key_l0;判键是否按下,有键转j_key_l0 sjmp key_l1 ;无键扫描第二行 j_key_l0: lcall delay0 ;延时消抖 mov dptr,#p8255b ;读键值 movx a,dptr mov r1,#00h ;键值从0开始 sjmp keycal ;计算键值 key_l1: mov a,#01h ;扫描第二行 mov dptr,#p8255c movx dptr,a mov dptr,#p8255b movx a,dptr cjne a,#0ffh,key8 ljmp xianshi ;无按键则显示key8: cjne a,#0feh,key9 mov r1,#08 ;给个位赋值8 sjmp calc key9: cjne a,#0fdh,panduan mov r1,#09 ;给各位赋值9 ljmp calc ;读取键值keycal: ;计算键码 mov r0,#08h ;最多右移8次shift: rrc a ;a右移,最低位进入c jnc calc ;c为0转calc inc r1 ;r1的值就是键值 djnz r0,shiftcalc: ;当前值左移,r1的值给个位 mov 35h,34h mov 34h,33h mov 33h,32h mov 32h,31h mov 31h,30h mov 30h,r1 sjmp keywait keywait:mov dptr,#p8255b ;等待键释放movx a,dptrcjne a,#0ffh,keywait xianshi:mov dptr,#p8255c;位选mov a,#00hmovx dptr,amov dptr,#ledmov a,30hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#08hmovx dptr,amov dptr,#ledmov a,31hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#10hmovx dptr,amov dptr,#ledmov a,32hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#18hmovx dptr,amov dptr,#ledmov a,33hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#20hmovx dptr,amov dptr,#ledmov a,34hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#28hmovx dptr,amov dptr,#ledmov a,35hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0ljmp key_l0 ;-clear:mov 30h,#00hmov 31h,#00hmov 32h,#00hmov 33h,#00hmov 34h,#00hmov 35h,#00hmov th0,#00hmov tl0,#00hmov 36h,#00hret;-ending:clr tr0ret;-disp:mov dptr,#p8255c;位选mov a,#00hmovx dptr,amov dptr,#ledmov a,30hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#08hmovx dptr,amov dptr,#ledmov a,31hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#10hmovx dptr,amov dptr,#ledmov a,32hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#18hmovx dptr,amov dptr,#ledmov a,33hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#20hmovx dptr,amov dptr,#ledmov a,34hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0mov dptr,#p8255c;位选mov a,#28hmovx dptr,amov dptr,#ledmov a,35hmovc a,a+dptrmov dptr,#p8255amovx dptr,alcall delay0loop:mov a,tl0cjne a,36h,d0 ;判断是否要加1ajmp panduan ;没有脉冲则判断有无功能键按下 d0:mov 36h,a ;tl0的值给36h供下一次判断mov a,30hcjne a,#09h,d1 ;因为是十进制计数器所以要满10高位进位,低 位清零。mov a,31hcjne a,#09h,d2mov a,32hcjne a,#09h,d3mov a,33hcjne a,#09h,d4mov a,34hcjne a,#09h,d5mov a,35hcjne a,#09h,d6mov 30h,#00hmov 31h,#00hmov 32h,#00hmov 33h,#00hmov 34h,#00hmov 35h,#00hajmp panduand1:mov a,30hinc amov 30h,aajmp panduand2:mov a,31hinc amov 31h,amov 30h,#00hajmp panduand3:mov a,32hinc amov 32h,amov 30h,#00hmov 31h,#00hajmp panduand4:mov a,33hinc amov 33h,amov 30h,#00hmov 31h,#00hmov 32h,#00hajmp panduand5:mov a,34hinc amov 34h,amov 30h,#00hmov 31h,#00hmov 32h,#00hmov 33h,#00hajmp panduand6:mov a,35hinc amov 35h,amov 30h,#00hmov 31h,#00hmov 32h,#00hmov 33h,#00hmov 34h,#00hajmp panduandelay0:mov r0,#80h ;延时20ms子程序delay1: mov r3,#05h djnz r3,$ djnz r0,delay1retled: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhexit: end4.2.2 c语言代码分析#include#include#define pa xbyte0xf228 /8255 pa口地址#define pb xbyte0xf229 /8255 pb口地址#define pc xbyte0xf22a /8255 pc口地址#define com xbyte0xf22b /8255 命令口地址unsignedcharcode dofly_duanma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 显示段码值09unsigned char code dofly_weima=0x28,0x20,0x18,0x10,0x08,0;/分别对应相应的数码管点亮,即位码unsigned char tempdata6=0x3f,0x3f,0x3f,0x3f,0x3f,0x3f;/存储显示值的全局变量unsigned int num1;unsigned char a;void display(unsigned char firstbit,unsigned char num); /显示函数unsigned char keyscan(void); /键盘扫描void delayus2x(unsigned char t); /us级延时函数void delayms(unsigned char t);/ms级延时函数void start(void);/开始计数void zhishu(void);/置数void clear(void);/清零void ending(void);/停止计数void exit(void);/退出程序unsigned char zhsh(void);void main()unsigned char i;while(1)switch(keyscan()casea: start(); break;caseb: zhishu(); break;casec: clear(); break;cased: ending(); break;casee: exit(); break;default: break;i=10;while(i-)display(0,6);unsigned char keyscan(void) /键盘扫描函数,使用行列逐级扫描法unsigned char val;com=0x82;pc|=0x01;/扫描第二行pb=0xff;if(pb!= 0xff & pc=0x01)delayms(10);if( pb!=0xff)switch(pb)case 0xfe: val=8; break;case 0xfd: val=9; break;case 0xfb: val=a; break;case 0xf7: val=b; break;case 0xef: val=c; break;case 0xdf: val=d; break;case 0xbf: val=e; break;case 0x7f: val=e; break;default: break;while( pb!=0xff);return val;pc|=0x02;/扫描第一行pb=0xff;if(pb!=0xff & pc=0x02)delayms(10);if(pb!=0xff)switch(pb)case 0xfe: val=0; break;case 0xfd: val=1; break;case 0xfb: val=2; break;case 0xf7: val=3; break;case 0xef: val=4; break;case 0xdf: val=5; break;case 0xbf: val=6; break;case 0x7f: val=7; break;default: break;while(pb!=0xff);return val;return 0xff;void delayus2x(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东莞市2024上半年广东东莞市望牛墩镇招聘镇政府材料员(特色人才聘员)1人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 网络工程师认证考试题库及答案
- 网易游戏测试工程师面试题库
- 税务师职业资格考试要点与模拟题
- 机场地勤人员面试问题及答案参考
- 2025年家庭农场智能管理系统项目可行性研究报告
- 2025年水资源再利用项目可行性研究报告
- 2025年建筑机器人研发项目可行性研究报告
- 2025年未来城市设计理念项目可行性研究报告
- 2025年儿童早期教育服务平台研发可行性研究报告
- 买院子合同协议书
- 2025至2030中国融媒体行业市场深度分析及前景趋势与投资报告
- 2026年江苏农牧科技职业学院单招职业技能测试模拟测试卷附答案
- 2026年南京交通职业技术学院单招职业倾向性测试题库附答案
- 2025吐鲁番市高昌区招聘第二批警务辅助人员(165人)笔试考试参考试题及答案解析
- 江苏省徐州市2026届九年级上学期期末模拟数学试卷
- 癫痫常见症状及护理培训课程
- 2025年南阳市公安机关招聘看护队员200名笔试考试参考试题及答案解析
- 产后康复健康促进干预方案
- 2024年人民法院聘用书记员考试试题及答案
- 2025年高三英语口语模拟(附答案)
评论
0/150
提交评论