模拟计算器设计实习报告.docx
- 文档编号:29252996
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:32
- 大小:1.03MB
模拟计算器设计实习报告.docx
《模拟计算器设计实习报告.docx》由会员分享,可在线阅读,更多相关《模拟计算器设计实习报告.docx(32页珍藏版)》请在冰豆网上搜索。
模拟计算器设计实习报告
西安邮电大学
专业课程设计报告书
系部名称:
学生姓名:
专业名称:
班级:
实习时间:
2012 年 12 月 10 日至 2012 年 6 月 21 日
1
实验报告
内容 1:
液晶模块的驱动电路设计(16*2)
【一】 实验目的
1. 熟练运用 protel99SE 软件。
1. 初步了解各种型号的液晶驱动电路的设计思路,运用 protel99SE 设计驱动原理图原理
图,并画出合理的封装 PCB 电路板。
【二】实验原理
用 2 片 164 扩展行,2 片 595 扩展列,用 16 个三极管进行 led 点阵的功率驱动。
1、164:
8 位串入,并出移位寄存器;时钟(CP)每次由低变高时,数据右移一位,输入
到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一
个建立时间的长度;主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同
时非同步地清除寄存器,强制所有的输出为低电平。
2、595:
74595 和 74164 功能相仿,都是 8 位串行输入转并行输出移位寄存器。
74164 的驱
动电流(25mA)比 74595(35mA)的要小,14 脚封装,体积也小一些;74595 的主要优点是具有
数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。
这在串行速度慢的场合
很有用处,数码管没有闪烁感;与 164 只有数据清零端相比,595 还多有输出端时能/禁止
控制端,可以使输出为高阻态。
3、三极管:
三极管放大电流,加大扫描强度,提高点阵屏亮度。
【三】实验步骤简述
1、运用 protel99SE 设计驱动原理图。
2、对原理图进行检查错误。
3、画 PCB 库元件
4、封装 PCB 电路板。
5、生成 PCB 并且布线。
【四】设计中遇到的问题及解决方法
(1)我们在画原理图时,因为之前有使用过 protel99SE 软件,还算比较顺利。
(2)在生成 PCB 的时候,总是报告我们有很多错,在读懂这些错后,我们发现我们所
有的错都是没有对各原器件进行封装,我们在库里也找不到那些元器件,我们就自
己画库并进行添加,终于没有错了。
(3)我们生成 PCB 后又出现了无法布线的错误,在经过老师的指导及自己的琢磨之后,
调整了芯片的摆放位置之后,我们才布线成功,才顺利的完成此次实习。
2
内容 2:
液晶显示应用系统开发
【一】 项目需求分析
题目四:
模拟计算器设计
基本要求分析和主要功能:
1.使用矩阵键盘加 12864 液晶,实现基本的计算器功能;能实现加减乘除运算,浮点运算精确
到小数点后 2 位.
所需设备:
单片机开发板,1602 或 12864 液晶;
【二】实施方案及本人承担的工作
项目名:
模拟计算器设计,是利用单片机开发板+12864 液晶模块实现。
在此模块中,我和同伴一块写程序,改程序,画图,制作 PCB,我们配合默契,有条
不紊的完成了此次试验。
【三】程序框图
首先,有一个将初始密码存入 flash 中的程序段)
其次的程序流程如下图所示:
开始
是特殊功能
进行特殊功能计算
按键选择功能
不是
特殊
功能
进行正常加减乘除运算
(可进行回删)
(sin, cos, tan, sinh,
cosh, log)
输出结果
结束
3
【五】实验结果
此程序最终在我们自己的开发板上成功的实现了老师所要求的全部功能,除此之外,
我们还添加了特殊功能,可以输入带有小数点的数字,能够回删,能够计算 sin, cos, tan,
sinh, cosh, log 等功能,并能够快速准确的计算出将结果。
【六】设计中遇到的问题及解决方法
(1)首先,在刚开始进行此次实习内容的时候,由于刚开始对矩阵键盘复用的不熟悉导致
我们走了很多弯路,也改了很多次,所以在同学的建议下我们采用了开发板最下面一行的
键盘,才避免了复用的问题。
(2)在完成了各个小程序块的编写之后,我们把它进行了整合,可是但我们第一次下载时
却们又出现我们想要的结果,液晶上不显示任何东西,我们检查了很多遍,最后才发现是
液晶初始化出现了问题,导致液晶没有正确的初始化,就显示不了我们想要的结果,在改
正之后我们的程序终于有的能够计算能够显示,但还是有很多的不足,再后来老师的建议
下,我们又加了一个回删的功能,才使得程序变得完整。
【七】总结
由于这是我第一次把按键控制在液晶上显示字符及数字,所以在编程过程中出现了一
些问题,但最终还是在自己的努力,老师的指导和同学的帮助之下完成了此次试验。
通过
这次实验,我对按键控制单元和液晶显示单元有了进一步的认识,知道如何显示一个字符
串,如何在指定位置进行显示,也更加清楚得了解到了单片机的各个控制单元,以及液晶
的内部原理。
与此同时,我也领悟到了,要想做好一件事,更加完美的,出色的完成课程设计,不
仅要对各自的原理知道的非常清楚外,还要学会虚心学习,虚心求教。
而且,团队合作也
是一个很关键的因素。
附录:
主要源程序以及电路原理图或 PCB 版图
/********算法部分********/
void xianshi (float s,uchar a1,uchar b1)
{uchar k,pd=1,su,aa,bb;
long int j,s1,s2;
char i;
aa=a1;bb=b1;k=0;
if(s<0.0){s=s*(-1);print(aa,bb,"-");}
s1=s*1000;
s1=s1/1000;
if(s<1.0){print(aa,bb,"0");
aa++;}else{
while(pd==1)
{
j=cifang(k);
su=s1/j%10;
4
if(su==0){ if(s } k++; } k=k-2; for(i=k;i>-1;i--) { j=cifang(i); su=s1/j%10; su++;shux1(su,aa,bb); aa++; } } print(aa,bb,"."); aa++; s1=s*1000; s1=s1/100; s1=s1%10+1; shux1(s1,aa,bb); aa++; s1=s*1000; s1=s1/10; s1=s1%10+1; shux1(s1,aa,bb); } void xianshi2 (float s,uchar a1,uchar b1,uchar d) {uchar k,pd=1,su,aa,bb; long int j,s1,s2,s3; char i; aa=a1;bb=b1;k=0; if(s<0.0){s=s*(-1);print(aa,bb,"-");} s1=s*1000; s1=s1/1000; if(s<1.0){print(aa,bb,"0"); aa++;}else{ while(pd==1) { j=cifang(k); su=s1/j%10; if(su==0){ if(s 5 } k++; } k=k-2; for(i=k;i>-1;i--) { j=cifang(i); su=s1/j%10; su++; shux1(su,aa,bb); aa++; } } if(d==1){ print(aa,bb,"."); aa++; s1=s*10000; s1=s1/1000; s1=s1%10+1; s2=s*10000; s2=s2/100; s2=s2%10+1; s3=s*10000; s3=s3/10; s3=s3%10+1; if((s1! =1)||(s2! =1)){ shux1(s1,aa,bb); aa++;} if(s2! =1){ shux1(s2,aa,bb); aa++; } if(s3! =1){ // shux1(s3,aa,bb); } 6 } } /******************特殊功能部分*******************/ void mas(float s) {uchar tmp1; float a; clr(); a=s; xianshi(a,0,1); print(0,2,"sin cos log"); print(0,3,"sinh exp tan"); tmp1=0; while(tmp1==0){ tmp1 = Keyscan(); while(Keyscan()>0); if(tmp1>8){tmp1=0;} } shux1(tmp1,0,4); switch(tmp1) { case 1: {a=cos(s);}break;//对应显示"cos" case 2: {a=sin(s);}break;//对应显示"sin" case 3: {a=log(s);}break;//对应显示"log" case 4: {a=sinh(s);}break;//对应显示"sinh" case 5: {a=cosh(s);}break;//对应显示"cosh" case 6: {a=tan(s);}break;//对应显示"tan"} while(tmp1! =12){tmp1 = Keyscan(); while(Keyscan()>0);} clr(); print(0,1,"结果"); xianshi(a,0,2); tmp1=0; while(tmp1==0){tmp1 = Keyscan(); while(Keyscan()>0);} ql=1; } float shuzi(uchar a,uchar b) {uchar d=0,tmp=0,biao=1,b2=0,aa,bb; float l1=0,l=0,b21=0; biao=1;aa=a; while(biao==1){ tmp = Keyscan(); 7 while(Keyscan()>0); if(tmp<11&&tmp>0) { t=1; if(d==0) {l=tmp-1; l1=l1*10+l; //shux1(tmp,aa,b); aa++; xianshi2(l1,0,b,d);} if(d==1) { if(b2<3){ l=tmp-1; b21=cifang2(b2); l1=l1+l*b21; xianshi2(l1,0,b,d); //shux1(tmp,aa,b); aa++; b2++; } }} if(tmp==11){ //if(l1==0){print(a,b,"0");} if(d==0){ b2=1; print(aa,b,"."); aa++; d=1; }} if(tmp==12){biao=0;} if(tmp>14&&tmp<19) {biao=0; switch(tmp) { case 15: {fu=1;}break;//对应显示"+" case 16: {fu=2;}break;//对应显示"-" case 17: {fu=3;}break;//对应显示"*" case 18: {fu=4;}break;//对应显示"/" } } if(tmp==13){ql=1;m2=1;biao=0;} if(tmp==14) { if((t==1)&&(l1-l>=0)) { if(d==0) { l1=l1-l; 8 l1=l1*0.1; print(0,b,""); xianshi2(l1,0,b,d); aa--; } if(d==1) { l1=l1-l*b21; print(0,b,""); xianshi2(l1,0,b,d); b2--; aa--; } t=0;}}} return l1;} /**************主函数***********************/ void main () { uchar biao=1,f,tmp; floatl=0,l2,l3; lcd_init();//设定液晶工作方式 m=2; while (1){ clr();m2=0; ql=0; t=1; l2=shuzi(0,1); if(m2==1){mas(l2);ql=1;} if(ql==0){ switch(fu) { case 1: {print(0,2,"+");}break;//对应显示"+" case 2: {print(0,2,"-");}break;//对应显示"-" case 3: {print(0,2,"*");}break;//对应显示"*" case 4: {print(0,2,"/");}break;//对应显示"/"} t=1; l=shuzi(0,3);} if(ql==0){ switch(fu) { case 1: l3=l+l2;break;//对应显示"+" case 2: {if(l2 l3=l-l2; } else{l3=l2-l;} };break;//对应显示"-" case 3: l3=l2*l;break;//对应显示"*" case 4: l3=l2/l;break;//对应显示"/"} 9 if(f==1){print(0,4,"= -"); f=0; }else{print(0,4,"=");} xianshi(l3,2,4);tmp=0; while(tmp==0){tmp = Keyscan(); while(Keyscan()>0);} } } } LCD1602 外部接口接法 L0 列液晶接法 10 L1 行液晶接法 HD44780 接法 11 HD44100 接法 总电路图 12 图 2 PCB 版图 13 学生姓名 班级/学号 承担任务实验室(单位) 所在部门 实施时间 2012 年 12 月 10 日 — 2012 年 12 月 21 日 具体内容 第一周 周一: 讲述课程设计安排,内容要求,布置和查阅资料。 周二~周三: 液晶模块的驱动电路设计-设计并绘制 PCB 图。 第二周 周一: 显示驱动电路系统设计讲解;同时要求同学分组选题,对 所选题目进行构思,阐述,写出报告。 周二-周四: 液晶显示应用系统开发。 周五: 完成设计报告,开始验收。 召开课程设计总结交流会,总 结交流学生在课程设计中具有特色的设计方案。 指导教师(师傅)姓名 刘琳 职务或职称 讲师 指导教师(师傅) 对学生的评价 学习态度 □ 认真 □ 一般 □ 不认真 学习纪律 □ 全勤 □ 偶尔缺勤 □ 经常缺勤 实践能力 □ 很强 □ 一般 □ 较差 指导教师(师傅)对学 生专业知识或社会实践 能力等情况的意见 指导教师(师傅)签字 年 月 日 14 学生姓名 班级/学号 进行时间 2012 年 12 月 10 日 — 2012 年 12 月 21 日 成绩鉴定 学习内容 (20 分) 与教学任务计划结合程度(10 分) 与专业培养结合程度(6 分) 其它(4 分) 接受单位 评价 (20 分) 实践能力(10 分) 学习态度(6 分) 学习纪律(4 分) 报告鉴定 (60 分) 报告内容与实践过程紧密结合(15 分) 报告内容与教学计划内容紧密结合(15 分) 报告质量(主题、结构、观点、逻辑、资料、字数 30 分) 评阅教师姓名 刘琳 职称 讲师 成绩 评语 评阅教师签字 15 年月日 16
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 计算器 设计 实习 报告