查询方式按键

查询方式按键
查询方式按键

【013】查询方式按键 [51]

点击数:684 发布日期:2006-6-25 0:57:00

【收藏】【评论】【打印】【编程爱好者论坛】【关闭】

实验参考: 笨笨工作室-实验六、查询方式按键。(查看)

实验板: FB51A。(查看)

实验目的: <1> 掌握读取外部按键时候应该注意的事项,掌握查询方式响应按键的方法。

<2> 掌握读取按键去抖动的方法。

<3> 掌握判直接寻址位转移指令jb,jnb的用法。

实验现象: 最右面的数码管初始显示0,每次按下外部按键K1执行加一,计数到9时重新回0。

单片机响应外部按键的方式有两种,一种是查询方式,一种是中断方式。

查询方式:单片机不断的查询是否有按键按下,如果有按键按下的话,就执行相应的程序,否则继续查询。

中断方式:单片机处理自己的工作,如果有按键按下,向单片机发出中断请求。单片机停下现在正在处理的工作,转去执行中断程序,执行之后回来继续刚才的工作。

本实验是用查询方式完成, 只用到一个键K1,每次按下,使第一位数码管加1显示,计数到9里重新回0。显示部分电路及查表显示方法参考:【005】数码管显示数字和【006】多位数码管动态显示。本来想重画个电路图,在原来显示部分的基础上再把按键部分加上,但一来放在Blog上宽度有问题,再者还是不想画了,所以偷个懒,键盘部分单独拿出来吧。

显示部分:

按键部分:

由原理图知:当按键k1按下的时候,对应P1.0输入低电平。因此,我们要查询k1是否按下,只要检测到p1.0是低电平即可。在查询键是否按下时,要注意按键的去抖动问题,关于键的消抖,见【012】按键消抖。

按上述方法编写程序:

org 0000h

start: mov p0, #48h ; 段码-显示0

mov p2, #01h ; 位码-选通第一位数码管

main: mov r7, #0ffh ; 查表时偏移量,用来实现由0到9循环显示key: jb p1.0, key ; 如果P1.0为高电平,则继续执行此句查询。 call del10ms ; 否则调用延时程序实现软件去抖

jb p1.0, key ; 再次查询P1.0,如果是高电平,表示是抖动,继续查询

dis: ; 确定按键按下,开始执行显示程序

inc r7 ; 偏移量自加(第一次值为0)

mov a, r7

mov dptr, #tab ; 取表首址

movc a, @a+dptr ; 用查表指令获取要显示的数字

mov p0, a ; 得到该字段码送入P0口显示

cjne a, #48h, key ; 未显示到最后一个数, 继续查询按键状态

ljmp main ; 显示到最后一个数字则重新开始

tab: db 0ebh, 52h, 62h, 0e1h, 64h, 44h, 0eah, 40h, 60h, 48h ; 段码表

del10ms: ; 10ms延时子程序(12M)

mov r6, #20 ; 2机器周期

temp: mov r5, #248 ; 2机器周期

djnz r5, $ ; 2机器周期 2+2×248=498

djnz r6, temp ; 2机器周期2×20=40

ret ; 2+20×498+40=10002 即10ms

end

★将该程序下载到板上验证发现很不稳定,按一次键时显示可能会变几次,如果按住键不放,将会显示“8”,且不停在闪烁,用Porteus仿真了一下也是这个问题。这是由于显示了一个数字之后,单片机会返回重新查询P1.0的状态,如果按下的时间很长,就会导致单片机又检测到低电平,所以就继续显示下一个数字,常按住的话就会循环此过程,所以看到的闪烁的“8”实际上是快速动态显示“0”到“9”时人眼的视觉暂留产生的。那如何使按下一次按键,无论时间长短,只作一次按键处理呢?可以在显示完一个数字后即检测P1.0是否回到高电平(键放开),若是,表示按键一次,继续执行显示下一个数; 若不是则原地等待直到P1.0返回高电平。按此思路在程序中将一个段码送入P0口显示之后,加一判断语句(红色):

org 0000h

start: mov p0, #48h ; 段码-显示0

mov p2, #01h ; 位码-选通第一位数码管

main: mov r7, #0ffh ; 查表时偏移量,用来实现由0到9循环显示key: jb p1.0, key ; 如果P1.0为高电平,则继续执行此句查询。 call del10ms ; 否则调用延时程序实现软件去抖

jb p1.0, key ; 再次查询P1.0,如果是高电平,表示是抖动,继续查询

dis: ; 确定按键按下,开始执行显示程序

inc r7 ; 偏移量自加(第一次值为0)

mov a, r7

mov dptr, #tab ; 取表首址

movc a, @a+dptr ; 用查表指令获取要显示的数字

mov p0, a ; 得到该字段码送入P0口显示

wait2: jnb p1.0, wait2 ; 等待按键松开

cjne a, #48h, key ; 未显示到最后一个数, 继续查询按键状态

ljmp main ; 显示到最后一个数字则重新开始

tab: db 0ebh, 52h, 62h, 0e1h, 64h, 44h, 0eah, 40h, 60h, 48h ; 段码表

del10ms: ; 10ms延时子程序(12M)

mov r6, #20 ; 2机器周期

temp: mov r5, #248 ; 2机器周期

djnz r5, $ ; 2机器周期 2+2×248=498

djnz r6, temp ; 2机器周期2×20=40

ret ; 2+20×498+40=10002 即10ms

end

★再下载到板上验证,可得到预测结果,用Porteus仿真如下(注:由于此Blog 空间图片上传要求在100K以内,所以只模拟了0到5的循环,而实际上是从0

到9循环的,那个文件做出来要144K,无法上传。在此仅作为模拟演示):

引用地址:https://www.360docs.net/doc/a817208853.html,/trackback.asp?id=16138

显示和键盘流程图及程序

