#define SCLK_Clr() GPIO_ResetBits(GPIOD, GPIO_PIN_1)//SDA IIC接口的時鐘信號
#define SCLK_Set() GPIO_SetBits(GPIOD, GPIO_PIN_1)
#define SDIN_Clr() GPIO_ResetBits(GPIOD, GPIO_PIN_2)//SCL IIC接口的數據信號
#define SDIN_Set() GPIO_SetBits(GPIOD, GPIO_PIN_2)
u8 buf[7];
void SDA_IN(u8 in)
{
if(in)
GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_Mode_In_PU_IT ); //輸入
else
GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_Mode_Out_OD_HiZ_Slow); //輸出
}
void delay_u()
{
while(--10);
}
/**************************************************
**************************************************/
void Start()
{
SCLK_Set();
SDIN_Set();
delay_u();
SDIN_Clr();
delay_u();
SCLK_Clr();
}
/**********************************************
//IIC Stop
**********************************************/
void Stop()
{
SCLK_Clr();
delay_u();
SDIN_Clr();
delay_u();
SCLK_Set();
delay_u();
SDIN_Set();
delay_u();
}
void WriteACK(u8 ack)
{
if(ack) SDIN_Set();
else SDIN_Clr();
delay_u();
SCLK_Set();
delay_u();
SCLK_Clr();
}
void WaitACK()
{
u8 errtime;
errtime = 0;
SDA_IN(1);
SCLK_Set();
delay_u();
while(SDA_READ)
{ errtime++;
if(errtime==20)
{Stop();
break;}
}
SCLK_Clr();
SDA_IN(0);
}
/**********************************************
// IIC Write byte
**********************************************/
void writebyte(u8 IIC_Byte)
{
u8 i;
u8 m,da;
da=IIC_Byte;
SDA_IN(0);
SCLK_Clr();
for(i=0;i<8;i++)
{
m=da;
m=m&0x80;
if(m==0x80)
{SDIN_Set();}
else SDIN_Clr();
da=da<<1;
SCLK_Set();
delay_u();
SCLK_Clr();
}
WaitACK(); //關鍵問題
}
u8 Readbyte()
{
u8 i,bytedata;
SDA_IN(1);
delay_u();
SDIN_Set();
for(i=0;i<8;i++)
{
SCLK_Set();
bytedata<<=1;
if(SDA_READ)
{
bytedata++;
}
SCLK_Clr();
delay_u();
}
SDA_IN(0);
return(bytedata);
}
/**********************************************
// IIC Write Command
**********************************************/
void writeData(u8 address,u8 mdata)
{
Start();
writebyte(0xa2); /*寫命令*/
writebyte(address); /*寫地址*/
writebyte(mdata); /*寫數據*/
Stop();
}
/********************************************
輸入數據<-pcf8563
********************************************/
u8 ReadData(u8 address) /*單字節*/
{ u8 rdata =0;
Start();
writebyte(0xa2); /*寫命令*/
writebyte(address); /*寫地址*/
Start();
writebyte(0xa3); /*讀命令*/
rdata=Readbyte();
WriteACK(1);
Stop();
return(rdata);
}
void ReadData1(u8 address,u8 count,u8 * buff) /*多字節*/
{
u8 i;
Start();
writebyte(0xa2); /*寫命令*/
writebyte(address); /*寫地址*/
Start();
writebyte(0xa3); /*讀命令*/
for(i=0;i buff[i]=Readbyte(); if(i WriteACK(1); Stop(); } /******************************** 讀入時間到內部緩沖區 *********************************/ void P8563_Read(void) { buf[0]=ReadData(0x02); buf[1]=ReadData(0x03); buf[2]=ReadData(0x04); buf[3]=ReadData(0x05); buf[4]=ReadData(0x06); buf[5]=ReadData(0x07); buf[6]=ReadData(0x08); Stop(); buf[0]=buf[0]&0x7F;//秒 buf[1]=buf[1]&0x7F;//分 buf[2]=buf[2]&0x3F;//時 buf[3]=buf[3]&0x3F;//日 buf[4]=buf[4]&0x07;//星期 buf[5]=buf[5]&0x1F;//月 delay_u(); buf[0]=HexToBcd(buf[0]); buf[1]=HexToBcd(buf[1]); buf[2]=HexToBcd(buf[2]); buf[3]=HexToBcd(buf[3]); buf[5]=HexToBcd(buf[5]); buf[6]=HexToBcd(buf[6]); } /******************* 寫時間修改值 *******************/ void RTC_Set_Time(u8 sec,u8 min,u8 hour,u8 day,u8 week,u8 month,u8 year) { sec=BcdToHex(sec); min=BcdToHex(min); hour=BcdToHex(hour); day=BcdToHex(day); week=week; month=BcdToHex(month); year=BcdToHex(year); delay_u(); writeData(0x02,sec); writeData(0x03,min); writeData(0x04,hour); writeData(0x05,day); writeData(0x06,week); writeData(0x07,month); writeData(0x08,year); } /**************************** P8563的初始化 ********************************/ void P8563_init(void) { writeData(0x00,0x20); //時鐘停止 RTC_Set_Time(30,12,12,1,5,12,17); //秒,分,時,天,星期,月,年 delay_u(); writeData(0x00,0x00); //時鐘開始 } /********************************************************************/
上一篇:STM8L051F3_01_GPIO應用
下一篇:STM8L 151G6U6 驅動RW1820溫度傳感器
推薦閱讀
史海拾趣
為了進一步擴大市場份額,GREEGOO公司積極實施全球化戰略。公司首先在歐洲市場設立了分支機構,通過參加國際展會、建立銷售渠道等方式,成功打入歐洲市場。隨后,GREEGOO又陸續在北美、亞洲等地設立分支機構,形成了覆蓋全球的營銷網絡。在全球化布局的過程中,GREEGOO不僅注重產品的本地化適應和品牌建設,還積極與當地企業開展合作,共同開拓新市場。
面對日益激烈的全球競爭,First Switchtech公司(或類似公司)制定了積極的國際化戰略。公司首先在歐洲市場設立了分支機構,通過深入了解當地市場需求和文化背景,成功推出了符合歐洲標準的電子開關產品。隨后,公司進一步拓展北美、亞洲等市場,通過本地化生產和營銷策略,實現了全球市場的覆蓋。這一過程中,公司不僅提升了品牌知名度,還積累了豐富的國際市場運營經驗。
澤耀科技(Ashining)深知品質是企業生存和發展的關鍵。因此,公司始終將品質管理放在首位,從原材料采購到生產流程控制,再到產品出廠檢驗,每一個環節都嚴格把控品質。同時,澤耀科技還注重品牌建設,通過提升產品形象和服務水平,逐漸樹立了良好的品牌形象。
在市場拓展方面,友盟(AP)公司也展現出了強大的實力。公司通過線上線下相結合的方式,積極開展市場推廣活動,擴大品牌知名度和影響力。同時,友盟還積極參與行業交流和合作,與業界同行共同探討行業發展趨勢和未來發展方向。這些努力不僅提升了友盟在行業內的地位,也為其未來的發展奠定了堅實的基礎。
進入21世紀,隨著全球電子產業的快速發展,EVERLIGHT迎來了市場擴張的機遇。公司不僅鞏固了在臺灣市場的領先地位,還積極開拓國際市場。通過與國際知名品牌的合作,EVERLIGHT的產品逐漸進入全球市場,贏得了廣泛認可。同時,公司還加強了對新興市場的開拓,如中國大陸、東南亞等地區,為公司的持續發展注入了新的動力。
為了進一步擴大市場份額,Cygnal決定進入國際市場。公司通過參加國際電子展、與海外代理商合作等方式,積極推廣其產品和服務。同時,Cygnal還針對不同地區的市場需求進行了產品定制和優化,使其產品更加符合當地消費者的需求。這些努力使Cygnal在國際市場上取得了顯著的成功。
5.1半導體三極管的基本結構 5.1.1 三極管內部結構 半導體二極管內部只有一個PN結,若在半導體二極管P型半導體的旁邊,再加上一塊N型半導體如圖5-1(a)所示。由圖5-1(a)可見,這種結構的器件內部有兩個PN結,且N型半導體和P型半導體交錯排列 ...… 查看全部問答∨ |
變頻器是運動控制系統中的功率變換器。當今的運動控制系統包含多種學科的技術領域,總的發展趨勢是:驅動的交流化,功率變換器的高頻化,控制的數字化、智能化和網絡化。因此,變頻器作為系統的重要功率變換部件,提供可控的高性能變壓變頻的交流電 ...… 查看全部問答∨ |
#include #include #include #include #include #include class MyWidget:public QWidget { public: MyWidget(); protected: void paintEvent(QPaintEvent *event); QTimer *timer; }; MyWidget::MyWidget() { timer=new QTi ...… 查看全部問答∨ |
|
大家好,我仿照北京奧爾斯的pxa270開發板做了一個板子。按照他們的開發板,電源沒有用任何電源管理芯片,全都是LDO直接恒定輸出各個電壓(不用PWR_EN和SYS_EN控制),他的開發板能跑,按道理來說這種設計應該沒有問題。 現在我的板子能JTAG燒寫boo ...… 查看全部問答∨ |
|
我用PIC18F248做CPU想與PC機實現RS232通訊,現在PIC18F248發出去的數據是對的, 但是收不到PC機發過來的數據! 我用了MAX232A做PC機與PIC18F248的接口,現在MAX232A不管是否接收PC機RS232的數據 都只發給PIC18F248一個連續的5V電平,我也用示波器看了 ...… 查看全部問答∨ |
#include<LPC21xx.h> #define uint8 unsigned char#define uint32 unsigned intvoid Timer0_ISR(void) __attribute__ ((interrupt));uint8 num; void DelayNs(uint32 dly){ uint32 i; for(;dly>0;dly--) &nbs ...… 查看全部問答∨ |
你好,我使用的是stm32,外圍帶mcp2551,做為節點的時候,通訊一般都是沒有問題的,可以接收和發送。接收是采用中斷方式。 但是目前遇到一個問題,整個總線有5個節點,一個是監聽的,方便pc得到信息。 我使用STM32的can來代替一個節點進行數 ...… 查看全部問答∨ |
因為9B96有Port J,可是Startup.s里的中斷向量表里沒有Port J的“IntDefaultHandler”,所以進不去中斷。如果誰有麻煩給我一份啊。謝謝先。 zzgezi@126.com. … 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 將低功耗設計進行到底——評論、轉發贏大禮!
- 芯幣競拍:感恩教師節專場
- Keysight示波器主題月有獎系列活動之 注冊大獎天天抽 搶樓踩中亦有獎
- Microchip有獎直播:VectorBlox™ SDK 報名中
- 有獎直播|ADI 慣性MEMS應用那些事
- 借助 Microchip 生態系統中的 PIC® 和 AVR® 單片機開啟嵌入式到云端之旅 系列在線研討會
- 帶你零起點入門STM32(專為嵌入式應用而開發的內核)
- 福祿克首款熱成像萬用表Fluke-279FC 即將上市!填寫問卷贏好禮嘍!
- EEWorld Datasheet 伴你同行!快來領取200芯積分福利啦~
- 泰克福袋:示伴功倍,萬能福袋派送中