版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用技术18物联网核心课程项目化实施课程嵌入式系统编程技术路径单片机内部结构片上资源模块存储器结构(ROM/RAM等)时序(时钟)系统片上外设的SFR编程应用外设I/O接口应用开发变方法不变1、共阳极字型码数组变量disp初始化“段码”unsignedcharcodedisp[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};2、主函数循环遍历数组(循环四要素)温故知新:数码管静态显示接口思考:多位数码管如何显示连接呢?任务3-1动态数码管信息牌3.1.1动态显示硬件接口3.1.2“轮流坐庄”逐位动态扫描软件控制项目3显示与键盘接口进阶里程表仪器仪表倒车雷达空调电饭锅电梯实时时钟环境测控如何显示多位数字的信息呢?案例引入任务3-1动态数码管信息牌在多位数码管稳定显示:校庆日,纪念日……1
9
93
0428
一、任务硬件接口设计多位数码管动态显示接口3.1.1
动态显示硬件接口已知:静态显示硬件接口段线位线段线(a~dp):每个数码管段线,独占一个8位端口(限流电阻)位线(COM):位线固定电平VCC(共阳)或GND(共阴)特点:输出段字型码(数组元素),编程简单8根段线要独占一个并行I/O端口亮度高,但是浪费I/O端口资源;COMCOM51单片机P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7资源浪费!!!COMCOM已知:多位静态显示硬件接口引入:动态显示接口?一位数码管(8+2=10引脚)已知:多位数码管结构及引脚四位数码管(8+4=12引脚)共用字段线独立每位数码管的公共端作为位控线未知:多位动态显示硬件接口2个四位数码管如何连接?同相总线收发器(缓冲器)实现驱动
未知:多位动态显示硬件接口段线(a~dp):每位数码管段线共享一个8位端口位线(COM):独立,由I/O端口动态控制位线电平特点:位码“轮流坐庄”,再输出段码(数组元素)不停扫描耗CPU,亮度低,但占用端口资源少一、任务硬件接口设计数码管动态显示接口段线P1位线P28个共阴极数码管位线接到P2口。每个数码管的8个段线共用接到P1口。一、任务硬件接口设计PROTEUS模拟仿真1:在8个数码管同时显示62:选中8位数码管中的最左边一位(w1—P2.0),显示2;3:选中8位数码管中的最右边一位(w8—P2.0),显示8;4:同时选中最左边和最右边两位,同时显示28?分时1ms引例:数码管动态显示接口简单控制如何在数码管显示校庆日呢?W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.73.1.2“轮流坐庄”逐位动态扫描软件控制3.1.2“轮流坐庄”逐位动态扫描软件控制首先,位选口选中第一个数码管w1,段选口送这个数码管想要显示的字型码,然后延时一段时间;2.
其次,位选口选中第二个数码管w2,段选口送出相应的字型码,延时,。。。。。3.依次类推,直到位选口选中最后一个数码管w8,段选口送出最后一个数码管的字型码,延时这样,一次循环结束,每个数码管“轮流坐庄”各被点亮一次。位选:选中w1数码管0xFE段选:输出相应字型码
延时位选:选中w2数码管0xFD段选:输出相应字型码延时位选:选中w8数码管0x7F段选:输出相应字型码延时位选借鉴“流水灯”从低位到高位D1~D8的状态码思想?——位码延时1~2ms,人眼视觉暂留效应W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.7任务3-1-1动态显示校庆日设计与实现动态扫描W1(C0)W2(C1)
W3(C2)W4(C3)W5(C4)W6(C5)W7(C6)W8(C7)位码11111110B11111101B11111011B11110111B11101111B11011111B10111111B01111111B显示字符19930428段码0x060x6f0x6f0x4f0x3f0x660x5b0x7f硬件接口位线P2段线P1共阴极数码管段码(字型码)查表教材P109硬件接口及任务软件设计(功能分析+编程实现)任务3-1-1动态显示校庆日while(1){
P1=0x00;//共阴数码管关显示
P2=0XFE;//选中w1
P1=0X06;//字型码“1”
delayms(?);
P1=0x00;//共阴数码管关显示
P2=0XFD;//选中w2
P1=0X6F;//字型码“9”
delayms(?);
…………
P1=0x00;//共阴数码管关显示
P2=0X7F;//选中w8
P1=0X7F;//字型码“8”
delayms(?);}位选:选中w1数码管0xFE段选:输出相应字型码
延时1ms位选:选中w2数码管0xFD段选:输出相应字型码延时1ms位选:选中w8数码管0x7F段选:输出相应字型码延时1ms…任务软件设计(功能分析+编程实现)任务3-1-1动态显示校庆日1、关显示,避免切换字型码时的拖影现象,注释本代码,测试拖影效果;2、delayms(1)自定义110次嵌套循环实现大约1ms的延时函数。顺序结构W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.71动态显示硬件接口2“轮流坐庄”逐位动态扫描软件控制3动态扫描流程及编码优化
顺序结构动态扫描流程:关显示/输出位码/输出段码/延时1ms
任务小结4谢谢单片机应用技术18物联网核心课程项目化实施课程嵌入式系统编程技术路径单片机内部结构片上资源模块存储器结构(ROM/RAM等)时序(时钟)系统片上外设的SFR编程应用外设I/O接口应用开发变方法不变1、共阳极字型码数组变量disp初始化“段码”unsignedcharcodedisp[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};2、主函数循环遍历数组(循环四要素)温故知新:数码管静态显示接口思考:多位数码管如何显示连接呢?任务3-1动态数码管信息牌3.1.1动态显示硬件接口3.1.2“轮流坐庄”逐位动态扫描软件控制项目3显示与键盘接口进阶里程表仪器仪表倒车雷达空调电饭锅电梯实时时钟环境测控如何显示多位数字的信息呢?案例引入任务3-1动态数码管信息牌在多位数码管稳定显示:校庆日,纪念日……1
9
93
0428
一、任务硬件接口设计多位数码管动态显示接口3.1.1
动态显示硬件接口已知:静态显示硬件接口段线位线段线(a~dp):每个数码管段线,独占一个8位端口(限流电阻)位线(COM):位线固定电平VCC(共阳)或GND(共阴)特点:输出段字型码(数组元素),编程简单8根段线要独占一个并行I/O端口亮度高,但是浪费I/O端口资源;COMCOM51单片机P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7资源浪费!!!COMCOM已知:多位静态显示硬件接口引入:动态显示接口?一位数码管(8+2=10引脚)已知:多位数码管结构及引脚四位数码管(8+4=12引脚)共用字段线独立每位数码管的公共端作为位控线未知:多位动态显示硬件接口2个四位数码管如何连接?同相总线收发器(缓冲器)实现驱动
未知:多位动态显示硬件接口段线(a~dp):每位数码管段线共享一个8位端口位线(COM):独立,由I/O端口动态控制位线电平特点:位码“轮流坐庄”,再输出段码(数组元素)不停扫描耗CPU,亮度低,但占用端口资源少一、任务硬件接口设计数码管动态显示接口段线P1位线P28个共阴极数码管位线接到P2口。每个数码管的8个段线共用接到P1口。一、任务硬件接口设计PROTEUS模拟仿真1:在8个数码管同时显示62:选中8位数码管中的最左边一位(w1—P2.0),显示2;3:选中8位数码管中的最右边一位(w8—P2.0),显示8;4:同时选中最左边和最右边两位,同时显示28?分时1ms引例:数码管动态显示接口简单控制如何在数码管显示校庆日呢?W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.73.1.2“轮流坐庄”逐位动态扫描软件控制3.1.2“轮流坐庄”逐位动态扫描软件控制首先,位选口选中第一个数码管w1,段选口送这个数码管想要显示的字型码,然后延时一段时间;2.
其次,位选口选中第二个数码管w2,段选口送出相应的字型码,延时,。。。。。3.依次类推,直到位选口选中最后一个数码管w8,段选口送出最后一个数码管的字型码,延时这样,一次循环结束,每个数码管“轮流坐庄”各被点亮一次。位选:选中w1数码管0xFE段选:输出相应字型码
延时位选:选中w2数码管0xFD段选:输出相应字型码延时位选:选中w8数码管0x7F段选:输出相应字型码延时位选借鉴“流水灯”从低位到高位D1~D8的状态码思想?——位码延时1~2ms,人眼视觉暂留效应W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.7任务3-1-1动态显示校庆日设计与实现动态扫描W1(C0)W2(C1)
W3(C2)W4(C3)W5(C4)W6(C5)W7(C6)W8(C7)位码11111110B11111101B11111011B11110111B11101111B11011111B10111111B01111111B显示字符19930428段码0x060x6f0x6f0x4f0x3f0x660x5b0x7f硬件接口位线P2段线P1共阴极数码管段码(字型码)查表教材P109硬件接口及任务软件设计(功能分析+编程实现)任务3-1-1动态显示校庆日while(1){
P1=0x00;//共阴数码管关显示
P2=0XFE;//选中w1
P1=0X06;//字型码“1”
delayms(?);
P1=0x00;//共阴数码管关显示
P2=0XFD;//选中w2
P1=0X6F;//字型码“9”
delayms(?);
…………
P1=0x00;//共阴数码管关显示
P2=0X7F;//选中w8
P1=0X7F;//字型码“8”
delayms(?);}位选:选中w1数码管0xFE段选:输出相应字型码
延时1ms位选:选中w2数码管0xFD段选:输出相应字型码延时1ms位选:选中w8数码管0x7F段选:输出相应字型码延时1ms…任务软件设计(功能分析+编程实现)任务3-1-1动态显示校庆日1、关显示,避免切换字型码时的拖影现象,注释本代码,测试拖影效果;2、delayms(1)自定义110次嵌套循环实现大约1ms的延时函数。顺序结构W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.71动态显示硬件接口2“轮流坐庄”逐位动态扫描软件控制3动态扫描流程及编码优化
顺序结构动态扫描流程:关显示消影/输出位码/输出段码/延时1ms
while(1)的作用?
任务小结Debug:硬件上需要关注消除“拖影”3.1.2“轮流坐庄”逐位动态扫描软件控制首先,位选口选中第一个数码管w1,段选口送这个数码管想要显示的字型码,然后延时一段时间;2.
其次,位选口选中第二个数码管w2,段选口送出相应的字型码,延时,。。。。。3.依次类推,直到位选口选中最后一个数码管w8,段选口送出最后一个数码管的字型码,延时这样,一次循环结束,每个数码管“轮流坐庄”各被点亮一次。位选:选中w1数码管0xFE段选:输出相应字型码
延时位选:选中w2数码管0xFD段选:输出相应字型码延时位选:选中w8数码管0x7F段选:输出相应字型码延时位选借鉴“流水灯”从低位到高位D1~D8的状态码思想?——位码延时1~2ms,人眼视觉暂留效应W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.7W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.7•
首先,关显示,从位线输出位码,选通该位数码管;• 其次,从段线输出段码,在某位数码管显示字型码对应的字符(数字);• 然后,延时1~2ms,保持一段延时时间,确保满足人眼的视觉暂留作用。• 最后,循环修改:修改位码,选通下一位;修改段码下标i++,为遍历下一位的段码做准备;for循环遍历重复上述三个步骤,共8次,从而将8位动态扫描一轮,即完成一屏显示while(1)重复完整的8位动态扫描过程,以便持续此屏显示循环结构的动态扫描流程类似流水灯控制位选,可以移位+循环;也可以数组遍历3.1.2“轮流坐庄”逐位动态扫描软件控制✎小组实践下面来小组协作动手实践一下吧1、用循环结构优化程序——循环+移位新建t3-1-1V2.c文件,加入工程;找规律,段码存入数组led[](循环遍历数组元素),位码w采用循环+移位的结构。参考下页ppt通用流水灯代码段和教材P117,修改程序(记录教材笔记),实现学号显示功能,注意共阴极数码管。任务3-1-1动态显示校庆日优化1、位码移位+循环方式(思路及参考):段码数组遍历;位码移位+循环(参考P117+流水灯模板控制位码)任务3-1-1动态显示校庆日优化W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.7✎小组实践下面来小组协作动手实践一下吧2、用数组优化程序——位码+段码数组遍历新建t3-1-1V3.c文件,加入工程;优化思路:为避免位码移位的繁琐,请将位码存入数组com[]中,修改代码通过循环遍历数组元素com[i]实现位码控制。tips:类似通用流水灯的数组遍历控制位码unsignedcharcom[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//一维数组存储位码任务3-1-1动态显示校庆日优化任务3-1-2交替显示两屏信息设计与实现动态扫描W1(C0)W2(C1)
W3(C2)W4(C3)W5(C4)W6(C5)W7(C6)W8(C7)位码11111110B11111101B11111011B11110111B11101111B11011111B10111111B01111111B神十三发射时间20211016神十三返回时间20220416硬件接口位线P2段线P1共阴极数码管段码(字型码)查表教材P109硬件接口及任务软件设计(功能分析+编程实现)任务3.1.2交替显示两屏信息二维数组led[2][]?任务软件设计(功能分析+编程实现参考P118)任务3-1-2交替显示两屏信息显示第1屏8位信息led[0][i]:20211016神十三号发射时间(循环刷新显示第1屏125次)持续约1秒显示第2屏8位信息led[1][i]:20220416神十三号返回时间(循环第2屏的显示125次)持续约1秒
2屏交替显示,每屏持续约1秒动态延时:重复若干次动态扫描(显示一屏信息)——位码数组遍历方式1动态显示硬件接口2“轮流坐庄”逐位动态扫描软件控制3动态扫描流程及编码优化
顺序结构动态扫描流程:关显示/输出位码/输出段码/延时1ms
循环结构动态扫描流程:1)位码移位+循环方式优化 2)
位码数组遍历方式优化4动态刷新延时多屏/移动显示(循环多轮的动态扫描实现持续显示)任务小结4谢谢单片机应用技术18物联网核心课程项目化实施课程任务3-2点阵LED指示牌3.2.1点阵LED显示器结构及引脚3.2.2点阵LED的硬件接口3.2.3动态逐行扫描软件控制3.2.4点阵字模设计项目3显示与键盘接口进阶如何控制8*8点阵LED显示?案例引入任务3-2点阵LED指示牌在点阵LED显示器显示:人行交通指示牌……点阵LED显示器已知/未知?3.2.1点阵LED显示器结构及引脚8列8行已知:一个点是一个LED(阳极/阴极)一个点是面的一个像素(平面行列坐标)3.2.1点阵LED显示器结构及引脚未知:如何用较少的引脚资源连接8*8=64个LED?多位数码管的动态连接(位线、段线)思想是否可借鉴呢?同相总线收发器(缓冲器)实现驱动
已知:多位动态显示接口:共用段线,分时控制位段线(a~dp):每位数码管段线共用一个8位端口位线(COM):独立,由I/O端口动态控制位线电平,轮流选中特点:位码“轮流坐庄”,再输出段码(数组元素)不停扫描耗CPU,亮度低,但占用端口资源少+-行线(共阳)列线(共阴)8行8列共64个LED3.2.1点阵LED显示器结构及引脚(选型:共阳)多少引脚呢?X0X1X2X3X4X5X6X7(A)(B)(C)(D)(E)(F)(G)(H)3.2.1点阵LED显示器结构及引脚行线列线思考:如何点亮一个点呢?+-Y0(1)Y1(2)Y2(3)Y3(4)Y4(5)Y5(6)Y6(7)Y7(8)3.2.2
点阵LED的硬件接口X0X1X2X3X4X5X6X7(A)(B)(C)(D)(E)(F)(G)(H)Y0(1)Y1(2)Y2(3)Y3
(4)Y4(5)Y5(6)Y6(7)Y7(8)3.2.2点阵LED的硬件接口行线列线点亮一个点的思路对应坐标的行列控制行线R(Y)共阳:输出高电平列线C(X)共阴:输出低电平10PROTEUS测试8*8红色点阵LED引脚右键器件,选择“分解”,观察分析引脚,默认上行线,下列线引脚1~8:行线共阳引脚A~H:列线共阴测试点亮四个点:行线1、2—VCC列线A、C--GND1A行列位置是否正确?PROTEUS放置8*8红色点阵LED器件(调整方向)1)选择器件并调整方向放置:-90度X轴镜像2)右键器件选择“分解”,观察确认器件引脚调整后引脚:左行线1~8(共阳),右列线A~H(共阴)3)块删除该分解编辑状态下的器件4)重新按照步骤1)的方法添加器件并绘制原理图123X0
X1
X2
X3X4X5X6
X7(A)(B)(C)(D)(E)(F)(G)(H)Y0(7)Y1(6)Y2(5)Y3(4)Y4(3)Y5(2)Y6(1)Y7(0)51单片机P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.73003.2.2点阵LED的硬件接口点亮一个点的思路对应坐标的行列控制行线R(Y)共阳:高电平列线C(X)共阴:低电平+-一、任务硬件接口设计列线(0点亮)行线(1选中)点亮一个点的思路对应坐标的行列控制行线R(Y):输出高电平列线C(X):输出低电平一、任务硬件接口设计PROTEUS模拟仿真一、任务硬件接口设计开发板连线案例实现任务3-2点阵LED指示牌在点阵LED显示器显示:人行交通指示牌……3.2.3
动态逐行扫描软件控制8*8LED点阵的逐行扫描法3.2.3动态逐行扫描软件控制行码(选中)状态码(逐行)P1.0(1行)P0.7(
H列)列线P0(共阴)低电平点亮行线P1(共阳)高电平选中P0.0(A列)
P1.7(8行)00000001B,即0x0100000010B,即0x0200000100B,即0x0400001000B,即0x0800010000B,即0x1000100000B,即0x2001000000B,即0x4010000000B,即0x8011100111B,即0xF711011011B,即0xF710111101B,即0x8001111110B,即0xF701111110B,即0xEB10111101B,即0xDD11011011B,即0xBE11100111B,即0xFF一帧数据的逐行状态码——数组遍历一帧数据的行码——移位循环或数组遍历行码与状态码(教材P126)3.2.3动态逐行扫描软件控制思考:如何实现点阵LED动态逐行扫描的循环结构优化呢?——参考ppt附录1温故知新:单片机控制共阳8*8LED点阵硬件接口行线:连接单片机I/O口;如控制选中某一行软件控制(动态扫描)逐行扫描法列线:连接单片机I/O口;如控制某一行8个led的亮灭状态码逐列扫描法重复动态扫描,稳定显示一帧1)列码关显示;2)行码(高电平选中行)3)状态码(低电平点灯码)——字模软件4)视觉暂留延时1ms猜一猜:点亮哪个点?1、顺序结构;2、循环+移位控制行码优化;3、数组遍历控制行码优化3.2.4点阵字模设计3.2.4点阵字模设计1234任务3-2-2多帧图像动起来设计与实现逐行扫描1(ROW0)2(ROW1)
3(ROW2)4(ROW3)5(ROW4)6(ROW5)7(ROW6)8(ROW7)行码00000001B00000010B00000100B00001000B00010000B00100000B10111111B01111111B行人1列码0xF70xF70x800xF70xEB0xDD0xBE0xFF行人2列码0xF70xF70xE30xD50xB60xEB0xDD0xBE硬件接口行线P1列线P0硬件接口及逐行扫描软件控制(功能分析+编程实现)任务3-2-2多帧图像动起来列码二维数组led[n][8]={{},{},…{}};1、n帧数2、{}存储每帧逐行扫描的8行状态码行人n列码取模软件?逐行扫描软件控制(功能分析+编程实现参考ppt附录2;教材P122)显示第1帧8行状态码led[0][i](for循环刷新显示)
显示第2帧8行状态码led[1][i](for循环刷新显示)显示第n帧8行状态码led[n][i](for循环刷新显示)多帧,最外层嵌套for循环——行码循环+移位方式任务3-2-2多帧图像动起来思考:1、用取模软件,再多设计一个图像姿势吧?
2、如何加快图像的行动速度?
任务3-2-3爱心“行动”设计与实现任务3-2-3爱心“行动”(上动)硬件接口及逐行扫描软件控制(功能分析+编程实现参考ppt附录3)。。。unsignedcharledmove[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,??,??,??,??,??,??,??,??,??,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//16帧逐行扫描的状态码
如何向左滚动显示呢?——逐列扫描unsignedcharledmove[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00??,??,??,??,??,??,??,??,??,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};};//16帧逐列扫描的状态码任务3-2-3爱心“行动”(左动)——逐列扫描
列码选中列(低电平选中);
行线输出该列的状态码(高电平点亮)1点阵LED显示器结构及引脚(选型行线共阳red点阵LED)2点阵LED的硬件接口(确定行线和列线的引脚和端口)3动态逐行扫描软件控制(类比数码管动态显示流程):
1)状态码关显示;2)行码(高电平选中行),循环+移位优化
3)状态码(低电平亮灯码),取模软件;4)视觉暂留延时1ms
4动态刷新延时多帧动画/滚动显示(逐行扫描vs逐列扫描)
嵌套for循环的逐行扫描动态刷新实现稳定显示任务小结附录1:任务t3-1-1动态数码管一屏8位显示参考代码附录2:任务t3-1-2动态数码管交替两屏显示参考代码附录3:任务t3-1-3动态数码管移动显示参考代码4谢谢单片机应用技术18物联网核心课程项目化实施课程任务3-3矩阵键盘控制数码管3.3.14*4矩阵键盘结构及引脚3.3.2矩阵键盘的硬件接口3.3.3逐列扫描按键控制项目3显示与键盘接口进阶如何检测4*4矩阵键盘?案例引入任务3-3矩阵键盘控制数码管最右侧数码管显示:矩阵键盘中按下的键值矩阵键盘已知/未知?3.3.1
4*4矩阵键盘结构及引脚按键常用按键符号已知:独立按键一端上拉输入端口;一端接地如果需要更多的按键呢?静态连接未知:4*4矩阵键盘这么多按键怎么排列呢?01230123四条列线3.3.14*4矩阵键盘结构及引脚四条行线1、同行按键的一端相连,形成行线;2、同列按键的另一端相连,形成列线;每一个按键跨接在行线、列线之间01230123四条列线3.3.14*4矩阵键盘结构及引脚四条行线如何确定每个按键呢?键号=行号*4+列号8根引脚H1~H4;L1~L4K0K1K2K3K4K5K6K7K8K9K10K11K12K13K14K153.3.2矩阵键盘的硬件接口单片机AT89C514×4矩阵键盘01230123行线列线3.3.2矩阵键盘的硬件接口4×4矩阵键盘01230123行线列线单片机行线连接3.3.2矩阵键盘的硬件接口+VCC行线输入:对比独立式按键的静态连接4×4矩阵键盘01230123行线列线单片机列线连接3.3.2矩阵键盘的硬件接口+VCC列线行线列线输出:控制逐列判断按键3.3.2矩阵键盘的硬件接口行线列线行线与单片机I/O口间上拉电阻连接!!案例引入任务3-3矩阵键盘控制数码管最右侧数码管显示:矩阵键盘中按下的键值如何进行器件资源分配?一、任务硬件接口设计(端口资源分配)位线P2口段线P1口行线P0.0~P0.3列线P0.4~P0.7案例引入任务3-3矩阵键盘控制数码管最右侧数码管显示:矩阵键盘中按下的键值如何识别按下的键值?3.3.3逐列扫描按键控制如何识别哪一个按键按下?01230123行线列线+VCC?1K×43.3.3逐列扫描按键控制
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;3、按键释放(可选)
4、显示等处理已知:独立按键查询处理的字节操作行线P0.0~P0.3列线P0.4~P0.7未知:动态逐列扫描?已知:独立按键查询处理的字节操作01230123行线列线+VCC1K×4逐列扫描法输出-列线输入-行线
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;3、按键释放(可选)
4、显示等处理模式1/模式2?1、按键检测:是否有键按下2、按键判断:判断具体按键未知:矩阵按键动态逐列扫描第一步,先来判断是否有键按下,向P0.4到P0.7的四条列线全部输出低电平,读入P0.0-P0.3四条行线的信号01230123行线列线+VCC
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;逐列扫描法:1K×4输出输入00000000S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15信号读入当所有的按键都没有被按下时,P0.0到P0.3读入的行电平都为高,即key=P0&0x0F;key==0x0F01230123行线列线+VCC1K×4输出输入00001)无键按下1111S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15逐列扫描法:
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;01230123行线列线+VCC逐列扫描法:1K×4输出输入00001110S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S152)有键按下行电平不全为高→有键按下
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;P0.0到P0.3读入的行电平不全为高,即key=P0&0x0F;key!=0x0F;然后去抖延时;再次判断是否有键按下。逐列扫描动态选中某列按键,再次读入行线按键值进行判断,如果有键按下,则可获得对应的行号;即:先给第0列输出低电平“0”,其他三列都为高电平“1”。读入行电平,判断第一列四个按键的状态(行号)。01230123行线列线+VCC逐列扫描法:1K×4输出输入11101101S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;重复:逐列扫描动态选中某列按键,再次读入行线按键值进行判断,如果有键按下,则可获得对应的行号;即:送第1列为低电平“0”,其他三列为高电平,进行第一列4个按键是否按下的判断。01230123行线列线+VCC逐列扫描法:1K×4输出输入1101S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;重复:逐列扫描动态选中某列按键,再次读入行线按键值进行判断,如果有键按下,则可获得对应的行号;即:送第2列为低电平“0”,
其他三列为高电平,进行第2列4个按键是否按下的判断。01230123行线列线+VCC逐列扫描法:1K×4输出输入1011S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;01230123行线列线+VCC逐列扫描法:1K×4输出输入0111S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;重复:逐列扫描动态选中某列按键,再次读入行线按键值进行判断,如果有键按下,则可获得对应的行号;即:送第3列为低电平“0”,
其他三列为高电平,进行第3列4个按键是否按下的判断。01230123行线列线+VCC逐列扫描法:1K×4输出输入行电平不全为高→有键按下S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S15逐列选中(输出低电平)→输出列线按键状态(获取行号/列号),键号=行号*4+列号
1、按键检测:是否有键按下;
2、按键判断:判断具体按键;1、按键检测:是否有键按下2、按键判断:判断具体按键未知:矩阵按键动态逐列扫描✎小组实践下面来小组协作动手实践一下吧已知Proteus原理图,分析矩阵键盘的硬件接口电路在给出的源文件中补充代码,完成以下任务:逐列扫描法实现键值显示器:在最右侧两位数码管(W7,W8)显示在矩阵键盘中按下的键值00~15;任务3.3矩阵键盘控制数码管while(1){
P1=0x00;//共阴数码管关显示
P2=0XFE;//选中w1P1=0X5B;//字型码“2”
delayms(1);//延时1ms
P1=0x00;//共阴数码管关显示
P2=0XFD;//选中w2P1=0X3F;//字型码“0”
delayms(1);//延时1ms
…………
P1=0x00;//共阴数码管关显示
P2=0X7F;//选中w8P1=0X7D;//字型码“6”
delayms(1);//延时1ms}位选:选中w1数码管0xFE段选:输出相应字型码
延时位选:选中w2数码管0xFD段选:输出相应字型码延时位选:选中w8数码管0x7F段选:输出相应字型码延时…动态显示:逐位扫描顺序结构
“轮流坐庄”逐位动态扫描软件控制延时1~2ms,人眼视觉暂留效应W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.714*4矩阵键盘结构及引脚2矩阵键盘的硬件接口3逐列扫描按键控制
任务小结(拓展选学模块)4谢谢单片机应用技术18物联网核心课程项目化实施课程动态扫描小结任务3-1动态数码管信息牌任务3-2点阵LED广告牌任务3-3矩阵键盘控制数码管项目3显示与键盘接口进阶任务3-1动态数码管信息牌(**)3.1.1动态显示硬件接口
(P110静态特点P115-119动态特点)3.1.2“轮流坐庄”逐位动态扫描软件控制3.1.3C51模块化开发(P143小经验)项目3显示与键盘接口进阶静态显示硬件接口(P110掌握接口原理图)段线位线段线(a~dp):每个数码管段线,独占一个8位端口(限流电阻)位线(COM):位线固定电平VCC(共阳)或GND(共阴)特点(**):输出段字型码(数组元素),编程简单8根段线要独占一个并行I/O端口亮度高,但是浪费I/O端口资源;多位动态显示硬件接口(P115掌握接口原理图)段线(a~dp):每位数码管段线共享一个8位端口位线(COM):独立,由I/O端口动态控制位线电平特点(**):位码“轮流点亮”,再输出段码(数组元素)不停扫描耗CPU,亮度低,但占用端口资源少同相总线收发器(缓冲器)实现驱动(限流电阻)
段线位线少量连接:静态多个连接:动态1、共阳极和共阴极的段码区别(109页);2、段线反相器的应用将共阳极或共阴极取反!共阳极
VCC共阳极字型码dpgfedcba100100100x92while(1){
P1=0x00;//共阴数码管关显示
P2=0XFE;//选中w1P1=0X5B;//字型码“2”
delayms(1);//延时1ms
P1=0x00;//共阴数码管关显示
P2=0XFD;//选中w2P1=0X3F;//字型码“0”
delayms(1);//延时1ms
…………
P1=0x00;//共阴数码管关显示
P2=0X7F;//选中w8P1=0X7D;//字型码“6”
delayms(1);//延时1ms}位选:选中w1数码管0xFE段选:输出相应字型码
延时位选:选中w2数码管0xFD段选:输出相应字型码延时位选:选中w8数码管0x7F段选:输出相应字型码延时…动态显示:逐位扫描顺序结构
“轮流坐庄”逐位动态扫描软件控制延时1~2ms,人眼视觉暂留效应W1W2
W3
W4W5
W6
W7
W8P2.0P2.1
P2.2
P2.3P2.4
P2.5
P2.6
P2.7•
首先,关显示,从位线输出位码,选通该位数码管;• 其次,从段线输出段码,在某位显示相应的字符(数字);• 然后,延时1~2ms,确保满足人眼的视觉暂留作用。• 最后,循环修改:修改位码,选通下一位;修改段码下标i++,为遍历下一位的段码做准备;for循环遍历重复上述三个步骤,共8次,从而将8位动态扫描一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校体育在国家公共服务体系中的角色与功能新论
- 高新技术企业知识员工:社会资本、吸收能力与职业成功的内在关联探究
- 高效率电流模式降压型DC DC转换器的关键技术研究与优化设计
- 食品消毒监管自查报告及整改措施
- 网络安全审计操作规程
- 胆总管切开取石 + T 管引流术知情同意书
- 化工管道保温安全试题及答案
- 医疗器械经营质量管理规范培训试题及参考答案
- 浸塑ji作业指导书
- 2026轮胎经理面试题及答案
- JT∕T 788-2023 航标遥测遥控系统技术规范
- 福建省农村部分计划生育家庭奖励扶助制度实施细则
- 50G-PON技术白皮书 -中兴
- JX-系列脱氯剂交流课件
- 化工新材料简介
- 2023全国结核病竞赛试卷3病例分析(彭)
- 调剖施工程序书及注聚泵操作规程
- 2023年江苏省宿迁市经济技术开发区社区工作人员考试模拟题及答案
- 房建技术员施工员考试参考题库(含各题型)
- 压力管道强度校核计算表
- DB15T 967-2016 林木育苗技术规程
评论
0/150
提交评论