LED点阵显示控制概述

上传人:夏** 文档编号:568595359 上传时间:2024-07-25 格式:PPT 页数:90 大小:4.26MB
返回 下载 相关 举报
LED点阵显示控制概述_第1页
第1页 / 共90页
LED点阵显示控制概述_第2页
第2页 / 共90页
LED点阵显示控制概述_第3页
第3页 / 共90页
LED点阵显示控制概述_第4页
第4页 / 共90页
LED点阵显示控制概述_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《LED点阵显示控制概述》由会员分享,可在线阅读,更多相关《LED点阵显示控制概述(90页珍藏版)》请在金锄头文库上搜索。

1、LED点阵显示控制点阵显示控制 项目项目4 4 LED点阵显示控制点阵显示控制 知识与能力目标知识与能力目标理解并掌握矩阵键盘接口电路及软件处理方法。理解并掌握矩阵键盘接口电路及软件处理方法。1理解并掌握理解并掌握LED点阵显示屏接口电路及软件处理方法。点阵显示屏接口电路及软件处理方法。2学会使用汇编语言进行复杂学会使用汇编语言进行复杂I/O口控制程序的分析与设计。口控制程序的分析与设计。3学会使用学会使用C语言进行复杂语言进行复杂I/O口控制程序的分析与设计。口控制程序的分析与设计。4熟练使用熟练使用Keil uVsion3与与Proteus软件。软件。5项目项目4 LED点阵显示控制点阵显

2、示控制 4.1.1 控制要求与功能展示控制要求与功能展示4.1.3 汇编语言程序分析与设计汇编语言程序分析与设计4.1.5 基于基于Proteus的调试与仿真的调试与仿真4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析4.1.4 C语言程序分析与设计语言程序分析与设计任务任务4.1 LED按键指示灯控制按键指示灯控制4.2.2 硬件系统与控制流程分析硬件系统与控制流程分析4.2.1 控制要求与功能展示控制要求与功能展示4.2.3 汇编语言程序分析与设计汇编语言程序分析与设计4.2.4 C语言程序分析与设语言程序分析与设计计4.2.5 基于基于Proteus的调试与仿真的调试与仿真任务任

3、务4.2 LED点阵数显控制点阵数显控制4.3.2 硬件系统与控制流程分析硬件系统与控制流程分析4.3.1 控制要求与功能展示控制要求与功能展示4.3.3 汇编语言程序分析与设计汇编语言程序分析与设计4.3.4 C语言程序分析与设计语言程序分析与设计4.3.5 基于基于Proteus的调试与仿真的调试与仿真任务任务4.3 键控键控LED点阵显示控制点阵显示控制任务任务4.1 LED按键指示灯控制按键指示灯控制4.1.1 控制要求与功能展示控制要求与功能展示 实物运行视频实物运行视频4.1.1 控制要求与功能展示控制要求与功能展示LED按键指示灯控制电路原理图按键指示灯控制电路原理图 任务任务4

4、.1 LED按键指示灯控制按键指示灯控制4.1.2 4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析1. 1. 任务硬件系统分析任务硬件系统分析 矩阵键盘电路又称为行列键盘它矩阵键盘电路又称为行列键盘它是用是用N条条I/O线作为行线,用线作为行线,用M条条I/O线作为列线所组成的键盘,在行线和线作为列线所组成的键盘,在行线和列线的每个交叉点上设置一个按键,列线的每个交叉点上设置一个按键,这样就可以构成一个这样就可以构成一个N*M个按键的键个按键的键盘。盘。 4.1.2 4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析 项目中所采用的是一个项目中所采用的是一个2*2式的键盘,其中

5、式的键盘,其中P1.0、P1.1接接矩阵键盘的行,矩阵键盘的行,P1.2、P1.3接矩阵键盘的列,为了提高电路的接矩阵键盘的列,为了提高电路的可靠性,图中行列线上均接有一个上拉电阻。可靠性,图中行列线上均接有一个上拉电阻。 4.1.2 4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析 (1)对对P1口赋值口赋值0xFE,将第一行的接口设为低电平,其余各接口,将第一行的接口设为低电平,其余各接口 设为高电平设为高电平 。方法一方法一 采用逐行扫描的方式采用逐行扫描的方式图图4-4 逐行扫描法键盘各端口状态(一)逐行扫描法键盘各端口状态(一) 4.1.2 4.1.2 硬件系统与控制流程分析

6、硬件系统与控制流程分析 (2)读入读入P1口数据,与口数据,与0xFE进行比较是否相等,若相等则第一行中无按键进行比较是否相等,若相等则第一行中无按键按下;若不相等则第一行中有按键按下。当判断有按键按下后,再次分析读入按下;若不相等则第一行中有按键按下。当判断有按键按下后,再次分析读入的数据,若数据等于的数据,若数据等于0x FA则是第一行第一列按键被按下。则是第一行第一列按键被按下。 4.1.2 4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析 (2)读入读入P1口数据,与口数据,与0xFE进行比较是否相等,若相等则第一行进行比较是否相等,若相等则第一行中无按键按下;若不相等则第一行

7、中有按键按下。当判断有按键按下中无按键按下;若不相等则第一行中有按键按下。当判断有按键按下后,再次分析读入的数据,若数据等于后,再次分析读入的数据,若数据等于0xF6则是第一行第二列按键被则是第一行第二列按键被按下。按下。 4.1.2 4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析 (3)(3)若第一行扫描完毕,对若第一行扫描完毕,对P1P1口重新赋值口重新赋值0xFD0xFD,将第,将第二行的接口设为低电平,其余各接口设为高电平,与第二行的接口设为低电平,其余各接口设为高电平,与第1 1行扫描的处理方法类似在此不详细说明。行扫描的处理方法类似在此不详细说明。 4.1.2 4.1.2

