ch452程序代码 2.docx
《ch452程序代码 2.docx》由会员分享,可在线阅读,更多相关《ch452程序代码 2.docx(8页珍藏版)》请在冰豆网上搜索。
![ch452程序代码 2.docx](https://file1.bdocx.com/fileroot1/2023-2/28/53a55340-a4f5-47d4-a2f5-bff507c62ad3/53a55340-a4f5-47d4-a2f5-bff507c62ad31.gif)
ch452程序代码2
Ch452程序代码
/*************************************************************************************/
/*FileName:
ch452.h*/
/*Function:
*/
/*---------------History--------------------------------------------------------------*/
/*Author|Date|Status|Description*/
/*wang|2011/8/04|create|*/
/*|||*/
/*************************************************************************************/
#ifndef_CH452_H
#define_CH452_H
//#ifndef_CH452A_H_
//#define_CH452A_H_
/*Definecommand*/
#defineCMD_SYSPARA0x68
/////definitonforsystemparametercommanddefault:
0
#defineDISP0x01//0:
disable1:
enable
#defineKEYB0x02//0:
disable1:
enable
#defineWDOG0x04//0:
close1:
open
#defineDPLR0x08//0:
lowlevel1:
highlevel
#defineSSPD0x10//0:
lowspeed1:
highspeed
#defineINTM0x20//0:
lowlevel1:
lowlevelpulse
#defineGPOE0x40//0:
allDIGasdriver1:
DIG6DIG7asGPIO
#defineCMD_DISPARA0x6A
/////definitonfordisplayparametercommanddefault:
0
#defineMODE0x80//0:
Nodecode1:
BCDdecode
//#defineLIMIT0x70//bit6~bit4rangefrom000to111
#defineINTENSITY0x0F//bit3~bit0rangefrom0000to1111
#defineCMD_DISPDAT0x70//加载字数据前八位
#defineCMD_GETKEY0x6E//键盘前八位
#defineCMD_ACKEN0x6E//2线接口应答前八位
/*Functionprototype*/
voidch452a_two_ack(void);
voidch452a_Init(void);
voidch452a_sendcmd(unsignedcharcmd,unsignedcharparadata);//写命令
unsignedcharch452a_getkey(void);//读取按键
unsignedcharCH452_ReadKeyboard();
#defineKEY_UP0x59
#defineKEY_DOWN0x58
#defineKEY_LEFT0x5B
#defineKEY_RIGHT0x5A
#defineKEY_SET0x48
#defineKEY_OK0x40
#endif
主程序代码:
/*************************************************************************************
*FileName:
ch452.c*
*Function:
*
*---------------History--------------------------------------------------------------*
*Author|Date|Status|Description*
*wang|2011/7/28|create|*
*|||*
*************************************************************************************/
#include"STC_NEW_8051.h"
#include"IIC.h"
#include"Ch452.h"
sbitSCL=P1^0;
sbitSDA=P1^1;
////////////////////////////////////////////////////////////////////////////////////////
//FileName:
ch452a_two_ack()//
//Function:
Init_ack//
/////////////////////////////////////////////////////////////////////////////////////
voidch452a_two_ack()
{
unsignedchari,wr_data;
wr_data=CMD_ACKEN&0xfe;
IIC_start();
/*startcondition*/
for(i=0;i<8;i++)
{
if(wr_data&0x80)//判断高位数据
SDA=1;
else
SDA=0;
wr_data<<=1;//让高位数据往左移
delays
(1);
SCL=1;//数据的写要在时钟为高电平时
delays(4);
SCL=0;
delays(5);
}
/*nineclock*/
SCL=0;
delays
(1);
SDA=1;
delays(4);
SCL=1;
delays(5);
/*senddata*/
for(i=0;i<8;i++)
{
SCL=0;
delays
(1);
SDA=0;
delays(4);
SCL=1;
delays(5);
}
IIC_stop();
}
////////////////////////////////////////////////////////////////////////////////////////
//FileName:
ch452a_Init()//
//Function:
Init//
/////////////////////////////////////////////////////////////////////////////////////
voidch452a_Init(void)
{
unsignedcharcmddata,cmdadr;
ch452a_two_ack();
cmddata=CMD_SYSPARA;//系统参数地址
cmdadr=DISP|KEYB&(~INTM)&(~DPLR);//系统参数数据
IIC_writedata(cmddata,&cmdadr,1);
cmddata=CMD_DISPARA;//显示参数地址
cmdadr=MODE;
IIC_writedata(cmddata,&cmdadr,1);
}
///////////////////////////////////////////////////////////////////
//FunctionName:
ch452a_sendcmd()
//Description:
sendcommandtoch452a
///////////////////////////////////////////////////////////////////
voidch452a_sendcmd(unsignedcharcmd,unsignedcharparadata)
{
unsignedcharcmddata,cmdadr;
cmddata=cmd;
cmdadr=paradata;
IIC_writedata(cmddata,&cmdadr,1);
}
///////////////////////////////////////////////////////////////////
//FunctionName:
ch452a_getkey()
//Description:
getkeyvaluefromch452a
///////////////////////////////////////////////////////////////////
unsignedcharch452a_getkey()
{
unsignedcharcmddata,keycode;
//unsignedchar*pData=&revdata;
cmddata=CMD_GETKEY|0x01;
keycode=IIC_readdata(cmddata);
returnkeycode;
}
/*unsignedcharCH452_ReadKeyboard()
{
unsignedcharrecvdata,cmddata;
unsignedcharack;
//uchar*pRecvData=&recvdata;
cmddata=CMD_GETKEY|0x01;
IIC_start();//启动
IIC_send(cmddata);//发送从机地址
ack=IIC_re_ack(ack);
if(ack==0)
{
recvdata=IIC_accept(cmddata);
IIC_wr_ack(0);//主机发送应答给从机
IIC_stop();
}
else
{
IIC_stop();//ack条件不满足终止发送数据
}
returnrecvdata;
}*/
/*voidch452_flash(unsignedcharcmd,unsignedcharparadata)
{
unsignedcharcmddata,cmdadr;
cmddata=0x;
cmdadr=paradata;
IIC_writedata(cmddata,&cmdadr,1);
}*/