综合实验报告.docx
- 文档编号:10525394
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:49
- 大小:1.35MB
综合实验报告.docx
《综合实验报告.docx》由会员分享,可在线阅读,更多相关《综合实验报告.docx(49页珍藏版)》请在冰豆网上搜索。
综合实验报告
《单片机原理与接口技术》
综合实验报告
课题:
基于DS18B20的数字温度计、
基于DS1302的万年历制作、
数字音乐播放器
学院:
电子信息学院
专业:
电子信息工程
前言
万年历是采用数字电路实现对秒、分、时、日、日期、月、年的数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品。
市场上有许多电子钟的专用芯片如:
LM8363、LM8365等,但它们功能单一,电路连接复杂,不便于调试制作!
但是考虑到用单片机配合时钟芯片,制成功能任意的电子钟,而且可以做到硬件简单、成本低廉,但精确度不高。
所以本系统采用了以广泛使用的单片机STC89C52技术为核心,配合DALLAS公司的时钟芯片DS1302,再配以LCD液晶显示屏,按键调校,可实现简易万年历功能。
在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。
而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。
其缺点如下:
硬件电路复杂; 软件调试复杂; 制作成本高;本数字温度计设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55~125℃,最高分辨率可达0.0625℃。
DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的热点。
此外,以为每一个DS18B20有唯一的序列号,因此多个DS18B20可以存在在同一个单线总线上。
这允许在许多不同的地方放置温度灵敏器件。
随着人类社会的发展。
人们对于视听方面的享受提出了更高的要求。
而传统的音乐播放器大部分是机械型的,体积庞大,而且沉重,发音单调,且不悦耳,不能实现大批量的生产,所以很难满足当代人们的需求。
但是本文设计的数字音乐播放器是以单片机为核心元件的数字音乐播放器。
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。
因此该数字音乐播放器也就具有体积小,重量轻,能演奏各种各样的音乐,功能多,外观绚丽多彩,使用非常方便等诸多优点。
而且具有一定的开发价值。
第1章基于DS1302的万年历实验
中文摘要…………………………………………………….………5
1总体设计方案………………………………………………..……5
1.1系统功能…………………………………………….……….5
1.2实验主要元器件…………………………………….……….5
1.3总体设计框图…………………………………………...…...5
2系统硬件设计……………………………………………...….….5
2.1STC89C52单片机主控模块…………….…………..….…..5
2.1.1STC89C52的主要特性……………………………...5
2.1.2STC89C52的最小系统………………………...…....7
2.2DS1302时钟模块……….…………………………………..7
2.2.1DS1302的主要特性………………………...……….7
2.2.2DS1302硬件电路图………………………...........….8
2.3LCD1602液晶显示模块……………………………………8
2.3.1LCD1602的主要特性………………………...….….8
2.3.2LCD1602的硬件电路图…………………………….9
3系统软件设计……………………………………………………...9
3.1DS1302初始化程序……..…………………………….....…9
3.2DS1302写指令或数据子序…………..…..……………...…9
3.3LCD1602初始化程序………………………………………11
3.4LCD1602显示时间程序…………………………………....11
3.5独立键盘扫描程序……………..............................................13
3.6系统程序流程图………………………………………....…..20
4调试…………………………………………………………….......20
5结论………………………………………………………………...22
第2章数字温度计设计
中文摘要……………………………………………………………...22
1总体设计方案…………………………………………………..….22
1.1系统功能……………………………………………………..22
1.2实验主要元器件…………………………………..…………22
1.3总体设计框图…………………………………………...……22
2系统硬件设计……………………………………………………....22
2.1DS18B20数字温度计……….……………………………....22
2.1.1DS18B20的主要特性…………………...…………..22
2.1.2DS18B20硬件电路图………………………...……..23
3系统软件设计…………………………………………………….23
3.1DS18B20初始化程序……..……………………..………..23
3.2DS18B20读出温度与序列号子程序………………....…..24
3.3DS18B20读写数据子程序…………..…..……………..…24
3.4LCD1602显示温度子程序………………………………..25
3.5系统程序流程图………………………………………........26
4调试…………………………………………………………….....26
5结论……………………………………………………………….26
第3章音乐播放器设计
中文摘要…………………………………………………………….28
1实验原理……………...………………………………...………...28
2总体设计方案……………………………………………….…....28
2.1系统功能……………………………………………………28
2.2实验主要元器件…………………………………………....29
2.3总体设计框图…………………………………………....…29
3系统硬件设计…………………………………………………….29
3.1有源蜂鸣器…………….…………..………………………29
3.1.1有源蜂鸣器的主要特性…………………………....29
3.1.2有源蜂鸣器硬件电路图………………………...….29
4系统软件设计…………………………………………………….29
4.1定时器初始化子程序……………………………...............30
4.2音乐播放程序………………………...................................30
4.3独立键盘扫描程序……………............................................32
4.4系统程序流图………………………………………......…..34
5调试…………………………………………………………….....35
6结论……………………………………………………………….35
参考文献………………………………………………………….…37
第1章基于DS1302的万年历实验
摘要
DS1302在数码管上显示的数字电子钟,并能通过按键对其进行调时和校准以及实现年月日。
DS1302是一种高性能、低功耗、带RAM的实时时钟芯片,它能够对时,分,秒进行精确计时,它与单片机的接口使用同步串行通信,仅用3条线与之相连接,就可以实现STC-51单片机对其进行读写操作,把读出的时间数据送到液晶显示屏上显示。
程序运行时,液晶显示屏将从当前时间开始显示,通过独立按键可以分别对年月日时分秒和星期进行调整,调整后,时钟以新的时间为起点继续刷新显示。
关键词:
STC89C52、DS1302、LCD1602、独立按键
一、总体设计方案
1.1系统功能
在LCD1602液晶显示器上显示年月日时分秒和星期,可在任意时间通过按键对显示时间调校并可显示当前调试对象。
1.2实验主要原器件
STC89C52RC、LCD1602、DS1302、独立按键
1.3总体设计框图
图1.3.1基于DS1302的时钟系统结构
二、系统硬件设计
2.1STC89C52单片机主控模块
2.1.1STC89C52的主要特性
STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
主要特性如下:
1、兼容MCS51指令系统;
2、8kB可反复擦写(大于1000次)FlashROM;
3、32个双向I/O口;
4、256x8bit内部RAM;
5、3个16位可编程定时/计数器中断;
6、时钟频率0-24MHz;
7、2个串行中断,可编程UART串行通道;
8、2个外部中断源,共8个中断源;
9、2个读写中断口线,3级加密位;
10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;
11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
AT89C52为8位通用微处理器,采用工业标准的C51内核。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0端口(第39-32脚):
双向信号,多功能端口。
它是八位漏极开路的双向I/O端口;
在拓展外部总线时,分时作为低八位总线和八位双向数据总线。
P0端口可驱动八个LSTTL负载。
P0口漏极开路,即高阻状态,适用于输入/输出,可独立输入/输出低电平和高阻状态,若需要输出高电平,则需使用外部上拉电阻。
P1端口(第1-8脚):
双向信号,具有内部上拉电阻的8位准双向I/O端口,可驱动四个LSTTL负载。
P2端口(第21-28脚):
双向信号,多功能端口,具有内部上拉电路的8位准双向I/O端口;在拓展外部总线时,用作高八位地址总线,可驱动四个LSTTL负载。
P3端口(第10-17脚):
双向信号,多功能端口,具有内部上拉电路的8位准双向I/O端口,可驱动四个LSTTL负载;该端口的每一位都可以作为其他功能模块的输入/输出及控制引脚使用。
2.1.2STC89C52的最小系统
2.2DS1302时钟模块
2.2.1DS1302的主要特性
DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。
它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:
复位(RST)、I/O数据线、串行时钟(SCLK)。
时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。
DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。
2.2.2DS1302硬件电路图
2.3LCD1602液晶显示模块
2.3.1LCD1602的主要特性
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
1602采用标准的16脚接口,其中:
第1脚:
GND为电源地
第2脚:
VCC接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳变时执行指令。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
2.3.2LCD1602的硬件电路图
三、系统软件设计
3.1DS1302初始化程序
初始化设置时间2014年9月26日20时30分00秒
voidinit_ds1302(void)
{
write_bites(0x8e,0x00);//打开写保护
write_bites(0x80,0x00);//0秒
write_bites(0x82,0x30);//30分
write_bites(0x84,0x20);//20时
write_bites(0x86,0x26);//26日
write_bites(0x88,0x09);//9月
write_bites(0x8a,0x05);//周五
write_bites(0x8c,0x14);//14年
write_bites(0x90,0xa5);//涓流充电:
//write_bites(0x8e,0x80);//关闭写保护
}
3.2DS1302写指令或数据子序
/函数介绍:
向DS1302的地址address写入一个字节date
//输入参数:
address,date
voidwrite_bites(ucharaddress,uchardate)
{
uchartemp;
uchari;
ucharj=0;
rst=0;
sclk=0;
rst=1;
for(i=0;i<8;i++)
{
sclk=0;
temp=address&0x01;
address>>=1;
io=temp;
sclk=1;
j++;j++;
}
for(i=0;i<8;i++)
{
sclk=0;
temp=date&0x01;
date>>=1;
io=temp;
sclk=1;
j++;j++;
}
sclk=0;
rst=0;
}
//函数介绍:
从DS1302的地址address读出一个字节date
//输入参数:
address
//返回值:
date
ucharread_bites(ucharaddress)
{
uchartemp;
uchari;
ucharj=0;
uchardate=0;
rst=0;
sclk=0;
rst=1;
for(i=0;i<8;i++)
{
sclk=0;
temp=address&0x01;
address>>=1;
io=temp;
sclk=1;
j++;j++;
}
for(i=0;i<8;i++)
{
sclk=1;
j++;j++;
sclk=0;
temp=io;
temp<<=7;
date>>=1;
date=date|temp;
}
rst=0;
returndate/16*10+date%16;//BCD码转10进制
}
3.3LCD1602初始化程序
voidinit_1602(void)//LCD1602初始化
{
RS=0;
RW=0;
E=0;
write_com(0X01);
write_com(0X38);
write_com(0X0c);
write_com(0X06);
}
3.4LCD1602显示时间程序
//函数介绍:
从ds1302中读取时间值并在1602显示
voidread_ds1302(void)
{
uchartemp;
t1=read_bites(0x8d);//读年
write_com(0X80+0X04);
write_data('2');
write_data('0');
temp=t1/10%10;
write_data(0x30+temp);
temp=t1%10;
write_data(0x30+temp);
write_data('-');
t2=read_bites(0x89);//读月
temp=t2/10%10;
write_data(0x30+temp);
temp=t2%10;
write_data(0x30+temp);
write_data('-');
t3=read_bites(0x87);//读日
temp=t3/10%10;
write_data(0x30+temp);
temp=t3%10;
write_data(0x30+temp);
t4=read_bites(0x85);//读时
write_com(0X80+0X44);
temp=t4/10%10;
write_data(0x30+temp);
temp=t4%10;
write_data(0x30+temp);
write_data(':
');
t5=read_bites(0x83);//读分
temp=t5/10%10;
write_data(0x30+temp);
temp=t5%10;
write_data(0x30+temp);
write_data(':
');
t6=read_bites(0x81);//读秒
temp=t6/10%10;
write_data(0x30+temp);
temp=t6%10;
write_data(0x30+temp);
t7=read_bites(0x8b);//读星期
write_com(0X80+0X4e);
temp=t7%10;
write_data(0x30+temp);
}
3.5独立键盘扫描程序
//函数介绍:
4个独立键盘扫描函数
voidkeyscan(void)
{
uchark=0;//用于记录模式:
1-7依次代表调校年月日时分秒星期,0表示不在调试状态
uchartemp;//用于记录10进制变BCD码值
while
(1)
{
if(key1==0)//年月日时分秒星期选择
{
delay_ms(10);//消抖
if(key1==0)
{
while(!
key1);//等待按键松开
if(k==7)
{
k=1;
write_com(0x80+0x0f);
write_data(0x30+k);
}
else
{
k++;
write_com(0x80+0x0f);
write_data(0x30+k);
}
}
}
if(key2==0)//模式加
{
delay_ms(10);
if(key2==0)
{
while(!
key2);
if(k==1)//调校年
{
t1++;
temp=t1/10*16+t1%10;
write_bites(0x8c,temp);//14年
write_com(0x80+0x06);
temp=t1/10;
write_data(0x30+temp);
temp=t1%10;
write_data(0x30+temp);
}
elseif(k==2)//调校月
{
if(t2==12)
{
t2=1;
}
else
{
t2++;
}
temp=t2/10*16+t2%10;
write_bites(0x88,temp);
write_com(0x80+0x09);
temp=t2/10;
write_data(0x30+temp);
temp=t2%10;
write_data(0x30+temp);
}
elseif(k==3)//调校日
{
if(t3==31)
{
t3=1;
}
else
{
t3++;
}
temp=t3/10*16+t3%10;
write_bites(0x86,temp);
write_com(0x80+0x0c);
temp=t3/10;
write_data(0x30+temp);
temp=t3%10;
write_data(0x30+temp);
}
elseif(k==4)//调校时
{
if(t4==23)
{
t4=0;
}
else
{
t4++;
}
temp=t4/10*16+t4%10;
write_bites(0x84,temp);
write_com(0x80+0x44);
temp=t4/10;
write_data(0x30+temp);
temp=t4%10;
write_data(0x30+temp);
}
elseif(k==5)//调校分
{
if(t5==59)
{
t5=0;
}
else
{
t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 实验 报告