基于5单片机的TFT彩屏显示的万历_第1页
基于5单片机的TFT彩屏显示的万历_第2页
基于5单片机的TFT彩屏显示的万历_第3页
基于5单片机的TFT彩屏显示的万历_第4页
基于5单片机的TFT彩屏显示的万历_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、基于51单片机的TFT彩屏显示的万年历 单片机课程设计 学 院:信息工程专 业:通信工程班 级: 10级(3)班姓名学号:刘伟斌3110003144指导老师:刘震宇制作日期:2013年6月16日星期日基于单片机的的万年历的设计摘要:电子万年历是一种非常广泛日常计时工具。它可以对年、月、日、周、时、秒进行精确计时,同时可显示闰年农历温度信息,在日常生活中极为实用,DS1302是常用的时钟芯片,几个低廉,精度高且对于数字电子万年历采用直观的数字显示,还具有时间校准等功能。本设计是基于51 系列的单片机进行的电子万年历设计,可以显示年、月、日、时、分、秒及周信息,具有可用串口调整日期和时间功能。而且

2、还具有温度显示功能。关键词:单片机 时钟 DS1302 温度 DS18B20 串口 一,设计要求与方案设计1.1 设计要求: (1) 万年历能计算阳历年、月、日、时、分、秒。(注意闰年)(2) 有时间设置按钮,能重新设定时间,并按新时间计算。(3) 时间的显示有两个方案: a、板上LCD 显示;b、通过串行口在PC 机上显示。1.2 电路设计:综上设计要求所述,对此次作品的方案选定: 采用STC89C52 作为主控制系统; DS1302 提供时钟; DS18B20作为数字式温度传感器;TFT彩屏作为显示;MAX232模块的串口通过与计算机通信来修改时间参数并可以下载程序。二,系统的硬件设计与实

3、现2.0 电路整体设计框图与整体原理图2.1 89C52主控制器模块STC89C52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出. 2.2 DS1302时钟模块采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、

4、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.DS1302 与单片机连接电路如下:2.3 DS18B20温度模块在本万年历当中温度的采集采用数字温度传感器DS18B20。它属于单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20 与单片机连接电路如下:2.4 TFT彩屏显示模块TFT屏(Thin Film Transistor)是薄膜晶体管型液晶显示屏,它的每一个象素点都是由集成在其后的薄膜晶体管来驱动的,这样不仅提高

5、了显示屏的响应速度,同时可以精确控制显示色阶,所以TFT液晶的色彩更逼真。TFT彩屏显示模块与单片机连接电路如下:2.5 MAX232串口通信模块MAX232串口通信模块可以用来单片机下载程序和串口通信修改时间参数与单片机连接如下图:2.6 电源模块电源模块电路中加一个LED二极管电路可以防止电源正负极接反,从而保护芯片不被烧毁;还可以当电源指示灯用。电源与系统版连接如下图:三,PCB图(用protel软件设计)四,实物制作过程4.1 硫酸纸打印 4.2 显影4.3 腐蚀 4.4 钻孔4.5 焊接 4.6实物效果图五,程序设计思路与实现软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运

6、行情况的良好。因本程序涉及的模块较多,所以程序编写也采用模块化设计,C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用C51编写。程序框图如下:判断是否有按键按下时间、日期、上限温度、闹钟设置模块没有按键按下 温度检测模块主程序如下:#include<reg52.h>#include"ds1302.h"#include"ILI9163.h"#include "18b20.h"#define TOP 9#define BOTTOM 10#define LEFT 14#define RIGHT 10#de

7、fine DISTANCE 20#define CCOLOR 0x001f#define BCOLOR 0xff00unsigned int temp; /温度临时变量unsigned char TempH,TempL;bit SetFlag; /更新时间标志位/sbit p=P17;unsigned char time_buf216;unsigned char timeold;/void disp(void);/void UART_Init(void) SCON = 0x50; /* SCON: 模式 1, 8-bit UART, 使能接收 */ TMOD |= 0x20; /* TMOD:

8、 timer 1, mode 2, 8-bit reload */ TH1 = 0xFD; /* TH1: reload value for 9600 baud 11.0592MHz */ TR1 = 1; /* TR1: timer 1 run */ EA = 1; /*打开总中断*/ ES = 1; /*打开串口中断*/main() unsigned char i; UART_Init(); ds1302_init(); /*DS302初始化函数*/ /ds1302_write_time(); Ini_ILI9163(); /初始化LCD CLR_Screen(BCOLOR); /用背景色

9、清屏 /画矩形框 Rectangle(LEFT,TOP+8,LEFT+100,TOP+134,CCOLOR); Rectangle(LEFT+1,TOP+9,LEFT+99,TOP+133,CCOLOR); Rectangle(8,TOP+2,LEFT+106,TOP+140,CCOLOR); Rectangle(9,TOP+3,LEFT+105,TOP+139,CCOLOR); Rectangle(2,TOP-4,LEFT+112,TOP+146,CCOLOR); Rectangle(3,TOP-3,LEFT+111,TOP+145,CCOLOR); /LCD_PutString(LEFT,

10、0,"当前日期:",CCOLOR,BCOLOR); LCD_PutString(LEFT+10,DISTANCE*4+TOP+10,"刘伟斌制作",0x0000,BCOLOR); LCD_PutString(LEFT+10,TOP+10,"彩屏万年历",CCOLOR,BCOLOR); LCD_PutString(LEFT+25,DISTANCE*3+TOP+10,"星期",CCOLOR,BCOLOR); LCD_PutString(LEFT+7,DISTANCE*5+TOP+12,"温度: . "

11、;,0xf800,BCOLOR); /画中间间隔线 Line(LEFT,TOP+DISTANCE+8,LEFT+100,TOP+DISTANCE+8,CCOLOR); Line(LEFT,TOP+DISTANCE*2+8,LEFT+100,TOP+DISTANCE*2+8,CCOLOR); Line(LEFT,TOP+DISTANCE*3+8,LEFT+100,TOP+DISTANCE*3+8,CCOLOR); Line(LEFT,TOP+DISTANCE*4+8,LEFT+100,TOP+DISTANCE*4+8,CCOLOR); Line(LEFT,TOP+DISTANCE*5+8,LEF

12、T+100,TOP+DISTANCE*5+8,CCOLOR); while(1) timeold=time_buf16; / 用于检查时钟是否改变 ds1302_read_time();/读取时钟信息if(timeold!=time_buf16) temp=ReadTemperature();/读取温度 TempH=temp>>4; TempL=temp&0x0F; TempL=TempL*6/10;/小数近似处理 disp(); /液晶显示时间信息 / KeyPro(); if(SetFlag) /如果接收到串口信息则更新时钟 for(i=0;i<8;i+) tim

13、e_buf1i=time_buf22*i*10+time_buf22*i+1;/数据整合,如2个数 1和5整合成15 ds1302_write_time(); SetFlag=0; /时钟信息更新后标志位清零 /*/* 串口中断程序 */*/void UART_SER (void) interrupt 4 /串行中断服务程序 unsigned char Temp; /定义临时变量 unsigned char i; if(RI) /判断是接收中断产生 RI=0; /标志位清零 Temp=SBUF; /读入缓冲区的值 time_buf2i=Temp&0x0F; i+; if(i=16) /

14、连续接收16个字符信息 i=0;SetFlag=1; /接收完成标志位置1 SBUF=Temp; /把接收到的值再发回电脑端 /P1=Temp&0x0F; /调试时候显示 if(TI) /如果是发送标志位,清零 TI=0; void disp(void) unsigned char TempData10; TempData0='2' TempData1='0' TempData2='0'+time_buf11/10; TempData3='0'+time_buf11%10; TempData4='-' Te

15、mpData5='0'+time_buf12/10; TempData6='0'+time_buf12%10; TempData7='-' TempData8='0'+time_buf13/10; TempData9='0'+time_buf13%10; LCD_PutString(LEFT+10,DISTANCE*1+TOP+10,TempData,CCOLOR,BCOLOR); TempData0='0'+time_buf14/10; TempData1='0'+time_buf

16、14%10; TempData2=':' TempData3='0'+time_buf15/10; TempData4='0'+time_buf15%10; TempData5=':' TempData6='0'+time_buf16/10; TempData7='0'+time_buf16%10; TempData8=' ' TempData9=' 'LCD_PutString(LEFT+18,DISTANCE*2+TOP+10,TempData,CCOLOR,BC

17、OLOR);switch(time_buf17) case 1:LCD_PutString(LEFT+57,DISTANCE*3+TOP+10,"一",CCOLOR,BCOLOR);break; case 2:LCD_PutString(LEFT+57,DISTANCE*3+TOP+10,"二",CCOLOR,BCOLOR);break; case 3:LCD_PutString(LEFT+57,DISTANCE*3+TOP+10,"三",CCOLOR,BCOLOR); LCD_PutString(LEFT+78,DISTANCE*3

18、+TOP+10," ",CCOLOR,BCOLOR);break; case 4:LCD_PutString(LEFT+57,DISTANCE*3+TOP+10,"四",CCOLOR,BCOLOR);break; case 5:LCD_PutString(LEFT+57,DISTANCE*3+TOP+10,"五",CCOLOR,BCOLOR);break; case 6:LCD_PutString(LEFT+57,DISTANCE*3+TOP+10,"六",CCOLOR,BCOLOR);break; case 7:

19、LCD_PutString(LEFT+57,DISTANCE*3+TOP+10,"日",CCOLOR,BCOLOR);break; default:break; TempData6='0'+(TempH%100)/10; TempData7='0'+(TempH%100)%10; /这里只使用2位整数部分TempData8='.' TempData9='0'+TempL;LCD_PutString(LEFT+47,DISTANCE*5+TOP+12,&TempData6,0xf800,BCOLOR);六

20、,串口设计思路通过串口调试软件更新时间。更新方式如下:在发送栏填写时间信息,格式如下2013061623595007 表示:2013年6月16日 23点59分50秒 星期日,然后通过串口以字符格式发送,注意中间不能有空格。代码如下:/*/* 串口中断程序 */*/void UART_SER (void) interrupt 4 /串行中断服务程序 unsigned char Temp; /定义临时变量 unsigned char i; if(RI) /判断是接收中断产生 RI=0; /标志位清零 Temp=SBUF; /读入缓冲区的值 time_buf2i=Temp&0x0F; i+; if

温馨提示

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

评论

0/150

提交评论