常熟理工学院毕业设计(论文)
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
相关推荐: