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

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

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

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

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

二○一六~二○一七学年第一学期

信息科学与工程学院

电子技术综合设计

(二)

课程设计报告

班级:

姓名:

学号:

指导教师:

二○一六年十二月一日

1、课程设计内容及要求:

蜂鸣计算器设计

利用普中科技HC6800-ESV2.0单片机开发板设计一款带蜂鸣器的电子计算器。

主要使用开发板上的数码管、LED点阵、矩阵键盘、蜂鸣器等模块功能。

开发板配有光盘,里面有各个模块的使用说明和程序范例可供参考。

设计要求:

1)每2位同学分工协作。

2)上电开机或者复位键按下之后,2个4位数码管分别自动显示2个同学学号的后4位。

3)定义矩阵键盘的S1-S9代表数字按键1-9,键盘S10代表数字按键0,键盘S11-S16分别代表按键+、-、×、÷、=、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点阵显示+、-、×、÷运算符号,用8位数码管显示键入的数字和运算的结果。

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

数码管显示键入的数字和结果0;LED点阵显示加减乘除符号;4×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

#include

#include

#include

#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);break;

case(3):

num=num*10+4;sound(3);break;

case(4):

num=num*10+5;sound(4);break;

case(5):

num=num*10+6;sound(5);break;

case(6):

num=num*10+7;sound(6);break;

case(7):

num=num*10+8;sound(7);break;

case(8):

num=num*10+9;sound(8);break;

case(9):

num=num*1

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

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

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

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