单片机课程设计实训报告1602显示万年历和温度.doc
《单片机课程设计实训报告1602显示万年历和温度.doc》由会员分享,可在线阅读,更多相关《单片机课程设计实训报告1602显示万年历和温度.doc(18页珍藏版)》请在三一办公上搜索。
1、单片机实训报告题 目 : 1602显示万年历和温度系 部 : 专 业 : 班 级 : 姓 名 :学 号 : 指导教师 : 2011年12月15日目录一、引言31.1、意义31.2、系统功能31.3、成员工作3二、使用硬件4三、使用原理图5四、完成万年历和温度的程序7五、感悟14六、致谢15七、参考文献16八、老师的评语16引 言1.1、意义目前单片机的应用可以说是相当的广泛,已经渗透到我们生活中的各个领域。从高端导弹的导航装置,飞机上各种仪表的控制,自动控制领域的机器人,以及自动化过程的实时和数据处理,到我们日常生活的各种智能IC卡系统,安全保障系统,录象机,摄象机,手机,电视,以及可控玩具,
2、等等,都是单片机“惹的祸”。而且,目前我国的单片机教育已经向高中教育发展,可见在不久的将来,单片机对于工科学生而言就会象电路基础原理一样成为基础课。所以我们要跟着时代的步伐前进,学好单片机。1.2、系统功能在单片机中,基本上有三类信息在流动,一类是数据,即各种原始数据1、中间结果、程序等。这样要由外部设备通过“口”进入单片机,再存放在存贮器中,在运算处理过程中,数据从存贮器读入运算器进行运算,运算的中间结果要存入存贮器中,或最后由运算器经“出入口”输出。用户要单片机执行的各种命令(程序)也以数据的形式由存贮器送入控制器,由控制器解读(译码)后变为各种控制信号,以便执行如加、减、乘、除等功能的各
3、种命令。所以,这一类信息就称为控制命令,即由控制器去控制运算器一步步地进行运算和处理,又控制存贮器的读(取出数据)和写(存入数据)等。所以芯片就达到某种功能,就给设备带来效果。1.3、成员工作写程序:张俊兵调试:张俊兵设计报告:张俊兵 使用硬件 单片机 18b20LCD1602 USB供电线 串口线使用原理图1.1、 单片机使用的原理图1.2、 仿真图完成万年历和温度的程序#include#include#includesbit RS=P00;sbit E=P02;sbit RW=P01;sbit BEEP=P17;#define Data P2#define KEY P3#define uc
4、har 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 Ms while(-ms) DelayUs(250); DelayUs(250); DelayUs(250); DelayUs(250); void WriteComman
5、d(unsigned char c) DelayMs(5);/short delay before operation E=0; RS=0; RW=0; _nop_(); E=1; Data=c; E=0;void WriteData(unsigned char c) DelayMs(5); /short delay before operation E=0; RS=1; RW=0; _nop_(); E=1; Data=c; E=0; RS=0;void InitLcd() DelayMs(15); WriteCommand(0x38); /display mode WriteCommand
6、(0x38); /display mode WriteCommand(0x38); /display mode WriteCommand(0x06); /显示光标移动位置 WriteCommand(0x0c); /显示开及光标设置 WriteCommand(0x01); /显示清屏int set_xy(int x,int y)/to set current position if(y1)|(x15) return 0; else if(y=0) WriteCommand(0x80+x); else WriteCommand(0xc0+x); return 1; int wr_char(unsi
7、gned char dat,int x,int y) if(!set_xy(x,y)/write a char to some position return 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 position while(*(str+) WriteData(*(str-1); return 1; int wr_int1(int num,int x,int y)unsigned cha
8、r seg1;if(!set_xy(x,y)return 0; if(num0) WriteData(-); num=-num; seg0=num; WriteData(seg0+0);return 1; int wr_int(int num,int x,int y) unsigned char seg2; if(!set_xy(x,y) /to write a interger to some position return 0; if(num0) WriteData(-); num=-num; seg1=num/10; num=num%10; seg0=num; WriteData(seg
9、1+0); WriteData(seg0+0); return 1;void delay(unsigned int cnt)while(-cnt);unsigned char Key_Scan(void)unsigned char i,n;unsigned char key_temp;KEY=0xf0;if(KEY&0xf0)!=0xf0)delay(10000);if(KEY&0xf0)!=0xf0)for(i=0;i4;i+)KEY=(1i);n=KEY;n&=0xf0;if(n!=0xf0)switch(n)case(0x70):key_temp=15-(3-i)*4;break;cas
10、e(0xb0):key_temp=14-(3-i)*4;break;case(0xd0):key_temp=13-(3-i)*4;break;case(0xe0):key_temp=12-(3-i)*4;break;default:key_temp=NO_key;return key_temp;return NO_key;void check_wendu(void) unsigned int b,c,d; d=ReadTemperature()-5; /获取温度值并减去DS18B20的温漂误差 b=d/100; /计算得到十位数字 c=d/10-b*10; /计算得到个位数字 z=d/10;
11、/计算得到整数位 j=d-b*100-c*10; /计算得到小数位if(z99)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+;if(hour=24
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 1602 显示 万年历 温度

链接地址:https://www.31ppt.com/p-4847468.html