利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc

上传人:b****9 文档编号:13048515 上传时间:2022-10-03 格式:DOC 页数:25 大小:1.33MB
下载 相关 举报
利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc_第1页
第1页 / 共25页
利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc_第2页
第2页 / 共25页
利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc_第3页
第3页 / 共25页
利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc_第4页
第4页 / 共25页
利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc

《利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc(25页珍藏版)》请在冰豆网上搜索。

利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器-电子技术综合设计二设计报告点阵计算器Word文档下载推荐.doc

、÷

、=、C,其中C按键为计算器清零按键,按下C键计算器开始新的计算。

4)计算器计算过程中,用LED点阵显示+、-、×

运算符号,用8位数码管显示键入的数字和运算的结果。

键入时依次显示并自动移位,例如18+9=27,先键入1,显示1,再键入8,1自动左移一位显示18,键入+,LED点阵显示+,键入9,数码管之前显示的18消失并重新显示为9,键入=,数码管显示运算结果27。

5)为这16个矩阵键盘的按键分配不同的蜂鸣器频率,使得按下不同的按键蜂鸣器响声不同,便于识别按键。

6)按键应具有一定的消除抖动功能。

7)所有单片机程序代码都用C语言编写,并烧写到单片机中上电自动运行。

报告要求:

(1)在报告中应对蜂鸣计算器系统的设计思想、设计方法用文字详细说明。

(2)在报告中应有完整的程序清单(必需加注释)。

(3)在报告中应有完整的程序流程框图。

(4)在报告中应有专门的段落说明2位同学各自的工作内容。

2个同学合写一个报告即可,但封面要有2位同学的名字和学号、班级。

(5)谈谈自己通过这次设计实践的收获和体会。

2、课程考核方式

考查

要求:

提交课程设计报告,设计报告内容包括设计任务,设计要求,软件设计,程序结果描述。

1)每2位同学合作完成题目的基本功能。

包括设计报告和程序清单(带注释),运行结果及有关运行说明。

2)程序检查及功能演示。

分优、良、中、及格、不及格如为不及格,下学期需进行重修。

3)课程设计报告,正规书写打印,否则不计成绩。

4)设计报告禁止雷同,验收时每位同学现场演示设计结果,指导老师随时针对电路设计、程序调试、代码功能等各个方面进行提问。

5)验收时回收开发板及全部附属设备,以备下一级同学使用,请不要损坏开发板设备。

3、报告正文

(1)设计思想:

计算器计算过程中,用LED点阵显示+、-、×

键入时依次显示并自动移位,例如18+9=27,先键入1,显示1,再键入8,1自动左移一位显示18,键入+,LED点阵显示+,键入9,数码管之前显示的18消失并重新显示为9,键入=27。

数码管显示键入的数字和结果0;

LED点阵显示加减乘除符号;

4矩阵键盘分别代表按键:

按键S0~S9代表数字按键1-9,按键S10代表数字按键0,按键S11-S16代表+、—、×

、=、C,其中C按键为计算器清零按键;

这16个矩阵键盘的按键分配不同的蜂鸣器频率,使得其按下时有不同的声音以便分别。

(2)设计方法:

89C52

单片机

数码管

LED点阵

矩阵键盘

蜂鸣器

编写一段程序,在上电之后或按复位键之后2个4位数码管分别自动显示2个同学学号的后4位。

通过矩阵键盘,LED点阵,数码管完成计算器功能。

数字及结果在数码管上显示,+、-、×

、=在LED点阵上显示,C键为清零键,每个按键对应不同的音频。

(3)程序流程图:

89C52单片机:

C89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。

STC89C52的存储器系统由4K的程序存储器(ROM),和128B的数据存储器(RAM)组成。

STC89C52引脚图:

数码管:

这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);

共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。

图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。

LED点阵:

矩阵键盘:

首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。

方法是:

向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。

如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。

判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。

依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;

如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。

4、程序清单:

/*******************************************************************************

*实验名 :

计算器

*使用的IO :

数码管使用P0,P2.2,P2.3,P2.4键盘使用P1点阵使用p3.6,p3.5,p3.4蜂鸣器使用p1.5

*实验效果:

*注意 :

*******************************************************************************/

#include<

reg51.h>

string.h>

intrins.h>

#include<

math.h>

#defineGPIO_DIGP0

#defineGPIO_KEYP1

sbitBeep=P1^5;

sbitLSA=P2^2;

sbitLSB=P2^3;

sbitLSC=P2^4;

sbitSRCLK=P3^6;

sbitRCLK=P3^5;

sbitSER=P3^4;

//--列选通控制--//

unsignedcharcodeTAB[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

//--点阵字码--//

unsignedcharcodeCHARCODE[4][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},//除

};

unsignedcharcodetone[]={115,102,91,86,77,68,61,57,50,45};

//0~9按键音

unsignedcharcodeDIG_CODE[11]={

0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f};

//无显示、1、2、3、4、5、6、7、8、9、0的显示码

unsignedcharKeyValue;

//用来存放读取到的键值

unsignedlongshu;

//存放显示的数

unsignedcharKeyState;

//记录按键的状态,0没有,1有

unsignedcharDisplayData[8];

//用来存放要显示的8位数的值

voidDelay10ms();

//延时10ms

voidKeyDown();

//检测按键函数

voidDigDisplay();

//动态显示函数

voidxianshi(unsignedlongshu);

//存入数

voiddian(unsignedintj);

//点阵显示

voiddelay(unsignedinttime);

//延时

voidHc595SendByte(unsignedchardat);

//发送一个字节的数据

voidsound(unsignedchar);

//发声函数

voiddelay8us(unsignedchar);

//发声函数配套延时函数

*函数名:

main

*函数功能 :

主函数

*输入:

*输出:

voidmain(void)

unsignedchari,c,e;

unsignedlongnum,a,b,d,n2,xuehao;

xuehao=70057007;

//显示学号

xianshi(xuehao);

KeyState=0;

init:

num=n2=0;

i=0,e=0;

while

(1)

{

KeyDown();

if(KeyState==1&

&

KeyValue<

10&

i==0) //将第一个数存入num并显示

{

KeyState=0;

switch(KeyValue)

{

case(0):

num=num*10+1;

sound(0);

break;

case

(1):

num=num*10+2;

sound

(1);

break;

case

(2):

num=num*10+3;

sound

(2);

case(3):

num=num*10+4;

sound(3);

case(4):

num=num*10+5;

sound(4);

case(5):

num=num*10+6;

sound(5);

case(6):

num=num*10+7;

sound(6);

case(7):

num=num*10+8;

sound(7);

case(8):

num=num*10+9;

sound(8);

case(9):

num=num*1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

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

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