单片机实训讲解Word文档格式.docx
- 文档编号:16174746
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:50
- 大小:3.39MB
单片机实训讲解Word文档格式.docx
《单片机实训讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机实训讲解Word文档格式.docx(50页珍藏版)》请在冰豆网上搜索。
(4)掌握使用C语言进行单片机系统开发的流程。
(5)熟悉时钟芯片DS1302与液晶屏LCD1602的使用方法。
充分运用所学的51单片机知识、C语言知识,结合参考资料以及搜索引擎,独立完成基于STC89C52单片机的数字电子钟设计。
最终的电路能够通过单片机读取时钟芯片的数据,并将时钟信息显示在液晶屏上。
《单片机原理与接口技术》实践考核
课程设计说明书
项目名称:
数字温度计与数字电子钟设计
专业:
网络工程
学号:
20150300124
姓名:
王晓欣
任课教师:
林敬学
2017年7月2日
设计要求
考核
目的
掌握51单片机基本知识,掌握STC89C52单片机芯片的使用,掌握单片机系统开发软件keil和proteus的使用,熟悉51单片机原理图和相关C语言程序的设计。
项目
要求
1、项目一
●运用所学的51单片机知识和C语言知识,独立完成基于STC89C52单片机的数字温度计设计。
。
●要求单片机能够读取温度传感器的数据,并将温度信息显示在七段数码管上。
2、项目二
●运用所学的51单片机知识和C语言知识,独立完成基于STC89C52单片机的数字电子钟设计。
●要求单片机能够读取时钟芯片的数据,并将时钟信息显示在液晶屏上。
注:
设计内容互相抄袭或从网络完全抄袭者成绩为零分
单片机原理与接口技术课程设计说明书
第一章绪论
1.151系列单片机简介
51单片机是对所有兼容Intel8031指令系统的单片机的统称。
1、51单片机的起源:
该系列单片机的始祖是Intel的8031单片机。
2、51单片机的发展历史:
(1)单片机的初级阶段:
1976年Intel公司推出了8位的MCS-48系列的单片机。
(2)单片机的发展阶段:
80年代初,Intel公司推出了8位的MCS-51系列的单片机
(3)高性能单片机发展阶段:
随着控制领域对单片机性能要求的增加,出现了16位的单片机,而且芯片内部也增加了其他的性能。
3、特点:
单片机具有集成度高、体积小、功耗低、系列齐全、功能扩展容易、使用灵活方便、抗干扰能力强、性能可靠、价格低廉等特点。
1.2STC89C52芯片简介
1、STC89C52的起源:
STC89C52是宏晶公司生产的一种低功耗、高性能CMOS8位微控制器。
2、STC89C52的特点:
(1)STC89C52与MCS-51系列的单片机在指令系统和引脚上完全兼容;
(2)全静态工作,工作范围:
0Hz~24MHz;
(3)三级程序存储器加密;
(4)32位双向输入输出线;
(6)两个十六位定时器/计数器
(7)五个中断源,两级中断优先级;
(8)一个全双工的异步串行口;
(9)间歇和掉电两种工作方式。
3、STC89C52的优点:
低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间长。
4、STC89C52的封装种类:
直插封装、贴片封装。
5、本课程用的封装:
直插封装。
第二章考核项目及要求
(6)掌握proteus工具的使用方法。
(7)掌握单片机开发环境keil的使用方法。
(8)掌握MCS-51单片机重要引脚的功能。
(9)熟悉使用C语言进行单片机系统开发的流程。
(10)熟悉温度传感器DS18B20与七段数码管的使用方法。
充分运用所学的MCS-51单片机知识、C语言知识,结合参考资料以及搜索引擎,独立完成基于MCS-51单片机的数字温度计设计。
(9)掌握使用C语言进行单片机系统开发的流程。
(10)熟悉时钟芯片DS1302与液晶屏LCD1602的使用方法
充分运用所学的MCS-51单片机知识、C语言知识,结合参考资料以及搜索引擎,独立完成基于MCS-51单片机的数字电子钟设计。
数字电子钟若实现整点报时与闹钟功能,总分给予加分。
第三章考核详细设计
3.1涉及工具介绍
(1)keil
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统Keil。
提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统[1]。
(2)Proteus
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前比较好的仿真单片机及外围器件的工具。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台[2]。
(3)STC-ISP
STC-ISP是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。
3.2所用元器件介绍
(1)STC89C52RC:
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案[3]。
(2)DS18B20:
DS18B20,常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
(3)DS1302:
DS1302是DALLAS公司推出的一款涓流充电时钟芯片,拥有计时功能[4]。
可以用单片机往DS1302里面写入时间进行时间设置,也可以用单片机从DS1302中读取时间,读出来的时间也可以放在液晶上显示。
(4)LCD1602:
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
能够同时显示16x02即32个字符。
(5)数码管:
led数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示。
本次实验我们使用的是6位数码管。
(6)发光二极管:
发光二极管简称为LED。
当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。
在电路及仪器中作为指示灯,或者组成文字或数字显示。
(7)USB下载工具,主要给整个作品供电以及对51芯片拷入程序。
(8)74HC245
总线收发器(bustransceiver),典型的CMOS型三态缓冲门电路,八路信号收发器,。
由于单片机或CPU的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。
主要应用于大屏显示,以及其它的消费类电子产品中增加驱动
(9)ULN2003
高耐压、大电流复合晶体管IC-ULN2003,ULN2003是高耐压、大电流复合晶体管阵列,由七个硅NPN复合晶体管组成。
3.3keil软件安装
(1)找到安装程序,点击
(2)弹出安装的欢迎界面,点击next,再点击“Next”按钮,弹出“LicenseAgreement”对话框,如下图所示。
这里显示的是安装许可协议,需要在“IagreetoallthetermsoftheprecedingLicenseAgreement”打勾。
点击next。
(3)弹出“FolderSelection”对话框,如下图所示。
这里可以设置安装路径,默认安装路径在“C:
\Keil”文件夹下。
点击“Browse...”按钮,可以修改安装路径。
修改完路径点击next。
(4)弹出“CustomerInformation”对话框,如下图所示。
输入用户名、公司名称以及E-mail地址即可。
(5)就会自动安装软件,安装完成后,弹出来安装完成对话框,如下图所示,并且出现几个选项,大家刚开始把这几个选项的对号全部去掉就可以了。
点击finish。
(6)从这步开始进行破解。
首先右键选择桌面的已经安装好后的keil图标,用管理员身份运行。
打开安装好的keil4后,点击file,点击licencemanagement。
(7)点击确认
(8)进入到这个界面后,把CID复制下来。
(9)打开注册机,就是一开始下载的另一个图标,双击即可。
将上一步复制的CID粘贴到注册机的CID框,选择好右边target为C51以及下面的框。
(10)选择好后,点击下面的generate,生成一串注册码,把它复制下来。
(12)再打开keil,将上一步复制到的注册码粘贴到下面的LIC框内。
然后点击ADDLIC。
(13)当发现successfuly就完成了。
3.4proteus软件安装
(1)点击安装程序
(2)点击next,出现下图,下一步点击yes
(3)这里选择“UsealocallyinstalledLicenceKey”。
点“Next”。
(4)点击next出现下图,点击红框处“BrowseForKeyFile”
(5)找到一开始解压的文件夹。
找到“破解”这个文件夹。
双击打开,里面只会看到一个文件:
LICENCE.lxk。
双击该文件。
然后应该出现下图画面。
此时点击“Install”。
(6)然后就会出现下图画面。
这里需要注意的是,不要按回车,应该点击“是”。
(7)点击close,出现下图,点击next
(8)下图选择安装路径(可以默认不改),要记住安装路径。
然后点击next
(9)一直点击next,然后程序就会开始安装,出现下图不要点击finish。
(10)安装完成之后,就是破解了。
回到你开始解压出来的文件夹,找到破解这个文件夹,打开后看到有ProteusPro7.8SP2破解这个文件。
(11)打开破解程序后,如果你前面没有修改安装路径的话,点升级就行了。
如果改了,那么这里就把路径改为安装路径。
然后就破解成功了。
关闭破解程序,可以打开proteus了。
(12)最后是关于汉化,把“汉化”文件夹里的文件放到proteus安装路径里的bin文件夹里面粘贴并替换掉原有的两个文件。
3.5绘制流水灯原理图
这个流水灯原理图如图,使用了七个发光二极管,在电路中发光二极管占用单片机P0端口,通过总图可以看出七个发光二极管分别占有单片机的P0.0~P0.7端口。
流水灯局部图如下图:
七个330Ω的电阻主要是防止电流过大,为了保证发光二极管能够正常工作,因此在每个发光二极管前面都加一个330Ω的电阻。
发光二极管是分正负极的,必须保证正向导通工作电流在1~20mA才能保证发光二极管能够正常工作。
3.6流水灯程序设计
用P0口的七个端口分别控制七个发光二极管
1、先编写对P0进行初始化的函数
unsignedcharledsigle=0;
//流水灯选择位
voidledscan()
{
P0=ledsigle;
}
流水等的主要功能由ledflow()函数控制,通过移位来进行位选
voidledflow()
staticunsignedcharj=0;
ledsigle=0x01<
<
j;
if(++j>
7)j=0;
2、控制发光二极管依次点亮,需要有个时间间隔,为了能够明显的观察到我们选择200ms的间隔流水点亮发光二极管,
(1)T0中断服务函数,完成LED扫描
voidzhongfuanfuwu()interrupt1
staticunsignedinttime200ms=0;
TH0=0xfc;
//重新加载重载值
TL0=0x67;
if(++time200ms>
=200)//定时200ms
{
time200ms=0;
flag200ms=1;
}
ledscan();
//LED扫描显示
(2)在主函数调用下列语句就可完成流水灯刷新
while
(1)
{
if(flag200ms)
{
flag200ms=0;
ledflow();
//刷新流水灯
}
3.7绘制数字温度计原理图
数字温度计主要通过单片机将温度传感器的测得环境的数值通过单片机端口传递给数码管。
DQ与单片机的P3.3端口进行数据传输。
使用的小元器件主要是DS1820、ULN2003.
1、ULN2003与单片机连接:
P1.0——————1B
P1.1——————2B
P1.2——————3B
P1.3——————4B
P1.4——————5B
P1.5——————6B
P1.6——————7B
2、DS1820:
VCC——————接电源;
GND——————接地;
DQ——————接P3.3
数码管的段选通过和发光二极管共用P0的七个端口来实现每一位的段选,位选通过单片机的P1的P1.0~P1.5来控制。
3、ULN2003与数码管的连接:
1C—————6引脚;
2C—————5引脚;
3C—————4引脚;
4C—————3引脚;
5C—————2引脚;
6C—————1引脚;
7C—————七个发光二极管接地。
3.8数字温度计程序设计
数字温度计程序流程:
(1)读取温度值
(2)值转化(3)传递给数码管显示
1、从DS18B20读取一个字节,返回值-读到的字节
unsignedcharRead18B20()
unsignedchardat;
unsignedcharmask;
EA=0;
//禁止总中断
for(mask=0x01;
mask!
=0;
mask<
=1)//低位在先,依次采集8个bit
IO_18B20=0;
//产生2us低电平脉冲
_nop_();
IO_18B20=1;
//结束低电平脉冲,等待18B20输出数据
_nop_();
//延时2us
if(!
IO_18B20)//读取通信引脚上的值
dat&
=~mask;
else
dat|=mask;
DelayX10us(6);
//再延时60us
EA=1;
//重新使能总中断
returndat;
2、
(1)启动一次18B20温度转换,返回值-表示是否启动成功*/
bitStart18B20()
bitACK;
ACK=Get18B20Ack();
//执行总线复位,并获取18B20应答
if(ACK==0)//如18B20正确应答,则启动一次转换
Write18B20(0xCC);
//跳过ROM操作
Write18B20(0x44);
//启动一次温度转换
return~ACK;
//ACK==0表示操作成功,所以返回值对其取反
读取DS18B20转换的温度值,返回值-表示是否读取成功
bitGet18B20Temp(signedint*temp)
unsignedcharLSB,HSB;
//16bit温度值的低字节和高字节
ACK=Get18B20Ack();
//执行总线复位,并获取18B20应答
if(ACK==0)//如18B20正确应答,则读取温度值
//跳过ROM操作
Write18B20(0xBE);
//发送读命令
LSB=Read18B20();
//读温度值的低字节
MSB=Read18B20();
//读温度值的高字节
*temp=((int)HSB<
8)+LSB;
//合成为16bit整型数
Start18B20();
//ACK==0表示操作应答,所以返回值为其取反值
3.9绘制数字电子钟原理图
电子时钟的主要功能相当于表的功能,当然也能初始化。
主要通过DS1302来向单片机写入时间或者读取当前时间数据,再将时间的有关信息向液晶显示器传递,达到我们能够看到的电子时钟功能。
主要用到的小元件是DS1302和液晶显示器。
DS1302各个引脚的连线
1——————接地
2——————接电容
3——————接电容
5——————单片机P3.6
6——————单片机P3.4
7——————单片机P3.5
液晶显示器与单片机的引脚连线:
1—————接地;
2—————接电源;
4—————接P3.0;
5—————接P3.1;
6—————接P3.2;
7—————接P0.0;
8—————接P0.1;
9—————接P0.2;
10—————接P0.3;
11—————接P0.4;
12—————接P0.5;
13—————接P0.6;
14—————接P0.7;
3.10数字电子钟程序设计
数字电子时钟程序流程:
(1)用单片机将时间写入或者读取;
(2)将时间信息在通过单片机显示到液晶显示器上
1、DS1302初始化,如发生掉电则重新设置初始时间
voidInitDS1302()
unsignedcharcodeInitTime[]={//2017年05月26日星期二08:
30:
00
0x00,0x30,0x08,0x26,0x05,0x05,0x17
};
DS1302_CE=0;
//初始化DS1302通信引脚
DS1302_CK=0;
dat=ReadDS1302Single(0);
//读取秒寄存器
if((dat&
0x80)!
=0)//由秒寄存器最高位CH的值判断DS1302是否已停止
WriteDS1302Single(7,0x00);
//撤销写保护以允许写入数据
WriteDS1302Burst(InitTime);
//设置DS1302为默认的初始时间
2、将时间显示到液晶上
voidRefreshLCD1602()
staticunsignedcharpsec=0xAA;
//秒备份,初值AA确保首次读取时间后会刷新显示
unsignedchartime[8];
//当前时间数组
unsignedchars[12];
//字符串转换缓冲区
ReadDS1302Burst(time);
//读取DS1302当前时间
if(psec!
=time[0])//检测到时间有变化时刷新显示
s[0]='
2'
;
//添加年份的高2位:
20
s[1]='
0'
s[2]=(time[6]>
>
4)+'
//“年”高位数字转换为ASCII码
s[3]=(time[6]&
0x0F)+'
//“年”低位数字转换为ASCII码
s[4]='
-'
//添加日期分隔符
s[5]=(time[4]>
//“月”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 讲解
![提示](https://static.bdocx.com/images/bang_tan.gif)