成功驱动5150用HT68F30

用了自己写的起动总线和停止总线,终于可以成功


// PROGRAM	: 4-17.c									      2011.0521
// FUNCTION	: I2C Master/Slave Mode Demo Program   By Steven
// Note		: Configuration Option Setting--
//			  SIM Function = Enable	
//void I2C_START(void);
//void I2C_STOP(void);
//void WriteByte(unsigned short);
//unsigned short ReadByte(void);
//void CheckACK(void);
//void PAUSEIIC(unsigned short);
//void I2C_INIT(void);
//void INIT_TVP5150(void);
//void IICWRITE_ADDRSSDATA(unsigned char addrss,unsigned char data);
//#pragma	rambank0						            //BIT Data Type Must in Bank 0
//bit		RxFlag,DeviceFlag;
//unsigned short RxData,TxData;	
#include	"HT68F30.h"
#include	"ht68f30iic.h"const unsigned char IICADDRSS=0XB8;//I2CSEL接做VD1_OUT7的话地址是0XB8,I2CSEL=0,地址是0XBAvoid I2C_INIT(void)
{_cp0c=0x08; _cp1c=0x08; //_acerl=0;		   //Disable CP0/CP1/ADCWIDEO_PWDN_C=0;//把PWN设置成为输出状态WIDEO_PWDN=0;//设置时钟频率WIDEO_RESET_C=0;//把复位端口设置成输出状态WIDEO_RESET=1; //低电平进行复位 置成1保证处在正常工作状态	
//	PWR_EN5150C=0;
//	PWR_EN5150=1;//电源供电给5150//SEG_Port=0; SEG_PortC=0;						//Clear & Config SEG_Port as O/P//ID_PortC=0xFF; ID_Pull=0xFF; 					//ID_Port as I/P & Enable Pull-up//FG_LED=0; FG_LEDC=0;							   //Clear FG_LED & Config as O/P//_sima=GetID()<<1;								   //Get ID from DIP SW//_simc0=0b11000000;								//Select I2C Slave Mode//_mf2e=1; _sime=1; _simen=1; _emi=1;		   //Enable Interrupt and SIM Function		
}
void INIT_TVP5150(void)
{	unsigned char data;
/*	unsigned int k;k=10;while(k--){		SCL=0; SDA=0;								   	//Set SCL=0, SDA=0//PAUSEIIC(10);_delay(10);SCL=1; SDA=1;								   	//Set SCL=0, SDA=0	//PAUSEIIC(10);_delay(10);}//I2C_INIT();//开始IIC前开始的初始化工作IICWRITE_ADDRSSDATA(0x03,0x8F);//2.	杂项控制寄存器k=10;SCLC=0;SDAC=0;while(k--){		SCL=0; SDA=0;								   	//Set SCL=0, SDA=0//PAUSEIIC(10);_delay(10);SCL=1; SDA=1;								   	//Set SCL=0, SDA=0	//PAUSEIIC(10);_delay(10);}data =IICREAD_ADDRSSDATA(0x03);//0x0D默认值是0x47	k=10;while(k--){		SCL=0; SDA=0;								   	//Set SCL=0, SDA=0//PAUSEIIC(10);_delay(10);SCL=1; SDA=1;								   	//Set SCL=0, SDA=0	//PAUSEIIC(10);_delay(10);}//if(data!=0)if(data==0x8F){Test_Pc6C=0;Test_Pc6=1;	_tmpc0=0;//取消PC5引脚的复用功能Test_Pc5C=0;  //如果从机应答的话把这个引脚电平拉高Test_Pc5=1;	}*/IICWRITE_ADDRSSDATA(0x03,0x8F);//2.	杂项控制寄存器IICWRITE_ADDRSSDATA(0x0D,0x40);//3.	输出和数据比率选择寄存器	}
void IICWRITE_ADDRSSDATA(unsigned char addrss,unsigned char data)
{I2C_START();WriteByte(IICADDRSS);CheckACK();I2C_START();WriteByte(addrss);	CheckACK();WriteByte(data);CheckACK();_delay(64);//5150要求有64us的延时I2C_STOP();
}
unsigned char IICREAD_ADDRSSDATA(unsigned char addrss)
{unsigned char data;I2C_START();WriteByte(0XB8);//写器件地址CheckACK();WriteByte(addrss);//写寄存器地址CheckACK();//_delay(64);I2C_STOP();I2C_START();WriteByte(0XB9);//写器件地址//_delay(64);CheckACK();data=ReadByte();//读	I2C_STOP();return data;
}
void I2C_START(void)
{	
/*	SCL=0; SDA=0;								   	//Set SCL=0, SDA=0SCLC=0;SDAC=0;								   	//SCL/SDA as Output Mode_delay(10);SCL=1; SDA=1; _delay(10);						//SCL=1, SDA=1, Delay 10usSDA=0; _delay(10);								//SDA=0, Delay 10us	SCL=0; _delay(10);									//SCL=0, Delay 10us	
*/	SCLC=0;SDAC=0;SCL=0;SDA=0;_delay(10);SCL=1;SDA=1;_delay(10);SDA=0;_delay(10);SCL=0;_delay(10);
}
void I2C_STOP(void)
{
/*	SCL=0; SDA=0;									   //Set SCL=0, SDA=0SDAC=0;										   	//SDA as Output Mode_delay(10);SCL=1; _delay(10);								//SCL=1, Delay 10usSDA=0; _delay(10);								//SDA=0, Delay 10usSDA=1; _delay(10);								//SDA=1, Delay 10us		SCL=0; _delay(10);								//SCL=0, Delay 10us	
*/	SCLC=0;SDAC=0;SCL=0;SDA=0;_delay(10);SCL=1;_delay(10);SDA=1;_delay(10);SCL=0;_delay(10);	
}
void WriteByte(unsigned short I2CData)
{	unsigned short temp=0b10000000;SCLC=0;SCL=0; SDAC=0;									   //SCL=0, SDAC as Outputdo{	SDA=I2CData & temp; _delay(10);	      //Set SDA State and delay 10usSCL=1; _delay(10);//_delay(10); SCL=0; _delay(10);  //Generate SCL Clocktemp>>=1;									   //Next Bit} while (temp!=0);
}
unsigned char ReadByte(void)
{	unsigned char I2CData=0, temp=0b10000000;SDAC=1;											   //Config SDAC as InputSCLC=0;SCL=0;do{	SCL=1; _delay(10);							//Set SCL=1, Delay 10usif(SDA) I2CData|=temp;						//Received DataSCL=0; _delay(10);							//Set SCL=0, Delay 10ustemp>>=1;									   //Next Bit} while (temp!=0);SDA=1; SDAC=0; _delay(10);						//Send NoACK SignalSCL=1; _delay(10); SCL=0;return I2CData;
}
void CheckACK(void)
{	unsigned short i=200;SDAC=0;SDA=1;// 先由主机把数据线拉高释放总线 再去检测数据线的电平高低SDAC=1;											   //Config SDAC as InputSCL=1; //_delay(10);								//Set SCL=1, Delay 10uswhile(i--){//Test_Pc4C=0;  //如果从机应答的话把这个引脚电平拉高//Test_Pc4=1;	if(!SDA) {//DeviceFlag=1; Test_Pc4C=0;  //如果从机应答的话把这个引脚电平拉高Test_Pc4=1;	//_tmpc0=0;//取消PC5引脚的复用功能//Test_Pc5C=0;  //如果从机应答的话把这个引脚电平拉高//Test_Pc5=1;break;}//Break if Device Respounding_delay(100);//200*100uS=2ms Waiting Time} SCL=0; _delay(10);								//Set SCL=0, Delay 10us
}
void PAUSEIIC(unsigned short i)
{	unsigned short j;for (j=0;j<i;j++) _delay(10000);				//Delay i*10mS
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware 虚拟机 Ubuntu 系统执行 ifconfig 命令 eth0没有IP地址(intet addr、Bcast、Mask)

可能的原因是&#xff0c;你安装了也安装了其他的虚拟机软件&#xff0c;比如&#xff1a;VirtualBox。我们打开 控制面板 > 网络和共享中心 > 更改适配器设置 &#xff0c; 你就可以打开控制面板/网络和Internet/网络连接界面&#xff1a; 直接禁用相应的网络即可&#…

sublime text3c语言编译运行,c – Sublime text 3 – 编译程序并在终端中运行

我正在使用Ubuntu 12.04,我想知道,是否有可能从终端自动运行c程序&#xff1f;当你不得不在构建控制台中使用它时,它真的很糟糕,因为有时候我会意外地创建无限循环,并且必须重新启动sublime文本再次工作.我正在使用Sublime文本3.解决方法:Sublime Text 3包含两个您可能感兴趣的…

5150晶振不起振

1、这是一个比较让我费解的问题、今天从相机输入了PAL信号、发现根本没有解码出来&#xff0c;然后检查检查&#xff0c;发现晶振不起振 解决中。。。 1、换一个板子&#xff0c;看是不是这个板子出了问题、 2、换一个起振电容 问题解决了、原因是TVP5150的PDN脚应该输入高电…

c语言us16 t,使用C ++将越南语字符编码为USASCII,ISO88591,UTF8,UTF16BE,UTF16LE,UTF16(示例代码)...

我已经编辑了我的帖子。当前&#xff0c;我正在尝试对用户的输入字符串进行编码&#xff0c;然后将其转换为每种编码格式。我可以使用Unicode完美地做到这一点&#xff0c;而且我认为输入String的格式为UTF-8。如果我的inputString是“ Hello”。但是&#xff0c;当我尝试输入“…

linux一些基础知识

linux面试题及答案 一&#xff0e;填空题&#xff1a; 1. 在Linux系统中&#xff0c;以 文件 方式访问设备 。 2. Linux内核引导时&#xff0c;从文件 /etc/fstab 中读取要加载的文件系统。 3. Linux文件系统中每个文件用 i节点来标识。 4. 全部磁盘块由四个部分组成&#xff…

这本轻小说真厉害 2016

傲娇御坂美琴成轻小说女王一姐 轻小说排名公布 到了年底,作为轻小说的粉丝就没有理由不关注“这本轻小说真厉害!”的相关评选吧?腾讯动漫此前曾经报道过《OVERLORD》以及《龙王的工作》获得榜首殊荣的消息。而近日,年度的最佳作品、最佳角色以及最佳插画师等奖项也已经公布,快…

IDEA初次使用Tomcat运行项目(如何添加加载项目到Tomcat)

IDEA中Tomcat设置说明 Tomcat最好使用干净的版本 不同的版本适配不同的JDK 设置Tomcat基本信息 加载项目&#xff08;war和war exploed模式简单说明&#xff09; 配置完项目后警告消失 应用后启动 选择相应的模式即可

回溯算法背包问题迭代c语言,回溯法解决0_1背包问题(迭代和递归)

问题&#xff1a;0/1背包问题例子:weight数组代表物品重量&#xff0c;value数组代表物品价值&#xff0c;M代表背包容量。背包是按单位价值递减的顺序排列的&#xff0c;即value[i]/weight[i]>value[i-1]/weight[i-1].const int weight[Max]{1,11,21,23,33,43,45,55};const…

ISE应用入门的一些问题

1、怎样添加IP 2、怎样用modelsim调用IP生成的仿真文件。 今天用modelsim仿真ISE生成的DDR IP IP核的地址&#xff1a;E:\FPGA\MIS607\Mis607B\update\CH09_DDR_TEST\MiS607B_DDR3_Test\DDR3_Test\ipcore_dir\mig_ddr3_control\example_design\sim\functional 所以要把modelsim…

linux模块加载和模块卸载时出现的问题

在编写驱动程序的时候有时候会出现这种情况&#xff0c;模块加载之后不能卸载或卸载之后不能在加载&#xff0c;cat /proc/devices 后发现设备还占用着设备号&#xff0c;这种情况下&#xff0c;再次加载驱动模块肯定不会成功&#xff0c;必须重新启动才可以解决。最近仔细看书…

IDEA中中文乱码问题解决方案

1.修改idea安装目录下的两个文件 C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.4\bin\idea.exe.vmoptions C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.4\bin\idea64.exe.vmoptions 在这两个文件下增加一行: -Dfile.encodingUTF-8 2.做此修改后,tomcat运行日志会…

linux 6.2 期末考试题,redhat6.2-linux考试试卷(带部分答案)

这个是初学redhat6.2的考试内容,带答案(实做的,水平有限,不完整答案)--------------------------------------------------------------------------------------------装 订 线-----------------------------------------------------------------------------------------广东…

ios几个重要方法

加载类到内存&#xff0c;程序刚启动的时候调用&#xff0c;调用在main函数之前 1.(void)load{} 初始化类&#xff0c;类第一次使用的时候调用一次 2.(void)initialize{ } 控制器的视图架构&#xff0c;设置控制器的根view&#xff0c;重写该方法后&#xff0c;以该方法为主&am…

C++中extern “C”含义深层探索

1.引言 C语言的创建初衷是“a better C”&#xff0c;但是这并不意味着C中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言&#xff0c;C保留了一部分过程式语言的特点&#xff08;被世人称为“不彻底地面向对象”&#xff09;&…

video4linux 安装,【精品博文】Video4linux 下视频编程的流程

最近一直在忙基金申报&#xff0c;今天终于顺利提交了&#xff0c;剩下的就看缘分啦。今天有时间写写Video4linux 下视频编程的流程。Video4linux(简称 V4L),是linux 中关于视频设备的内核驱动。现在已有Video4linux2&#xff0c;还未加入linux 内核&#xff0c;使用的时候要自…

TVP5150真正的驱动起来了

几个注意的地方&#xff1a; 1、驱动TVP5150所需要的是IIC来驱动、IIC的时序一定要搞清楚、还有IIC的读写时序、 刚开始的时候并尝试从里面读寄存器、没有成功、可能有些寄存器不能读、2、硬件一定要检查清楚&#xff0c;TVP5150用到的电源有3.3V 1.8V、用电压表测量好、3、检查…

intellij IDEA--- 报inspects a maven model for resolution problems

解决方法是&#xff1a; 第一种&#xff1a; 找到pom.xml 右击 --> Maven --> reImport 第二种方法&#xff1a; 第三种 <properties><junit.version>4.11</junit.version><spring.version>4.3.14.RELEASE</spring.version></prop…

spring AOP自定义注解方式实现日志管理

转&#xff1a;spring AOP自定义注解方式实现日志管理 今天继续实现AOP&#xff0c;到这里我个人认为是最灵活&#xff0c;可扩展的方式了&#xff0c;就拿日志管理来说&#xff0c;用Spring AOP 自定义注解形式实现日志管理。废话不多说&#xff0c;直接开始&#xff01;&…