单片机实习报告.docx
《单片机实习报告.docx》由会员分享,可在线阅读,更多相关《单片机实习报告.docx(17页珍藏版)》请在冰豆网上搜索。
![单片机实习报告.docx](https://file1.bdocx.com/fileroot1/2023-2/2/5747c2e7-11a7-48b6-b5ad-4ecf87b867bb/5747c2e7-11a7-48b6-b5ad-4ecf87b867bb1.gif)
单片机实习报告
电路综合实习报告
学院:
专业:
姓名:
学号:
指导老师:
一.实习要求
1.1实习设计要求与目的
了解并初步掌握单片机及其开发流程,综合模拟电子技术和数字电子技术,掌握以单片机为核心的电子系统体系。
通过实习掌握必要的单片机开发能力,熟悉开发环境,熟练焊接技巧,培养动手能力,锻炼自主意识。
1.2实习环境
开发环境:
Keil/wave6000(伟福6000)
单片机类型:
Atmel89s52
开发工具:
万用表、5V稳压电源、电子元件、电烙铁等。
1.3实习内容
独立焊接并利用89S52的小系统板,使用C语言设计一个可以在单片机中显示特定字符,如姓名学号的程序。
将其在LCM1602中显示。
可以利用该板另行扩展功能,如PS/2键盘接口,A/D,D/A转换等。
1.4元器件清单【尾附一】
二.芯片资料
2.189S52主要特性介绍:
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
在芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89s52为众多嵌入式控制应用系统提供高灵活‘超有效的解决方案。
AT89s52具有以下标准功能:
8K字节Flash,256字节RAM,32位IO口线,看门狗定时器,2个数据指针,三个16位定时器计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM定时器\计数器,串口,中断继续工作。
掉电保护方式下,RAM内容被保存,震荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
各引脚详细功能介绍见尾附二
2.2LCD1602应用简介
模块内部自带字符发生存储器(CGROM),字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是(41H),显示时模块把代码41H发给液晶模块,我们就能在液晶上看到字母“A”。
1602液晶模块内部的控制器共有11条控制指令,丰富的指令可以完成液晶的时序控制、工作方式式设置和数据显示等。
该液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应
用。
三.电路、PCB板设计
本次实习采用PCB板已根据实际情况由宋老师帮助设计,从而除去了学生们独立设计PCB板的障碍。
使得大家能够更加集中的将精力放在单片机的总体设计部分。
其中DBNZ1104和DBNZ104的布局如下:
四.主要系统单元设计
4.1A89S52外围电路设计
P3.1口接LED状态显示电路;晶振采用12MHz,接两个30pF的电容,起到稳定振荡频率快速起振的作用。
同时晶振和电容安装在离单片机的时钟引脚比较近的文职,以减少寄生电容,更好的保证了振荡器稳定可靠的工作。
4.2电源插座、复位电路
复位电路采用手动复位,节约成本。
其中RST引脚是复位信号输入端,在所示电路中,通电瞬间,C15的充电过程中,RST段出现一定宽度的正脉冲,只要该脉冲保持10ms以上,就能使单片机可靠的上电复位。
4.3LCD接口电路
采用的LCM1602液晶模块是标准16针插座,关于LCM1602的详细资料见附三。
4.4并口通讯电路
PC并口是25针,在下载程序到单片机时必须采用合理的ISP下载线,JTAG接口解决了这个问题。
五.实习总结
5.1实习中的收获和感受
单片机时计算机技术,大规模集成电路技术和控制技术的综合产物。
现在,单片机早已成为人类生活中不可或缺的助手。
作为本专业的核心课程之一,我意识到,要学好单片机,不仅要在理论上弄清其工作原理和工作方式,更要在实践中加强自己的动手能力,培养软硬件结合的意识,以全面的掌握单片机开发技术。
本次电路综合实习意在以单片机开发为核心,培养锻炼同学们自主设计电子系统的能力,综合模电和数电基础,整合电路基础、信号与系统知识,构建完整的电子系统开发知识体系。
单片机应用系统设计不断要求熟练掌握单片机程序语言和编程技术,而且还要具备扎实的单片机硬件方面的理路和实践知识。
一开始我们在PCB板的焊接上存在盲区,因为毕竟PCB板不是自己动手设计,但是通过熟读PCB板的原理图,配合有关资料,我们逐渐了解了各个系统单元的功能和原理,更好的在实践中学习了单片机的有关知识,也在其后的焊接过程中,在动手实践的过程中养成了独立完成自主思考的良好习惯。
在用C语言编写软件时,由于一开始不熟悉keil的开发环境,在编写过程中浪费了很多时间,但是,也正是因为如此,我们更好的学会了使用keil和有关51单片机的下载软件,更直观的学到了软硬件结合的技巧和过程。
5.2实习中遇到的问题和教训
虽然在实习中有很多收获,但是这过程并不是一路顺风顺水的,在实习中我们也有过非常大的挑战,犯过很多错误,也正是因为这些错误和纠正错误的过程,我们才能不断进步。
第一,在焊接过程中,由于没有吃透电路图的设计,对某些原件的焊接顺序等技巧没有合理掌握,造成焊错焊反的结果,这是十分值得警惕注意的,在后来的过程中,由于需要添加别的原件以及通过并口下载线烧录程序,某些之前没有仔细布局好的地方成了很大的障碍。
第二,由于使用C51编写程序还不熟练,在复习C语言的过程中浪费了很多时间,其直接结果就是只完成了最基本的液晶模块,其他模块因为时间仓促,修改不善只能忍痛放弃。
第三,在调试过程中,由于对KEIL环境的陌生,不得不请教老师和周围同学,有时限于软件知识的缺乏,只能手动从源程序中寻找BUG,没有合理运用软件的辅助,这使得自己在调试过程中总是比别人慢半拍,这个教训值得谨记。
第四,虽然老师帮我们解决了自己独立设计PCB板的现实障碍,但是在设计PCB板,学习使用ProtelDXP方面,其实我们应该责无旁贷的通过自主学习培养技巧,掌握技能,在这方面,我一开始存在误区,以至于在后来软硬件结合的过程中有了很多盲区。
这些经验教训一方面让我认识到了所学知识的局限,一方面也加深了我对电子电路知识的理解。
可以说,正是因为有了这些经验教训,我才能在这其中真正学到东西。
5.3实习的心得体会
在开发过程中,通过上网搜索资料,查阅课本及课外书籍,我对电路各部分的工作原理加深了了解。
学会了仿真环境KEIL的使用方法,也学会了焊接PCB板的必要技巧。
这是个磨练意志的过程,但是更重要的是通过不断的常识,不断的校核,不断的修改,最后完成一个合理的设计过程,需要的是细心和耐心,在很大程度上培养了我拼搏的工作精神,使我受益匪浅,更加明确了自己专业的方向。
实习时培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,通过电路综合实习我们能够比较系统的了解理论知识,把理论和实践相结合,并且应用到生活当中。
在设计过程中我们遇到的问题,在努力寻求最佳路径解决问题是,无形中提高了我们的动手动脑能力,并且同学之间还能相互探讨问题,研究解决方案,增进大家的团队意识。
实习时短暂的,影响却是长远的。
本次电路综合实习,我们对本专业的研究内容和研究方法有了比较深入的了解,也相信通过这种实践活动,能够培养我们独立自主的意识,为了以后电子工程设计打下坚实的基础。
六.源程序
#include
#defineucharunsignedchar//宏定义
#defineuintunsignedint
sbitRS=P2^0;//对各个端口单独定义
sbitRW=P2^1;
sbitE=P2^2;
uchari,j;
ucharcodetable1[]="Guochao";//显示的字符
ucharcodetable2[]="20081001150";
voiddelay(uchar);//定义各个子函数类型
voidwrite_comd(uchar);
voidwrite_data(uchar);
voidmain()//主函数
{
delay(100);//延时以等待液晶屏响应
write_comd(0x01);//清屏
write_comd(0x38);//设定液晶屏为双行8位显示
write_comd(0x0f);//显示打开;有光标;光标闪烁
write_comd(0x06);//光标左移;所有文字不左移
//write_comd(0X3C);//与0x38作用类似,双行4位显示
write_comd(0x80);//设置第一行地址指针
for(i=0;i<8;i++)//第一行显示姓名
{
write_data(table1[i]);
delay(1000);//延时
}
write_comd(0Xc0);//设置第二行地址指针
for(j=0;j<11;j++)//第二行显示学号
{
write_data(table2[j]);
delay(100);
}
while
(1);//使指针保持在此处
}
voiddelay(ucharz)//延时子程序
{
uchari,j;
for(j=z;j>0;j--)
for(i=150;i>0;i--);
}
voidwrite_comd(ucharcom)//写命令子程序
{
RS=0;
P1=com;
RW=0;
delay(25);
E=1;
delay(25);
E=0;//设置P2.2的下降沿以写入
}
voidwrite_data(uchardate)
{
RS=1;
P1=date;
RW=0;
delay(25);
E=1;
delay(25);
E=0;//P2.2下降沿有效
}
【附一】元件清单:
【附二】AT89S52各引脚详细功能介绍:
【附三】
LCD1602各引脚说明
第1脚:
VSS为地电源
第2脚:
VDD接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源
时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一
个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平选择数据寄存器、低电平选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时(00)可以写入指令或者显示地址;
当RS为低电平RW为高电平时(01)可以读入忙信号;
当RS为高电平RW为低电平时(10)可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
背光阳极和背光阴极。
指令1:
清显示指令码01H,光标复位到地址00H位置;
指令2:
光标复位指令码02H,光标返回到地址00H位置;
指令3:
光标和显示模式设置
I/D位→光标移动方向,高电平右移,低电平左移;
S位→屏幕上所有文字是否左移或者右移,高电平有效,低电平无效;
指令4:
显示开关控制
D位→控制整体显示的开与关,高电平表示开显示,低电平表示关显示;
C位→控制光标的开与关,高电平表示有光标,低电平表示无光标;
B位→控制光标是否闪烁,高电平闪烁,低电平不闪烁;
指令5:
光标或显示移位
S/C位→高电平时移动显示的文字,低电平时移动光标
指令6:
功能命令设置
DL位---高电平时为4位数据总线,低电平时为8位总线;
N—位低电平时为单行显示,高电平时为双行显示;
F—位低电平时显示5x7的点阵字符,高电平时为5x10的点阵字符;
指令7:
字符发生器RAM地址设置
指令8:
DDRAM地址设置
指令9:
读忙信号和光标地址
BF位→为忙标志位,高电平表示忙,此时模块不能接收命令或者数据
指令10:
写数据
指令11:
读数据