河北工程大学单片机课设简易计算器的设计_第1页
河北工程大学单片机课设简易计算器的设计_第2页
河北工程大学单片机课设简易计算器的设计_第3页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息与电气工程学院课程设计说明书(2011/2012学年第 二学期)课程名称:单片机课程设计题 目:简易计算器的设计专业班级:学生姓名:学 号:指导教师:设计周数:两周设计成绩 :2012 年 6 月 21 日目录1课程设计目的 32、 课程设计正文 32.1、设计所需器材 322、设计任务和要求 32.3、设计方案 4231、硬件设计 41.STC90C52AD说明 42. 数码管说明 43. 晶体振荡电路设计 64. 数码管和位选设计 65. 复位设计 76. 蜂鸣器电路设计 87. 矩阵键盘的设计 8、软件设计 92.4、软硬件调试 143、课程设计总结 144、参考文献 15附录一、系

2、统原理图 16附录二、PCB图 17课程设计评语及成绩 18 一、课程设计目的1熟悉和掌握单片机的结构及工作原理。2掌握单片机的接口技术及相关外围芯片的外特性及控制方法。3通过课程设计, 掌握以单片机核心的电路设计的基本方法和技术, 了解表关电路参数的 计算方法。4通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。5通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。二、课程设计正文2.1 设计所需器材电阻: 1K (8 个) 0.330k(8 个) 10k(1 个) 按键开关: 16 个极性电容 (1 个 10uf)非极性

3、电容: 30pf (5 个)晶振: 6MHZ(1 个)三极管:PNP(1 个)NPN (2 个)共阴极数码管: 2 个蜂鸣器: 1 个底座: DIP40(1 个) DIP16(1 个)万能电路板: 1 个芯片: STC90C52AD( 1 片) MAX232(1 片) ,74HC573( 片 )发光二极管: 3 个接线端子: 1 个2.2 设计任务和要求课程设计任务要求做一个简易数字计算器。设计的主要内容是采用STC90C51AD作为控制单元,实现简易计算器功能。原始数据及主要任务:设计一个以 MCS-51 单片机为核心的简易计算器系统。能够进 行 5以内的数字简单的加,减,乘,除运算,用 2

4、 个数码管显示运算结果。若进行除法运 算,则小数点保留 1 位显示。如果除数为 0,则清 0 显示,且蜂鸣器响,当按下任意键后, 蜂鸣器停止。主要任务:(1)确定总体设计方案;(2)2位数码管显示电路设计, 4*4 按键电路设计,报警电路设计;(3) 设计硬件电路原理图和 PCB 图,绘制软件程序流程图,编写程序;(4)软硬件联机调试。技术要求:以MCS-51单片机为核心,主机用P1 口接4*4矩阵按键;P0 口用作数码管 段码接口, P2端口用作数码管位码选通接口和蜂鸣器电路接口。2.3 设计方案简易数字计算器设计,主要的部分是STC90C52AD编写程序,实现软硬结合,能够进行 5 以内的

5、数字简单的加,减,乘,除运算,且具备清零功能。6 个数字键, 6个功能键。进行除法运算时,小数点保留 1 位显示。如果除数为 0,则清 0 显示,蜂鸣器响,当按下 任意键后,蜂鸣器停止。可扩展计算连续功能,数据溢出清0 显示,蜂鸣器响,按下任意键后,蜂鸣器停止。2.3.1 硬件设计1.STC90C52AD说明AT89C51的引说明和功能说明如下:XTAL1 :接外部晶振的一个引脚。在单片机内部,它是一反相放大器输入端,这个 放大器构成了片内振荡器。它采用外部振荡器时,些引脚应接地。XTAL2 :接外部晶振的一个引脚。在片内接至振荡器的反相放大器输出端和内部时钟发生器输入端。当采用外部振荡器时,

6、则此引脚接外部振荡信号的输入。RST : STC90C52A啲复位信号输入引脚,高电位工作,当要对芯片又时,只要 将此引脚电位提升到高电位,并持续两个机器周期以上的时间,AT89C51便能完成系统复位的各项工作,使得内部特殊功能寄存器的内容均被设成已知状态。P0 口(P0.0P0.7)是一个8位漏极开路双向输入输出端口,当访问外部数据时,它是地址总线(低 8位)和数据总线复用。外部不扩展而单片应用时,则作一般双向I/ 0口用。P0 口每一个引脚可以推动 8个LSTTL负载。P2 口(P2.0P2.7) 口是具有内部提升电路的双向 I/O端口(准双向并行I/O 口),当访 问外部程序存储器时,它

7、是高 8位地址。外部不扩展而单片应用时,则作一般双向I /0口用。每一个引脚可以推动 4个LSTL负载。P1 口 (P1.0P1.7) 口是具有内部提升电路的双向I/O端口(准双向并行I/O 口),其输出可以推动4个LSTTL负载。仅供用户作为输入输出用的端口。I/O端口(准双向并行I/O 口),它还P3 口(P3.0P3.7) 口是具有内部提升电路的双向提供特殊功能,包括串行通信、外部中断控制、计时计数控制及外部随机存储器内容的读 取或写入控制等功能。2. 数码管LED显示器由8段发光二极管组成,排列成 8字形状,称为8段LED显示器,器件内部接线 图如图所示:为了显示数字或符号,要为LED

