电子技术综合设计二设计报告(点阵计算器)_第1页
电子技术综合设计二设计报告(点阵计算器)_第2页
电子技术综合设计二设计报告(点阵计算器)_第3页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、二O六二O七 学年第一学期信息科学与工程学院电子技术综合设计(二)课程设计报告班 级: 姓 名: 学 号: 指导教师:二O六年十二月一日1、课程设计容及要求:蜂鸣计算器设计SSSSifi S S 8FKifrriifi利用普中科技HC6800-ES V2.0单片机开发板设计一款带蜂鸣器的电子计算器。 主要使用开发板上的数码管、 LED点阵、矩阵键盘、蜂鸣器等模块功能。开发板配 有光盘,里面有各个模块的使用说明和程序例可供参考。设计要求:1)每2位同学分工协作。2)上电开机或者复位键按下之后,2个4位数码管分别自动显示2个同学学号的后4位。3)定义矩阵键盘的 S1-S9代表数字按键1-9,键盘S

2、10代表数字按 键0,键盘S11-S16分别代表按键+、-、x、+、=、C,其中C按键为计 算器清零按键,按下 C键计算器开始新的计算。4)计算器计算过程中,用LED点阵显示+、-、X、+运算符号,用8位数码管显示键入的数字和运算的结果。键入时依次显示并自动移位,例如18+9=27,先键入1,显示1,再键入8, 1自动左移一位显示 18,键 入+ , LED点阵显示+,键入9,数码管之前显示的18消失并重新显示为 9, 键入=,数码管显示运算结果 27。5)为这16个矩阵键盘的按键分配不同的蜂鸣器频率,使得按下不同的按键蜂鸣器响声不同,便于识别按键。6)按键应具有一定的消除抖动功能。7)所有单

3、片机程序代码都用C语言编写,并烧写到单片机中上电自动运行。报告要求:(1)在报告中应对蜂鸣计算器系统的设计思想、设计方法用文字详细说明。(2)在报告中应有完整的程序清单(必需加注释)。(3)在报告中应有完整的程序流程框图。(4)在报告中应有专门的段落说明2位同学各自的工作容。2个同学合写一个报告即可,但封面要有 2位同学的名字和学号、班级。(5)谈谈自己通过这次设计实践的收获和体会。2、课程考核方式考查要求:提交课程设计报告,设计报告容包括设计任务,设计要求,软件设计,程序结果描述。1)每2位同学合作完成题目的基本功能。包括设计报告和程序清单(带注释),运行结果及有关运行说明。2)程序检查及功

4、能演示。分优、良、中、及格、不及格如为不及格,下学期需进行重修。3)课程设计报告,正规书写打印,否则不计成绩。4)设计报告禁止雷同,验收时每位同学现场演示设计结果,指导老师随时针对电路设计、程序调试、代码功能等各个方面进行提问。5)验收时回收开发板及全部附属设备,以备下一级同学使用,请不要损 坏开发板设备。3、报告正文(1)设计思想:计算器计算过程中,用LED点阵显示+、-、X、十运算符号,用8位数 码管显示键入的数字和运算的结果。键入时依次显示并自动移位,例如 18+9=27,先键入1,显示1,再键入8,1自动左移一位显示18,键入+, LED点阵显示+,键入9,数码管之前显示的18消失并重

5、新显示为9,键 入=27。数码管显示键入的数字和结果 0; LED点阵显示加减乘除符号;4 X 4矩阵键盘分别代表按键:按键 S0S9代表数字按键1-9,按键S10代 表数字按键0,按键S11-S16代表+、一、X、*、=、 C,其中C按键 为计算器清零按键;这16个矩阵键盘的按键分配不同的蜂鸣器频率,使 得其按下时有不同的声音以便分别。(2) 设计方法:89C52单片机丿X数码管LED点阵矩阵键盘r蜂鸣器,J <J X.7编写一段程序,在上电之后或按复位键之后 2个4位数码管分别自动显示2个同学学号的后4位。通过矩阵键盘,LED点阵,数码管完成计算器 功能。数字及结果在数码管上显示,+

