基于单片机简易计算器的设计(编辑修改稿)内容摘要:
占用大量的 I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。 矩阵键盘采用四条 I/O 线作为行线,四条 I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。 这样键盘上按键的个数就为 4 4个。 这种行列式键盘结构能有效地提高单片机系统中 I/O 口的利用率。 矩阵键盘的工作原理: 计算器的键盘布局如图 2所示:一般有 16个键组成,在单片机中正好可以用一个 P口实现 16个按键功能,这种形式在单片机系统中也最常用。 图 矩阵键盘内部电路图 第三章 主程序设计 Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与汇编相比, C 语言在功能上、结构性、可读性、可维护性上有明显 10 的优势,因而易学易用。 用过汇编语言后再使用 C 来开发,体会更加深刻。 Keil C51 软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows 界面。 另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到 Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。 在开发大型软件时更能体现高级语言的优势。 下面详细介绍 Keil C51 开发系统各部分功能和使用。 Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,如图 所示,其中 uVision与 Ishell分别是 C51 for Windows和 for DOS的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。 开发人员可用 IDE 本身或其它编辑器编辑 C 或汇编源文件。 然后分别由 C51及 A51编译器编译生成目标文件 (.OBJ)。 目标文件可由 LIB51创建生成库文件,也可以与库文件一起经 L51连接定位生成绝对目标文件 (.ABS)。 ABS文件由 OH51转换成标准的Hex文件,以供调试器 dScope51或 tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如 EPROM 中。 普通计算器课程序设计 : //****************************************// //通用计算器的编写,能够实现两位的加减计算 +, , *, / //设计人:周运鸿。 指导人:皮大能 //202066 include include include include include define uchar unsigned char define uint unsigned int double num[2]。 uchar sign[2]。 uchar numble1[10]。 uchar numble2[10]。 void main() {int i=0,j=0,k=0,flag=0,a=0,b,c=0,e=0,opNum=0。 long int sum1,sum0。 double sum2。 init()。 write_(0x80)。 while(!mark) {matrixkeyscan()。 } mark=0。 11 while(expression[j]!=39。 =39。 ) { if(!In(expression[j],OP)) //如否不是运算符就入操作数栈 { if(opNum == 0) {opNum =expression[j] 48。 ++j。 if(In(expression[j],OP)) flag = 1。 } else { opNum = opNum * 10 + (expression[j] 48)。 ++j。 if(In(expression[j],OP)) flag = 1。 } if(flag == 1) { num[i]=opNum。 opNum=0。 i++。 flag=0。 } } else { sign[k]=expression[j]。 ++j。 k++。 } } sum1=Operator( num[0],sign[0], num[1])。 sum2=Operator( num[0],sign[0], num[1])。 sum0=sum1。 while(sum1!=0) { numble1[a]=sum1%10+48。 sum1=sum1/10。 a++。 } b=strlen(numble1)。 write_(0x80+0x40)。 for(c=b1。 c=0。 c) {write_data(numble1[c])。 delayms(10)。 } 12 write_data(39。 .39。 )。 sum2=sum2*1000。 sum0=sum2sum0*1000。 numble2[0]=sum0/100+48。 numble2[2]=sum0%10+48。 numble2[1]=(sum0/10)%10+48。 if(numble2[2]=(5+48)) numble2[1]=numble2[1]+1。 write_data(numble2[0])。 delayms(5)。 write_data(numble2[1])。 delayms(5)。 while(1)。 } //************************** //键盘扫描程序驱动 //文件名: //****************。基于单片机简易计算器的设计(编辑修改稿)
相关推荐
存密码 、并且通过 LCD 显示屏和 LED 灯直观地显示各密码锁各种状态,用继电器模拟锁的状态,用户可以自定义设置 6 位的数字密码,系统还具有报警功能,该系统基本 能够实现本文能够提出的功能和要求。 本设计也存在不足,缺陷一,单重的密码锁不能满足较高的安全需要。 缺陷二,该系统对电的依赖比较大,必须使 24C04 一直保持供电状态,当断电后不能正常工作。 缺点三,在按键按下时
变频技术的 核心技术之一。 从最初采用模拟电路完成三角调制波和参考正弦波比较,产生 正弦脉宽调制 SPWM 信号以控制功率器件的开关开始,到目前采用全数字化方 案,完成优化的实时在线的 PWM 信号输出。 从 PWM 模式优化中得到了诸多的优 化模式,其中以鞍形波 PWM 模式效果最佳。 由于 PWM 可以同时实现变频变压反 抑制谐波的特点,由此在交流传动乃至其它能量变换系统中得到广泛应用。
1 kkkk =arctan() 同理 2020 年 拟合图如图 9所示 : 图 9 拟合可得 : z= + 倾 斜 (z轴与 xy 平面的夹角 ):对 z求一阶导 z39。 = +=tan( ) 7 7 0 . 9 6 7 7 0 . 9 8 771 7 7 1 . 0 2 7 7 1 . 0 4 7 7 1 . 0 6 7 7 1 . 0 8 7 7 1 .
等待主机开始信号结束后 , DHT11发送响应信号 , 送出 40bit的数据 ,并触发一次信号采集 , 用户可选择读取部分数据。 从模式下 , DHT11接收到开始信号触发一次温湿度采集 , 如果没有接收到主机发送开始信号 , DHT11不会主动进行温湿度采集 , 采集数据后转换到低速模式。 ( 1) .通讯过程如图 28所示 图 28 通讯过程 13 操作时序如图 29,
/ R D17X T A L 218X T A L 119G N D20P 2. 021P 2. 122P 2. 223P 2. 324P 2. 425P 2. 526P 2. 627P 2. 728P S E N29A L E / P R O G30E A / V pp31P 0. 732P 0. 633P 0. 534P 0. 435P 0. 336P 0. 237P 0. 138P 0.
9 按键检测流程图 10 时间显示流程图 10 源程序清单 11 第四章 系统仿真与实验测试 16 系统仿真 16 实验测试 16 小 结 17 致 谢 18 参 考 文 献 19 附 录 20 第 1 页 共 20页 第一章 设计 方案 课程设计目的 (1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力; (2)培养针对课题需要,选择和查阅有关手册