8、显示器提供 代码,即字形代码。七段发光二极管,再加上一 个小数点位,共计8段,因此提供的字形代码的 长度正好是一个字节。简易计算器用到的数字 09的共阴极字形代码如下表:显示字符012345+-*/段码3FH06H5BH4FH66H6DH70H40H76H49H3. 晶体振荡电路设计图2.3-2晶体振荡电路采用6MHZ勺晶振,接在芯片的18,19弓I脚上。在复位端口加低电平。4. 数码管和位选设计图2.3-3数码管和位选电路需要显示时间选用共阴极的数码管是三极管驱动,接有1000欧姆的保护电阻而成的两个数码管在显示时需要选通,采用STC90C52A啲P0 口作为位选信号的输出端,高电平有效。由

9、于P0 口有8个输出端,当端口为高电平使对应的数码管选通。共阴极的数码管是低电平有效,所以采用 NPN的三极管。5. 复位设计复位键直接加在单片机的复位端,当按键S1被按下时,系统复位。图2.3-4复位电路6.蜂鸣器电路设计图2.3-5蜂鸣器电路蜂鸣器接在P3.5 口上,当触发时P3.5产生低电平使其导通,蜂鸣器响,报警。7.矩阵键盘的设计图2.3-6 矩阵键盘开关接在P1 口上,P1.0P1.7,按键按下后相应的按键由高电平变为低电平,P1.0P1.3为行。软件设计系统程序:#in clude<reg52.h>#defi ne uint un sig ned int#defi n

10、e uchar un sig ned charsbit SPK = P3A5;/蜂鸣器引脚定义ucharcodetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x3e,0x76,0x40,0x76,0x49;/0123456789 + int flag, nu ml, num2,num3,num 4,key1,key2,xia nshi,result ,nu m,temp;intt1;uint frq;/*延时函*/void delay(unsigned char ms)unsigned char i;while(ms-)for

11、(i = 0; i < 120; i+);void inter_init()/ 工作方式 1,定时器 0TMOD = 0x01;frq = 0x00;TH0 = 0x00;TL0 = 0xff;IE = 0x82;TR0=1;/*结果显示判断 */void panduan()int i;if(flag=1)flag=0;for(i=0;i<10000;i+)SPK=SPK;if(key1%2=0)|(key2%2=0)result=num1+num2;if(key1%2!=0)|(key2%2!=0)result=num3+num4; xianshi=result;*按键扫描 *u

12、char keyscan()/ 带返回值函数P1=0xf7; / 开始扫描第一行键 temp=P1;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0)temp=P1;switch(temp)case 0xe7:key1+;num1=1;num2=1;xianshi=num1;if(num=11)num3=1;num4=3;xianshi=num2;break;case 0xd7:key2+;num1=3;num2=3;xianshi=num1;if(num=11)nu

13、m3=1;num4=3;xianshi=num2;break;/ 松手检测while(temp!=0xf0)temp=P1;temp=temp&0xf0;P1=0xfb; / 开始扫描第二行键 temp=P1;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0)temp=P1;switch(temp)case 0xeb:num=11; xianshi=num;break;case 0xdb:num=8;flag=1;break;while(temp!=0xf0)

14、 / 松手检测temp=P1;temp=temp&0xf0;return xianshi;/ 得到返回值主函数 */ 数码管位选/*void main()P2=0x01;num=16;inter_init();while(1)xianshi=keyscan();panduan();P0=tablexianshi;*中断 *void timer0() interrupt 1 using 1 TH0 = 0xfe;TL0 = frq;2.4 、软硬件调试系统调试: 根据系统设计方案, 本系统的调试共分为两大部分:硬件调试, 软件调试。(1)硬件调试对各个模块的功能进行调试, 主要调试各模块

15、能否实现指定的功能。 首先用数字万用 表对实物板上的各元器件进行测试,在测试过程中,检验出一些错误,如数码管的引脚接 错了,导致数码管无法显示,将数码管各引脚正确焊接后,数码管正常工作。(2)软件调试软件调试采用单片机仿真器 keil uVision 及 protus ,将编好的程序进行调试,主要 是检查语法错误。再进行仿真,检验各个子程序是否正确执行,和硬件模块的协调性。由 于能力有限,程序中仍然存在如下BUG不能进行连续除法,尚未实现加减法和乘除法之间的混合运算,错误报警后按运算符号键结束警报三、课程设计总结回顾起此次单片机课程设计,我感慨颇多,从选题到定稿,从理论到实践,在接近两 个星期

16、的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以 巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程 设计使我懂得了只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正 为社会服务, 从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题, 可以说得是困难重重,在设计的过程中发现了自己的不足之处,对以前所学过的知识理解 得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌 握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在岑毅南老师的 辛勤指导下,终于得到解决。同时,在岑毅南老师那里我学得到很多实用的知识,在次我 表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!四. 参考文献1 张毅刚 . 单片机原理及应用 . 高等教育出版社, 20032 苏家键等 . 单片机原理及应用技术 . 北京:高等教育出版社, 200420063 钟睿.MCS-51单片机原理及应用开发技术.北京:中国铁道出版社,4 范蟠果 . 工控单片机原理及应用 . 北京:清华大学出版社, 2007附录一、系统原理图-W辛!#_吕 -a 一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论