3.2 部分软件设计 3.2.3显示子程序 动态显示程序框图如图所示。显示程序的要点有两个:一是代码转换。因为直接驱动LED 显示器的是字形码,而人们习惯的是0、1、2、…、F 等字符,因此,必须将待显示的字符转换成字形码。转换用查表的方法进行。二是通过软件实现逐位轮流点亮每个LED 。 为了实现代码转换,首先开辟一个显示缓冲区,将待显示的字符预先存放在缓冲区中。由于有4位LED 显示器,故不妨假设显示缓冲区长度为4个字节。显示缓冲区地址为DIS 0~DIS 3 ,DIS 0单元与最左边一位LED 相对应,DIS 3单元与最右边一位LED 相对应。 程序清单如下: DIS : ORG 0500H MOV A ,#00000011B MOV DPTR ,#7F00H MOVX @DPTR ,A MOV R0,#78H MOV R3,#7FH MOV A ,R3 LD : MOV DPTR ,#7F01H 开 始 结 束 8051初始化 指向下个显示缓冲单元 显示下一位 延时1mS 段选码送入 查段选表 送位选字 动态显示初始化 3位显示完?

有键闭合吗? 确有键闭合吗 闭合键释放吗 返 回 MOVX @DPTR ,A INC DPTR MOV A ,@R0 ADD A ,#0DH MOVC A ,@ DPTR ACALL DLY MOV A ,R3 JNB A ,R0 RR A ,LD1 MOV R3,A INC R0 AJMP LD0 LD1: SJMP LD1 DSEG :DB 3FH ,06H ,5BH ,4FH ,66H ,6DH 7DH ,07H ,7FH ,6FH DLY : MOV R7,#02H DL : MOV R6,#0FFH DL1: DJNZ R6,DL1 DJNZ R7,DL RET 3.2.4键盘子程序 键盘扫描子程序框图如图 图3-4 键盘扫描子程序框图 开 始 两次调用 延时子程序 判断闭合键号 键号 → A 调用延时子程序

一键开关机电路设计集锦

一键开关机电路设计集锦 键可以作为开机键,接地时V15通,单片机上电,使MCU拉高,使V16通,保持。若此时长按KEY,则单片机读取键值,判断是否长按,若为长按,单片机控制MCU为低,进行自杀。下图试验证明是可行的。 单键实现单片机开关机? 1,控制流程,按下按键,Q1导通.单片机通电复位,进入工作.? 2,检测?K-IN?是否低电平,否?不处理.是?单片机输出?K-OUT?为高电平,Q2导通,相当于按键长按.LED指示灯亮.?3,放开按键,K-IN?经过上拉电阻,为高电平.单片机可以正常工作.? 4,在工作期间,按键按下,K-IN?为低电平,单片机检测到长按1秒,K-OUT?输出低电平,Q2截止.LED指示灯熄灭.放开按键,Q1截止,单片机断电.? 5,通过软件处理,可以实现短按开机,长按关机.? 单片机用PIC16F84A,通过简单的程序演示,证实此电路的可行性。 这电路如果这样用,是体现不出它的优点,用到开关电源控制,控制光耦.可以做到完全关断电原,实现零功耗待机.有些打印机上就是用这种电路. 此电路可以应用于很宽的电压范围(4.5V~40V,最大19A的电流),R5为可选,当输入电压小于20V时可短接;输入电压大于20V时建议接上,R5的取值应满足与R1的分压使MOS管V1的GS电压大于-20V 小于-5V(在V2导通时),尽量使V1的GS电压在-10V~-20V之间以使V1输出大电流。 按钮按下前,V2的GS电压(即C1电压)为零,V2截止,V1的GS电压为0,V1截止无输出;当按下S1,C1充电,V2?GS电压上升至约3V时V2导通并迅速饱和,V1?GS电压小于-4V,V1饱和导通,Vout有输出,发光管亮(此时应放开按钮)C1通过R2、R3继续充电,V1、V2状态被锁定;当再次按下按钮时,由于V2处于饱和导通状态,漏极电压约为0V,C1通过R3放电,放至约3V时,V2截止,V1栅源电压大于-4V,V1截止,Vout无输出,发光管灭(放开按钮),C1通过R2、R3及外电路继续放电,V1、V2维持截止状态。 注:S1使Vout打开或关闭后应放开按钮,不然会形成开关振荡。

计算器的使用方法 计算器小知识

