第一范文网 - 专业文章范例文档资料分享平台

基于51单片机和lcd1602的万年历设计 - 图文

来源:用户分享 时间:2025/5/25 1:42:00 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

常熟理工学院毕业设计(论文)

WriteOneChar(0xcc); //跳过读序列号的操作,调用写函数,写0xcc指令码 WriteOneChar(0xbe); //调用写函数,写0xbe指令码,读温度寄存器 tempL=ReadOneChar(); //读出温度的低位LSB tempH=ReadOneChar(); //读出温度的高位MSB tempa=((tempH*256)+tempL)*0.0625; //温度转换 DS18_delay(20);

return(tempa); //运算结果返回到函数 :ReadTemperature()

5.2.2 DS1302读写程序

DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器

}

的数据。要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如图5.5所示。

图5.5 DS1302的控制字

控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。数据读写时序如图5.6、5.7所示。

图5.6 单字节读

图5.7 单字节写

在进行任何数据传输时,RST必须被置高电平,每个SCLK为上升沿时数据被输入,下降沿时数据被输出。先把RST置低,禁止数据传输,SCLK置低,清零时钟总线,RST再置高,允许数据传输。传送完成后,RST置低,禁止字节的传送。部分源程序如下:

27

常熟理工学院毕业设计(论文)

void write_byte(uchar dat) //写一个字节 { ACC=dat; RST=1; for(a=8;a>0;a--) { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; } }

uchar read_byte() //读一个字节 { RST=1; for(a=8;a>0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return (ACC); }

void write_1302(uchar add,uchar dat) //向1302芯片写函数,指定写入地址,数据 { RST=0; SCLK=0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0; }

uchar read_1302(uchar add) //从1302读数据函数,指定读取数据来源地址 { uchar temp; RST=0; SCLK=0; RST=1; write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp); }

28

常熟理工学院毕业设计(论文)

5.2.3液晶显示程序

1602通过D0~D7的8位数据端传输数据和指令,其模块内的控制器有11条控制指令。当液晶显示屏的接口电路与单片机系统I/O按照并行数据传输方式连接完成以后,即可以对STC89C52单片机进行编程。在液晶屏完成显示之前首先要对液晶进行初始化。源程序如下:

lcd_init() //***液晶初始化函数**** { write_1602com(0x38); //设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com(0x0c); //开显示不显示光标 write_1602com(0x06); //整屏不移动,光标自动右移 write_1602com(0x01); //清显示 write_1602com(yh+1); //日历显示固定符号从第一行第1个位置之后开始显示 for(a=0;a<14;a++) { write_1602dat(tab1[a]); //向液晶屏写日历显示的固定符号部分 //delay(3); } write_1602com(er+2); //时间显示固定符号写入位置,从第2个位置后开始显示 for(a=0;a<8;a++) { write_1602dat(tab2[a]); //写显示时间固定符号,两个冒号 //delay(3); }

}

5.3本章小结

本章对基于单片机的万年历系统软件模块进行设计,先对该系统进行了整体流程的设计,给出了设计的流程图,随后介绍了各模块的子程序。对一些模块常用的函数进行了解释,这一切都构成了这个系统的软件基础。

29

常熟理工学院毕业设计(论文)

第六章 仿真与调试

6.1软件简介

6.1.1 Keil软件简介

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。这款软件提供了丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的是,Keil C51软件编译后生成的汇编代码,就能展现出生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

Keil软件中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,可载入Proteus仿真软件中的MCU中,进行功能仿真。

Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。应用Keil进行软件仿真开发的主要步骤为:1.编写源程序并保存;2.建立工程并添加源文件;3.设置工程;4.编译/汇编、连接,产生目标文件;5.程序调试。 6.1.2 Proteus ISIS简介

Proteus ISIS是英国Labcenter Electronics公司开发的电路分析与实物仿真软件。它由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,它运行于Windows操作系统上,用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。

该软件的特点是:

(1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。

(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、I2 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

(3)目前支持的单片机类型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12

30

基于51单片机和lcd1602的万年历设计 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9bvmt846oi4mn0g1lugq_9.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top