智能非接触式体温计的毕业设计(8)

2019-03-11 15:16

tempL=ReadByte(); bit_out=0; tempH=ReadByte(); bit_out=1; err=ReadByte(); stop();

//读数据低字节

//读数据高字节

//读错误信息码 //停止条件

return(tempH*256+tempL);}

4.2 显示模块设计

对液晶显示的编程是向DDRAM中写数据。在写DDRAM数据之前,需要先清除RAM,且左屏和右屏要分别进行清除。方法是向RAM的所有单元写入0值。

LCD12864液晶显示的控制驱动器的指令系统为: (1)显示开关控制(DISPLAY ON/OFF) 代码 形式 R/W 0 D/I 0 DB7 0 DB6 0 DB5 1 DB4 1 DB3 1 DB2 1 DB1 1 DB0 1 D=1:开显示(DISPLAY ON),即显示器可以进行各种显示操作 ; D=0:关显示(DISPLAY OFF),即不能对显示器进行各种显示操作 ; (2)设置显示起始行(DISPLAY START LINE) 代码 形式 R/W 0 D/I 0 DB7 1 DB6 1 DB5 A5 DB4 A4 DB3 A3 DB2 A2 DB1 A1 DB0 A0 该指令设置了对应液晶屏一行的显示RAM的行号。有规律地改变显示起始行,可以使LCD实现显示滚屏的效果。

(3)设置页地址(SET PAGE“X ADDRESS”) 代码 形式 R/W 0 D/I 0 DB7 1 DB6 0 DB5 1 DB4 1 DB3 1 DB2 A2 DB1 A1 DB0 A0 显示RAM共64行,分8页,每页8行。页地址就是DDRAM的行地址,A2-A0表示0-7页。页地址由本指令或RST信号改变,复位后页地址为0,读写数据对地址没有影响。

(4)设置Y地址(SET Y ADDRESS) 代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 第28页 共58页

形式 0 0 0 1 A5 A4 A3 A2 A1 A0 此指令的作用是将A5-A0送入Y地址计数器,作为DDRAM的Y地址指针。在对DDRA M进行读写操作后,Y地址指针自动加1,指向下一个DDRAM单元。

(5)读状态(STATUS READ) 代码 R/W 形式 1 D/I 0 DB7 DB6 DB5 DB4 DB3 0 DB2 0 DB1 0 DB0 0 BUSY 0 ON/OFF RET 该指令用来查询液晶显示模块内部控制器的状态。当R/W=1,D/I=0时,在E信号为“H”的作用下,状态分别输出到数据总线(DB7-DB0)的相应位。各参量的含义如下:

BUSY:BUSY=1,内部正在进行操作,BUSY=0,空闲状态。 ON/OFF:ON/OFF=1,表示显示打开,ON/OFF=0,表示显示关闭。

RESET:RESET=1表示内部正在初始化,此时组件不接受任何指令和数据。在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作。

(6)写显示数据(WRITE DISPLAY DATE) 代码 形式 R/W 0 D/I 1 DB7 D7 DB6 D6 DB5 D5 DB4 D4 DB3 D3 DB2 D2 DB1 D1 DB0 D0 D7-D0为显示数据,此指令把D7-D0写入相应的DDRAM单元,DDRAM是存储图形显示数据的,写指令执行后Y地址指针自动加1,D7-D0位数据为1表示显示,数据为0表示不显示。写数据到DDRAM前要先执行“设置页地址”及“设置列地址”命令。

(7)读显示数据(READ DISPLAY DATE) 代码 形式 R/W 1 D/I 1 DB7 D7 DB6 D6 DB5 D5 DB4 D4 DB3 D3 DB2 D2 DB1 D1 DB0 D0 读、写数据指令每执行完一次读、写操作,列地址就自动加1。需要注意的是,进行读操作之前,必须有一次空读操作,再读才会读出所要读的单元中的数据。 液晶显示器的编程流程如图4.3所示:系统首先对LCD12864模块进行初始化操作,在对系统上电时首先调用开机显示子程序,延时大约30秒后,对LCD12864进行清屏操作,之后进行LCD写数据操作。

第29页 共58页

开始系统初始化清左屏RAM清右屏RAM写LCD左屏数据写LCD右屏数据左右屏开显示

图4.3 LCD液晶显示流程图

#define Disp_On 0x3f //宏定义 显示开指令 #define Disp_Off 0x3e // 宏宏定义 显示关指令 #define Col_Add 0x40 // 定位到第0列指令 #define Page_Add 0xb8 // 定位到第0页指令 #define Start_Line 0xc0 //即设置显示起始行为第0行 void delay(unsigned int t) {unsigned int i,j; for(i=0;i

void write_command(unsigned char cmdcode) { RS = 0; RW = 0; P0 = cmdcode; delay(0); E = 1;

第30页 共58页

//延时子程序

//写入指令数据到LCD

delay(0); E = 0; }

void write_data(unsigned char Dispdata) //写入字符显示数据到LCD { RS = 1; RW = 0; P0 = Dispdata; delay(0); E = 1; delay(0); E = 0;}

4.3 语音模块设计

用ISD4004实现系统录放音,系统录音分成8段,可以提供8个提示语。 录音时,按住RUN键,LED点亮开始录音,松开RUN即可停止录音再次按下RUN键,LED点亮开始录第二段音,依次类推,直到芯片溢出,按stop键芯片复位;放音时,按一下RUN键,即播放一段语音。按stop键芯片复位。系统流程图如图4.4所示,上电时,首先对ISD初始化,之后判断是否人工按键,若有则判断是录音还是放音。

开始初始化N按键是否按下Y判断按键值放音录音结束

4.4 ISD4004语音模块流程图

第31页 共58页

以下是ISD4004在其主函数中的程序: void main(void) {uchar i;

P0=P1=P2=P3=0xff; IP=0x01; IE=0X81;

// 初始化

//INT0高优先级

//INT0开中断,CUP开中断 //11010001 总清除命令 //读状态字 直到清除完成 //读状态字 最高位

COM=0xd1; do{ACC=COM;} while(clflag==1);

COM=0x34; //时钟分频 20分频 while(1) {ISD_PR();

//手动对ISD录放音

//有中断产生

if(int0_flag==1)

int0_flag=0;}} //标志位清零

4.4 时钟模块设计

系统主流程图如图4.5所示,首先对DS1302进行初始化操作,然后读取DS1302子程序,并在LCD上显示。用循环调用按键处理子程序,检测是否需要调节时间。程序在定时器1中断服务程序中,定时读取DS1302的时间和日期并送液晶显示。

开始初始化读DS1302在LCD上显示按键处理子程序

图4.5 DS1302主流程图

第32页 共58页


智能非接触式体温计的毕业设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:对王庄煤矿巷道小煤柱支护的稳定性研究

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: