ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:472.41KB ,
资源ID:3827617      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3827617.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(现代通信技术.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

现代通信技术.docx

1、现代通信技术.现代通信技术课程设计简易计算器设计学 院:专业班级:姓 名:学 号:小组成员:指导教师:完 成 日 期 2014年 10月目录1 绪论 11.1 STC89C52单片机简介 11.2设计的意义 22 设计的任务和要求 52.1 设计思路 52.2设计目的和要求 52.2.1设计目的 52.2.2基本要求 53 硬件设计 63.1数码管 63.2 按键模块 73.3 硬件电路图设计 74 软件设计 94.1主程序设计 94.2 计算模块 105 电路安装与调试 126 设计总结 13参考文献 14附录 151 绪论1.1 STC89C52单片机简介 单片机是指一个集成在一块芯片上的

2、完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机是为了工业控制需要满足而诞生的,是自动控制系统的核心部件,因而也主要用于工业控制、智能化仪器仪表、家用电器中。它具有体积小,功能多、价格低、使用方便、系统设计灵活等优点,应用领域不断扩大,除了工业控制,智能化仪表,通讯,家用电器外,在智能化高档电子玩具产品中也大量采用单片机芯片作为核心控制部件。ST

3、C89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM,32位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行

4、口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选1。 STC89C52单片机是一款迷你型的开发板,小巧而不小气,简约而不简单。它的外观如下图1.1所示:图1.1 STC89C52单片机1.2设计的意义当今社会,随着科学技术的不断发展,人们需要计算的地方也越来越多,也越来越繁重。在科学界,有些科学计算大到百亿千亿或小到小数点后十位,又有些乘方开方、

5、三角函数、N次开方更是令人苦不堪言。在生活中,有一些人在生意场上更是要进行快速而准确的计算。因此,计算器是人们一种不错的选择。此设计是一种基于单片机技术的简易计算器的方案,本次设计所所提出的一种基于单片机技术的简易计算器的方案,采用具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统单片机,配以C语言编写的执行软件,能更好的解决计算器计算的问题。随着数字生活的到来,单片机在生活中越显重要, 单片机能将大量的逻辑功能集成与一个集成电路中,而C编写的执行软件对数字的操作简单直观。本文讨论了单

6、片机技术的计算器的构思、设计方案、工作原理,主要系统包括单片机AT89C52、译码器74-138、数据锁存器74HC45、矩阵键盘,LED显示器等。主要组成部分包括:键盘输入模块、运算模块、控制模块、显示模块块。通过键盘输入数值单片机进行运算后送往LED显示器显示。计算器(calculator ;counter)一般是指“电子计算器”,该名词由日文传入中国。计算器能进行数学运算的手持机器,拥有集成电路芯片,但结构简单,比现代电脑结构简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱,但较为方便与廉价,可广泛运用于商业交易中,是必备的办公用品之一。计算器一般由运算器、控制器、存储器、键盘

7、、显示器、电源和一些可选外围设备及电子配件通过人工或机器设备组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放输入程序和数据。键盘是计算器的输入部件,一般采用接触式或传感式。为减小计算器的尺寸,一键常常有多种功能。显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等。计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器再充电。为节省电能,计算器都采用CMOS工艺制作的大规模集成电路(见互补金

8、属-氧化物-半导体集成电路),并在内部装有定时不操作自动断电电路。计算器可选用的外围设备有微型打印机、盒式磁带机和磁卡机等。从某种角度而言,广义的“计算机”概念是包括“电子计算器”的。电子计算器中也有集成电路,但计算器的功能简便,价格更加便宜,利于携带与稳定性好。单片机自问世以来,性能不断提高和完善,其资源又能满足很多场合的应用,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、性能可靠、价格低廉,其易于产品化、抗干扰能力强、可在各种恶劣环境下可靠的工作等特点。特别是它强大的面向控制能力,使它在工业控制领域,智能仪表、外设控制、家用电器、机器人、军事装置等方面得到了广泛的应用2

9、。通过此次单片机的课程设计,我们可以进一步认识单片机在控制系统中的重要性。在完成理论学习和必要的实验后,学生掌握了单片机的基本原理和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。2 设计的任务和要求2.1 设计思路系统开始工作后,先由键盘输入键值,控制模块对键值进行检测录入存储,然后经运算模块运算后送出显示。其框架图如图2.1所示:图2.1系统框图2.2设计目的和要求2.2.1设计目的1. 加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识

10、3。2. 用单片机模拟实现具体应用,使个人设计能够真正使用。3. 把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。4. 提高利用已学知识分析和解决问题的能力。5. 提高实践动手能力。2.2.2基本要求1. 通过矩阵键盘可输入0-9的数值和控制加、减、乘、除、清零、等于等功能。 2. 输入的数值可依次在四位7段LED数码管上显示。3. 可进行0-9999之间的整数的四则运算。3 硬件设计3.1数码管LED数码管如图3-1,实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以

11、形成我们眼睛看到的 2个8数码管字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。图3.1数码管3.2 按键模块在键盘中按键

12、数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的,按键的电路设计如下图3.2所示。图3.2矩阵按键3.3 硬件电路图设计硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质

13、上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。本设计选用以STC89C52单片机为主控单元。显示部分:采用LED数码管显示。按键部分,采用4*4键盘。为了为后期的程序设计做准备,我们首先进行了硬件电路设计,然后根据电路图和整体的设计思路,使用keil软件编写程序总体设计思路简述如图4.2所示。1.按照系统设计的功能的要求 初步确定设计系统由主控模块、显示模块、键扫描接口电路共三个模块组成。主控芯片使用STC89C52单片机。 2.键盘电路采用4*4矩阵键盘电路。 3.显示模块采用共阳极

14、数码管构成。图4.2整体电路设计4 软件设计4.1主程序设计计算模块作为计算器的的核心模块共有加、减、乘、除四个部分。其设计原理是先将键盘输入的BCD码数字转换为十进制数字,然后再对其进行运算。由于最后需要进行输出显示,所以我们对最终结果又做了一次转换将结果转换为BCD码,以便在LED上显示,如图4.1所示图4.1主程序设计4.2 计算模块计算模块作为计算器的核心模块共有加、减、乘、除四个部分。其设计原理是先将键盘输入的BCD码数字转换为十进制数字,然后再对其进行运算。由于最后需要进行输出显示,所以我们对最终结果又做了一次转换将结果转换为BCD码,以便在LED上显示。下面以加法为例对计算模块进

15、行原理介绍。void jisuan(char k,char a8,char b8)char r8;数组r用于存储计算结果的BCD码long i,x,y;i=0;x=0;存储第一个数y=0;存储第二个数for(i=7;i0;i-) /数值转化,将代表空格的12转化为数字0,因为个位不显示空格,默认为0,所以不转化 while(ai=12)ai=0; while(bi=12)bi=0; x=a4;x=10000*x;x=x+a0+a1*10+a2*100+a3*1000+a5*100000+a6*1000000+a7*10000000;将键盘输入的第一个数转换为十进制数y=b4;y=10000*y

16、;y=y+b0+b1*10+b2*100+b3*1000+b5*100000+b6*1000000+b7*10000000; 将键盘输入的第二个数转换为十进制数if(k=10)/加法运算 x=x+y; if(x99999999) /大于8位,显示“Err” r0=11; /r r1=11; /r r2=10; /E r3=12; /空格 r4=12; r5=12; r6=12; r7=12; else r0=x%10; r1=(x%100)/10; r2=(x%1000)/100; r3=(x%10000)/1000; r4=(x%100000)/10000; r5=(x%1000000)/1

17、00000; r6=(x%10000000)/1000000; r7=x/10000000;/此段的功能是利用求余的方法将计算结果转换为BCD码 从以上程序段中我们可以看出C语言的简单与直观,再进行加法运算时只要输入“+”,就能对数字进行运算,若选用汇编语言,代码将变得很复杂。5 电路安装与调试在电路板上按整机框图把按键和数码管焊接好,然后按进行调试,连接好每个管脚,接通电源,打开开发板的开关,进行50+3的加法运算结果如下图5.1所示:图5.1加法运算结果图输入超出四位或计算结果超出四位,数码管屏幕显示错误提示,如图5.2所示:图5.2四位溢出报错提示图6 设计总结这次课程设计带给我们的不仅

18、仅是对课本知识的加深的理解,也锻炼了我们对于把书本知识运用到实践中的能力。平时在课堂上学到的东西有的虽然明白了,但是毕竟没有实际操作经验,操作起来容易出错;有的只是一知半解,用于实践中就出现了问题。对于知识的理解知识单纯的停留在书本阶段,自己动手尝试后,这些知识对于我们而言更加鲜活起来了。课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不少的过程。“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。在设计中,从刚刚开始的无从下手,到逐步

19、的知道自己该做什么,该怎么做。不断地遇到新的问题,不断地尝试各种方法解决,即使失败了也有了经验。渐渐的发现问题,解决问题,遇到新问题,再解决问题,这种循环让我们体会到了靠自觉解决问题的成就感。我们的设计也离不开老师的帮助,老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次模简易计算器的设计离不开老师您的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。参考文献1 徐淑华等编.单片微型机原理及应用M.哈尔滨:哈尔滨工业大学出版社, 2011: 97-109.2 刘光新,李克平,孙剑.信号控

20、制交叉口行人过街等待时间研究J.中国安全科学学报. 2009(04):56-58.3 毕旭宾,杨永培.闯红灯自动记录系统检测方法的设计与研讨J.中国计量. 2012(11): 22-25.4 冯建华,赵亮.单片机应用系统设计与产品开发M.北京:人民邮电出版社,2010:39-51.5 徐雄.基于单片机的闯红灯自动检测系统设计D.北京:清华大学,2009:9-15.6 江思敏,陈明编著.Protel电路设计教程M(第2版).北京:清华大学出版社.2011:67-72.7 赵泰洋.一种动态交通信息获取系统的设计与实现D. 大连:大连理工大学 2009:1-7.8 宋杰,汪志宏,江敏编著. 微机原理

21、与接口技术课程设计M. 机械工业出版社,2010:47-49.9 R. Hashemian. Condensed Huffman Coding, A New Efficient Decoding TechniqueJ, IEEE, 2009:33-35.10 康华光.电子技术基础M.厦门:厦门大学出版社,2012:34-41.11 于英民. 计算机接口技术M.北京:电子工业出版社, 2013:56-70.12 伍冯洁,谢斌. 基于Proteus与Keil的单片机实验教学改革J. 实验室研究与探索. 2009(07):16-20.附录#include#define uchar unsigned

22、char#define uint unsigned intuchar code num=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x40; /共阳极uchar code loc=0x00,0x80,0x40,0x20,0x10; uchar code ero=0x79,0x50,0x5c; uint n=0,n1=0,n2=0; /赋初值 uchar flag=0; /计算类型选择关键字void delay(int t);void display(int n);void error();main() while(1) uch

23、ar temp; /第一行检测 P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P3; temp=temp&0xfe; if(temp!=0xfe) temp=P3; switch(temp) case 0xee:n1=0;n2=0;n=0;flag=0;break; /清零 case 0xde:n1=10*n1+0;n=n1;break;/0 case 0xbe: if(flag=1)n=n2+n1; if(flag=2)n=n2-n1; if(flag=3)n=n2*n1; if(flag=4)n=n2/n1

24、; n1=0; break; case 0x7e: / + n2=n1;n1=0; flag=1;break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; /扫描第二行 P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xed:n1=10*n1+1;n=n1;break; /4 case 0xdd:n1=10*n1+2;n=n1;break; /5

25、case 0xbd:n1=10*n1+3;n=n1;break; /6 case 0x7d n2=n1;n1=0; flag=2;break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; /扫描第三行 P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xeb:n1=10*n1+4;n=n1;break; case 0xdb:n1=10*n1+5;n=

26、n1;break; case 0xbb:n1=10*n1+6;n=n1;break; case 0x7b: n2=n1;n1=0; flag=3;break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; /扫描第四行 P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xe7:n1=10*n1+7;n=n1;break; /7 case 0xd7:n1

27、=10*n1+8;n=n1;break; /8 case 0xb7:n1=10*n1+9;n=n1;break; /9 case 0x77: n2=n1;n1=0; flag=4;break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; display(n); /延时函数void delay(int t)int x,y; for(x=0;xt;x+) for(y=0;y9999)|(n=0)&(n=10) P0=nums; P2=loc3; delay(2); P2=loc0; delay(3); if(n=100) P0=numb; P2=loc2; delay(2); P2=loc0; delay(3); if(n=1000) P0=numq; P2=loc1; delay(2); P2=loc0; delay(3); /负数 if(n=-999) abs=-n; g=abs%10; s=abs/10%10; b=abs/100%10; q=abs/1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1