STC单片机控制PCA9554A程序

2019-05-20来源: eefocus关键字:STC  单片机控制  PCA9554A

/****对PCA9554A操作时要特别注意的是在主函数写数据之前,一定要先用函数 PCA9554A_Config(0x00)写0x00,否则收不到数据****/

#include

#include


sbit SDA=P2^0;

sbit SCL=P2^1;

sbit beep=P2^3;


void Delay(unsigned int i)

{

    unsigned int j,k;

    for(j=i;j>0;j--)

    for(k=110;k>0;k--);

}


void NOP()

{

    _nop_();

    _nop_();

    _nop_();

    _nop_();

    _nop_();

}


void PCA9554A_Start()

{

    SDA=1;

    NOP();

    SCL=1;

    NOP();

 SDA=0;

    NOP();

    SCL=0;

    NOP();

}

/****停止****/

void PCA9554A_Stop()

{

    SDA=0;

    NOP();

    SCL=1;

    NOP();

    SDA=1;

    NOP();

}

/****写字节****/

void PCA9554A_Write_Byte(unsigned char dat)

{

    unsigned char i,temp;

 temp=dat;

    for(i=0;i<8;i++)

    {

        temp=temp<<1;

        SDA=CY;

        NOP();

        SCL=1;

        NOP();

        SCL=0;

        NOP();

      }

        SDA=0;

        NOP();

        SCL=1;

        NOP();

        SCL=0;

        NOP();       

}


void PCA9554A_Config(unsigned char date )

{

 PCA9554A_Start();

Delay(20);

    PCA9554A_Write_Byte(0x74);  //设备地址

 Delay(20); 

 PCA9554A_Write_Byte(0x03);

 Delay(20); 

    PCA9554A_Write_Byte(date);

Delay(20);

    PCA9554A_Stop();

}


/****写函数****/

void PCA9554A_Write(unsigned char IO_date)

{

    PCA9554A_Start();

Delay(20);

    PCA9554A_Write_Byte(0x74);  //设备地址

Delay(20); 

    PCA9554A_Write_Byte(0x01);  //写command byte,0x01(output port register)

Delay(20);

    PCA9554A_Write_Byte(IO_date);

Delay(20);

    PCA9554A_Stop();

}


void main()

{

 PCA9554A_Config(0x00); //特别注意:若无此语句,则不会执行

 Delay(2000);


  PCA9554A_Write(0xfe);   //P1~P7口的LED亮,P0口LED灭

 Delay(2000);


         PCA9554A_Write(0x01); //P1~P7口的LED灭,P0口LED亮

 Delay(2000);

}




硬件连接:A0,A2接GND,A1接VCC,因此地址为0111 0100,即0x74,




关键字:STC  单片机控制  PCA9554A 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic462270.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:ADC采样芯片ADS7822使用方法
下一篇:STC单片机控制BH1750测量光照强度程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

8051单片机(STC89C52)之改变蜂鸣器发声频率
由于定时器0的中断处理程序为50ms触发一次, 故改变tcount归零时的临界值即可改变蜂鸣器发声的频率. 当tcount = 40 进行电平翻转时, 发出的声音类似于公交车转向灯开启时的效果声音.当tcount = 10 进行电平翻转时, 发出的声音类似于倒计时秒表的哒哒声.当tcount = 5   进行电平翻转时, 发出的声音比tcount = 10进行翻转时更加急促.#include <STC89C5xRC.H>int tcount = 0;sbit beep = P1 ^ 5;// P1 xor 0000 0101void TO_EXT() interrupt 1//50ms触发
发表于 2020-03-19
STC89C52单片机用两个定时器控制蜂鸣器的频率和输出时间间隔
题目同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,1k(hz)的方波。遇到的问题出现定时器紊乱的现象,这个时候需要把T1定时器的优先级设为高于T0优先级具体代码如下:#include <reg52.h>typedef unsigned int unint;typedef unsigned char uchar;sbit beep = P1^5;sbit led = P2^0;uchar t1,bphz,times;uchar code table[]={ 500,300,200,100,50,25,12,10};vo
发表于 2020-03-17
智能厚度测量系统设计
本课题所研究的智能厚度计是基于单片机的成套解决方案,由主控制器、测量传感器、AD转换模块、液晶显示模块以及相应配套硬件组成。通过对测量传感器的运用,对厚度参数进行精确地数据采集,然后通过AD转换模块将测量传感器采集到的模拟信号转换成数字信号,再通过主控制器对AD转换模块输出的数字信号进行相应的数据分析处理,最后通过液晶显示模块对厚度参数进行直观地显示,以完成整个系统的功能需求。1 主控制器电路设计STC89C52单片机最小系统具有体积小、质量轻、功能强、功耗低、性价比高等特点。STC89C52单片机最小系统由芯片、系统时钟、I/O端口设备及复位电路等构成。STC89C52芯片内部结构框图单片机最小系统电路2 电阻式位移传感器
发表于 2020-03-09
智能厚度测量系统设计
STC8A8K64单片机关于AT24C04基本读写操作
实验:AT24C04基本读写操作步骤及现象:在下载程序前,选择stc-isp的IRC频率:12MHz。程序下载完成后,在串口助手界面,HEX模式下,选择波特率9600,然后点击“打开串口”按钮。这时按独立按键1在接收缓冲区打印出刚写入的16个数据。*数据帧格式I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。在总线的一次
发表于 2020-03-05
STC8A8K64单片机关于AT24C04基本读写操作
简易STC15F104E单片机定时报警器制作
非常时期,孩子不能上学,大人没在家,每天早上都睡得十几点,有点过份,所以作个简易定时报警器作闹钟用,主要是配合小米智能插座的网络定时功能用,只是自己的小制作,供有需求的人参考用;制作出来的实物图如下:功能:1.上电时即启动报警;2.定时30S后自动停止;3.报警过程中如有按键按下即停止报警;硬件:1.P32按一个按键,作为取消报警用;2.P35接蜂鸣器,作为报警声;/*/******************************************************************************-------------------------STC15F104E定时报警器
发表于 2020-03-04
简易STC15F104E单片机定时报警器制作
基于STC12C5408AD的记忆示波器 (1)
电路,将一些物理过程,如温度、湿度、压力等等,经过相应的传感器,将非电量转换成电压量,再经调理电路处理后送入STC单片机进行A/D转换,转换成数字量后再由串口发送到PC机,由PC机进行存储和图形显示,从而构成了记忆示波器。  2 STC12C5408AD简介  STC12C5408AD是新一代增强型8051单片机,速度快,集成度高,电压范围宽(3.8 V~5.5 V),指令系统和MCS-51系列完全兼容。其内部还有8 KBFlash程序存储器,512字节RAM、2 KB EEPROM、8通道10位ADC、4路PWM以及硬件看门狗(WDT)等宝贵资源,性价比极高。它的23个I/O口、内部电源供电系统、时钟电路、复位电路以及看门狗电路都经过特殊
发表于 2020-03-02
基于STC12C5408AD的记忆示波器 (1)
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved