单片机课程设计实训报告-1602显示万年历和温度

上传人:aa****6 文档编号:29986899 上传时间:2018-01-26 格式:DOC 页数:18 大小:2.09MB
返回 下载 相关 举报
单片机课程设计实训报告-1602显示万年历和温度_第1页
第1页 / 共18页
单片机课程设计实训报告-1602显示万年历和温度_第2页
第2页 / 共18页
单片机课程设计实训报告-1602显示万年历和温度_第3页
第3页 / 共18页
单片机课程设计实训报告-1602显示万年历和温度_第4页
第4页 / 共18页
单片机课程设计实训报告-1602显示万年历和温度_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《单片机课程设计实训报告-1602显示万年历和温度》由会员分享,可在线阅读,更多相关《单片机课程设计实训报告-1602显示万年历和温度(18页珍藏版)》请在金锄头文库上搜索。

1、单 片 机 实 训 报 告题 目 : 1602 显示万年历和温度系 部 : 专 业 : 班 级 : 姓 名 :学 号 : 指导教师 : 2011 年 12 月 15 日第 2 页目录一、引言31.1、意义31.2、系统功能31.3、成员工作第 3 页3二、使用硬件 4三、使用原理图5四、完成万年历和温度的程序7五、感悟14第 4 页六、致谢15七、参考文献16八、老师的评语16引 言1.1、意义目前单片机的应用可以说是相当的广泛,已经渗透到我们生活中的各个领域。从高端导弹的导航装置,飞机上各种仪表的控制,自动控制领域的机器人,以及自动化过程的实时和数据处理,到我们日常生活的各种智能 IC 卡系

2、统,安全保障系统,录象机,摄象机,手第 5 页机,电视,以及可控玩具,等等,都是单片机“惹的祸”。而且,目前我国的单片机教育已经向高中教育发展,可见在不久的将来,单片机对于工科学生而言就会象电路基础原理一样成为基础课。所以我们要跟着时代的步伐前进,学好单片机。1.2、系统功能在单片机中,基本上有三类信息在流动,一类是数据,即各种原始数据 1、中间结果、程序等。这样要由外部设备通过“口”进入单片机,再存放在存贮器中,在运算处理过程中,数据从存贮器读入运算器进行运算,运算的中间结果要存入存贮器中,或最后由运算器经“出入口”输出。用户要单片机执行的各种命令(程序)也以数据的形式由存贮器送入控制器,由

3、控制器解读(译码)后变为各种控制信号,以便执行如加、减、乘、除等功能的各种命令。所以,这一类信息就称为控制命令,即由控制器去控制运算器一步步地进行运算和处理,又控制存贮器的读(取出数据)和写(存入数据)等。所以芯片就达到某种功能,就给设备带来效果。1.3、成员工作写程序:张俊兵调试:张俊兵设计报告:张俊兵 使用硬 件 第 6 页单片机 18b20LCD1602USB 供电线 串口线使用原理图1.1、单片机使用的原理图第 7 页1.2、仿真图第 8 页完成万年历和温度的程序#include#include#includesbit RS=P00;sbit E=P02;第 9 页sbit RW=P0

4、1;sbit BEEP=P17;#define Data P2#define KEY P3#define uchar unsigned charint hour,min,sec,tcnt,a,h,m,day,month,yearl,yearh;int z,j;#define NO_key 0x7fvoid DelayUs(unsigned char us)/delay usunsigned char uscnt;uscnt=us1;while(-uscnt);void DelayMs(unsigned char ms)/delay Mswhile(-ms)DelayUs(250);DelayU

5、s(250);DelayUs(250);DelayUs(250);void WriteCommand(unsigned char c)DelayMs(5);/short delay before operationE=0;RS=0;RW=0;_nop_();E=1;Data=c;E=0;void WriteData(unsigned char c)DelayMs(5); /short delay before operationE=0;RS=1;RW=0;_nop_();E=1;Data=c;E=0;RS=0;void InitLcd()DelayMs(15);第 10 页WriteComma

6、nd(0x38); /display modeWriteCommand(0x38); /display modeWriteCommand(0x38); /display modeWriteCommand(0x06); /显示光标移动位置WriteCommand(0x0c); /显示开及光标设置WriteCommand(0x01); /显示清屏int set_xy(int x,int y)/to set current positionif(y1)|(x15)return 0;elseif(y=0)WriteCommand(0x80+x);elseWriteCommand(0xc0+x);ret

7、urn 1;int wr_char(unsigned char dat,int x,int y)if(!set_xy(x,y)/write a char to some positionreturn 0;WriteData(dat);return 1;int wr_str(unsigned char *str,int x,int y)if(!set_xy(x,y)return 0;/to write a string to some positionwhile(*(str+)WriteData(*(str-1);return 1;int wr_int1(int num,int x,int y)

8、unsigned char seg1;if(!set_xy(x,y)return 0;if(num99)z=99;j=9; /设置温度显示上限 main()unsigned char opear;InitLcd();DelayMs(15);TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;ET0=1;EA=1;wr_str( : : ,0,0);wr_str( : ,0,1);wr_str( - - ,6,1);wr_str( . ,9,0);while(1)opear=Key_Scan();if(opear!=NO_key)switch(opear)case(0):hour

9、+;if(hour=24)hour=0;day+;wr_int(hour,0,0);break;case(1):min+;if(min=60)第 13 页min=0;hour+;wr_int(min,3,0);break;case(2):h+;if(h=24)h=0;wr_int(h,0,1);break;case(3):m+;if(m=60)m=0;h+;wr_int(m,3,1);break;case(4):day+;if(day=31)day=0;month+;wr_int(day,14,1);break;case(5):month+;if(month=13)month=1;yearl+

10、;wr_int(month,11,1);break;case(6):yearl+;if(yearl=100)yearl=0;yearh+;wr_int(yearl,8,1);break;case(7):yearh+;if(yearh=100)yearh=20;break;if(hour=h&min=m)第 14 页BEEP=0;else BEEP=1;if(a=1)a=0;check_wendu();if(zsbit DQ=P37; /定义 DS18B20总线 I/O/*延时子程序*/void Delay_DS18B20(int num)while(num-) ;/*初始化 DS18B20*/

11、void Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ复位Delay_DS18B20(8); /稍做延时DQ = 0; /单片机将 DQ拉低Delay_DS18B20(80); /精确延时,大于 480usDQ = 1; /拉高总线Delay_DS18B20(14);x = DQ; /稍做延时后,如果 x=0则初始化成功,x=1 则初始化失败Delay_DS18B20(20);/*读一个字节*/unsigned char ReadOneChar(void)第 16 页unsigned char i=0;unsigned char dat = 0

12、;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;Delay_DS18B20(4);return(dat);/*写一个字节*/void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = datDelay_DS18B20(5);DQ = 1;dat=1;/*读取温度*/unsigned int ReadTemperature(void)unsigned char a=0;unsigned char b=0;

13、unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0x44); /启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器a=ReadOneChar(); /读低 8位b=ReadOneChar(); /读高 8位t=b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; /放大 10倍输出并四舍五入return(t);第 17 页感悟当今时代,是一

14、个新技术层出不穷的时代。在电子领域,尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统正以前所未见的速度被单片机智能控制系统所取代。大部分的高等工科学校都已开设了单片机课程。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。过去习惯于传统电子领域的工程师、技术员正面临着全新的挑战,如不能在较短时间内学会单片机,势必会被时代所遗弃,只有勇敢地面对现实,挑战自我,加强学习,争取在较短的时间内将单片机技术融会贯通,才能跟上时代的步伐。习单片机并不象学习传统数字电路或模拟电路那样比较直观,原因是除了“硬

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号