计算器的使用方法计算器小知识 普通的计算器如得力计算器与晨光计算器的一些普通功能相信大家都会用,大家经常用来加减乘除,快速计算结果。有些小小的功能键能事半功倍,而这些功能可能有很多人从未使用过,石家庄办公用品批发网小编找了些资料,又根据自己实际经验,把那些个功能键的作用及使用方法给整理了一下。 M+:把目前显示的值放在存储器中,是计算结果并加上已经储存的数,(如屏幕无"M"标志即存储器中无数据,则直接将显示值存入存储器)。 M-:从存储器内容中减去当前显示值,是计算结果并用已储存的数字减去目前的结果,如存贮器中没有数字,按M-则存入负的显示屏数字。 MS:将显示的内容存储到存储器,存储器中原有的数据被冲走。 MR:按下此键将调用存储器内容,表示把存储器中的数值读出到屏幕,作为当前数值参与运算。 MC:按下时清除存储器内容(屏幕"M"标志消除)。 MRC:第一次按下此键将调用存储器内容,第二次按下时清除存储器内容。 GT:GT=Grand Total 意思是总数之和,即按了等号后得到的数字全部被累计相加后传送到GT存储寄存器。按GT后显示累计数,再按一次清空。 MU(Mark-up and Mark-down键):按下该键完成利率和税率计算,详见例3; CE:清除输入键,在数字输入期间按下此键将清除输入寄存器中的值并显示"0",可重新输入; AC:是清除全部数据结果和运算符。 ON/C:上电/全清键,按下该键表示上电,或清除所有寄存器中的数值。 使用举例: 例1. 先按32×21,得数是672。然后按下“M+”,这样就可以把这个答案保存下来,然后我们按“8765-”,再按“MR”就可以把刚才的672调出来了,最后我们就可以得到答案8093。 例2. 在计算时使用记忆键能够使操作简便,例如计算5.45×2+4.7×3可以这样做:按5、.、4、5、×、2、=,会显示出10.9,按M+(记忆10.9),按4、.、7、×、3、=,会显示出14.1,按M+(记忆14.1),按MR 会显示出25(呼出记忆的两个数相加后的结果)。 例3、 MU(Mark-up and Mark-down键):按下该键完成利率和税率计算. 关于"MU"的加减乘除四项功能用法如下: 乘法A×B MU 相当于A+(A+B%) 用途1、知道本年数额与增长率,求预计明年数额。如今年销售收入100,预计增长率为2.5%,求明年数。按100 X 2.5 MU 即出结果为102.5 用途2、计算增值税,由不含税价计算含税价。如不含税销售收入3500元,计算含税销售收入,假定税率为17%,按3500 X 17 MU 即出结果4095 减法A-B MU 相当于(A-B)/B 的百分比 用途知道当年收入与去年收入求增长率。如今年3000,去年2800,计算增长率,按3000-2800 MU 即出结果7.142857 当然结果是百分比 除法A÷B MU 相当于A/(1-B%) 用途1、求成本为120,销售利润率为25%,求销售收入,按120÷25 MU 即出结果160 (看清了,不是成本利润率,成本利润率公式是A x(1+B%)) 用途2、计算消费税组成计税价格,由不含税计算含税价,如不含税1200,适用税率30%,计算含税,按

计算器有关按键说明大全

