- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、实验内容
实验的内容是利用APP001开发板实现一个温度测量显示和控制的单片机应用系统,利用APP001开发板上的温度传感器测量温度,通过键盘输入一个稳定设定值,当测量温度高于设定温度时发出声音报警,开启散热风扇开头,并在LCD上显示衬里温度值、设定温度值和散热风扇的开关状态,其中日期和时间利用单片机的定时器来产生,并能通过键盘来设定。通过该实验学习和掌握以下的内容:
MPALB开发环境的使用,程序编写和排错及软件仿真
利用MPLAB和ICD2以程序进行在线仿真和调试
使用万用表和示波器等仪器对硬件系统进行测量和调试
PIC18F452单片机的I/O和PWM驱动及编程
PIC18F452单片机LCD和键盘接口及编程方法
PIC18F452的UART编程及与PC机的通讯方法
利用Timer1外接32.768kHz的晶振产生RTC
二、实现方法
采用模块编程、分块调试、之后系统联调的原则。
1、驱动蜂鸣器
APP001开发板上的BUZZER是由RC2控制一个三极管来驱动的,当JP4的跳线开关短路时,RC2管脚输出高电平便会使蜂鸣器发出声音,RC2管脚输出低电平便禁止蜂鸣器发声。
2、散热风扇开关输出控制
实验中利用一个LED来模拟风扇状态,当菜瓜风扇开关打开时,LED被点亮发光,当散热风扇关闭时,LED不发光。开发板上的指示灯D11由RB2控制,低电平亮,高电平来。在代码中通过TRISBbits.TRISB2=0/1来设置输出/输入,通过PORTBbits.RB2来控制管脚输出高低电平。
3.字符LCD
APP001开发板配置了一个2*16的字符LCD,它和PIC18F452的接口是RD0-RD3连接到LCD模块的DB4-DB7,用来向LCD模块写入命令和数据,其中DB7可以用来作为LCD模块控制器的忙标志位;RD5是读写控制位;RD4是命令和数据标志位。RD=0时,RD0-RD3是读取和写入数据到LCD的命令寄存器;RD=1时,RD0-RD3读取和写入的是要显示的数据。
4.温度测量
使用模拟温度传感器TC1047A,利用模数转换,将模拟电压转换为数字电压。对应于相应的温度。
5.键盘
使用开发板上的2组按键SW2和SW3
6.串口
波特率19200,8位数据位,无校验,1位停止位。
7. RTC
采用Timer 1外接32.768kHz的晶振可以产生精确的1秒计时,从而实现RTC。
三、硬件结构框图和原理图
硬件结构框图如下:
原理图见附件。
四、软件流程图和部分接口函数及说明
软件流程图如下:
部分函数如下:
1、主函数
void main(void)
{
char i;
for( i=0;i3;i++) dt[i]=0;
dt[3]=1;
dt[4]=1;
dt[5]=0;
dt[6]=99;
dt[7]=99;
cp=0;
InitializePORT( );
InitializeINTs( );
InitializeAD( );
InitializeTMR1( );
Initialize_I2C_Master( );
InitializeUSART();
OpenLCD( );
flag=0;
while(1)
{
if (Flagbits.Timer0_Flag) // update Temperature on LCD every 0.4 Sec
{
Flagbits.Timer0_Flag=0;
LCD_Temp_Update ( ) ; // update Temperature
send2PC( );
LATDbits.LATD0 = !LATDbits.LATD0 ;
}
if((PORTBbits.RB0==0))
{
Delay10KTCYx(100);
flag++;
if(flag17)
{
flag=1;
}
flag_set(flag);
}
if(PORTBbits.RB0==1)
{
Add_value(flag);
}
if(((T_Buffer/10)=dt[7]) dt[6]/10==0 dt[6]%10==0)
{
PORTCbits.RC2=1;
PORTDbits.RD7=1;
}
else
{
PORTCbits.RC2=0;
PORTDbits.RD7=0;
}
}
}
2、按键部分函数
flag_set( )函数功能:程序设定RB0为set键,当RB0按下的时候,标志变量flag++,当RB0松开的时候,程序调用
您可能关注的文档
最近下载
- 2024大学生人文知识竞赛题库及参考答案.docx VIP
- 2025三年级上册道德与法治 第5课《走近科学家》(第二课时)教学课件.pptx
- 四年级上册道德与法治课件第四课时与家务活“签约”人教部编版.ppt VIP
- 第三次全国土壤普查耕地质量等级评价技术规范.pdf VIP
- UVmini-1240使用指南 岛津紫外可见光分光光度计.pdf VIP
- 【2024】人教鄂教版科学六年级上册每课教学反思(带目录) .pdf VIP
- 教学-高中物必修一、二、三基本知识背记检查清单大傻B.ppt VIP
- 2025年新能源太阳能光伏产业发展白皮书.docx VIP
- 设备管理成熟度(星级)评价准则.pdf VIP
- GB50231-2009 机械设备安装工程施工及验收通用规范.docx VIP
文档评论(0)