IEC计算机14级《单片机系统概论》-期末设计报告.doc_第1页
IEC计算机14级《单片机系统概论》-期末设计报告.doc_第2页
IEC计算机14级《单片机系统概论》-期末设计报告.doc_第3页
IEC计算机14级《单片机系统概论》-期末设计报告.doc_第4页
IEC计算机14级《单片机系统概论》-期末设计报告.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IEC计算机14级单片机系统概论期末设计报告 设计题目院 系班 级姓 名学 号2017年 月 日一、设计任务和主要技术1.设计任务(要完成哪些具体功能)(1)实现温度采集(2)温度湿度显示(3)LED控制。2.主要技术(要完成上面任务所使用的主要技术手段)(1)温度利用单总线通信采集所需要的数据(2),LCD1602利用8位并行数据线进行控制二、答辩1. 成绩:2. 成绩:3. 成绩:4 成绩:5. 成绩:三、成绩【期末设计总成绩50分=设计报告成绩15分+设计演示成绩15分+答辩成绩20分】1.成绩分配(1)设计报告成绩( );(2)设计作品成绩( );(3)答辩成绩( )注意:若实验板无法正常工作或没有设计作品演示,则期末设计总成绩为0分。2.期末设计总成绩【 分】 指导教师签字: 年 月 日目 录1 系统方案设计31.1 系统整体设计工作框图31.2 系统设计元器件清单32 硬件电路设计42.1 系统总电路原理图42.2 AD键盘的设计42.3 Lcd1602电路的设计52.4 蜂鸣器驱动电路的设计52.5 流水灯的设计62.6 DS18B20电路的设计73 程序流程图83.1 程序主流程图设计883.2 LCD显示子程序流程图设计84 C语言源程序清单95 参考文献111 系统方案设计1.1 系统整体设计工作框图图1-1 系统整体设计工作框图1.2 系统设计元器件清单表1-1 系统设计元器件清单51单片机开发板2 硬件电路设计2.1 系统总电路原理图图2-1 系统总电路原理图2.2 AD键盘的设计1.引脚连接:与单片机的AD采集IO口相连2.功能: 采集AD值来判断哪个键被按下图2-2 AD键盘电路2.3 Lcd1602电路的设计1.引脚连接:数据口为单片机的P0口 通信口为LCD1602_RS : P11;LCD1602_RW :P12;LCD1602_EN : P13;2.功能:LCD1602作用是显示出两排 每排16个字符包括26个英文字母,10个数字和英文标点符号,在这里我们显示体温和状态图2-3 Lcd1602显示电路2.3 DH11电路的设计1.引脚连接:通信连P3.7口。2.功能:可测量环境温度和湿度。其电路如图2-4所示。 图2-4 DS18B20电路图2.5 闪烁灯的设计1.引脚连接:8个二极管分别于单片机的P2的8个口相连图2-5 流水灯电路图3 程序流程图3.1 程序主流程图设计图3-1 程序主流程图3.2 LCD显示子程序流程图设计图3-2 LCD显示程序流程图4 C语言源程序清单4.1主函数程序清单#include reg52.h#include LCD1602.h#include DS18B20.h#include jianpan.hsbit Buzzer = P25;/定义变量unsigned int Temp_Buffer = 0;unsigned int warning = 360;bit flag = 0;/*/MS延时函数(12M晶振下测试)/*void Delay_ms(unsigned int m)unsigned int i;unsigned long j;for(i = 0; i m; i+)for(j = 0; j 123; j+);/*/显示函数/*void distmp()Temp_Buffer = Get_temp(); /读取DS18B20的值LCD1602_write_com(0x80+0x40);/设置LCD1602指针到第二行第一列LCD1602_write_word(TEMP = );if(flag_temper = 1)/根据温度标志位显示温度正负LCD1602_write_data(-);if( Temp_Buffer/1000 != 0 )/如果第一位为0,忽略显示LCD1602_write_data(Temp_Buffer/1000+0X30);/显示温度百位值if( Temp_Buffer/1000 = 0 & Temp_Buffer%1000/100 = 0 )/千位百位都为0,忽略显示elseLCD1602_write_data(Temp_Buffer%1000/100+0X30); /显示温度百位值LCD1602_write_data(Temp_Buffer%100/10+0X30); /显示温度十位值LCD1602_write_data(.); /显示小数点LCD1602_write_data(Temp_Buffer%10+0X30); /显示温度个位值LCD1602_write_word(C); /显示字符CDelay_ms(10);void distmp2()LCD1602_write_com(0x80);/设置LCD1602指针到第二行第一列LCD1602_write_word(WARNING : );LCD1602_write_data(warning%1000/100+0X30); /显示温度百位值LCD1602_write_data(warning%100/10+0X30); /显示温度十位值LCD1602_write_data(.); /显示小数点LCD1602_write_data(warning%10+0X30); /显示温度个位值LCD1602_write_word(C); /显示字符C/*/主函数/*void main()Init_LCD1602();/初始化LCD1602LCD1602_write_com(0x80);/指针设置到第一行第1列Delay_ms(100);LCD1602_write_word(Welcome to use!);Temp_Buffer = Get_temp(); /读取DS18B20的值Delay_ms(1000);/等待1s等待DS18B20数据稳定。否则可能会出现85。LCD1602_write_com(0x01);while(1)distmp();distmp2(); if(KEY_Scan() = 15) flag = 1; if(warning=Temp_Buffer&flag = 0)Buzzer = 1; 4.2 LCD驱动函数#include LCD1602.h/*/MS延时函数(12M晶振下测试)/*void LCD1602_delay_ms(unsigned int n)unsigned int i,j;for(i = 0; i n; i+)for(j = 0; j 0)LCD1602_write_data(*s);s+;void Init_LCD1602()LCD1602_EN = 0;LCD1602_RW = 0;/设置为写状态LCD1602_write_com(0x38);/显示模式设定LCD1602_write_com(0x0c);/开关显示、光标有无设置、光标闪烁设置LCD1602_write_com(0x06);/写一个字符后指针加一LCD1602_write_com(0x01);/清屏指令4.3DHT11驱动程序#include DHT11.h/定义变量unsigned char HUMI_Buffer_Int_H = 0;unsigned char HUMI_Buffer_Int_L = 0;unsigned char TEM_Buffer_Int_H = 0;unsigned char TEM_Buffer_Int_L = 0;unsigned char CHECK_VALUE = 0;/*/MS延时函数(12M晶振下测试)/*void DHT11_delay_ms(unsigned int m)unsigned int i;unsigned long j;for(i = 0; i m; i+)for(j = 0; j 123; j+);/*/延时函数/*void DHT11_10us( unsigned int n )unsigned char i, j;for(j = 0; j 18msDHT11_DQ = 1;/CPU拉高信号,等待DHT11响应信号DHT11_10us(3);/延时2040usFlag_DHT11 = DHT11_DQ;DHT11_10us(8);/DHT11响应总时间80usDHT11_10us(9);/DHT11拉高信号80usreturn Flag_DHT11;/*/读一个字节DHT11数据/*unsigned char DHT11_Read_Byte()unsigned char i, dat, j;dat = 0;while( DHT11_DQ = 1 );for( i = 0 ; i 8 ; i+ )while( DHT11_DQ = 0 );dat = 1;for( j = 0 ; DHT11_DQ = 1 ; j+);if( j 80 )dat &= 0xfe;/低位清零elsedat |= 0x01;/低位置一dat &= 0xff;return dat;/*/读取温湿度值,存放在TEM_Buffer和HUMI_Buffer/*void DHT11_Read()if( DHT11_Init() = 0 )HUMI_Buffer_Int_H = DHT11_Read_Byte(); /读取湿度的整数值HUMI_Buffer_Int_L = DHT11_Read_Byte();/读取湿度的小数值TEM_Buffer_Int_H = DHT11_Read_Byte();/读取温度的整数值TEM_Buffer_Int_L = DHT11_Read_Byte();/读取温度的小数值CHECK_VALUE = DHT11_Read_Byte();/读取校验和DHT11_10us(5);/DHT11拉低总线50usDHT11_DQ = 1;/释放总线if(CHECK_VALUE != (HUMI_Buffer_Int_H + HUMI_Buffer_Int_L + TEM_Buffer_Int_H + TEM_Buffer_Int_L)HUMI_Buffer_Int_H = 99;TEM_Buffer_Int_H = 99;elseHUMI_Buffer_Int_H = 0;TEM_Buffer_Int_H = 9;4.4小灯控制程序void timer0() interrupt 1 using 1 TH0 = 0x3C;TL0 = 0xB0;/ 50msms+;if(ms = 20 )ms = 0;LED = LED;5 参考文献【格式】序号作者.书名M.出版地:出版社,出版年份:起止页码.例如:1 葛家澍.现代西方财务会计理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论