8、 硬件系统与控制流程分析硬件系统与控制流程分析 (1)对对P1口赋值口赋值0xF3,将各按键行接口置高电平,各列接口置低电平,将各按键行接口置高电平,各列接口置低电平, 如图如图4-7所示。所示。 方法二方法二 采用行列组合的方式采用行列组合的方式 图图4-7 行列组合法键盘各端口状态(一)行列组合法键盘各端口状态(一) 4.1.2 4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析 (2)读入读入P1口数据,与口数据,与0xF3进行比较是否相等,若相等则此时无进行比较是否相等,若相等则此时无按键按下继续读值判断;若不相等则此时有按键按下。当判断有按键按键按下继续读值判断;若不相等则此时

9、有按键按下。当判断有按键按下后,再次分析读入的数据,若数据等于按下后,再次分析读入的数据,若数据等于0xF2则是第一行按键被按则是第一行按键被按下,此时赋键值为下,此时赋键值为1;若数据等于;若数据等于0xF1则是第二行按键被按下,此时则是第二行按键被按下,此时 赋键值为赋键值为3。 4.1.2 4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析 ( (3)3)当确认按键的行数后,紧接着重新赋值当确认按键的行数后,紧接着重新赋值P1P1口为口为0xFC0xFC,将按键行接口置低电平,列接口置高电平。将按键行接口置低电平,列接口置高电平。 4.1.2 4.1.2 硬件系统与控制流程分析硬件

10、系统与控制流程分析 (4)重新读入并分析重新读入并分析P1口数据,若数据等于口数据,若数据等于0xF8则是第一列按键被则是第一列按键被 按下,此时将键值加上按下,此时将键值加上0;若数据等于;若数据等于0xF4则是第二列按键被按下,此时则是第二列按键被按下,此时 将键值加上将键值加上1。 (5)由以上步骤可得:第一个按键按下时,由以上步骤可得:第一个按键按下时,K赋值为赋值为1。第二个按键按。第二个按键按 下时,下时,K最终值为最终值为2。第三个按键按下时,。第三个按键按下时,K最终值为最终值为3。第四个按键按下时,。第四个按键按下时, K最终值为最终值为4。 若按键为若按键为M列、列、N行。

11、则第行。则第2步第步第y行行K值为值为1+M(y-1),第,第4步第步第x列列K值为值为K+(x-1)。4.1.2 4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析4.1.2 4.1.2 硬件系统与控制流程分析硬件系统与控制流程分析4.1.3 汇编语言程序分析与设计汇编语言程序分析与设计 1、任务相关汇编指令、任务相关汇编指令 (1 1)比较不等跳转指令:比较不等跳转指令:CJNE 使用格式:使用格式:CJNE , 使用说明:使用说明:判断目的操作数与源操作数是否相等,不等则跳转至地址判断目的操作数与源操作数是否相等,不等则跳转至地址操作数中执行,否则顺序执行(即从下一条指令开始执行)

12、;同时当源操操作数中执行,否则顺序执行(即从下一条指令开始执行);同时当源操作数小于或等于目的操作数时,作数小于或等于目的操作数时,Cy为为0,而当源操作数大于目的操作数时,而当源操作数大于目的操作数时,Cy为为1。 使用示例:使用示例: CJNE A,#10H , D1 ;判断;判断A中的内容是否和立即数中的内容是否和立即数10H相等,相等, ;不等则转至地址为;不等则转至地址为D1处执行,否则不跳,处执行,否则不跳, ;同时按顺序往下执行;同时按顺序往下执行 D1: 4.1.3 汇编语言程序分析与设计汇编语言程序分析与设计 (2 2)不带进位加法指令:不带进位加法指令:ADD 使用格式使用

