版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中南林业科技大学课程设计报告 设计名称: 单片机计算器课程设计 姓 名: 汪琦 学 号: 20082124 专业班级: 电子信息工程一班 院(系): 计算机与信息工程学院 设计时间: 2010年12月28日星期二 设计地点: 中南林业科技大学电子信息楼 指导教师评语: 成绩:签名: 年 月 日目录一、 题目二、 任务与要求(老师完成)三、 课程设计摘要及整体方框图1.总体设计思路简述··················
2、;··································2.硬件设计简述··············
3、83;·········································3.软件设计简述·······&
4、#183;················································4.程序主流程
5、图··················································
6、;······四、 课程设计原理分析及相关知识概述五、 结论六、 体会与收获附件:1、 源程序代码(根据需要选择)2、整体电路原理图(根据需要选择)2、 元件表(根据需要选择)3、 PCB板制作(根据需要选择)4、焊接与调试(根据需要选择)一、题目利用单片机芯片STC12C54、四位八段共阴数码管,已制作好的电路板等器件设计制作一个计算器,用LED显示计算数值及结果。二、任务与要求要求计算器能实现加减乘除四种运算,具体如下:1. 加法:四位整数加法,计算结果若超过四位则显示计算错误2. 减法:四位整数减法,计算结果若小于零则显示计算错
7、误3. 乘法:多位整数乘法,计算结果若超过四位则显示计算错误4. 除法:整数除法5. 有清除功能三、课程设计简述及整体方框图1.总体设计思路简述按照系统设计的功能的要求,初步确定设计系统由主控模块、显示模块、键扫描接口电路共三个模块组成,电路系统构成框图如图1.1所示。主控芯片使用STC12C54单片机,比 80C51速度更快,功能更强,由先进工艺制造,并带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位COMS微处理芯片,市场应用最多。键盘电路采用4*4矩阵键盘电路。显示模块采用4枚共阳极数码管和74ls273锁存芯片构成等器件构成。2硬件设计简述 单片机最小系统就是支持主芯片正
8、常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。主控芯片选取STC12C5410AD芯片,因其具有良好的性能及稳定性,价格便宜应用方便。晶振选取11.0592MHz,晶振旁电容选取22pF。采用按键复位电路,电阻分别选取560和10K,电容选取10F。键盘接口电路 计算器所需按键有: 数字键:1,2,3,4,5,6,7,8,9,0 功能键:+, - , *, / , = , C( 清零)共计16个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0P1.7,这样扫描P1口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址
9、,对比P1口的扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘扫描的功能。数码管显示电路 采用4位数码管对计算数据和结果的显示,这里选取共阳数码管,利用NPN三极管对数码管进行驱动,为了节省I/O资源,采取动态显示的方法来显示计算数据及结果,动态扫描。 为了实现数码管的动态显示,P2口输出显示值,通过P2口的二进制代码送到数码管进行显示。P3.2P3.5用来作为位选端,控制哪几位数码管进行显示。比如当P3.2为高电平时,其他位全给0,具体的在软件中会有说明。此时就将扫描的数据送给指定数码管显示。3.软件设计简述键盘扫描子程序设计 要进行数据的计算就必须先进行数据的输入,也就必须
10、确定按键输入的数值是什么,这就需要对键盘进行扫描,从而确定究竟是哪个键按下。对于键盘的扫描,这里采用行列扫描的方法来完成对键盘的扫描。原理就是先确定按键在哪一行,接着再确定是哪一列,这样就可以知道是哪个按键被按下了。我是将P1口作为按键扫描口的,比如开始先给P1口设置为0xf0,即P1.0P1.7为11110000,将它定义为e,再给P1口设置为0x0f,即P1.0P1.7为00001111,将它定义为f,并且定义temp=e|f,好了,接下来若按下的是按键sw1,则P1口变为11100000,e就是0xe0,并在非常短的时间P1口变为00001110,则f就是0x0e,那么temp就为0xe
11、e,同理,每个按键都会有一个对应的十六进制值,我把它们列出来进行一一对应就行了,下面是扫描按键图。 以下为键盘扫描子程序的程序清单。uint kescan() uint ; P1=0xf0;e=P1; P1=0x0f;f=P1;temp=e|f;while(P1!=0x0f); if(temp=0xb7)=0;if(temp=0x7e)=1; if(temp=0xbe)=2; if(temp=0xde)=3; if(temp=0x7d)=4;if(temp=0xbd)=5;if(temp=0xdd)=6;if(temp=0x7b)=7;if(temp=0xbb)=8;if(temp=0xdb)
12、=9;if(temp=0x77)=10;if(temp=0xd7)=11;if(temp=0xe7)=12;if(temp=0xeb)=13;if(temp=0xed)=14;if(temp=0xee)=15;return();数码管显示电路采用4位数码管对计算数据和结果的显示,这里选取共阴极数码管,利用NPN三极管对数码管进行驱动,利用来实现数码管的动态显示,P2口输出显示值,P2口为段选,P3.2P3.5用来作为位选端,控制哪几位数码管进行显示。下面根据程序来阐述。n是一个运算中产生的值,若它大于10000,执行第一个if语句,如果则显示FFFF,若在10000以,则将n分别除以1000、
13、100、10和对10取余,得到我们想要的四个数,送显示子程序显示。其余减、乘、除的计算方法与加法的计算方法一样,这里不再累述。 void dis(uint n) if(n/10000) for(i=0;i<4;i+)if(fu=1) P2=(DSY_CODE15&&0x7f);if(fu=0)P2=DSY_CODE15; P3=bit3-i; n=n/10; delay(4); P3=0x00; else if(n/1000) for(i=0;i<4;i+) if(fu=1) P2=(DSY_CODEn%10&0x7f);if(fu=0)P2=DSY_COD
14、En%10;P3=bit3-i;n=n/10;delay(4);P3=0x00; elseif(n/100)for(i=0;i<3;i+)if(fu=1) P2=(DSY_CODEn%10&0x7f);if(fu=0)P2=DSY_CODEn%10; P3=bit3-i; n=n/10; delay(4); P3=0x00;elseif(n/10)for(i=0;i<2;i+)if(fu=1)P2=(DSY_CODEn%10&0x7f);if(fu=0)P2=DSY_CODEn%10; P3=bit3-i; n=n/10; delay(4); P3=0x00;els
15、eif(n%10)if(fu=1) P2=(DSY_CODEn&0x7f);if(fu=0)P2=DSY_CODEn; P3=0x20; delay(4);运算子程序设计显示加减乘除四个运算符void calculate(uint z) if(z=10)P2=0x76; /加法显示H,并且点亮最高位的数码管P3=0x20; if(z=11) P2=0x40; /减法显示-, 并且点亮最高位的数码管 P3=0x20; if(z=12) P2=0x80; /乘法显示., 并且点亮最高位的数码管 P3=0x20; if(z=13) P2=0x49; /除法显示 并且点亮最高位的数 P3=0x
16、20; 码管 除法子程序设计除法的运算,可以显示小数点void div(void)d=b/c; if(d/1000) for(i=0;i<4;i+) P2=DSY_CODEd%10;P3=bit3-i;d=d/10;delay(4);P3=0x00; elseif(d/100) d=10*b/c;for(i=0;i<4;i+)if(i=1) P2=(DSY_CODEd%10&0x7f);if(i!=1) P2=DSY_CODEd%10; P3=bit3-i; d=d/10; delay(4); P3=0x00;elseif(d/10)d=100*b/c;for(i=0;i&
17、lt;4;i+)if(i=2)P2=(DSY_CODEd%10&0x7f);if(i!=2)P2=DSY_CODEd%10; P3=bit3-i; d=d/10; delay(4); P3=0x00;elseif(d%10) d=1000*b/c;for(i=0;i<4;i+)if(i=3)P2=(DSY_CODEd%10&0x7f);if(i!=3)P2=DSY_CODEd%10; P3=bit3-i; d=d/10; delay(4); P3=0x00; elsed=(1000*b)/c;for(i=0;i<4;i+)if(i=3)P2=(DSY_CODE0&a
18、mp;0x7f);if(i!=3)P2=DSY_CODEd%10; P3=bit3-i; d=d/10; delay(4); P3=0x00;主程序见附录1 4.程序主框图 主程序流程四、课程设计原理分析及相关知识概述 本次课程设计用的STC12C54具有速度快、功耗低、抗干扰强的特点,有多种I/O端口模式,它默认为准双向口/弱上拉,最大灌电流为20mA,拉电流为230uA,所以在三极管和芯片管脚间要接15k的电阻,(5v-1.8v)/300欧=10mA,八个led就为80 mA,超过50 mA的总电流,所以电阻选用511欧。若改为强推挽输出模式,则根据拉电流最大为20mA可计算出,电阻选为1
19、k五、结论完成硬件和软件的设计和制作后,进行系统的调试,并处理不断出现的问题。对于计算器的性能,主要的衡量指标就在于计算的精度,本次制作的计算器性能情况如下:加法运算:四位整数加法运算,和值不超过9999,若超过上限,则显示错误提示FFFF。减法运算:四位正整数减法运算,若结果为负,对其取绝对值。乘法运算:积不超过9999的整数乘法运算,若超出上限,显示错误提示FFFF。除法运算:整数除法,既计算结果为可显示小数。六、体会与收获通过这次课程设计,最大的一点体会是单片机学的不够扎实,不会的很多啊,当然这次的课程设计做计算器程序用的是c语言,不是课上初学的汇编,所以很难适应,尽管大家都知道汇编编这
20、个程序也很困难,但还是互相学习,到处找资料看,问同学,所以我的软件主程序才能编译成功,系统才能调试出结果。很感那些热心教导我的同学和指导我的老师。首先在硬件电路的制作中,也就是焊板子,由于我的粗心,我芯片插槽的一个管脚没焊进去,别的都好了,就这个脚没有用了,后来在老师的帮助下,我将插槽里德那个管脚拔出来,换了个脚在插进去,然后用万用表测试后证明是有效的,心里还是很高兴的。整个硬件电路还是做得令自己比较满意的。在软件方面,感觉困难更多一些,一开始真的很着急,毫无头绪啊,一时间,百度,论坛,贴吧逛了个遍,找了很多资料,也参考了同学的程序,其中每一个子程序模块都认真去读,去分析,化为己用,最重要的按
21、键扫描和显示程序,还有包括加减乘除的运算程序,还了解了c语言在单片机编程中的一些特点,包括函数的声明和调用等等。而且在用uvison编译的时候出了很多问题,其中一个就是关于头文件的,要加上“#include <STC12C5410AD.H>”,不仅如此,还要将有关STC12C5410AD的文件覆盖在uvison安装路径下,这样头文件才有效啊,所以,一开始找不出问题所在,极其郁闷。但是总的来说,软件设计能够把结果调出来还是很激动的,尽管还有很多未知的问题没有出现。附录1 程序源代码#include <STC12C5410AD.H>#include <intrins.
22、h>#define uchar unsigned char#define uint unsigned intuchar e,f,temp,fu=0;uint a=50,flag=0,key,dyh,bru,cru,i,fuhao=0;long c=0,d=0,b=0;uint code bit=0x04,0x08,0x10,0x20;uint code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; void delay(uint x) uchar t;wh
23、ile(x-) for(t=120;t>0;t-); uint kescan() uint ; P1=0xf0;e=P1; P1=0x0f;f=P1;temp=e|f;while(P1!=0x0f); if(temp=0xb7)=0;if(temp=0x7e)=1; if(temp=0xbe)=2; if(temp=0xde)=3; if(temp=0x7d)=4;if(temp=0xbd)=5;if(temp=0xdd)=6;if(temp=0x7b)=7;if(temp=0xbb)=8;if(temp=0xdb)=9;if(temp=0x77)=10;if(temp=0xd7)=11
24、;if(temp=0xe7)=12;if(temp=0xeb)=13;if(temp=0xed)=14;if(temp=0xee)=15;return(); void dis(uint n) if(n/10000) for(i=0;i<4;i+)if(fu=1) P2=(DSY_CODE15&&0x7f);if(fu=0)P2=DSY_CODE15; P3=bit3-i; n=n/10; delay(4); P3=0x00; else if(n/1000) for(i=0;i<4;i+) if(fu=1) P2=(DSY_CODEn%10&0x7f);if(
25、fu=0)P2=DSY_CODEn%10;P3=bit3-i;n=n/10;delay(4);P3=0x00; elseif(n/100)for(i=0;i<3;i+)if(fu=1) P2=(DSY_CODEn%10&0x7f);if(fu=0)P2=DSY_CODEn%10; P3=bit3-i; n=n/10; delay(4); P3=0x00;elseif(n/10)for(i=0;i<2;i+)if(fu=1)P2=(DSY_CODEn%10&0x7f);if(fu=0)P2=DSY_CODEn%10; P3=bit3-i; n=n/10; delay(
26、4); P3=0x00;elseif(n%10)if(fu=1) P2=(DSY_CODEn&0x7f);if(fu=0)P2=DSY_CODEn; P3=0x20; delay(4);void caculate(uint z) if(z=10)P2=0x76;P3=0x20; if(z=11) P2=0x40; P3=0x20; if(z=12) P2=0x80; P3=0x20; if(z=13) P2=0x49;P3=0x20; void div(void)d=b/c; if(d/1000) for(i=0;i<4;i+) P2=DSY_CODEd%10;P3=bit3-i
27、;d=d/10;delay(4);P3=0x00; elseif(d/100) d=10*b/c;for(i=0;i<4;i+)if(i=1) P2=(DSY_CODEd%10&0x7f);if(i!=1) P2=DSY_CODEd%10; P3=bit3-i; d=d/10; delay(4); P3=0x00;elseif(d/10)d=100*b/c;for(i=0;i<4;i+)if(i=2)P2=(DSY_CODEd%10&0x7f);if(i!=2)P2=DSY_CODEd%10; P3=bit3-i; d=d/10; delay(4); P3=0x00
28、;elseif(d%10) d=1000*b/c;for(i=0;i<4;i+)if(i=3)P2=(DSY_CODEd%10&0x7f);if(i!=3)P2=DSY_CODEd%10; P3=bit3-i; d=d/10; delay(4); P3=0x00; elsed=(1000*b)/c;for(i=0;i<4;i+)if(i=3)P2=(DSY_CODE0&0x7f);if(i!=3)P2=DSY_CODEd%10; P3=bit3-i; d=d/10; delay(4); P3=0x00; void main() P3M1=0xff;P2M1=0xff; P2M0=0x00;P3M0=0x00;P1M0=0x00;P1M1=0x00; flag=0;cru=0;bru=0;dyh=0;while(1) P1=0xf0;if(P1!=0xf0) delay(30);if(P1!=0xf0)a=kescan(); if(a&g
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 搅拌站施工合同合作条件3篇
- 教育机构学员交费合同3篇
- 教育机构课程顾问助理工作合同3篇
- 安徽软件行业程序员劳动合同范本3篇
- 捷克语教师简易劳动合同3篇
- 教育图书销售合同
- 房屋买卖合同的撰写要点3篇
- 撤诉授权书格式样本3篇
- 挡水墙工程建筑合同范例3篇
- 提高员工满意度方案3篇
- 粉末涂料有限公司检维修作业安全风险分级清单
- 中央八项规定精神常用规范应知应会测试题
- 2023春国家开放大学-04016人文英语4-期末考试题带答案
- 2023-2024人教版小学1一年级数学下册(全册)教案
- 《公路工程施工安全检查表》
- 70岁以上老人考驾照,三力测试题库答案
- 竹林七贤-课件
- 2023超星尔雅《创新思维训练》王竹立 期末考试答案
- YY/T 1840-2023医用磁共振成像设备通用技术条件
- 施工图设计管理流程图
- 健康素养科普健康知识讲座-课件
评论
0/150
提交评论