全文预览

基于5单片机的多功能计算器设计课程设计

上传者:梦&殇 |  格式:doc  |  页数:30 |  大小:2903KB

文档介绍
位,然后读出P3口的高四位。然后确定键值并显示缓存,最终将按键的值通过一个预先定义好的数组转换为相应的ASCII码值送给LCD显示和与表达式相应的堆栈进行处理,读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。第一次所有行线均输出高电平,从P3口的值读入键盘信息(行信息);第二次所有列线均输出高电平,从P3口的值读入键盘信息(列信息)。2.3.2表达式的处理表达式包含加、减、乘、除、括号等,必须按照相应的优先级运算,才可能得出正确的结果。在这儿采用栈结构,可以有效的进行表达式的处理。栈结构具有“后进先出”的固有属性,借助这个属性我们可以随时对刚输入的元素进行操作,从而实现边输入边计算。为了实现算符优先算法。可以使用两个工作栈。一个称为OPTR,用以寄存运算符,另一个称做OPND,用以寄存操作数或运算结果。1.首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素;2.依次读入表达式,若是操作符即进OPND栈,若是运算符则和OPTR栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为”#”)。在这里,相应的处理指的是,如果当前符号的优先级比栈顶优先级低,则将该符号继续压入堆栈,不做其它操作;如果当前符号的优先级比栈顶优先级高,则依次取出操作数栈的栈顶两个数据和符号栈的栈顶符号进行这两个数的运算,运算结果数据再压入操作数栈中。若优先级相等,则弹出符号栈栈顶符号。算符间的优先关系如下(‘#‘表示开始和结束):+-*/()#+><<<<>>->><<<>>*>>>><>>/>>>><>>(<<<<<=)>>>>>>#<<<<<=表2.1运算符优先级表2.4altiumdesigner原理图设计及PCB制作2.4.1原理图设计图2.6原理图设计(1)——单片机部分图2.7原理图设计(2)——键盘、蜂鸣器部分

收藏

分享

举报
下载此文档