12864时钟温度显示_第1页
12864时钟温度显示_第2页
12864时钟温度显示_第3页
12864时钟温度显示_第4页
12864时钟温度显示_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计用纸课程设计用纸1.引言1. 1课题研究背景1. 2课题研究意义1. 3课题研究内容2.系统方案设计22. 1总体方案设计22. 2系统方案选择与论证22.2.3单片机芯片的选择2. 2. 3显示模块选择方案和论证22. 2. 3温度传感器模块选择与论证233.硬件系统结构图33.ST89C52单片机介绍33.数字温度传感器DS1 8B2063.矩阵键盘接口设计83.12864液晶显示电路设计93.整时响铃电路设计TO3.硬件电路设计114.软件程序设计4. 1软件设计总体思路及主程序设计流程图1 14. 2软件程序详解125.作品调试31结语参考文献33致谢3 4课程设计用纸第 页课

2、程设计用纸第 页1.引言1.1课题研究背景随着微电子技术和超大规模集成电路技术的不断发展,家用电子产品种类日益丰富,数字显示的万年历已经越来越流行。单片机是在集成电路芯片上集成了各种元件的微型计算机,这些元件包括中央处理器CPU数据存储器RAM程序存储器ROM定时/计数器、中断系统、时钟部件的集成和I/O接口电路。由于单片机具有体积小、价格低、可靠性高、开发应用方便等特点因此在现代 电子技术和工业领域应用较为广泛,在智能仪表中单片机是应用最多、最活跃的领域之一。采用单片机的内部定时器实现年月日,时分秒,星期的显示,硬件设计简单。为此设 计了计时准确,成本低廉的万年历。1.2课题研究意义随着科学

3、技术的发展日新月异,科技的进步带动了测量技术的发展,其目的在于:(1 )本课题的研究可以使学生更好地掌握基于单片机应用系统的分析与设计方法, 培养创新意识、协作精神和理论联系实际的学风,提高电子产品研发素质、增强针对实际 应用进行控制系统设计制作的能力。掌握数字温度传感器DS18B2的原理、性能、使用特点和方法,利用 C51对系统进行编程。本课题综合了现代测控、电子信息、计算机技术专业领域方方面面的知识,具有综合性、科学性、代表性,可全面检验和促进学生的理论基础和实践技能。1.3课题研究内容本设计研究的主要内容如下:在广泛查阅温度检测控制理论和方法、测温技术和温度控制技术等资料的基础AT89C

4、52上,根据不同的控制要求及应用领域完成对系统方案的总体设计。本设计采用以 为核心的单片机系统,来实现对温度的检测功能。研究比较各相关元器件的功能与特点,选择合适的元器件。(3)系统硬件设计。系统硬件设计主要包括:温度检测、单片机数据采集处理、显示、键盘设定、报警电路等部分。2.系统方案设计2.1系统总体方案设计数字电子时钟是采用数字电路实现对年,月,日,时,分,秒数字显示的装置,通过 温度传感器显示实时温度的变化,通过定时器进行时间的运动,通过外部矩阵键盘校准时 间,最后经过显示屏显示。2.2系统方案选择与论证2.2.1单片机芯片的选择本设计采用AT89C5芯片作为硬件核心,该芯片内有4K字

5、节的在线编程Flash存储器, 可以擦写1000次,具有掉电模式,而且具有掉电状态下的中断恢复功能,对设计开发非常 实用1。2.2.2显示模块选择方案和论证方案一:LED数码管显示由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往 往会有很多障碍,所以不采用 LED数码管作为显示。方案二:LCD1286液晶显示此液晶具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等 优势和可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。所以最终选择LCD128642.2.3温度传感器模块选择与论证方案一采用模拟温度传感器AD590转换结果需要经过运算放大器

