《单片机计算器课程设计.docx》由会员分享,可在线阅读,更多相关《单片机计算器课程设计.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、安庆师范学院 单片机课程设计说明书 课题名称:简 易 计 算 器 院 系:物理与电气工程学院 专 业:电子信息科学与技术 班 级: 12 级 2 班 成员姓名:张 鹏 xxxxxxx王会祥 xxxxxxxx指 导 教 师 王 陈 宁 2014年 6月 2日目录一、课程设计题目与要求- 2 -1.课程设计题目- 2 -2.课程设计要求- 2 -二、课题分析- 2 -1成员分工- 2 -2课题的理解与思路- 3 -3开发工具说明- 3 -三、硬件电路的设计- 3 -1AT89C52特性介绍- 3 -2LED数码管的显示原理- 4 -3矩阵键盘的工作原理- 4 -4课程设计的电路图- 5 -四、软件
2、程序的设计- 6 -1程序流程图- 6 -2实验程序- 8 -五、课程设计总结- 15 -六、参考文献- 15 -一、课程设计题目与要求1.课程设计题目 简易计算器设计2.课程设计要求(1)设计实现1位整数加、减运算; (2)键盘采用4*4的矩阵键盘,键盘安排如下; 1 2 3 4 5 6 7 8 9 0 + - * / 归零 = (3)输入数据与运算结果采用两位数码管进行显示;二、课题分析1成员分工 整体方案构思:王会祥、张鹏、孙伟焊接电路:孙伟、张鹏编写程序:王会祥、张鹏调试烧写:孙伟、张鹏文档写作:张鹏、王会祥、孙伟2课题的理解与思路单片机实现简易计算器的功能,实际是先从矩阵键盘得到信号
3、,进行相对应的判断、选择,从而进行相应的运算,最后把运行结果送到数码管显示。我们采用主程序进行相关的扫描键盘、判断、选择、计算的功能,采用定时中断来实现数码管的动态显示3开发工具说明KEILL用来实现编程和生成HEX文件STC-ISPSTC下载器,将HEX下载到单片机中单片机开发板实现计算器功能的硬件设备三、硬件电路的设计1AT89C52特性介绍兼容MCS51指令系统8kB可反复擦写(大于1000次)Flash ROM;32个双向I/O口;256x8bit内部RAM;3个16位可编程定时/计数器中断;时钟频率0-24MHz;2个串行中断,可编程UART串行通道;2个外部中断源,共8个中断源;2
4、个读写中断口线,3级加密位;低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;有PDIP、PQFP、TQFP与PLCC等几种封装形式,以适应不同产品的需求。2LED数码管的显示原理数码管动态显示是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp 的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,
5、没有选通的数码管就不会亮。透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为12ms,由于人的视觉暂留现象与发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O埠,而且功耗更低。3矩阵键盘的工作原理(1)、判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线
6、均为高电平,则键盘中无键按下。(2)、判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。4课程设计的电路图数码管与单片机连接电路矩阵键盘与单片机连接电路四、软件程序的设计1程序流程图开始置定时器T0,T1方式1,初始化并开中断,置位TR0,清零TR1扫描按键是否为归零键将扫描得到的数据送到对应的寄存器中,R0存放被操作数,R2存放功能键,R3存放操作数向R6,R7中装入显示信息P
7、2口送#0FEH,R7中的值译码送P0置T0初值TR0,TR1取反P2口送#0FDH,R6中的值译码送P0TR0,TR1取反判断R2中的符号R0+R3R0-R3结果放入R6,R7中中断返回中断返回是否+-2实验程序LNUM EQU 30HLNYS EQU 31HLNYY EQU 32HLNXX EQU 33H ORG 0000H JMP START ORG 000BH LJMP TT0 ORG 0100HSTART:MOV TMOD,#11H ;=置初值MOV TH0,#0F0HMOV TL0,#0F0HSETB EASETB ET0SETB TR0MOV R6,#0MOV R7,#20MAI
8、N:MOV LNUM,#4 ;=1=扫描数值 CLR F0ST1:CALL MAKEY JNB F0,ST1CJNE A,#14,PY1LJMP START PY1:INC A CJNE A,#10,PP1 MOV A,#0 PP1:MOV R0,AMOV R6,#0MOV R7,A;= 2=扫描运算符LOOP:MOV LNUM,#4CLR F0ST2:CALL MAKEYJNB F0,ST2 CJNE A,#14,PY2 LJMP START PY2:CJNE A,#0AH,LOP1 MOV R2,#16 SJMP LOP4LOP1:CJNE A,#0BH,LOP2 MOV R2,#18 S
9、JMP LOP4LOP2:CJNE A,#0CH,LOP3 MOV R2,#17 SJMP LOP4LOP3:CJNE A,#0DH,LOOP MOV R2,#19LOP4:MOV A,R2 MOV R6,A INC A MOV R7,A;=3=扫描数值 MOV LNUM,#4 CLR F0ST3:CALL MAKEY JNB F0,ST3CJNE A,#14,PY3LJMP STARTPY3:INC ACJNE A,#10,PP2MOV A,#0PP2:MOV R3,A MOV R6,#0MOV R7,A;=4=扫描“=”号LOOD:MOV LNUM,#4CLR F0ST4:CALL MAK
10、EY JNB F0,ST4CJNE A,#14,PY4LJMP STARTPY4:CJNE A,#0FH,LOOD ;进行判断 CJNE R2,#16,LDO1SJMP DO1LDO1:CJNE R2,#18,LDO2 SJMP DO2LDO2:CJNE R2,#17,DO4 SJMP DO3;=加运算DO1:MOV A,R0 ADD A,R3MOV B,#10DIV ABMOV R6,AMOV R7,BLJMP MAIN;=减运算DO2:CLR CY MOV A,R0 SUBB A,R3JC LD2MOV B,#10DIV ABMOV R6,AMOV R7,BLJMP MAINLD2:CLR
11、 CY MOV A,R3SUBB A,R0MOV R7,AMOV R6,#18 LJMP MAIN;=乘运算DO3:MOV A,R0 MOV B,R3MUL ABMOV B,#10DIV ABMOV R6,AMOV R7,BLJMP MAIN;=除运算DO4:MOV A,R0 MOV B,R3DIV ABMOV B,#10DIV ABMOV R6,AMOV R7,BLJMP MAIN;= 中断显示TT0:MOV TH0,#0F0H MOV TL0,#0F0HMOV A,R6JZ WER2 MOV A,LNXXJNZ WER1MOV P2,#0FDH MOV DPTR,#TABMOV A,R6M
12、OVC A,A+DPTRMOV P0,AMOV LNXX,#1SJMP HERTWER1:MOV LNXX,#0WER2:MOV P2,#0FEHMOV A,R7MOV DPTR,#TABMOVC A,A+DPTRMOV P0,AHERT:RETI;=键盘扫描MAKEY:CALL KEYHN JNZ HAVE JMP NRETHAVE:CALL D10MS CALL KEYHN JNZ TRUE JMP NRETTRUE:MOV R1,#0EFH MOV R5,#0SCAN:MOV A,R1 MOV P1,A MOV A,P1 JB ACC.0,L1 MOV A,#0 JMP KEYNUM L
13、1:JB ACC.1,L2 MOV A,#4 JMP KEYNUM L2:JB ACC.2,L3 MOV A,#8 JMP KEYNUM L3:JB ACC.3,NEXT MOV A,#0CHKEYNUM:ADD A,R5 PUSH ACCUPKEY:CALL KEYHN JNZ UPKEY POP ACC ANL A,#0FH SETB F0 JMP HRETNRET:CLR F0HRET:RETNEXT:INC R5 MOV A,R1 DJNZ LNUM,NDONE JMP NRETNDONE:RL A MOV R1,A JMP SCANKEYHN:MOV P1,#0FH MOV A,P1
14、 CPL A ANL A,#0FH RET;=延时程序D10MS:MOV LNYS,#10 D10:LCALL D1MS DJNZ LNYS,D10 RETD1MS:MOV LNYY,#249 DL:NOP NOP DJNZ LNYY,DL RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH ,0B9H,8FH,0BFH ,0BFH,7FHEND五、课程设计总结通过此次课程设计,使我们更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我们在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。在这次课程设计中,不仅培养了我们团队合作和动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。六、参考文献李全利单片机原理与接口技术 第2版 2009 高等教育出版社周荷琴、冯焕清微型计算机原理与接口技术 第5版 2013 中国科学技术大学出版社