单片机系统设计报告参考模板11.docx
- 文档编号:23828891
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:26
- 大小:119.54KB
单片机系统设计报告参考模板11.docx
《单片机系统设计报告参考模板11.docx》由会员分享,可在线阅读,更多相关《单片机系统设计报告参考模板11.docx(26页珍藏版)》请在冰豆网上搜索。
单片机系统设计报告参考模板11
重庆科技学院
学生实习(实训)总结报告
院(系):
________专业班级:
__________
学生姓名:
_________________学号:
__________
实习(实训)地点:
____________________
报告题目:
__单片机系统综合训练——基于单片机的简易计算器设计
报告日期:
201年月日
指导教师评语:
_______________________________________
_________________________________________________________
成绩(五级记分制):
_____________
指导教师(签字):
_____________________
实习(实训)总结报告的写法及基本要求
一、实习(实训)报告一般由标题和正文两部分组成
1.标题:
标题可以采取规范化的标题格式,基本格式为,“关于××的实习(实训)报告”。
2.正文:
正文一般分前言,主体,结尾三部分。
(1)前言:
主要描述本次实习(实训)的目的意义、大纲的要求及接受实习(实训)任务等情况。
(2)主体:
实习(实训)报告最主要的部分,详述实习(实训)的基本情况,包括:
项目、内容、安排、组织、做法,以及分析通过实习(实训)经历了哪些环节,接受了哪些实践锻炼,搜集到哪些资料,并从中得出一些具体认识、观点和基本结论。
(3)结尾:
可写出自己的收获、感受、体会和建议,也可就发现的问题提出解决问题的方法、对策;或总结全文的主要观点,进一步深化主题;或提出问题,引发人们的进一步思考;或展望前景,发出鼓舞和号召等。
二、对实习(实训)报告的要求
1.按照大纲要求在规定的时间完成实习(实训)报告,报告内容必须真实,不得抄袭。
学生应结合自己所在工作岗位的工作实际写出本行业及本专业(或课程)有关的实习(实训)报告。
2.校外实习报告字数要求:
不少于800字每周,累计实习3周及以上的不少于2000字。
用A4纸书写或打印(正文使用小四号宋体、行距1.5倍。
其余排版要求以美观整洁为准)。
校内实习(实训)报告字数要求可适当减少,具体要求由院系依据课程特点规定。
3.实习(实训)报告撰写过程中需接受指导教师的指导,学生应在实习(实训)结束之前将成稿交实习(实训)指导教师。
三、实习(实训)考核的主要内容
1.平时表现:
实习(实训)出勤和实习(实训)纪律的遵守情况;实习(实训)现场的表现和实习(实训)笔记的记录情况、笔记的完整性。
2.实习(实训)报告:
实习(实训)报告的完整性和准确性;实习(实训)的收获和体会。
3.答辩:
在生产现场随机口试;实习(实训)结束时抽题口试。
目录
实习(实训)总结报告的写法及基本要求2
1.功能描述(课程设计内容及要求)4
2方案设计4
2.1系统分析4
2.2器件选择4
2.2.1微处理器4
2.2.2显示器5
2.2.3按键5
3、硬件电路设计6
3.1最小系统设计
6
3.2显示电路设计6
3.3按键电路设计7
3.4电源电路设计7
4、软件设计8
4.1操作功能设计8
4.2程序编制思想8
4.3主程序8
5程序调试10
6技术小结10
7基于单片机的简易计算器的使用说明10
8心得体会11
9参考文献(最近3年)11
附录1:
电路原理图12
附录2:
程序参考清单13
设计报告
1.功能描述(课程设计内容及要求)
设计一个基于单片机的简易计算器设计
1)实现两位数的加减乘除运算;
2)实现矩阵键盘输入,由LED数码管输出;
3)具有清零功能;
4)显示时钟,可以修改时间。
(扩展功能)
2方案设计
2.1系统分析
根据系统功能要求,可将系统组成结构分成四大部分:
矩阵键盘输入、MCU单片机控制中心、数码管计算显示、复位显示,如下图为系统的组成结构图。
其中,单片机控制中心和矩阵键盘是核心。
MCU根据矩阵键盘的按键输入,可得到两位数经过数学四则基本运算后的不同结果。
数字显示完成矩阵键盘四则运算的信息。
2.2器件选择
2.2.1微处理器
这一次的实验,选取微处理器从多方面考:
成本低、性能高、能够满足功能要求等等。
它的特点十分广泛,有2个16位定时器/计数器,PWM(4路)/PCA(可编程计数器阵列),也可用来再实现4个定时器或4个外部中断(上升沿中断/下降沿中断均可支持),ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片。
这里,选取STC89C51芯片。
因为其功能与普通51芯片相同,其价格非常低廉、程序空间大、资源较丰富、在线下载非常方便。
同时,使用该芯片,编程上亦可采用所熟悉的KEIL软件,使课程设计非常简单。
2.2.2显示器
常见的显示器件LED数码管和LCD液晶器件。
LED数码管能够显示数字和部分字符,价格便宜,硬件电路、软件编程均非常简单,而且使用动态扫描技术可节省大量硬件成本。
LED显示器结构,基本的半导体数码管是由七个条状发光二极管芯片按图12排列而成的,其具体结构有“反射罩式”、“条形七段式”及“单片集成式多位数字式”等。
数码管是用于显示0,1,2,......9数字的显示器件,具体应用时,这些数字都是以BCD编码形式表示,通过译码器加到显示管上。
LCD液晶显示器件,显示字迹清晰、能够显示数字、字符和汉字,但价格比LED非常高,编程复杂,软硬件调试都比较花时间。
系统显示主要还是数字,根据这两种显示器件的特性,选取LED数码管器件。
由于系统要求显示小时和分钟,采用四位数码管显示即可。
2.2.3按键
这里的按键在矩阵键盘和单片机中实现。
单片机中只需要一个模式键,其余实现数学四则基本运算的按键在矩阵键盘中。
本实验中的矩阵键盘,采用四条IO线作为行线,四条IO线作为列线组成键盘。
16个按键—0至9需十个按键,加减乘除四个按键,剩下是等于和清零键。
3、硬件电路设计
3.1最小系统设计
单片机最小系统由单片机、电源、复位电路和晶振电路组成。
在最小系统的基础上扩展部分模块可以实现我们需求的全部功能,在进行模块化设计的时候应该要注意各接口之间的电平兼容性。
图1
3.2显示电路设计
该数码管显示电路由一个四位的七段数码管组成。
数码管的原理还是比较简单的,但是值得注意的是,在设计的时候部分信号线能公用则公用,这样的连线会比较方便,也避免了跳线。
3.3按键电路设计
设计成了一个矩阵键盘,由四行四列组成,该矩阵键盘的优点是节约连接芯片上的引脚。
3.4电源电路设计
MCU工作电压为5V。
为了使用方便,用USB接口供电是最方便的,因此,系统采用USB接口供电的方式,直接从USB接口获取5V电源。
4、软件设计
4.1操作功能设计
根据系统功能描述,可以将功能大致分成三类:
数学基本四则运算功能、清零功能、数码显示功能。
系统设有四个数码管,板子设有一模式键,其余十六个键在矩阵键盘里。
通过矩阵键盘的输入,在数码管显示了相应的结果。
键盘输入,单片机控制,数码管显示,步骤一环扣一环,步步为营,因此在数码管连接方面克服了共阳极数码管显示不清晰的困难。
菜单设计如下:
菜单1:
实现数学四则基本运算,最后得出结果;
菜单2:
当做完运算后,实现清零功能。
4.2程序编制思想
数码管采用动态扫描原理。
所以系统需使用单片机定时器资源。
定时时间可设为5ms,即4位数码管,每5ms扫描一位数码管,20ms循环一次。
另一方面,按键接普通IO口,所以按键管理程序所涉及到的识键、译键均需采用软件扫描的方法。
这里选用定时扫描控制方式。
所以,程序编制思想为:
使用定时器0(或1)完成数码管动态扫描,并对按键进行扫描。
扫描到相应的按键时,如功能键,则执行相应的操作,如,切换菜单。
切换菜单的方法,主要是通过程序定义一个变量,变量不同的值表示不同的菜单。
通过定义两个变量,分别储存第一次输入的数和第二次输入的数,又继续通过两个变量来确定输入的第几个数或者符号,然后再定义一个变量用来储存计算的结果,最后用数码管显示出来。
4.3主程序
(程序流程图主要根据学生的思路来绘制)这里只给出数码管动态扫描所涉及的流程图。
5程序调试
在程序编制当中易出现问题:
定时器中断的用法、动态扫描的过程、按键与显示的对应,按键的消抖动等。
在实行矩阵键盘的加减乘除的时候,数码管得出来正确的结果,但是数码管灯一直在闪烁,我很迷茫,于是找了老师向她请教,结果是编译的程序有问题,通过在老师的指导和同学的帮助下,最终恢复了正常。
我懂得了定时器中断是单片机内部中断,它定义单片机多少时间中断检测一次,一般用于定时检测管脚数据,检测定义的标志位。
在实验中还出现了这样一个问题,矩阵键盘上的有一部分键按下之后没有响应,要么是整列要么是整行没有响应,于是我先想到了是不是程序出现了错误,是否在定义数字的时候有问题,结果发些没有问题,在不经意间,我碰到了接线,发些按键恢复了正常,最终得出的是接线不够灵敏,有点松动,让我虚惊一场,不过在调试过程中,这些都是我们去值得注意的问题。
6技术小结
主要技术应包括:
单片机最小系统结构、数码管显示技术、按键检测技术、系统功能设计、软硬件调试等技术。
本次课程设计我知道了按键的消抖动的重要性,按键的消抖动分为了硬件消抖和软件消抖,前者在键数较少时可用此方法消除键抖动;后者在键较多时,可以用此方法去消抖。
在扫描数码管时可以分为动态扫描和静态扫描,明白了动态扫描更容易实现,更加优化。
7基于单片机的简易计算器的使用说明
(开发一个单片机应用系统,正如开发一个产品,产品在开发完毕后,对用户来说,产品说明书是用户使用产品的主要手册,是用户对产品功能使用的主要技术支持,因此,写好产品使用说明非常重要)
使用说明主要包括:
功能使用(见功能描述)、人机接口、操作说明(见菜单设计)等。
待计算机的程序都准备完毕之后,按下单片机的模式键,数码管灯亮。
此后,该矩阵键盘的第一列依次为加减乘除,第二列按键依次是3、6、9、=,第三列按键依次为2、5、8、清零键,第四列按键则依次表示为1、4、7、0键。
对其中的某一数字按下一次表示的是一位数的加减乘除,若再按下同一或不同数字则表示的是两位数的加减乘除。
此矩阵键盘实现的是两位数的加减乘除和清零。
8心得体会
不知不觉,三个星期的实训已经结束,时光飞逝,过去一个月的点点滴滴,历历在目,想起刚上第一节课的时候,老师的认真讲解,恍若梦中。
这三个星期学到了很多的内容,第一个星期,我好好的巩固了自己C语言知识,并在图书馆借到了几本c语言书来拓展我的知识面,我们需要做的是简易计算器,这个系统需要有键盘模块,显示模块等等。
我迫使自己每天下午去图书馆翻阅资料。
皇天不负有心人,我还是很顺利的完成了第一个星期的电路理论设计部分,在老师的指导下,把自己的电路做的更加的完美。
这一个星期,虽然只是理论设计,没有动手,但是还是学到了许多在课堂上无法学到的知识。
后面的时间就开始了软件设计与分析。
虽然有很多不懂的地方,但在老师的帮助下,每天都有新的收获。
最后完成了任务。
一个月一闪而过,感谢各位老师的淳淳教导,在这一个月的相处中,我从您们那里学到了很多优秀的品质,当然我自己的知识水平也得到了质的飞越!
回顾这两个星期的实训,我学到了很多知识,在以后的生活工作中,谨记老师教导,积极面对未来!
9参考文献(最近3年)
[1]沈红卫.单片机的智能系统设计与实现[M].北京电子工业出版社.2005.
[2]李光飞,楼然苗,胡佳文,等著.单片机课程设计实例指导[M].北京航空航天大学出版社.2005.
[3]汪德彪.MCS-51单片机原理及接口技术[M].北京电子工业出版社.2004.
[4]胡文金,钟秉翔.单片机应用技术实训教程[M].重庆大学出版社.2005.
[5]张毅刚,彭喜元,董继成.单片机原理及应用[M].重庆大学出版社.2003.
附录1:
电路原理图
附录2:
程序参考清单
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeshuma[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40,0x46,0x01,0x08,0x09};
ucharjian[4]={10,11,10,10};
ucharjia[4]={10,12,11,10};
ucharchu[4]={11,15,11,10};
ucharcheng[4]={15,11,15,10};
uchardeng[4]={15,10,10,10};
ucharcun[4]={10,10,10,10};
ucharfigure=0,figure1=0,figure2=0,figure4=0,figure6=0;
intfigure5=0;
uchartime1=0,time2=0,Bit=0,b=0,c=0,aim=0,aim1=0,aim2=0;
ucharanswer=0,answer1=0;
uchartemp=0;
inta=0;
sbitP24=P2^4;
sbitP25=P2^5;
sbitP26=P2^6;
sbitP27=P2^7;
sbitP21=P2^1;
voiddelay()
{
uchari=0,j=0;
for(i=99;i>0;i--)
for(j=99;j>0;j--);
}
voidscan()
{
if(aim>=3)aim=0;
P1=0xfd;
temp=P1;
if(temp!
=0xfd)
{
delay();
if(temp!
=0xfd)
{
switch(P1)
{
case0xed:
figure=3;
aim++;
break;
case0xdd:
figure=6;
aim++;
break;
case0xbd:
figure=9;
aim++;
break;
case0x7d:
figure=14;
break;
}
while(temp!
=0xfd)
{
P1=0xfd;
temp=P1;
}
}
}
P1=0xfe;
temp=P1;
if(temp!
=0xfe)
{
delay();
if(temp!
=0xfe)
{
switch(P1)
{
case0xee:
figure=10;
aim=0;
aim1=1;
aim2=0;
break;
case0xde:
figure=11;
aim=0;
aim1=1;
aim2=0;
break;
case0xbe:
figure=12;
aim=0;
aim1=1;
aim2=0;
break;
case0x7e:
figure=13;
aim=0;
aim1=1;
aim2=0;
break;
}
while(temp!
=0xfe)
{
P1=0xfe;
temp=P1;
}
}
}
P1=0xfb;
temp=P1;
if(temp!
=0xfb)
{
delay();
if(temp!
=0xfb)
{
switch(P1)
{
case0xeb:
figure=2;
aim++;
break;
case0xdb:
figure=5;
aim++;
break;
case0xbb:
figure=8;
aim++;
break;
case0x7b:
figure=15;
aim=0;
break;
}
while(temp!
=0xfb)
{
P1=0xfb;
temp=P1;
}
}
}
P1=0xf7;
temp=P1;
if(temp!
=0xf7)
{
delay();
if(temp!
=0xf7)
{
switch(P1)
{
case0xe7:
figure=1;
aim++;
break;
case0xd7:
figure=4;
aim++;
break;
case0xb7:
figure=7;
aim++;
break;
case0x77:
figure=0;
aim++;
break;
}
while(temp!
=0xf7)
{
P1=0xf7;
temp=P1;
}
}
}
}
voiddisplay()
{
if(figure==15)
{
figure1=0;
figure4=0;
answer1=0;
figure=0;
aim=0;
aim2=0;
aim1=0;
}
if(aim2==0)
{
if(aim1==0)
{
cun[0]=figure1/10;
cun[1]=figure1%10;
cun[2]=10;
cun[3]=10;
if(aim==2)
{
figure1=10*figure1+figure;
aim=0;
aim2=1;
}
if(aim==1)
{
if(figure>=0&&figure<=9)
{
figure1=figure;
}
}
cun[0]=figure1/10;
cun[1]=figure1%10;
cun[2]=10;
cun[3]=10;
}
}
if(aim2==0)
{
if(aim1==1)
{
if(aim==2)
{
figure4=10*figure4+figure;
aim=0;
aim2=1;
}
if(aim==1)
{
if(figure>=0&&figure<=9)
{
figure4=figure;
}
}
cun[0]=figure4/10;
cun[1]=figure4%10;
cun[2]=10;
cun[3]=10;
}
}
Bit++;
if(Bit>=4)Bit=0;
P2|=0xf0;
P0=shuma[cun[Bit]];
if(figure==14)
{
answer1=1;
}
if(figure==13)
{
P0=shuma[chu[Bit]];
answer=4;
}
if(figure==12)
{
P0=shuma[cheng[Bit]];
answer=3;
}
if(figure==11)
{
P0=shuma[jian[Bit]];
answer=2;
}
if(figure==10)
{
P0=shuma[jia[Bit]];
answer=1;
}
switch(Bit)
{
case0:
P24=0;break;
case1:
P25=0;break;
case2:
P26=0;break;
case3:
P27=0;break;
}
}
voidchuli()
{
if(answer1==1)
{
if(answer==1)
{
figure5=figure4+figure1;
answer=0;
aim=0;
aim1=2;
cun[0]=figure5/1000;
cun[1]=(figure5%1000)/100;
cun[2]=(figure5%100)/10;;
cun[3]=figure5%10;
}
if(answer==2)
{
figure5=figure1-figure4;
answer=0;
aim=0;
aim1=2;
if(figure5>0)
{
cun[0]=figure5/1000;
cun[1]=(figure5%1000)/100;
cun[2]=(figure5%100)/10;;
cun[3]=figure5%10;
}
if(figure5<0)
{
figure5=-figure5;
cun[0]=11;
}
cun[1]=figure5/10;
cun[2]=figure5%10;
cun[3]=10;
}
if(answer==3)
{
figure5=figure1*figure4;
answer=0;
aim=0;
aim1=2;
cun[0]=figure5/1000;
cun[1]=(figure5%1000)/100;
cun[2]=(figure5%100)/10;;
cun[3]=figure5%10;
}
if(answer==4)
{
figure5=figure1/figure4;
answer=0;
aim=0;
aim1=2;
cun[0]=figure5/1000;
cun[1]=(figure5%1000)/100;
cun[2]=(figure5%100)/10;;
cun[3]=figure5%10;
}
}
}
voidmain()
{
TMOD|=0x01;
TH0=0xf8;
TL0=0xcd;
EA=1;
ET0=1;
TR0=1;
while
(1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 系统 设计 报告 参考 模板 11