6、和 AD转换器传送给处理器。它控制虽然简单,成本低,但是后续电路复杂,且需要进行温度标定,集成温度 传感器AD590俞出为电流信号,且输出信号较弱,所以需要后续放大及A/D转换电路,如采 用普通运放则精度难以保证,而测量放大器价格较高,这样会使成本升高。方案二采用了数字温度传感器 DS18B20它能在现场采集温度数据,直接将温度物理量变换为数字信号并以总线方式传送到单片机进行数据处理,并且可根据实际要求通过简单的编程实现9-12位的数字式读数方式,因此,该方案完全具有可行性,同时体现了技术 的先进性,经济上也有很大的优势。综上所述,本课题采用 AT89C5芯片,DS18B2温度传感器,LCD1

7、286液晶显示对系统进行设计。3.1硬件系统结构图总体硬件设计仿真图如图一所示: - 一 e : I - - - - 至& 一一 右丁Tm弦L3硬件电路设计fDO-AkDrn UP.! I df 2PD JAIl亦卜fbAhCPDi-pqfDPhapiaKKi.2QMJ1PX VM TiBJEl *2ai I*U*ai3 vZVAIlU-TKIfI 口I?”TI2JiWQI13图1总体硬件设计仿真图3.2ST89C52单片机介绍3.2.1 STC89C52 单片机51系列单片机的引脚配置如图1所示。主要包括P0 P1、P2、P3口以及读写功能输出, 时钟输入端等。(1) AT89C5的特点1.

8、AT89C51具有以下几个特点:AT89C51与 MCS-5系列的单片机在指令系统和引脚上完全兼容;片内有4k字节在线可重复编程快擦写程序存储器;全静态工作,工作范围:OHz24MHz三级程序存储器加密;6.128 X 8位内部 RAM7.32位双向输入输出线;(2) AT89C52的功能描述AT89C52是一种低损耗、高性能、CMO八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入 /擦除1000次,AT89C5可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于4K,四个I/O 口全部提供给用户。K1 _K2K

9、3K諜K5K6RESTRXDTXDBPXTAL1XTAL2P1.0VCCPMPO.OPl”2paiPl.3Pl+4pgPl.5pa4Pl,召Pd5Pb7Pd6RESTP J0 0P2咖* P3T/A15pionxDpjirrxt)rajsPK pumr.I 1 . I_ 0我们的识别思路是这样的,初使化时我们先让 P1 口的低四位输出低电平,高四位输出高电平,即让P1 口输出0 xF0。扫描键盘的时候,我们读P1 口,看P1是 否还为0 xF0,如果仍 为OxFO,则表示没有按键按下;如果不OxFO,我们先等待10ms左右,再读P1 口,再次确认 是否为0 xF0,这是为了防止是抖动干扰造成错

10、误识别,如果不是那就说明是真的有按键按 下了,我们就可以读键码来识别到底是哪一个键按下了。识别的过程是这样的,初使化时 我们让P1 口的低四位输出低电平,高四位输出高电平,确认了真的有按键按下时,我们首 先读P1 口的高四位,然后P1 口输出0 x0F,即让P1 口的低四位输出高电平,高四位输出低 电平,然后读P1 口的低四位,最后我们把高四位读到的值与低四位读到的值做或运算就得 到了该按键的 键码。就可以知道是哪个键按下了。3.5 12864液晶显示电路设计概述带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模

11、块;其显示分辨率为128X 64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8X4行16X 16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显 示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得 多,且该模块的价格也略低于相同点阵的图形液晶模块。基本特性: 低电源电压(VDD:+3.0-+5.5V );(2)(3)显示分辨率:128 X 64点;内置汉字字库,提供8192个16X 16点阵汉字(简繁体可选);(4)内置1

12、28个16X8点阵字;(5)(6)2MHZ寸钟频率;显示方式:STN半透、正显;驱动方式:1/32DUTY 1/5BIAS;视角方向:背光方式:(9)侧部高亮白色 LED功耗仅为普通LED的1/5 1/10 ;(10)通讯方式:串行、并口可选;三、应用举例:1使用前的准备:先给模块加上工作电压,再按照下图的连接方法调节LCD的对比度,使其显示出黑色的底影。此过程亦可以初步检测 LCD有无缺段现象。2、字符显示:带中文字库的128X64-0402B每屏可显示4行8列共32个16X16点阵的汉字,每个显示RAM可显示1个中文字符或2个16X8点阵全高ASCII码字符。带中文 字库的128X64-0

