藍橋杯CT107D之PCF8591

2021-10-06 06:31:35 字數 2358 閱讀 4490

#include

"reg52.h"

#include

"intrins.h"

#include

"iic.h"

//匯流排引腳定義

sbit sda = p2^1;

/* 資料線 */

sbit scl = p2^0;

/* 時鐘線 */

void

iic_delay

(unsigned

char i)

while

(i--);

}//匯流排啟動條件

void

iic_start

(void

)//匯流排停止條件

void

iic_stop

(void

)//傳送應答

void

iic_sendack

(bit ackbit)

//等待應答

bit iic_waitack

(void

)//通過i2c匯流排傳送資料

void

iic_sendbyte

(unsigned

char byt)

scl =0;

}//從i2c匯流排上接收資料

unsigned

char

iic_recbyte

(void

)return da;

}

//pcf8591啟動dac

void

write_pcf8591

(unsigned

char cmd_byte,

unsigned

char data)

//pcf8591啟動adc

unsigned

char

read_pcf8591

(unsigned

char cmd_byte)

#include

"reg52.h"

#include

"smg.h"

unsigned

char c[n]

;unsigned

char

smg_chai

(unsigned

int t)

c[i]

=t;}

return i;

}

#include

"reg52.h"

#include

"iic.h"

#include

"smg.h"

#define fosc 11059200l

#define t1ms (65536-fosc/1000)

//1t模式

sfr auxr =

0x8e

;sfr p4 =

0xc0

;//定義p4口

sbit dac_out = p3^4;

sbit led_1 = p0^0;

sbit n_relay = p0^4;

sbit n_buzz = p0^6;

unsigned

char code duan=

;//共陰極段選0~9

unsigned

char code wei=

;//共陰極位選 1--8

unsigned

char temp,s,i1;

void

t0init()

;void

main()

// if(!dac_out)

// }}

void

t0init()

/* timer0 interrupt routine */

void

tm0_isr

() interrupt 1

else

s=0; p0=

0xff

;//關閉下段選,達到消隱的目的。

p2 =

0xe0

; p0=

~duan[c[s]

]; p2 =

0x00

; p0=

0x00

;//進入位選前先把p0清零,禁止選通數碼管。

p2 =

0xc0

; p0=

~wei[

7-s]

; p2 =

0x00

; p0=

0xff;if

(count--==0

)}

CT107D藍橋杯EEPROM使用(8)

今天我給大家講一下eeprom的使用,該記憶體採用的是iic通訊,所有我們要有乙個iic驅動程式,或者自己寫乙個,我前面寫過乙個,我這裡就不寫了。那麼下面我寫乙個開機計數的程式吧,這裡需要顯示出來。這裡我選擇數碼管顯示,數碼管驅動前面也有,我就直接用了 unsigned char read eepr...

藍橋杯CT107D之ds18b20

單匯流排延時函式 單匯流排延時函式,此處延時函式很重要,根據自己的時鐘頻率而定 void delay onewire unsigned int t y5指令集,fosc 11059200l,軟體延時15us t 1 單匯流排寫時序 通過單匯流排向ds18b20寫乙個位元組 void write ds...

藍橋杯CT107D初學之 調通數碼管

大致思路 開啟總硬體控制器 開啟子硬體 對子硬體操作實現功能 通過74hc138 控制 74hc02,74hc02 控制著led 蜂鳴器 數碼管 74hc573 控制選通可以選擇功能。以實現數碼管com選擇為例 wr通過跳線可以接地,低電平0.控制數碼管的 74hc573 功能表 即控制y6 wr使...