计算器有关按键说明大全 一、基本按键 ON 开机 OFF 关机 AC 总清,清除所有存储和显示数值(又:CA, All Clear C 清除所有显示和当前运算、归零(又:CLR、Esc,英文名Clear 注:以上又有组成组合键的情况为ON/OFF、ON/AC、ON/C CE 清除输入,清除当前输入数据中最后一个不正确的输入数据并显示“0”,可重新更正输入(英文名Clear Error或Clear Entry ?清除光标前一字符(又:←、Backspace、BS、DEL(delete) INS 改写模式,从当前位置插入(英文名insert REPLAY 指令状态移动方向,上下查记录,左右移动当前表达式中光标(一般此键上有成十字排列的方向标识:▲▼?? SHIFT 转换,上档选择(又: 2ndF、2nd、2nd(第二功能选择,Second Function)、ALT,按键设定为与其同色的功能 ALPHA 阿尔法,字母,按键设定为与其同色的功能 MODE 方式、模式,用于模式切换(不同的计算器有所不同,常用的见下表:

对于数值计数法有: Norm(normal)标准计数法 Fix(fixed)固定小数点 Eng(engineering)工程计数法 Sci(scientific)科学计数法 Inv 反、倒置,用于使用其它有关按键的相反功能,多用于电子计算器。如ln键变为e x键,sin键变为sin-1键,lsh键变为rsh键等EXP 以科学记数法输入数字,即表示以10为底的方幂(又:EE,英文名Exponent 说明:科学记数法:将一个数字表示成a×10的n次幂的形式,其中1≤|a|<10,n表示整数,这种记数方法叫科学记数法。如:5EXP2即5×102,就是500 F-E 科学记数法开关,显示方式转换 作用:十进制浮点(Floating Point)与科学记数法(Exponent)显示转换 S?D 数值在标准形式(Standard)和小数形式(Decimal fraction)之间转换 作用:分数与小数显示转换 Ran# 随机数(又:RAND、RND、Rnd#,英文名Random , : 分隔符,用于输入方程式之间、坐标数据之间分隔用 ∠角,用于标识极坐标数据的角度数据或复数的虚数 二、基础运算 0、00、1、2、3、4、5、6、7、8、9 数字

电梯控制程序源代码(带流程图-功能分解、源代码)

《综合电子创新训练》研究报告研究题目:CTS1600-1控制技术综合试验 院系名称: 专业名称: 学生姓名: 指导教师: xxxx年 xx月 xx日 xxxxxxxxxx

目录 第一章绪论 (1) 1.1课题背景与目的 (1) 1.2课题研究方法 (1) 第二章电梯模型硬件设备 (2) 2.1 实验单片机模型与接口定义 (2) 2.1.1 实验用单片机 (2) 2.1.2 单片机接口定义 (3) 2.1.3 I/O接口DATA控制命令表 (4) 2.2 电梯控制命令说明 (6) 2.3 实验用电梯模型 (8) 第三章与电梯模型相关的实验程序 (10) 3.1数码管连续显示 (10) 3.1.1 程序流程图 (10) 3.1.2 功能简介 (10) 3.1.3 功能实现过程 (11) 3.1.4 问题的解决及收获 (11) 3.2 外部按键灯连续闪烁 (12) 3.2.1 程序流程图 (12) 3.2.2 功能简介 (12) 3.2.3 功能实现过程 (12) 3.2.4 问题的解决及收获 (13) 3.3 键、灯、数码管 (14)

3.3.2 功能简介 (14) 3.3.3 功能实现过程 (14) 3.3.4 问题的解决及收获 (15) 3.4 外部按键上下行 (16) 3.4.1 程序流程图 (16) 3.4.2 功能简介 (16) 3.4.3 功能实现过程 (17) 3.4.4 问题的解决及收获 (18) 3.5 计算器 (19) 3.5.1 程序流程图 (19) 3.5.2 功能简介 (21) 3.5.3 功能实现过程 (21) 3.5.4 问题的解决及收获 (22) 3.6 密码锁 (23) 3.6.1程序流程图 (23) 3.6.2功能简介 (23) 3.6.3实现功能过程 (24) 3.6.4问题的解决及收获 (24) 3.7逐层停自动开关门循环 (25) 3.7.1程序流程图 (25) 3.7.2功能简介 (27) 3.7.3实现功能过程 (27) 3.7.4问题的解决及收获 (27) 3.8 可记录顺序逐层停自动开关门 (28)

按键状态扫描显示电路的设计与制作

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目: 按键状态扫描显示电路的设计与制作 初始条件: (1)以0~9十个数符标识十个按键 (2)当有键按下时,显示其标识符,并保持显示符直到新的按键作用 (3)如果多个按键同时作用,只响应最先作用的按键 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)设计任务及要求 (2)方案比较及认证 (3)系统框图,原理说明 (4)硬件原理,完整电路图,采用器件的功能说明 (5)调试记录及结果分析 (6)对成果的评价及改进方法 (7)总结(收获及体会) (8)参考资料 (9)附录:器件表,芯片资料 时间安排: 6月27日~6月30日:明确课题,收集资料,方案确定,仿真 7月1日~7月4日:硬件电路制作与调试 7月5日~7月8日;报告撰写,交设计报告,答辩指导教师签名:年月日 系主任(或责任教师)签名:年月

目录 摘要 (Ⅰ) 1 任务及要求 (2) 1.1 设计任务 (2) 1.2 设计要求 (2) 2 设计方案 (2) 2.1 总体设计思想 (2) 2.2 总体逻辑功能图 (2) 2.3 设计方案的选择 (3) 2.3.1 编码电路的选择 (3) 2.3.2 触发电路的选择 (5) 3 单元电路的功能说明 (6) 3.1 单元电路的设计 (6) 3.1.1 按键控制电路 (6) 3.1.2 编码电路 (8) 3.1.3 触发电路的设计 (9) 3.1.4 逻辑反馈电路的设计 (10) 3.1.5 译码显示电路的设计 (11) 3.2 整体电路的工作原理 (15) 4 利用Protues,Multisim仿真电路 (16) 5 结束语 (18) 参考文献 (19) 附录 (20)

计算器按键的使用说明

计算器按键的使用说明 . 1、电源开关键: ON、 OFF 2、输入键: 0— 9、. +/ —:正负转换键 3、运算功能键: + - * / ( 注意 : 加、减、乘、除键在计算时都可能代替等号键 ) √:开平方键,用来进行开平方运算。先输入数字,再按下此键,不必按等号键即可得 出结果。 4、等号键:= 5、清除键: ①C:清除键。在数字输入期间 , 第一次按下此键将清除除存储器内容外的所 有数值 . 如果是太阳能计算器,在计算器关闭状态下,按此键则开启电源,显示 屏显示出“ 0”。 ②AC或 CA键:全部清除键,也叫总清除键,作用是将显示屏所显示的数 字全部清除。 ③→:右移键。其功能是荧屏值向右位移,删除最右边的尾数。 ④CE:部分清除键,也叫更正键。其功能是清除当前输入的数字,而不是清除 以前输入的数。如刚输入的数字有误,立即按此键可清除,待输入正确的数字后,原运算继续进行。如 5+13,这时发现“ 13”输入错了,则按“ CE”键就可以清除 刚才的“ 13”,但还保留“ 5”这个数。值得注意的是,在输入数字后,按“ +”、“- ”、“/ ”、“* ”键的,再按“ CE”键,数字不能清除。 ⑤MC:累计清除键,也叫记忆式清除键。其功能是清除储存数据,清除存储 器内容,只清除存储器中的数字,内存数据清除,而不是清除显示器上的数字。 6、累计显示键: (1)M+:记忆加法键,也叫累加键。是计算结果并加上已经储存的数;用 作记忆功能,它可以连续追加,把目前显示的值放在存储器中(也就是将显示的 数字与内存中已有的任何数字相加,结果存入存储器,但不显示这些数字的和)。 如先输入“ 5×1.6 ”→按“ M+”键(把“ 5×1.6 ”的结果计算出来并储存起来)→然后输入“10×0.8 ”→按“M+”键(把“10×0.8 ”的结果计算出来并和前面储存的数相加)→接着输入“15×0.4 ”→按“M+”键(把“15×0.4 ”的结果计算出来并和前面储存的数相加)→最后按“MR”键(把储存的数全部取出来)→则出结果“ 22” (2)M-:记忆减法键,也叫累减键。是计算结果并用已储存的数字减去目前 的结果;从存储器内容中减去当前显示值(也就是将显示的数字与内存中已有 的任何数字相减,结果存入存储器,但不显示这些数字的差). 计算“ 50- (23+4)”时→先输入“ 50”→按“ M+”(把“ 50”储存起来)→再输入“ 23+4”→按“ M-”键(计算结果是“ 27”)→再按“ MR”(用储存的“ 50”减去目前的结果“ 27”)→则出结果“ 23” 7、存储读出键: MR MRC GT ①MR:存储读出键。表示用存储器中数值取代显示值。按下此键后,可使存储在“ M+”或“ M-”中的数字显示出来或同时参加运算,数字仍保存在存储器中,在未按“ MC”键以前有效。 MR调用存储器内容,读取储存的数据。如有三组数字不连续在一起相加的时候,则用这个“ MR”键。举例:如输入“ 3+2”时,按“ M+”键,再输入“ 6+7”时,按“ M+”键,再输入“8+9”时按“ M+”键,然后再按“MR”,则三组数字的总和“ 35”就出来了。 ②MRC:MR和 MC功能的组合,即存储读出和清除键。按一次为 MR功能, 即显示存储数,按第二次为 MC功能,即清除存储数。

计算器使用说明书

计算器使用说明书目录 取下和装上计算器保护壳 (1) 安全注意事项 (2) 使用注意事项 (3) 双行显示屏 (7) 使用前的准备 (7) k模式 (7) k输入限度 (8) k输入时的错误订正 (9) k重现功能 (9) k错误指示器 (9) k多语句 (10) k指数显示格式 (10) k小数点及分隔符 (11) k计算器的初始化 (11) 基本计算 (12) k算术运算 (12) k分数计算 (12) k百分比计算 (14) k度分秒计算 (15) kMODEIX, SCI, RND (15) 记忆器计算 (16) k答案记忆器 (16) k连续计算 (17) k独立记忆器 (17) k变量 (18) 科学函数计算 (18) k三角函数/反三角函数 (18) Ch。6 k双曲线函数/反双曲线函数 (19) k常用及自然对数/反对数 (19) k平方根﹑立方根﹑根﹑平方﹑立方﹑倒数﹑阶乘﹑ 随机数﹑圆周率(π)及排列/组合 (20) k角度单位转换 (21) k坐标变换(Pol(x, y)﹐Rec(r, θ)) (21) k工程符号计算 (22) 方程式计算 (22) k二次及三次方程式 (22) k联立方程式 (25) 统计计算 (27)

标准偏差 (27) 回归计算 (29) 技术数据 (33) k当遇到问题时 (33) k错误讯息 (33) k运算的顺序 (35) k堆栈 (36) k输入范围 (37) 电源(仅限MODEx。95MS) (39) 规格(仅限MODEx。95MS) (40) 取下和装上计算器保护壳 ?在开始之前 (1) 如图所示握住保护壳并将机体从保护壳抽出。 ?结束后 (2) 如图所示握住保护壳并将机体从保护壳抽出。 ?机体上键盘的一端必须先推入保护壳。切勿将显示屏的一端先推入保护壳。 使用注意事项 ?在首次使用本计算器前务请按5 键。 ?即使操作正常﹐MODEx。115MS/MODEx。570MS/MODEx。991MS 型计算器也必须至少每3 年更换一次电池。而MODEx。95MS/MODEx。100MS型计算器则须每2 年更换一次电池。电量耗尽的电池会泄漏液体﹐使计算器造成损坏及出现故障。因此切勿将电量耗尽的电池留放在计算器内。 ?本机所附带的电池在出厂后的搬运﹑保管过程中会有轻微的电源消耗。因此﹐其寿命可能会比正常的电池寿命要短。 ?如果电池的电力过低﹐记忆器的内容将会发生错误或完全消失。因此﹐对于所有重要的数据﹐请务必另作记录。 ?避免在温度极端的环境中使用及保管计算器。低温会使显示画面的反应变得缓慢迟钝或完全无法显示﹐同时亦会缩短电池的使用寿命。此外﹐应避免让计算器受到太阳的直接照射﹐亦不要将其放置在诸如窗边﹐取暖器的附近等任何会产生高温的地方。高温会使本机机壳褪色或变形及会损坏内部电路。 ?避免在湿度高及多灰尘的地方使用及存放本机。注意切勿将计算器放置在容易触水受潮的地方或高湿度及多灰尘的环境中。因如此会损坏本机的内部电路。 双行显示屏

按键扫描处理程序流程图代码

4.3.2 按键扫描处理程序流程图 (1)按键扫描处理代码 /* 功能实现参数,参数mode为Key_Menu按键选择的功能模块*/ void Display(unsigned char mode) { switch (mode)//显示模式,0为显示实时温度,1为显示温度上限,2为显示温度下限 { case 0: if (temperature < 0)//温度小于0 { temperature = -temperature;//换为正温度 DisplaySeg(0x40, temperature % 1000); //0x40为负号 } else DisplaySeg(codeSeg[temperature % 10000 / 1000], temperature % 1000); break; case 1: DisplaySeg(0x76, alarm_temp_H * 10); break;//显示温度上限,0x76为H字符 case 2: DisplaySeg(0x38, alarm_temp_L * 10); break;//显示温度下限,0x38为L字符 default:break; } } /* 按键扫描和处理函数*/ void KeyScan(void) { if (Key_Menu == 0)//判断按键是否被按下 { DelayMs(10);//延时10毫秒,去抖动干扰 if (Key_Menu == 0)//再次确认按键是否被按下 { while(Key_Menu == 0)Display(menu);//等待按键释放,器件扫描数码管

menu++;//功能键,功能切换 if (menu == 3)menu = 0;//三个功能切换完 } } if (Key_Add == 0) { DelayMs(10); if (Key_Add == 0) { while(Key_Add == 0)Display(menu); switch (menu) { case 1: if (alarm_temp_H < 50)alarm_temp_H++;break;//加温度上限 case 2: if (alarm_temp_L < 27)alarm_temp_L++;break;//加温度下限 default:break; } } } if (Key_Dec == 0) { DelayMs(10); if (Key_Dec == 0) { while(Key_Dec == 0)Display(menu); switch (menu) { case 1: if (alarm_temp_H > 30)alarm_temp_H--;break;//减温度上限 case 2: if (alarm_temp_L > 7)alarm_temp_L--;break;//减温度下限 default:break; }

计算器按键的使用说明

计算器按键的使用说明. 1、电源开关键:ON、OFF 2、输入键:0—9、. +/—:正负转换键 3、运算功能键:+ - * / (注意:加、减、乘、除键在计算时都可能代替等号键) √:开平方键,用来进行开平方运算。先输入数字,再按下此键,不必按等号键 即可得出结果。 4、等号键:= 5、清除键: ①C:清除键。在数字输入期间,第一次按下此键将清除除存储器内容外的所 有数值.如果是太阳能计算器,在计算器关闭状态下,按此键则开启电源,显示 屏显示出“0”。 ②AC或CA键:全部清除键,也叫总清除键,作用是将显示屏所显示的数字 全部清除。 ③→:右移键。其功能是荧屏值向右位移,删除最右边的尾数。 ④CE:部分清除键,也叫更正键。其功能是清除当前输入的数字,而不是清 除以前输入的数。如刚输入的数字有误,立即按此键可清除,待输入正确的数字后,原运算继续进行。如5+13,这时发现“13”输入错了,则按“CE”键就可 以清除刚才的“13”,但还保留“5”这个数。值得注意的是,在输入数字后,按“+”、“-”、“/”、“*”键的,再按“CE”键,数字不能清除。 ⑤MC:累计清除键,也叫记忆式清除键。其功能是清除储存数据,清除存储 器内容,只清除存储器中的数字,内存数据清除,而不是清除显示器上的数字。6、累计显示键: (1)M+:记忆加法键,也叫累加键。是计算结果并加上已经储存的数;用 作记忆功能,它可以连续追加,把目前显示的值放在存储器中(也就是将显示的 数字与内存中已有的任何数字相加,结果存入存储器,但不显示这些数字的和)。 如先输入“5×1.6”→按“M+”键(把“5×1.6”的结果计算出来并储存起来)→然后输入“10×0.8”→按“M+”键(把“10×0.8”的结果计算出来并和 前面储存的数相加)→接着输入“15×0.4”→按“M+”键(把“15×0.4”的结 果计算出来并和前面储存的数相加)→最后按“MR”键(把储存的数全部取出来)→则出结果“22” (2)M-:记忆减法键,也叫累减键。是计算结果并用已储存的数字减去目 前的结果;从存储器内容中减去当前显示值(也就是将显示的数字与内存中已有 的任何数字相减,结果存入存储器,但不显示这些数字的差). 计算“50-(23+4)”时→先输入“50”→按“M+”(把“50”储存起来)→ 再输入“23+4”→按“M-”键(计算结果是“27”)→再按“MR”(用储存的“50”减去目前的结果“27”)→则出结果“23” 7、存储读出键:MR MRC GT ①MR:存储读出键。表示用存储器中数值取 代显示值。按下此键后,可使存储在“M+”或“M-”中的数字显示出来或同时 参加运算,数字仍保存在存储器中,在未按“MC”键以前有效。MR调用存储器 内容,读取储存的数据。如有三组数字不连续在一起相加的时候,则用这个“MR”键。举例:如输入“3+2”时,按“M+”键,再输入“6+7”时,按“M+”键,再 输入“8+9”时按“M+”键,然后再按“MR”,则三组数字的总和“35”就出来了。 ②MRC:MR和MC功能的组合,即存储读出和清除键。按一次为MR功能,即 显示存储数,按第二次为MC功能,即清除存储数。

多按键设计电路

5个IO口最多能扫描多少个按键? 简介:在做项目(工程)的时候,我们经常要用到比较多的按键,而且IO资源紧张,于是我们就想方设法地在别的模块中节省IO口,好不容易挤出一两个IO口,却发现仍然不够用,实在没办法了就添加一个IC来扫键。一个IC虽然价 ... 在做项目(工程)的时候,我们经常要用到比较多的按键,而且IO资源紧张,于是我们就想方设法地在别的模块中节省IO口,好不容易挤出一两个IO口,却发现仍然不够用,实在没办法了就添加一个IC来扫键。一个IC虽然价格不高,但对于大批量生产而且产品利润低的厂家来说,这是一笔不菲的开支! 那,我们能不能想到比较好的扫键方法:用最少的IO口,扫最多的键?可以吗? 举个例:给出5个IO口,能扫多少键?有人说是2*3=6个,如图一: 图一 对,大部分技术参考书都这么做,我们也经常这样做:用3个IO口作行扫描,2个IO作列检测(为方便描述,我们约定:设置某一IO口输出为“0”――称其为“扫某IO

口”)。用行线输出扫键码,列线检测是否有按键的查询方法进行扫键。扫键流程:在行线依次输出011,101,110扫键值,行线每输出一个扫键值,列线检测一次。当列线检测到有按键时,结合输出的扫键值可以判断相应的按键。 但是,5个IO真的只能扫6个键吗?有人说可以扫9个,很聪明!利用行IO与地衍生3个键(要注意上拉电阻),如图二: 图二 扫键流程:先检测3个行IO口,对K1’,K2’,K3’进行扫键,之后如上述2*3扫键流程。5个IO口能扫9个键,够厉害吧,足足比6个键多了1/2! 动动脑,还能不能再多扫几个?就几个?一个也行!好,再想一下,硬是被逼出来了!如图三:

计算器的使用方法

我们使用到的计算模式只有2种: COMP :基本算术运算 SD :标准差 下列介绍中一至八使用的是COMP 模式,九使用的是SD 模式 模式选择按键过程: MODE CLR 1 (此时选择的是COMP :基本算术运算模式) MODE CLR 2 (此时选择的是SD :标准差模式) 一、分数:需使用 ab/c 健 1、例如计算:5 231+ 按键过程为:1 ab/c 3 + 2 ab/c 5 = 2、例如计算:5 231? 按键过程为:1 ab/c 3 ? 2 ab/c 5 = 二、小数换成分数 1、例如0.68换成分数 按键过程为:0.68 = ab/c = 三、指数 1、例如计算5 8 按键过程为: 8 =∧5 2、例如计算()42- 按键过程为:( (-)2 )=∧4 3、例如计算2 3-

按键过程为:3∧ ( (-)2 )= (注:此时结果显示的是小数,按ab/c 转换成分数) 4、例如计算3227 按键过程为:27∧( 2 ab/c3 )= 四、对数:常规计算器只有g l 即以10为底的对数,在计算时需用到换地公式 b a b c c a log log log = 例如计算:2log 8 按键过程为:log2 ÷ log8 = (注:此时结果显示的是小数,按ab/c 转换成分数) 五:开方 1、 计算 9 按键过程为: 9= 2、 计算38 按键过程为:SHIFT 3 8 = 3、 计算416 按键过程为:4 SHIFT x 16= 六、计算组合数:使用nCr 健 1、计算4 10c 按键过程为:10 nCr 4=

计算器——概要设计说明书

计算器 概要设计说明书 1、引言 1.1编写目的 在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为JAVA程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。 1.2项目背景 计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用JAVA 的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。 在课程设计中,系统开发平台为Windows 7,程序设计设计语言采用JAVA,在程序设计中,采用了结构化与面向对象两种解决问题的方法。 1.3定义

事务流:数据进入模块后可能有多种路径进行处理。 系统:若未特别指出,统指本系统。 1.4参考资料 [1]钱银中,眭碧霞.Java程序设计案例教程 [2]道客巴巴:https://www.360docs.net/doc/a817208853.html,/p-642874533756.html 2、运行环境 操作系统:Windows 2000﹑Windows XP Professional、Windows 2000 Server或者window 7.0操作系统. 3、总体设计 3.1 系统设计流程 系统设计主要有五部分组成:需求分析、概要设计、详细设计、编写代码和系统测试。如下图所示: ⑴需求分析 这次课程设计的题目是实现简单计算器的功能。实现功能:加,减,乘,除,可加其它运算功能;还要实现数据的输入,输出,计算,显示及清除等功能。 ⑵概要设计 计算器包含的功能有:加、减、乘、除、清除。计算器的屏显为JFrame控件,左侧的数字、操作符按键、右侧的功能为BUTTON控件。输入的原始数据、运算中间数据和结果在顶部的TEXTBOX 控件显示。每种计算功能均为独立设计算法。 ⑶详细设计 详细设计部分则是在概要设计的基础上对计算器的功能实现作出更为详细

矩阵键盘EDA技术课程设计

《电子设计EDA》课程设计 专业:电子信息科学与技术 班级:2010级电信本(1)班 姓名: *** 学号: ********* 指导老师: *** 完成时间: 2012.11—2012.12 教师评分:

目录 一、绪论 (1) 1.1 FPGA概况 (1) 1.2 本课题的研究意义 (2) 二、课程设计的任务和目的 (3) 三、矩阵键盘接口电路的原理与总体设计 (3) 3.1 矩阵键盘接口电路的原理 (3) 3.2 总体设计 (5) 四、各模块的设计及仿真 (6) 4.1 键盘扫描电路 (6) 4.2 键盘译码电路和按键标志位产生电路 (8) 4.3 时钟产生模块 (10) 4.4 键盘接口电路顶层电路实现 (12) 五、参考文献 (13) 六、心得体会 (13) 七、附录 (14) 7.1 源程序代码 (14) 2

题目:矩阵键盘控制接口设计 一、绪论 1.1 FPGA概况 早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。 其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与—或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。 这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。 PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA 器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通用阵列逻辑(GAL、Generic ArrayLogic),如GAL16V8、GAL22V10等。它采用了E'PROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。 为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL 结构的扩展型CPLD(Complex Programmable Logic Dvice)和与标准门阵列类似的FPGA(FieldProgrammable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其他ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品不需测试、质量 1

按键消抖电路瞬态分析和设计

按键消抖电路瞬态分析和设计 按键是仪器仪表中普遍采用的人机输入接口电路。在按键电路中必须考虑对按键的抖动进行软件消抖和硬件消抖。软件消抖具有使用硬件数量少的优点,但也具有以下两个缺点:(1)在仪器键盘电路中,多个按键安装在仪器面板上,键盘的输出通过排线连接到主控板上,此时键盘导线寄生电感和寄生电容的存在,寄生电感寄生电容和排线电阻将组成二阶振荡系统,二阶振荡将形成负电平脉冲,而负电平脉冲很容易超出数字芯片的输入最大允许电平范围,导致数字芯片容易损坏。(2)按键闭合和断开时,电压信号下降沿非常陡峭,剧烈变化的电压信号将通过互容传递到相邻导线上。硬件消抖电路的设计主要是要考虑以下三个因素:(1)消除信号的抖动,确保按键电路输出信号的平整;(2)消除信号的下冲,因为下冲电平超出了后续数字芯片的最大输入电平范围;(3)降低信号变化的速度,避免在邻线上引起容性串扰;(4)不影响按键电路的正常功能。常见的硬件消抖电路包括电容滤波消抖和触发器消抖。电容滤波消抖采用电阻和电容组成低通滤波器,具有电路结构简单可靠的优点,因此本文将重点阐述该消抖电路。1 按键消抖电路结构与电路模型图1为某仪器按键电路原理图,按键安装在仪器面板上,通过导线连接到主控板上,按键的一端接上拉电阻并连接后续电路,按键的另一端接地,当按键没有按下时,按键输出高电平,当按键按下时,按键输出低电平。图2为加上滤波电容后的按键电路。 图1 某仪器按键电路 图2 按键消抖电路 图3为按键消抖电路的电路模型。图中R0为连接按键导线的电阻,L 为导线电感,C0为导线对地电容,C f为滤波电容,C p为按键后续电路的输入电容,R i为按键后续电路的输入阻抗,R 为上拉电阻,V CC为电源电压,U为按键消抖电路的输出电压。

电脑计算器里面的“科学型”的里面所有的按键的功能

下表描述了计算器的功能: 按钮功能 % 按百分比的形式显示乘积结果。输入一个数,单击“*”,输入第二个数,然后单击“%”。例如, 50 * 25% 将显示为12.5。也可执行带百分数的运算。输入一个数,单击运算符(“+”、“-”、“*” 或“/”),输入第二个数,单击“%”,然后单击“=”。例如,50 + 25%(指的是50 的25%) = 62.5。 ( 开始括号的新层。当前的层数显示在“)”按钮上方的框中。括号的最多层数为25。 ) 结束括号的当前层。 * 乘法。 + 加法。 +/- 改变显示数字的符号。 - 减法。 . 插入小数点。 / 除法。 0–9 将此数字置于计算器的显示区。 1/x 计算显示数字的倒数。 = 对上两个数字执行任意运算。若要重复上一次的运算,请再次单击“=”。 A–F 在数值中输入选中字母。只有在十六进制模式为开启状态时该按钮才可用。 And 计算按位AND。逻辑运算符在执行任何按位运算时将截断数字的小数部分。 Ave 计算“统计框”对话框中显示数值的平均值。若要计算平均方值,请使用“Inv”+“Ave”。只有先 单击“Sta”,该按钮才可用。 Backspace 删除当前显示数字的最后一位。 站将显示数字转换为二进制数字系统。最大的无符号二进制数值是将64 位全都设置为1。 C 清除当前的计算。 CE 清除显示数字。 cos 计算显示数字的余弦。若要计算反余弦,请使用“Inv”+“cos”。若要计算双曲余弦,请使用“Hyp”+“cos”。若要计算反双曲余弦,请使用“Inv”+“Hyp”+“cos”。cos 只能用于十进制数字 系统。 Dat 在“统计框”对话框内输入显示的数字。只有先单击“Sta”,该按钮才可用。 十进制将显示数字转换为十进制数字系统。 度数在十进制模式下将三角函数输入设置为度数。 dms 将显示数字转换为度-分-秒格式(假设显示数字是用度数表示的)。若要将显示数字转换为用度数表示的格式(假设显示数字是用度-分-秒格式表示的),请使用“Inv”+“dms”。dms 只能用 于十进制数字系统。 Exp 允许输入用科学计数法表示的数字。指数限制为四位数。指数中只能使用十进制数(键0-9)。 Exp 只能用于十进制数字系统。 F-E 打开或关闭科学计数法。大于10^32 的数总是以指数形式表示。F-E 只能用于十进制数字系统。 梯度在十进制模式中,将三角函数输入设置为梯度。 十六进制将显示数字转换为十六进制数字系统。最大的无符号十六进制数值是将64 位全都设置为1。 Hyp 设置“sin”、“cos”和“tan”的双曲函数。完成一次计算后自动关闭双曲函数功能。 Int 显示十进制数值的整数部分。若要显示十进制数值的小数部分,请使用“Inv”+“Int”。 Inv 设置“sin”、“cos”、“tan”、“PI”、“x^y”、“x^2”、“x^3”、“ln”、“log”、“Ave”、“Sum” 和“s”的反函数。完成一次计算后自动关闭反函数功能。

显示和键盘流程图及程序

3.2 部分软件设计 3.2.3显示子程序 动态显示程序框图如图所示。显示程序的要点有两个:一是代码转换。因为直接驱动LED显示器的是字形码,而人们习惯的是0、1、2、…、F等字符,因此,必须将待显示的字符转换成字形码。转换用查表的方法进行。二是通过软件实现逐位轮流点亮每个LED。 为了实现代码转换,首先开辟一个显示缓冲区,将待显示的字符预先存放在缓冲区中。由于有4位LED显示器,故不妨假设显示缓冲区长度为4个字节。显 示缓冲区地址为DIS 0~DIS 3 ,DIS 单元与最左边一位LED相对应,DIS 3 单元与最 右边一位LED相对应。 程序清单如下: DIS: ORG 0500H MOV A,#00000011B MOV DPTR,#7F00H MOVX @DPTR,A MOV R0,#78H MOV R3,#7FH MOV A,R3 LD: MOV DPTR,#7F01H

MOVX @DPTR,A INC DPTR MOV A,@R0 ADD A,#0DH MOVC A,@ DPTR ACALL DLY MOV A ,R3 JNB A,R0 RR A,LD1 MOV R3,A INC R0 AJMP LD0 LD1: SJMP LD1 DSEG:DB 3FH,06H,5BH,4FH,66H,6DH 7DH,07H,7FH,6FH DLY: MOV R7,#02H DL: MOV R6,#0FFH DL1: DJNZ R6,DL1 DJNZ R7,DL RET 3.2.4键盘子程序 键盘扫描子程序框图如图 图3-4 键盘扫描子程序框图

键盘扫描子程序如下: KEY: ORG 0440H ; ACALL KS ;调用KS判别是否有键按下 JNZ K1 ;有键按下转移 ACALL DIR ;无键按下,调延时子程序AJMP KEY ; K1: ACALL DIR ;加长延时时间,消除键抖动ACALL DIR ; ACALL KS ;调用KS子程序,再次判别 有无键按下 JNZ K2 ;有键按下,转逐列扫描 AJMP KEY ;误读键,返回 K2: MOV R2,#0FEH ;首列扫描字送R2 MOV R4,#00H ;首列号送R4 K3: MOV DPTR,#PA ;A口地址送DRTR MOV A,R2 ; MOVX @DPTR,A ;列扫描字送8155A口 INC DPTR ;指向8155C口 INC DPTR ; MOVX A,@ DPTR ;读取行扫描值 JB ACC.0,L1 ;第0行无键按下,转查第1行 MOV A,#00H ;第0行有键按下,该行的行首键号#00H 送 A AJMP LK ;转求键号 L1: JB ACC .1,L2 ;第1行无键按下,转查第2行MOV A,#08H ;第1行无键按下,该行的行首键号 #08H送A AJMP LK ;转求键号 L2: JB ACC .2,L3 ;第2行无键按下,转查第3行MOV A,#10H ;第2行有键按下,该行的行首键号#10H 送 A AJMP LK ;转查键号 L3: JB ACC.3,NEXT ;第3行无键按下,转查下一列MOV A,#18H ;第3行有键按下,该行的行首键号#18H 送 A LK: ADD A,R4 ;形成键释放 PUSH ACC ;未释放,等待 K4: ACALL DIR ;键释放,弹出堆栈送ACC ACALL KS ;键扫描结束,返回 JNZ K4 ;修改列号

相关文档
最新文档