6、、x、十、二在 LED点阵上显示,C键为清零键,每个按键对应不同的音频。(3) 程序流程图:89C52单片机:C89C52有 40个引脚,4个8位并行I/O 口,1个全双工异步串行口, 同时含5个中断源,2个优先级,2个16位定时/计数器。STC89C52勺存 储器系统由4K的程序存储器(ROM)和128B的数据存储器(RAM组成。STC89C5引脚图:i V j,Vcc(TiElflPl. 1r2P0. o/adoFl. 2cJ】FO. 1/AB1Pl. 8c437J PO.Ft 4c运J PO. 3/ADiFl . 5t3 5PO. 4/AE+Fi er34PO. 5/JIDSFl. 7c

7、8S31 FORESETc932J PO. 7/ftDT0匚IQ311 EA/VppTSD/F < I匚11S(|atk/peognrroi/F3.2r12】PSE1TIJTT1/F3. 3c13歸Fi. 7/AE15t1427n.6/ii)i471/F?.5r15P£. 5/AEl 3:1&皓】P2.4/AD12WF5.;cir24P2 3/AD11KTAL2L18231 F2 2/AE10XT* LIC1922J P2. 1/AD9V ssE2021P2. 0/ftE8数码管:这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳 极连接到共同接点,而每个

8、 LED的阴极分别为a、b、c、d、e、f、g及 dp (小数点);共阴极则是把所有 LED的阴极连接到共同接点,而每个 LED的阳极分别为a、b、c、d、e、f、g及dp (小数点),如下图所示。 图中的8个LED分别与上面那个图中的 ADP各段相对应,通过控制各个 LED的亮灭来显示数字。LED点阵:&列守列 I列 E列4列術4打1廿O 0 0 O 0 一 :pA巧化 瞄宁砖$行2列31彳列矩阵键盘:首先辨别键盘中有无键按下,有单片机I/O 口向键盘送全扫描字,然后 读入行线状态来判断。方法是:向行线输出全扫描字 00H,把全部列线置 为低电平,然后将列线的电平状态读入累加器 A中

9、。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如 果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。4、程序清单:/*实验名 :计算器*使用的10:数码管使用P0,P2.2,P2.3,P2.4键盘使用P1点阵使用p3.6,p3.5,p3.4 蜂鸣器使用p1.5*实验效果:*注 意 :*/#in clude<reg51.h>#i ncludevstri ng.h>#i ncl

10、ude<i ntri ns.h>#in clude <math.h>#defi ne GPIO_DIG P0#defi ne GPIO_KEY P1sbit Beep = P1A5 ;sbit LSA=P2A2;sbit LSB=P2A3;sbit LSC=P2A4;sbit SRCLK=P3A6;sbit RCLK=P3A5;sbit SER=P3A4;/-列选通控制-/TAB8un sig nedcharcode0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/-点阵字码-/un sig ned char code CHARCODE4

11、8=0x20,0x20,0xf8,0x20,0x20,0x00,0x00,0x00, /加0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,/减0x88,0x50,0x20,0x50,0x88,0x00,0x00,0x00,/乘0x20,0x20,0xa8,0x20,0x20,0x00,0x00,0x00, /除;unsigned char code tone=115,102,91,86,77,68,61,57,50,45;09按键音un sig ned char code DIG_CODE11=0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d

12、,0x07,0x7f,0x6f,0x3f;/无显示、1、2、3、4、5、6、7、8 9、0的显示码un sig ned char KeyValue;/用来存放读取到的键值un sig ned long shu;存放显示的数unsigned char KeyState; /记录按键的状态,0没有,1有un sig ned char DisplayData8;/用来存放要显示的8位数的值void Delay10ms(); / 延时 10msvoid KeyDown();/检测按键函数void DigDisplay(); / 动态显示函数void xia nshi( un sig ned long

13、shu); /存入数void dia n(un sig ned int j);/点阵显示void delay(unsigned int time); /延时void Hc595Se ndByte(u nsig ned char dat);/发送一个字节的数据void sound (un sig ned char); / 发声函数void delay8us (un sig ned char); /发声函数配套延时函数/*函数名 :main*函数功能 :主函数*输 出 : 无*/void main (void)un sig ned char i,c,e;un sig ned long nu m,a

14、,b,d ,n 2,xuehao;xuehao=70057007; / 显示学号xia nshi(xuehao);KeyState=0;in it:num=n 2=0;i=0,e=0;while(1)KeyDow n();numif(KeyState=1 &&KeyValue<10&&i=0)/ 将第一个数存入并显示KeyState=0;switch(KeyValue)case(0):num=nu m*10+1;so un d(0);break;case(1):num=nu m*10+2;so un d(1); break;case(2):num=nu m

15、*10+3;so un d(2); break;case(3):num=nu m*10+4;so un d(3); break;case(4):num=nu m*10+5;so un d(4); break;case(5):num=nu m*10+6;so un d(5); break;case(6):num=nu m*10+7;so un d(6); break;case(7):num=nu m*10+8;so un d(7); break;case(8):num=nu m*10+9;so un d(8); break;case(9):num=nu m*10+0;so un d(9); br

16、eak;xia nshi (nu m);if(KeyState=1 &&KeyValue<10&&i=1)KeyState=0;switch(KeyValue)/将第一个数存入n2并显示case(0):n2=n2*10+1;sound(0); break;case(1):n 2=n2*10+2;sou nd(1); break; case(2):n2=n2*10+3;sound(2); break;case(3):n2=n2*10+4;sound(3); break; case(4):n2=n2*10+5;sound(4); break;case(5):n

17、2=n2*10+6;sound(5); break;case(6):n2=n2*10+7;sound(6); break;case(7):n2=n2*10+8;sound(7); break;case(8):n2=n2*10+9;sound(8); break; case(9):n2=n2*10+0;sound(9); break; xia nshi (n 2);else if(KeyState=1 &&KeyValue<14)a=num;i=1;c=KeyValue;switch(c)case(10):dia n(0); break;/ 显示加case(11):dia

18、n(1); break;/显示减case(12):dia n(2); break;/显示乘case(13):dia n(3); break;/显示除else if(KeyState=1 &&KeyValue=14)b=n2;switch(c)case(10):d=a+b; break;/计算加法case(11):if(b>a)d=b-a;e=1;else d=a-b;break;/计算减法case(12):d=a*b; break;/ 计算减法case(13):d=a/b; break;/计算除法14 / 24xian shi(d); / 显示结果else if(KeyS

19、tate=1 &&KeyValue=15)复位goto in it;DigDisplay();/*函数名:sound*函数功能:使用蜂鸣器发出声音*输入:频率*输出:无*/void sound(un sig ned char x)un sig ned char i;for(i=0;i<60;i+)/ 执行 60 次Beep=0;delay8us(t on ex); /蜂鸣器动作Beep=1;delay8us(t on ex); /蜂鸣器不动作*函数名 :delay8us 函数功能 : 延时 输入:时长输出:无*/void delay8us (un sig ned char

20、 x)un sig ned char i,j;for(i=0;i<x;i+)for(j=0;j<1;j+);/*函数名:DigDisplay函数功能:使用数码管显示输入:无输出:无*/void DigDisplay()un sig ned char i;un sig ned int j;for(i=0;i<8;i+)switch(i) /位选,选择点亮的数码管,case(0):LSA=0;LSB=0;LSC=0; break;/ 显示第 0 位case(1):LSA=1;LSB=0;LSC=0; break;/ 显示第 1 位case(2):LSA=0;LSB=1;LSC=0

21、; break;/ 显示第 2 位case(3):LSA=1;LSB=1;LSC=0; break;/ 显示第 3 位case(4):LSA=0;LSB=0;LSC=1; break;/ 显示第 4 位case(5):LSA=1;LSB=0;LSC=1; break;/ 显示第 5 位case(6):LSA=0;LSB=1;LSC=1; break;/ 显示第 6 位case(7):LSA=1;LSB=1;LSC=1; break;/ 显示第 7 位 GPIO_DIG=DisplayDatai;发送段码j=10;/扫描间隔时间设定while(j-);GPIO_DIG=0x00; 消隐*函数名

22、:KeyDown*函数功能:检测有按键按下并读取键值*输入:无*输出:无*/void KeyDow n(v oid)un sig ned int a=0;GPIO_KEY=OxOf;if(GPIO_KEY!=OxOf)Delay10ms();a+;a=0;if(GPIO_KEY!=0x0f)KeyState=1;有按键按下/测试列GPIO_KEY=0X0F;/Delay10ms();switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=1;break;case(OXOd): KeyValue=2;break;case(O

23、XOe):KeyValue=3;break;/default:KeyValue=17; /检测出错回复 17意思是把数码管全灭掉。/测试行GPIO_KEY=OXFO;Delay10ms();switch(GPIO_KEY)case(0X70):KeyValue=KeyValue;break;case(OXbO):KeyValue=KeyValue+4;break;case(OXdO): KeyValue=KeyValue+8;break;case(OXeO):KeyValue=KeyValue+12;break;/default:KeyValue=17;while(a<500)&

24、&(GPIO_KEY!=OxfO)/ 按键松手检测Delay10ms();a+;a=0;/*函数名:Delay10ms*函数功能:延时函数,延时10ms*输入:无*输出:无*/void DelaylOms(void) / 误差 Ousun sig ned char a,b,c;for(c=1;c>0;c-)for(b=38;b>0;b-) for(a=130;a>0;a-);/*函数名:xianshi*函数功能 :将数字存入*输入:数*输出:无*/void xia nshi( un sig ned long shu) un sig ned char i,j;for(i=0;i<8;i+)j=shu%10;shu/=10;if(j=0&&shu!=0)j=10;DisplayDatai=DIG_CODEj;*函数名 :delay*函数功能 :延时*输入 :延时时长*输出:无*/void delay (un sig ned int time) un sig ned int i,j;for(i=0;i<time;i+)for(j=0;j<121;j+);*函数名 :Hc595Se ndByte(u nsig ned char dat)函数功能:想74H595发送一个字节的数据输入输出*/void Hc595Se ndBy

温馨提示

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

评论

0/150

提交评论