13、格式:ADD A, 使用说明:使用说明:该指令是完成两个该指令是完成两个8位二进制数的相加运算,结果存放位二进制数的相加运算,结果存放在累加器在累加器A中。中。 使用示例:使用示例: ADD A,Rn ADD A,Rn ;(;(A A)+ +(RnRn)A A ADD A,direct ADD A,direct ;(;(A A)+ +(directdirect)A A ADD A,Ri ADD A,Ri ;(;(A A)+ +(RiRi)A A ADD A,#data ADD A,#data ;(;(A A)+ dataA+ dataA4.1.3 汇编语言程序分析与设计汇编语言程序分析与设计

14、(3 3)带进位加法指令:带进位加法指令:ADDC 使用格式使用格式:ADDC A, 使用说明:使用说明:该指令除了完成两个该指令除了完成两个8位二进制数的相加运算,还要与位二进制数的相加运算,还要与进位标志位进位标志位Cy的值相加,结果存放在累加器的值相加,结果存放在累加器A中。若中。若Cy=0,则这组指,则这组指令同令同ADD指令。带进位加法指令主要用在多字节加法运算中。指令。带进位加法指令主要用在多字节加法运算中。 使用示例:使用示例: ADDC A,Rn ADDC A,Rn ;(;(A A)+ +(RnRn)+ +(CYCY)A A ADDC A,direct ADDC A,direc

15、t ;(;(A A)+ +(directdirect)+ +(CYCY)A A ADDC A,Ri ADDC A,Ri ;(;(A A)+ +(RiRi)+ +(CYCY)A A ADDC A,#data ADDC A,#data ;(;(A A)+ data + data +(CYCY)A A4.1.3 汇编语言程序分析与设计汇编语言程序分析与设计 (4 4)带借位减法指令带借位减法指令:SUBB 使用格式:使用格式:SUBB A, 使用说明:使用说明:该指令的操作功能是将累加器该指令的操作功能是将累加器A中的内容减去源操作数中的内容减去源操作数中的值或常数并减去进位标志中的值或常数并减去进

16、位标志Cy的值,运算结果存入累加器的值,运算结果存入累加器A中。中。 使用示例:使用示例: SUBB A,Rn SUBB A,Rn ;(;(A A)- -(RnRn)- -(CYCY)A A SUBB A,direct SUBB A,direct ;(;(A A)- -(directdirect)- -(CYCY)A A SUBB A,Ri SUBB A,Ri ;(;(A A)- -(RiRi)- -(CYCY)A A SUBB A,#data SUBB A,#data ;(;(A A)- data - data -(CYCY)A A4.1.3 汇编语言程序分析与设计汇编语言程序分析与设计 (

17、5 5)乘法指令:乘法指令:MUL 使用格式:使用格式:MUL AB 使用说明:使用说明:该乘法指令的功能是将累加器该乘法指令的功能是将累加器A和寄存器和寄存器B中的两个中的两个8位位 无符号整数相乘,无符号整数相乘,16位乘积的低位乘积的低8位存入累加器位存入累加器A,高,高8位存入寄存器位存入寄存器B。当当B的值不等于的值不等于0时,时,OV=1,否则,否则OV=0。 使用示例:使用示例: 假如,设(假如,设(A A)=4EH=4EH,(,(B B)=5DH=5DH,执行指令:,执行指令: MUL ABMUL AB 结果:(结果:(B B)=1CH=1CH,(,(A A)=56H=56H,

18、即积(,即积(BABA)为)为1C56H1C56H。 4.1.3 汇编语言程序分析与设计汇编语言程序分析与设计 (6 6)除法指令:除法指令:DIV 使用格式:使用格式:DIV AB 使用说明:使用说明:该除法指令的功能是将累加器该除法指令的功能是将累加器A和寄存器和寄存器B中的两个中的两个8位无符号整数相除,得到的位无符号整数相除,得到的8位商(整数)存入累加器,位商(整数)存入累加器,8位余数存位余数存入寄存器入寄存器B。当。当B的值不等于的值不等于0时,时,OV=0,否则,否则OV=1。 使用示例:使用示例: 假如,设(假如,设(A A)=0BFH=0BFH,(,(B B)=32H=32

19、H,执行指令:,执行指令: DIV ABDIV AB 结果:(结果:(A A)=03H=03H,(,(B B)=29H=29H,OV=0OV=0。 4.1.3 汇编语言程序分析与设计汇编语言程序分析与设计 (7 7)累加器判零条件转移指令:累加器判零条件转移指令:JZ 、JNZ 使用格式:使用格式:JZ rel 或或JNZ rel 使用说明:使用说明:这类指令以累加器这类指令以累加器A的内容是否为的内容是否为0作为指令转移的条件,作为指令转移的条件,累加器累加器A的值由以前指令执行结果确定,指令转移范围在的值由以前指令执行结果确定,指令转移范围在-128+127。 其中其中JZ指令的执行过程是

20、该指令执行前累加器指令的执行过程是该指令执行前累加器A的值为的值为0,程序转移,否,程序转移,否 则则 程序顺序执行下一条指令。而程序顺序执行下一条指令。而JNZ指令的执行过程是该指令执行前累指令的执行过程是该指令执行前累 加器加器 A的值不为的值不为0,程序转移,否则程序顺序执行下一条指令。,程序转移,否则程序顺序执行下一条指令。 使用示例:使用示例: JZ LOOP JZ LOOP ;若;若A=0A=0,则程序跳转至,则程序跳转至LOOPLOOP处执行,否则,处执行,否则, ;程序顺序执行;程序顺序执行 JNZ LOOP1 JNZ LOOP1 ;若;若A0A0,则程序跳转至,则程序跳转至L

21、OOP1LOOP1处执行,否则,处执行,否则, ;程序顺序执行;程序顺序执行(7)累加器判零条件转移指令:累加器判零条件转移指令:JZ 、JNZ程序初始程序初始部分部分测按键测按键是否按下子是否按下子程序程序CE_AJ主程序主程序MAIN测按键测按键值子程序值子程序CE_JZ按键去抖按键去抖延时子程序延时子程序DELAY汇编程序组成汇编程序组成4.1.3 汇编语言程序分析与设计汇编语言程序分析与设计 汇编汇编程序程序2 2、汇编程序设计、汇编程序设计 根据图根据图4-94-9所示的控制流程分析图,结合汇所示的控制流程分析图,结合汇编语言指令编写出汇编语言控制程序。编语言指令编写出汇编语言控制程

22、序。 4.1.4 C4.1.4 C语言程序分析与设计语言程序分析与设计 1、函数表达式的使用、函数表达式的使用 参数参数形式形式无参无参函数函数有参有参函数函数调用函数用实际参调用函数用实际参数代替形式参数,数代替形式参数,调用完后将结果返调用完后将结果返回给调用函数回给调用函数4.1.4 C4.1.4 C语言程序分析与设计语言程序分析与设计 1、函数表达式的使用、函数表达式的使用 函数的一般形式如下:函数的一般形式如下: 返回值类型返回值类型 函数名函数名 (类型说明(类型说明 形参表列)形参表列) 局部变量声明;局部变量声明; 执行语句;执行语句; return(返回形参名);(返回形参名

23、); 其中,形参表列的各项要用其中,形参表列的各项要用“,”隔开。函数的返回值通过隔开。函数的返回值通过return语语句返回给调用函数,若函数没有返回值,则可以将返回值类型设为句返回给调用函数,若函数没有返回值,则可以将返回值类型设为void或缺省不写。或缺省不写。4.1.4 C4.1.4 C语言程序分析与设计语言程序分析与设计 1、函数表达式的使用、函数表达式的使用 当被调用的函数有返回值时,可以将被调用当被调用的函数有返回值时,可以将被调用函数以一个运算对象的形式出现在一个表达式函数以一个运算对象的形式出现在一个表达式中,这种表达式称为函数表达式。中,这种表达式称为函数表达式。 有时在选

24、择语句或循环语句中将函数表达式有时在选择语句或循环语句中将函数表达式作为选择或循环的条件,将会使程序更加精简。作为选择或循环的条件,将会使程序更加精简。 4.1.4 C4.1.4 C语言程序分析与设计语言程序分析与设计 1、函数表达式的使用、函数表达式的使用 bit jisuan bit jisuan ( ) bit shu bit shu; 执行语句;执行语句; returnreturn(shushu);); void main void main ( ) if if(jisuanjisuan()()=1=1) /调用函数调用函数jisuanjisuan ; ; 4.1.4 C4.1.4 C

25、语言程序分析与设计语言程序分析与设计 C C程序代码程序代码2、C语言程序分析语言程序分析 根据图根据图4-94-9所示的控制流程分析图,结合所示的控制流程分析图,结合C C语言语言的知识,我们来分析设计本任务的的知识,我们来分析设计本任务的C C语言控制程序语言控制程序。 程序初始程序初始部分部分检测是否有检测是否有按键按下子函数按键按下子函数ce_anjian ( )主函数主函数 main( )延时子函数延时子函数doudong_ys( )测按键值子函数测按键值子函数ce_jianzhi ( )本本C语言程序语言程序组成组成1 1、创建、创建ProteusProteus仿真电路图仿真电路图

26、 4.1.5 4.1.5 基于基于ProteusProteus的调试与仿真的调试与仿真 (1)列出元器件表;(2)绘制仿真电路图4.1.5 4.1.5 基于基于ProteusProteus的调试与仿真的调试与仿真 由于进行由于进行proteusproteus仿真运行时,矩阵键仿真运行时,矩阵键盘上增加上拉电阻有时会影响引脚电平的盘上增加上拉电阻有时会影响引脚电平的变化,与实际硬件电路有一定区别。本任变化,与实际硬件电路有一定区别。本任务中所涉及的矩阵键盘仿真电路均不加上务中所涉及的矩阵键盘仿真电路均不加上拉电阻,但是仿真的结果与具有上拉电阻拉电阻,但是仿真的结果与具有上拉电阻的硬件电路结果一样

27、。的硬件电路结果一样。 4.1.5 4.1.5 基于基于ProteusProteus的调试与仿真的调试与仿真 (1)(2)(3)安装插件安装插件vdmagdi.exe(注意:应把(注意:应把插件安装在插件安装在Keil3的安装目的安装目录下)录下)将将Keil安装目录安装目录C51BIN中的中的VDM51.dll文件文件复制到复制到Proteus软件的安装目录软件的安装目录ProteusMODELS目录下目录下修改修改Keil安装目安装目录下的录下的Tools.ini文件,在文件,在C51字字段中加入段中加入TDRV11=BINVDM51.DLL (“PROTEUS 6 EMULATOR”)并

28、保存。并保存。 4.1.5 4.1.5 基于基于ProteusProteus的调试与仿真的调试与仿真 )(4)(5)(6)打开打开“LED按键指示按键指示灯控制灯控制 .DSN ”文件,文件,在在Proteus的的“Debug”菜单中选菜单中选中中“Use Remote Debug Monitor(远程监控)(远程监控)”。右键选中右键选中STC89C51单片机,单片机,在弹出的对话框在弹出的对话框“Program File”项项中,导入在中,导入在Keil中中生成的生成的HEX文件。文件。Keil打开打开“LED按键按键指示灯控制指示灯控制 .UV2”,打开窗口,打开窗口“Option fo

29、r Target工程名工程名”。在在Debug选项中右选项中右栏上部的下拉菜单栏上部的下拉菜单选中选中Proteus VSM Simulator。点击。点击进入进入Settings窗口,窗口,设置设置IP为为127.0.0.1,端口号为,端口号为8000。 在在Keil中点击,使中点击,使用单步执行来调用单步执行来调试程序,同时在试程序,同时在Proteus中查看直中查看直观的仿真结果观的仿真结果。 2 2、ProteusProteus与与KeilKeil联调联调 4.1.5 4.1.5 基于基于ProteusProteus的调试与仿真的调试与仿真 R5=0xf2R5=0xf2P1=0xf2P

30、1=0xf2模拟按键模拟按键2 2按下按下 2 2、ProteusProteus与与KeilKeil联调联调 4.1.5 4.1.5 基于基于ProteusProteus的调试与仿真的调试与仿真 C=0C=0 模拟按键模拟按键2 2按下按下 2 2、ProteusProteus与与KeilKeil联调联调 4.1.5 4.1.5 基于基于ProteusProteus的调试与仿真的调试与仿真 R4=0X02R4=0X02 P2=0XFDP2=0XFD 3 3、ProteusProteus仿真运行仿真运行 4.1.5 4.1.5 基于基于ProteusProteus的调试与仿真的调试与仿真 4.1

31、.5 4.1.5 基于基于ProteusProteus的调试与仿真的调试与仿真 仿真运行视频仿真运行视频任务任务4.2 LED4.2 LED点阵数显控制点阵数显控制 4.2.1 控制要求与功能展示控制要求与功能展示实物运行视频实物运行视频74LS245芯片芯片 8*8点点阵屏阵屏单片机单片机 时钟电路时钟电路复位电路复位电路 4.2.1 控制要求与功能展示控制要求与功能展示LED点阵数显控制电路原理图点阵数显控制电路原理图 任务任务4.2 LED点阵数显控制点阵数显控制 4.2.2 4.2.2 硬件系统与控制流程分析硬件系统与控制流程分析 1 1、任务硬件系统分析、任务硬件系统分析 LEDLE

32、D点阵屏是一种能显示字符、图形和文字等点阵屏是一种能显示字符、图形和文字等功能的显示器件。一般都由功能的显示器件。一般都由M x NM x N个个LEDLED发光发光二极管组成。二极管组成。 4.2.2 4.2.2 硬件系统与控制流程分析硬件系统与控制流程分析 1 1、任务硬件系统分析、任务硬件系统分析 在驱动在驱动LEDLED点阵显示时,需要判断行列所对应的驱动信点阵显示时,需要判断行列所对应的驱动信号,当站在列的角度上来看,点阵屏显示器的电路连接图可号,当站在列的角度上来看,点阵屏显示器的电路连接图可分为共阴极和共阳极两种。分为共阴极和共阳极两种。 4.2.2 4.2.2 硬件系统与控制流

33、程分析硬件系统与控制流程分析 1 1、任务硬件系统分析、任务硬件系统分析 电路中电路中LEDLED点阵采用的是列共阳(即行共阴)点阵采用的是列共阳(即行共阴)的显示接法,由于单片机的的显示接法,由于单片机的P3P3口低电平电流灌口低电平电流灌入能力足以满足需要,而入能力足以满足需要,而P0P0口的高电平输出电口的高电平输出电流不够,所以流不够,所以P0P0口通过驱动芯片口通过驱动芯片74LS24574LS245驱动驱动LEDLED点阵屏共阳的列端。点阵屏共阳的列端。 4.2.2 4.2.2 硬件系统与控制流程分析硬件系统与控制流程分析 本任务中采用列共阳和行共阴的本任务中采用列共阳和行共阴的8

34、x88x8的,当单片机工作运行时,的,当单片机工作运行时,P3P3端端口提供低电平有效的行选通信号,口提供低电平有效的行选通信号,P0P0端口提供高电平有效的列选通信号,端口提供高电平有效的列选通信号,P0P0和和P3P3两端口同步动态扫描不断刷新两端口同步动态扫描不断刷新数据,即可显示出所需字符。数据,即可显示出所需字符。 1 1、任务硬件系统分析、任务硬件系统分析 4.2.2 4.2.2 硬件系统与控制流程分析硬件系统与控制流程分析 1 1、任务硬件系统分析、任务硬件系统分析 显示字符显示字符“1”1”时,以列扫描的方式从左到时,以列扫描的方式从左到右运行时,右运行时,8 8组行(组行(P

35、3P3)与列)与列(P0)(P0)数据对:数据对:0FFH0FFH和和80H,0FFH80H,0FFH和和40H,0DEH40H,0DEH和和20H,80H20H,80H和和10H,0FEH10H,0FEH和和08H,0FFH08H,0FFH和和04H,0FFH04H,0FFH和和02H,0FFH02H,0FFH和和01H01H。 4.2.2 4.2.2 硬件系统与控制流程分析硬件系统与控制流程分析 点阵的显示方式采用动态扫描的方式进行显点阵的显示方式采用动态扫描的方式进行显示,示,P3P3和和P0P0口同步轮流输出以上数据对,即从左口同步轮流输出以上数据对,即从左到右一列一列的显示输出。每显

36、示一列都给以一到右一列一列的显示输出。每显示一列都给以一定的延时,当延时时间足够短时,由于眼睛的视定的延时,当延时时间足够短时,由于眼睛的视觉暂留现象,就能完整地看见显示的数字了。觉暂留现象,就能完整地看见显示的数字了。 4.2.2 4.2.2 硬件系统与控制流程分析硬件系统与控制流程分析2 2、任务控制流程分析、任务控制流程分析4.2.3 汇编语言程序分析与设计汇编语言程序分析与设计 1、任务相关汇编指令、任务相关汇编指令 使用说明:使用说明: 必须与累加器必须与累加器ACCACC结合使用。并且寄存器结合使用。并且寄存器DPTRDPTR的值、的值、DPTRDPTR与累加器与累加器A A之和的

37、值及之和的值及PCPC与累加器与累加器A A之和的值都为程序内存单元之和的值都为程序内存单元16 16 位地址。位地址。 指令的结果是将程序存储器中该地址的操作数取出送入累指令的结果是将程序存储器中该地址的操作数取出送入累加器加器A A中。中。 该指令又称为查表指令该指令又称为查表指令 在单片机在单片机CPUCPU读取读取MOVC A MOVC A ,A+PCA+PC后,程序计数器后,程序计数器PCPC会先会先执行完加执行完加1 1操作,然后指向下一条指令的第一个字节,所以作基操作,然后指向下一条指令的第一个字节,所以作基址寄存器时值已经是原址寄存器时值已经是原PCPC加加1 1。 (1)程序

38、存储器传送指令:)程序存储器传送指令:MOVC 使用格式使用格式: MOVC A,A+DPTR MOVC A, A+PC4.2.3 汇编语言程序分析与设计汇编语言程序分析与设计 (2 2)字节存储伪指令:字节存储伪指令:DB 使用格式:使用格式:标号:标号: DB 字节数据表字节数据表 使用说明:使用说明: 定义字节数据伪指令常用来定义字节数据表定义字节数据伪指令常用来定义字节数据表格,其作用是将格,其作用是将8位的二进制数分别存入从标号位的二进制数分别存入从标号开始的连续的内存单元中。开始的连续的内存单元中。 例如:例如: TAB: DB 0FFH , 011B ,A, 12 1、任务相关汇

39、编指令、任务相关汇编指令 4.2.3 汇编语言程序分析与设计汇编语言程序分析与设计 (2 2)字节存储伪指令:字节存储伪指令:DB 通常也将定义字节数据伪指令与程序传送指令通常也将定义字节数据伪指令与程序传送指令MOVC结合结合使用,定义时将字节数据表的标号地址送入使用,定义时将字节数据表的标号地址送入DPTR寄存器中。寄存器中。如下示例所示:如下示例所示: MOV DPTR,#TAB ;将表的首地址送入;将表的首地址送入DPTR中中 MOV A,#00H ;将表中要查找的数据号码送入;将表中要查找的数据号码送入A中中 MOVC A,A+DPTR ;把表中的第;把表中的第0个数据个数据0FFH

40、送入送入A中中 TAB: DB 0FFH , 011B ,A, 124.2.3 汇编语言程序分析与设计汇编语言程序分析与设计 (3)加加1、减、减1指令:指令:INC、DEC 使用格式:使用格式:INC或或DEC 使用说明:使用说明:加加1指令的功能是把操作数指定单元的内容加指令的功能是把操作数指定单元的内容加1,减,减1指令的功能是把操作数指定单元的内容减指令的功能是把操作数指定单元的内容减1。 使用示例:使用示例:INC A INC A ;将累加器;将累加器A A中的内容加中的内容加1 1 DEC A DEC A ;将累加器;将累加器A A中的内容减中的内容减1 1 INC R3 INC

41、R3 ;将寄存器;将寄存器R3R3中的内容加中的内容加1 1 DEC R1 DEC R1 ;以累加器;以累加器R1R1的内容为地址的单元的内容减的内容为地址的单元的内容减1 1 INC DPTR INC DPTR ;将寄存器;将寄存器DPTRDPTR中的内容加中的内容加1 1 DEC R3 DEC R3 ;将寄存器;将寄存器R3R3中的内容减中的内容减1 1 INC R1 INC R1 ;以累加器;以累加器R1R1的内容为地址的单元的内容加的内容为地址的单元的内容加1 1 DEC 20H DEC 20H ;将;将20H20H地址单元中的内容减地址单元中的内容减1 1 4.2.3 4.2.3 汇

42、编语言程序分析与设计汇编语言程序分析与设计 根据图根据图4-244-24所示的控制流程分析图,结合所示的控制流程分析图,结合汇编语言指令编写出汇编语言控制程序汇编语言指令编写出汇编语言控制程序 。汇编程序汇编程序 代码代码主程序主程序MAIN汇编程序汇编程序显示显示数据表数据表延时子程序延时子程序DELAY程序初始程序初始部分部分4.2.4 C4.2.4 C语言程序分析与设计语言程序分析与设计 1 1、数组数组 数组的概念数组的概念数组是一种将同类型数数组是一种将同类型数据集合管理的数据结构据集合管理的数据结构组成数组的各个数据组成数组的各个数据分项称为数组元素。分项称为数组元素。 数组属于常

43、用的数据类数组属于常用的数据类型,数组中的元素有固型,数组中的元素有固定数目和相同类型定数目和相同类型 。数组元素的数据类型数组元素的数据类型就是该数组的基本类就是该数组的基本类型。型。数组可分为数组可分为一维、二维、三维和多维数组等一维、二维、三维和多维数组等,常用的数组是一维、,常用的数组是一维、二维和字符数组。二维和字符数组。4.2.4 C4.2.4 C语言程序分析与设计语言程序分析与设计 (2)一维数组)一维数组 在在C语言中,数据必须先定义后使用。语言中,数据必须先定义后使用。一维数组一维数组的格式如下:的格式如下: 类型说明符类型说明符 数组名数组名常量表达式常量表达式;类型说明符

44、是指数组中的各个数组元素的数据类型。类型说明符是指数组中的各个数组元素的数据类型。数组名是用户定义的数组标示符;方括号中的常量表达式表示数组元数组名是用户定义的数组标示符;方括号中的常量表达式表示数组元素的个数,也称为数组的长度。素的个数,也称为数组的长度。 例如:例如: uchar num8=0xff,0xff,0xde,0x80,0xfe,0xff,0xff,0xff; 4.2.4 C4.2.4 C语言程序分析与设计语言程序分析与设计 数组元素是一种变量,其标志方法为数组名后跟一数组元素是一种变量,其标志方法为数组名后跟一个下标。下标表示该数组元素在数组中的顺序号,个下标。下标表示该数组元

45、素在数组中的顺序号,只能为整型变量或整型表达式。只能为整型变量或整型表达式。定定义数组元素的一般形式:义数组元素的一般形式: 数组名数组名下标下标 例如:例如: numi+j、tab5、ai+都是合法的数组元素。下标是都是合法的数组元素。下标是指数组中的第几个数据。指数组中的第几个数据。 4.2.4 C4.2.4 C语言程序分析与设计语言程序分析与设计 给数组赋值的方法有给数组赋值的方法有赋值语句赋值语句和和初始化赋初始化赋值两种值两种 数组初始化赋值是指在数组定义时给数组元素赋予初数组初始化赋值是指在数组定义时给数组元素赋予初值。值。 例如:例如: uchar num10=0,1,2,3,4

46、,5,6,7,8,9; 在程序运行过程中,可以用赋值语句读数组元素逐个赋值,在程序运行过程中,可以用赋值语句读数组元素逐个赋值,例如:例如: for(i=0;i10;i+) numi=i;4.2.4 C4.2.4 C语言程序分析与设计语言程序分析与设计 (3)二维数组)二维数组 定义二维数组的一般形式是:定义二维数组的一般形式是: 类型说明符数组名类型说明符数组名常量表达式常量表达式1 常量表达式常量表达式2; 其中常量表达式其中常量表达式1表示第一维下标的长度,常量表达式表示第一维下标的长度,常量表达式2表示第表示第二维下标的长度,二维下标的长度,比如:比如: uint num34;数组名为

47、数组名为numnum该数组共包含该数组共包含3*43*4个数组元素,个数组元素,即:即: num00, num01, num02, num03,num00, num01, num02, num03, num10, num11, num12, num13, num10, num11, num12, num13, num20, num21, num22, num23, num20, num21, num22, num23,4.2.4 C4.2.4 C语言程序分析与设计语言程序分析与设计 注意注意:定义二维数组时行的数值可以为空,但列的数值不能为空,定义二维数组时行的数值可以为空,但列的数值不能为空

48、,否则编译时会出错。否则编译时会出错。列如:列如:int a1;是正确的定义,;是正确的定义,int1;是错误的定义。;是错误的定义。 分段赋值分段赋值;int a34=10,11,12,13,14,15,16,17,18,19,20,21; 二二维维数数组组的的初初始始化化赋赋值值连续赋值连续赋值; int a34=10,11,12,13,14,15,16,17,18,19,20,21; 4.2.4 C4.2.4 C语言程序分析与设计语言程序分析与设计 (4)字符数组)字符数组 用来存放字符量的数组称为字符数组,每一个数组用来存放字符量的数组称为字符数组,每一个数组元素就是一个字符。元素就是

49、一个字符。 字符数组的初始化赋值是直接将各字符赋给字符数组的初始化赋值是直接将各字符赋给数组中的各个元素。例如数组中的各个元素。例如: char ch10=c,h,I,n,e,s,e,0; 当对全体数组元素赋初值时也可以省去长度说明当对全体数组元素赋初值时也可以省去长度说明,例如:例如: char ch = c,h,I,n,e,s,e,0; 4.2.4 C4.2.4 C语言程序分析与设计语言程序分析与设计 通常用字符数组来存放一个字符串。字符串总是以通常用字符数组来存放一个字符串。字符串总是以“0”来来作为串的结束符。因此,当把一个字符串存入一个数组时,也作为串的结束符。因此,当把一个字符串存

50、入一个数组时,也要把结束符要把结束符”0”存入数组,并以此作为字符串的结束标志。存入数组,并以此作为字符串的结束标志。 C C语言允许用字符串的方式对数组做初始化赋值,语言允许用字符串的方式对数组做初始化赋值, 例如:例如: char ch = c,h,I,n,e,s,e,0; 可以写为:可以写为: char ch = “chinese”char ch = “chinese”; 或去掉或去掉 ,写为:,写为: char ch = “chinese”char ch = “chinese”; 4.2.4 C4.2.4 C语言程序分析与设计语言程序分析与设计 2 2、C C语言程序设计语言程序设计

51、根据图根据图4-244-24所示的控制流程要求,结合所示的控制流程要求,结合C C语语言的相关知识,我们来设计本任务的言的相关知识,我们来设计本任务的C C语言控制语言控制程序设计思路与实现方法。程序设计思路与实现方法。 C C程序代码程序代码程序初始程序初始部分部分C语言程序语言程序延时子函数延时子函数 delay_1ms( )主函数主函数 main( )1 1、创建、创建ProteusProteus仿真电路图仿真电路图 4.2.5 4.2.5 基于基于ProteusProteus的调试与仿真的调试与仿真 (1)列出元器件表;()列出元器件表;(2)绘制仿真电路图)绘制仿真电路图4.2.5

52、4.2.5 基于基于ProteusProteus的调试与仿真的调试与仿真 安装插件安装插件vdmagdi.e(注意:应把(注意:应把插件安装在插件安装在Keil3的安装目的安装目录下)录下) 将将Keil安装目安装目录录C51BIN中的中的VDM51.dll文文件复制到件复制到Proteus软件软件的安装目录的安装目录ProteusMODELS目录下目录下 修改修改Keil安装目安装目录下的录下的Tools.ini文件,在文件,在C51字字段中加入段中加入TDRV11=BINVDM51.DLL (“PROTEUS 6 EMULATOR”)并保存。并保存。 2、Proteus与与Keil联调联调

53、4.2.5 4.2.5 基于基于ProteusProteus的调试与仿真的调试与仿真 打开打开“LED跑马灯控跑马灯控制制.DSN ”文件,在文件,在Proteus的的“Debug”菜单中菜单中选中选中“Use Remote Debug Monitor(远程监(远程监控)控)”。右键选中。右键选中STC89C51单片机,单片机,在弹出的对话框在弹出的对话框“Program File”项项中,导入在中,导入在Keil中中生成的生成的HEX文件。文件。Keil打开打开“LED跑马跑马灯控制灯控制.UV2”,打,打开窗口开窗口“Option for Target工程名工程名”。在。在Debug选选项

54、中右栏上部的下项中右栏上部的下拉菜单选中拉菜单选中Proteus VSM Simulator。点击。点击进入进入Settings窗口,窗口,设置设置IP为为127.0.0.1,端口号为,端口号为8000。 在在Keil中点击,使中点击,使用单步执行来调用单步执行来调试程序,同时在试程序,同时在Proteus中查看直中查看直观的仿真结果。观的仿真结果。2 2、ProteusProteus与与KeilKeil联调联调 4.2.5 4.2.5 基于基于ProteusProteus的调试与仿真的调试与仿真 count=0x0000 sm=0x80 lie=0x00 hang=0x002 2、Prote

55、usProteus与与KeilKeil联调联调 4.2.5 4.2.5 基于基于ProteusProteus的调试与仿真的调试与仿真 hang=0x01 断点 4.2.5 4.2.5 基于基于ProteusProteus的调试与仿真的调试与仿真 3 3、ProteusProteus仿真运行仿真运行 4.2.5 4.2.5 基于基于ProteusProteus的调试与仿真的调试与仿真 仿真运行视频仿真运行视频任务任务4.3 4.3 键控键控LEDLED点阵显示控制点阵显示控制 4.3.1 控制要求与功能展示控制要求与功能展示实物运行视频实物运行视频单片机单片机LED点阵点阵 数字按键数字按键4

56、数字按键数字按键3 数字按键数字按键2 数字按键数字按键1 驱动芯片驱动芯片74LS24574LS245时钟电路时钟电路 复位电路复位电路 4.3.1 控制要求与功能展示控制要求与功能展示键控键控LED点阵显示控制电路原理图点阵显示控制电路原理图 任务任务4.3 键控键控LED点阵显示控制点阵显示控制 4.3.2 4.3.2 硬件系统与控制流程分析硬件系统与控制流程分析 1 1、任务硬件系统分析、任务硬件系统分析 如图如图4-324-32电路原理图所示,该电路实电路原理图所示,该电路实际上是将前际上是将前4.14.1和和4.24.2两个任务合二为一组两个任务合二为一组合而成的。将合而成的。将4

57、.14.1中中 LEDLED按键指示灯控制按键指示灯控制任务中的任务中的LEDLED指示灯去掉,再结合上指示灯去掉,再结合上4.24.2中中LEDLED点阵数显控制的电路原理设计而成。点阵数显控制的电路原理设计而成。 4.3.2 4.3.2 硬件系统与控制流程分析硬件系统与控制流程分析2 2、任务控制流程分析、任务控制流程分析4.3.3 4.3.3 汇编语言程序分析与设计汇编语言程序分析与设计 汇编程序汇编程序 程序初始程序初始部分部分主程序主程序 MAIN本汇编程序本汇编程序显示子程显示子程序序DIS测按键是否按下测按键是否按下子程序子程序CE_AJ测按键值子测按键值子程序程序CE_JZ按键

58、去抖延时按键去抖延时子程序子程序 DELAY扫描列之间扫描列之间间隔延时子间隔延时子程程DELAY1显示数据表显示数据表4.3.4 C4.3.4 C语言程序分析与设计语言程序分析与设计 1 1、C C语言程序设计语言程序设计C C程序代码程序代码 测按键值子函数测按键值子函数ce_jianzhi ( ) 程序初始部分程序初始部分(含数据表定义)(含数据表定义)主函数主函数 main( )检测是否有按键按下检测是否有按键按下子函数子函数ce_anjian ( )延时子函数延时子函数delay(uint i)C语言程序语言程序1 1、创建、创建ProteusProteus仿真电路图仿真电路图 4.

59、3.5 4.3.5 基于基于ProteusProteus的调试与仿真的调试与仿真 (1)列出元器件表;()列出元器件表;(2)绘制仿真电路图)绘制仿真电路图4.3.5 4.3.5 基于基于ProteusProteus的调试与仿真的调试与仿真 安装插件安装插件vdmagdi.e(注(注意:应把插件安意:应把插件安装在装在Keil3的安装的安装目录下)目录下) 将将Keil安装目录安装目录C51BIN中的中的VDM51.dll文件文件复制到复制到Proteus软件的安装目软件的安装目录录ProteusMODELS目录下目录下 修改修改Keil安装目录安装目录下的下的Tools.ini文件,文件,在

60、在C51字段中加入字段中加入TDRV11=BINVDM51.DLL (“PROTEUS 6 EMULATOR”)并并保存。保存。 (1)(2)(3)2、Proteus与与Keil联调联调4.3.5 4.3.5 基于基于ProteusProteus的调试与仿真的调试与仿真 打开打开“LED跑马灯控制跑马灯控制.DSN ”文件,在文件,在Proteus的的“Debug”菜单中选中菜单中选中“Use Remote Debug Monitor(远程监控)(远程监控)”。右键选中。右键选中STC89C51单片机,单片机,在弹出的对话框在弹出的对话框“Program File”项中,项中,导入在导入在Ke

61、il中生成的中生成的HEX文件。文件。Keil打开打开“LED跑跑马灯控制马灯控制.UV2”,打开窗口,打开窗口“Option for Target工程名工程名”。在。在Debug选项中右栏上部选项中右栏上部的下拉菜单选中的下拉菜单选中Proteus VSM Simulator。点。点击进入击进入Settings窗口,设置窗口,设置IP为为127.0.0.1,端口,端口号为号为8000。 在在Keil中点击,使中点击,使用单步执行来调用单步执行来调试程序,同时在试程序,同时在Proteus中查看直中查看直观的仿真结果。观的仿真结果。(4)(5)(6)2 2、ProteusProteus与与Ke

62、ilKeil联调联调 4.3.5 4.3.5 基于基于ProteusProteus的调试与仿真的调试与仿真 hang=0x00 2 2、ProteusProteus与与KeilKeil联调联调 4.3.5 4.3.5 基于基于ProteusProteus的调试与仿真的调试与仿真 模拟按下模拟按下 单单步步运运行行时时,此此标标志志亮亮时时程序程序在函数中循环运行在函数中循环运行2 2、ProteusProteus与与KeilKeil联调联调 4.3.5 4.3.5 基于基于ProteusProteus的调试与仿真的调试与仿真 y=0x012 2、ProteusProteus与与KeilKeil

63、联调联调 4.3.5 4.3.5 基于基于ProteusProteus的调试与仿真的调试与仿真 4.3.5 4.3.5 基于基于ProteusProteus的调试与仿真的调试与仿真 3 3、ProteusProteus仿真运行仿真运行 4.3.5 4.3.5 基于基于ProteusProteus的调试与仿真的调试与仿真 仿真运行视频仿真运行视频技能训练技能训练1 1:3*33*3按键指示灯控制按键指示灯控制 学会矩阵按键接口电路的分析与设计;学会矩阵按键接口电路的分析与设计;1 学习掌握矩阵按键键值的各种识别处理方法学习掌握矩阵按键键值的各种识别处理方法2学会进行矩阵键盘程序的设计与编写;学会

64、进行矩阵键盘程序的设计与编写;3掌握单片机复杂掌握单片机复杂I/O口控制程序的分析与设计;口控制程序的分析与设计;4进一步学会程序的调试过程与仿真方法进一步学会程序的调试过程与仿真方法5仿真运行视频仿真运行视频技能训练技能训练1 1:3*33*3按键指示灯控制按键指示灯控制 学会进行学会进行LED点阵屏显示程序的设计与编写;点阵屏显示程序的设计与编写;3技能训练技能训练2 2:LEDLED点阵屏显示字符控制点阵屏显示字符控制 学会学会LED点阵屏显示接口电路的分析与设计;点阵屏显示接口电路的分析与设计;1理解理解LED点阵屏动态显示的工作原理;点阵屏动态显示的工作原理;2掌握单片机复杂掌握单片

65、机复杂I/O口控制程序的分析与设计;口控制程序的分析与设计;4进一步学会程序的调试过程与仿真方法。进一步学会程序的调试过程与仿真方法。5仿真运行视频仿真运行视频技能训练技能训练2 2:LEDLED点阵屏显示字符控制点阵屏显示字符控制 技能训练技能训练3 3:按键值显示控制:按键值显示控制 1、学会矩阵按键接口电路的分析与设计;、学会矩阵按键接口电路的分析与设计;2、学会、学会LED点阵屏显示接口电路的分析与设计;点阵屏显示接口电路的分析与设计;5、进一步学会程序的调试过程与仿真方法。、进一步学会程序的调试过程与仿真方法。4、掌握单片机复杂、掌握单片机复杂I/O口控制程序的分析与设计;口控制程序的分析与设计;3、学会进行矩阵键盘及、学会进行矩阵键盘及LED点阵屏显示程序的设计与编写;点阵屏显示程序的设计与编写;仿真运行视频仿真运行视频技能训练技能训练3 3:按键值显示控制:按键值显示控制

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 金融/商业/投资

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号