13、402B内部提供128X2字节的字符显示 RAM缓冲区(DDRA)。三种不同字符/字型的选择编码范围为:00000006H (其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H-7FH显示半宽ASCII码字符,A1A0H-F7FFH显示8192种GB2312中文字库字形。字符显示 RAM在液晶模块中的地址80H9FH字符显示的RAM勺地址与32个字符显示区域有着一一对应的关系。其对应关系如下表一所示:80H81H82H83H84H85H86H87H90H91H92H93H94H95H96H97H88H89H8AH8BH8CH8DH8EH8FH98H99H9AH9B

14、H9CH9DH9EH9FH表一:LCD12964地址表3.6整时响铃电路设计程序中改变单片机P1.0引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P 1.0输出电平的高低电平占空比,则可以控制蜂3 0鸣器的声音大小,这些我们都可以通过编程实验来验证响铃电路如图10所示:4.软件程序设计4.1软件设计总体思路及主程序设计流程图图11:软件设计总体思路及主程序设计流程图课程设计用纸uint i,j;第 页课程设计用纸uint i,j;第 #页4.2软件程序详解#in elude #in elude vintrin s.h#defi ne uehar un s

15、ig ned char#defi ne uint un sig ned intsbit beet=PMO;sbit dula=卩3八6;/位选sbit wela=卩3八7;/段选sbit led =P 3八5;/ledsbit CS =P OS;/led 12864 片选sbit PSB=POA1;/串行sbit CLK=P0A2;/时钟信号sbit SID=PO 八3;/输入sbit DQ=PIA3;/18b20输入输出端口/*功能定义数据初始*/int hour=8, minu te=59,see on d=58,eo unt=O,num;uint years=2O13;int mon t

16、h=2,day=22;uint temp;uehar a1O=O,1,2,3,4,5,6,7,8,9;uehar eode tab5=.;uehar eode tab4=O123456789;uehar temp L=O,te mpH=O;uint temp erature,te mp;uint tem p13;uehar num2;void delay_ms( un sig ned int ms)/延迟毫秒课程设计用纸WriteO neChar(0 xbe);II读温度寄存器(头两个值分别为温度的低位和高位)第 页课程设计用纸WriteO neChar(0 xbe);II读温度寄存器(头两个

17、值分别为温度的低位和高位)第 页课程设计用纸DQ=1;第 页for(i=0;ivms;i+)for(j=0;jv110;j+);void delay_us( uint x)/延迟微秒uint i=0;while(i480us)DQ=1;/拉高数据线delay_us(14);/等待(1560us)uchar Read On eChar()/向DS18B20卖一字节数据un sig ned char i=0;un sig ned char datt=0;for(i=0;i=1;if(DQ)datt|=0 x80;delay_us(4);向DS18B20写一字节数据return(datt);void

18、 Write On eChar( un sig ned char datt) /un sig ned char i=0;for(i=8;i0;i-)DQ=0;DQ=datt&0 x01;delay_us(5);DQ=1;datt=1;delay_us(4);void ReadTe mp erature()II向DS18B20读温度值In it_DS18B20();II初始化Write On eChar(0 xcc);II跳过读序列号的操作WriteO neChar(0 x44);II启动温度转换delay_us(125);II转换需要一点时间,延时In it_DS18B20();II初始化Wr

19、ite On eChar(0 xcc);II跳过读序列号的操作课程设计用纸a=7;第 #页课程设计用纸a=7;第 页课程设计用纸b=cmd&0 x80;第 页temp L=Read On eChar();/读出温度的低位LSBtempH=ReadO neChar();/读出温度的高位MSB/温度转换,把高低位做相应的运算转化为实际温度temp erature=(te mpH *256)+tem pL)*10*0.0625;temp 10=te mp erature/100;tem p11=tem perature%100/10;temp 12=te mp erature%10;delay_us

20、(200);/lcd 写指令/ DS12864 液晶void write_com(uchar comma nd)uchar i,b,cmd;cmd=0 xf8;CS=1;CLK=0;for(i=0;i=7;SID=b;CLK=0;CLK=1;cmd=1;cmd=comma nd&0 xf0;for(i=0;i=7;SID=b;CLK=O;CLK=1;cmd=1;cmd=comma nd;cmd=7;SID=b;CLK=0;CLK=1;cmd=1;CS=0;/lcd 写数据delay_ms(1);void write_date(uchar date)uchar i,a,a_date;a_date

21、=0 xfa;CS=1;CLK=0;for(i=0;i8;i+)a=a_date&0 x80;课程设计用纸第 页课程设计用纸第 #页SID=a;CLK=O;CLK=1;a_date=7;SID=a;CLK=0;CLK=1;a_date=1;a_date=date;a_date=4;for(i=0;i=7;SID=a;CLK=0;CLK=1;a_date=1;CS=0;delay_ms(1);课程设计用纸while(tab2i!=0)第 #页课程设计用纸while(tab2i!=0)第 页void lcd_ pos(uchar x,uchar y)/位置uchar p os,row;switch

22、(x)case 0:row=0 x80;break;case 1:row=0 x90;break;case 2:row=0 x88;break;case 3:row=0 x98;break;p os=row+y;write_com( po s);void dis play_we ndu()uchar i=0;uchar code tab1=小纯来电子时钟;uchar code tab2=温度:;uchar code tab3=lcd_pos(0,0);/显示“温度”i=0;while(tab1i!=0)write_date(tab1i);i+;lcd_pos(1,0);/显示“温度”i=0;课

23、程设计用纸第 页课程设计用纸第 页write_date(tab2i);/ 显示实际温度/显示“ C “i+;for(i=0;i2;i+)write_date(tab4te mp 1i);write_date(tab50);write_date(tab4te mp 12);i=0;while(tab3i!=0)write_date(tab3i);i+;void display2()/ 显示时间uintshi1,shi2,fe n1,fe n2,miao1,miao2,years1,years2,years3,years4,mo nth1,m on th2,day 1,day2;shi仁hour/

24、10;shi2=hour%10;fen 1=mi nute/10;fen 2=mi nu te%10;miao1=sec on d/10;miao2=sec on d%10;years仁years/1000;years2=years%1000/100;years3=years%1000%100/10;years4=years%10;mon th1= mon th/10;mon th2=mon th%10;day仁day/10;day2=day%10;lcd_pos(3,2);write_date(shi1+0 x30);write_date(shi2+0 x30);lcd_pos(3,4);w

25、rite_date(fe n1+0 x30);write_date(fe n2+0 x30);lcd_pos(3,6);write_date(miao1+0 x30);write_date(miao2+0 x30);lcd_pos(2,0);write_date(years1+0 x30);write_date(years2+0 x30);write_date(years3+0 x30);write_date(years4+0 x30);lcd_pos(2,3);write_date(mo nth1+0 x30);write_date(mo nth2+0 x30);lcd_pos(2,5);w

26、rite_date(day1+0 x30);/初始化定时器write_date(day2+0 x30);void ini t_time()课程设计用纸P0=0 xff;第21页课程设计用纸P0=0 xff;第21页TMOD=0 x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1;TR0=1;void in it_12864()/初始化led/串行write_com(0 x01);/清屏delay_ms(1);write_com(0 x30);/功能设定delay_ms(1);write_com(0 x02);/地址归位delay

27、_ms(1);write_com(0 x06);/进入点设定设定游标移动方向和指定显示的移位delay_ms(1);write_com(0 x0c);/游标或显示移动位控制delay_ms(1);write_com(0 x80);/设定DDRA地址第一行80h-87h 第二行90h-97h 第三行88h-8fH 第四行98H-9FHdelay_ms(1);void ini t_ma in()/led=1;P SB=0;课程设计用纸第 #页课程设计用纸第 页led=O;delay_ms(1);dula=O;delay_ms(1);wela=O;delay_ms(1);In it_DS18B20(

28、);ini t_12864();/初始化定时器void keysca n()/矩阵键盘检测及时间调整uchar temp,num;P 2=0 xfe;temp=P2;temp=temp&0 xff;while(te mp!=0 xfe)delay_ms(5);tem p=P2;temp=temp&0 xff;while(te mp!=0 xfe)temp=P2;switch(te mp)case 0 xee: nu m=1;TR0=TR0;break;case 0 xde:num=2;nu m2+;break;case课程设计用纸while(te mp !=0 xfd)delay_ms(5);

29、第 页课程设计用纸while(te mp !=0 xfd)delay_ms(5);第 #页Oxbe:num=3;if( nu m2=1)if( num=3)hour+;if(hour=25)hour=0;if(nu m2=2)if( num=3)m inu te+;if( minu te=61) minu te=O; if(nu m2=3)if( num=3)sec on d+;if(sec on d=61)sec on d=0; if(nu m2=4)if( nu m=3)day+;if(day=32)day=0; if(nu m2=5)if( num=3)m on th+;if( mon

30、th=13)m on th=0; if(nu m2=6)if( num=3)years+;nu m2=0;break;case0 x7e: nu m=10;if( num2=1)if( num=10)hour-;if(hour=-1)hour=24;if(nu m2=2)if( num=10)m inu te-;if( minu te=-1) minu te=60; if(nu m2=3)if( num=10)sec on d-;if(sec on d=-1)sec on d=60; if(n um2=4)if( num=10)day-;if(day=-1)day=31; if(nu m2=5

31、)if( num=10)m on th-;if( mon th=-1)m on th=12;if(nu m2=6)if( num=10)years-; nu m2=0;write_com(0 x0c);break;default :num=0;break;while(te mp!=0 xfe)temp=P2;temp=temp&0 xff;P 2=0 xfd;temp=P2;temp=temp&0 xff;课程设计用纸while(te mp!=0 xfb)第 #页课程设计用纸while(te mp!=0 xfb)第 页tem p=P2;temp=temp&Oxff;while(te mp !=

32、Oxfd)tem p=P2;switch(te mp)case Oxed:num=4;break;case 0 xdd:num=5;break;case 0 xbd:num=6;break;case 0 x7d:num=11;break;default :num=0;break;while(te mp !=0 xfd)temp=P2;temp=temp&0 xff;P 2=0 xfb;tem p=P2;temp=temp&0 xff;while(te mp!=0 xfb)delay_ms(5);tem p=P2;temp=temp&0 xff;课程设计用纸while(tem p!=0 xf7)

33、第 页课程设计用纸while(tem p!=0 xf7)第 页temp=P2;switch(te mp)case Oxeb:num=7;break;case 0 xdb:num=8;break;case 0 xbb:num=9;break;case 0 x7 b:num=12;break;default :num=0;break;while(te mp!=0 xfb)tem p=P2;temp=temp&0 xff;P 2=0 xf7;tem p=P2;temp=temp&0 xff;while(te mp !=0 xf7)delay_ms(5);temp=P2;temp=temp&0 xff

34、;tem p=P2;switch(te mp)课程设计用纸while(tab4i!=0)write_date(tab4i);第 页课程设计用纸while(tab4i!=0)write_date(tab4i);第 页case 0 xe7:break;case 0 xd7:break;case 0 xb7:;break;case 0 x77:break;default :num=0;break;while(te mp !=0 xf7)temp=P2;temp=temp&0 xff;void tiaozhe ng()/显示“年” “月” “日” “时” “分” “秒”uint i;uchar tab

35、4=年;uchar tab5=月;uchar tab6=日;uchar tab7=时;uchar tab8=分;uchar tab9=秒;lcd_pos(2,2);i=0;课程设计用纸i+;第 页课程设计用纸i+;第 #页i+;lcd_pos(2,4);i=0;while(tab5i!=0)write_date(tab5i);i+;lcd_pos(2,6);i=0;while(tab6i!=0)write_date(tab6i);i+;lcd_pos(3,3);i=0;while(tab7i!=0)write_date(tab7i);i+;lcd_pos(3,5);i=0;while(tab8i!=0)write_date(tab8i);课程设计用纸i+;第 #页课程设计用纸i+;第 页lcd_pos(3,7);i=0;while(tab9i!=0)write_date(tab9i);i+;void fengmin gqi()beet=0;delay_ms(500);beet=1;delay_ms(5

温馨提示

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

最新文档

评论

0/150

提交评论