模拟量按键与数字按键综合控制数码管说明.docxVIP

模拟量按键与数字按键综合控制数码管说明.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

“模拟按键与数字按键综合控制数码管”说明

(一)设计思路与方法

本实验中按键1、2是通过触发0号和1号外部中断来分别控制一个数码管信号显示位置的循环右移和循环左移,模拟量按键3(该键既是模拟按键又是数字按键,这里使用到的是其模拟按键功能)通过AD模拟转换来锁定或者释放数码管信号显示(即通过该按键来控制数码管信号显示位置是否能移动),导航键的上拉和下拉键通过AD模拟转换来控制数码管信号显示内容,期间用0号定时器中断来给按键1、2消抖并且点亮数码管,模拟按键则采用延时消抖,其基本原理与定时器消抖一致。AD模拟转换结果(本实验这里只获取ADC_RES寄存器中的8为转换值)要通过线性右移8位(即只保留高三位)来消除转换误差。

(二)电路原理图

发光二极管及LED数码管电路(左、右两部分均含)

附LED数码管引脚定义图如下:

按键电路

(三)电路工作原理

数码管电路工作原理

P0口的8位输出分别控制1个LED数码管的7段和一个小数点;而P2.3经反相器U4C控制74HC138的使能信号E3,结合P2.0、P2.1、P2.2这3个位选控制信号确定8个LED数码管中的哪个被点亮;电阻R15~R22为限流电阻。当段选为高、使能信号有效时,对应的LED管将会发光。

数字按键(按键1和2)工作原理

按键1引脚对应触发外部中断0;按键2引脚对应触发外部中断1;按键1、按键2按下去,引脚KEY1、KEY2输出低电平0。在按键1、2触发的外部中断中要对其进行消抖的工作,在定时器中断中判断按键的状态,为0计数加1,连续200次都为0证明按键已经按下,完成消抖;为1,则按键存在抖动,计数清零,重新计数。

模拟按键(按键3和导航键)工作原理

从案件电路图中可以看出,导航按键的不同方向以及按键3对应的不同的电压值,通过AD转换器(具体工作方式见STC15F2K60S2数据手册)转换成数字值保存在相应寄存器中,然后通过读取相应的寄存器判断按键执行相应功能(AD模拟转换结果(本实验这里只获取ADC_RES寄存器中的8为转换值)要通过线性右移8位(即只保留高三位)来消除转换误差)。

(四)相关变量说明

R0

R0

R1R2R3KEY

RESULT

用来定时器计数

决定数码管显示位置是否能移动决定数码管显示位置

决定数码管显示内容模拟按键AD转换结果

消抖后的模拟按键AD转换结果

(五)程序设计流程图

初始化硬件

初始化硬件(包括

数码管、按键、A/D

、中断等)

按键监听

按键1.2按下去进入对应的外部中断相应函数

(通过定时器延时消抖改变对应的变量值控制信号显示的位置);若按键3按下则直接用延时消抖判断相应的A/D转换值改变对应的变量值控制信号显示位置是否能移动;导航键的上拉和下用延时消抖判断相应的A/D转换值改变对应的变量值改变信号

显示值

(六)相关寄存器配置

P0(8位)和P2.3需要设置成推挽输出,以驱动电路正常发光。涉及寄存器及配置值如下:

P2M1=0x00;

P2M0=0xff;

P0M1=0x00;

P0M0=0xff;

TMOD寄存器:

初始化时,设置定时器0,工作模式1即16位普通工作模式,TMOD=0x01;

IE寄存器:

初始化时,设置EA=1,打开总的中断,设置ET0=1开启定时器0的中断;设置EX0=1开启外部中断0;设置EX1=1开启外部中断1;

TH0、TL0寄存器:

同时还要设置TH0、TL0的初始值;

TCON寄存器:

初始化时,设置TR0=1启动定时器0;设置IT0=0、IT1=0即外部中断0、1

都为低电平触发。

IP寄存器:

初始化时,设置PT0=1,定时器0为高优先级;

P1ASF()寄存器:

初始化时设置P1ASF=#0FFH,将P1.0~7口作为模拟功能A/D使用。

ADC_CONTR寄存器

初始化设置ADC_CONTR=#8FH,开启AD模拟转换器,并且开始进行转换,选择P1.7作为A/D输入来用

CLK_DIV寄存器

初始化设计CLK_DIV=#00H,ADC_RES[7:0]存放高8为ADC结果,ADC_RESL[1:0]存放低2位ADC结果。

(七)详细实现见对应的工程文档

(八)测试方法

用STCISP默认设置,打开工程中的HEX并下载

下载后观察现象为:显示数码管位置指的是几号数码管亮(只亮一个数码管),下列操作表只是显示从上到下按顺序操作一次的结果。

操作

无操作

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档