欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:藍(lán)橋杯學(xué)習(xí)筆記(二)

柚子快報激活碼778899分享:藍(lán)橋杯學(xué)習(xí)筆記(二)

http://yzkb.51969.com/

文章目錄

八、PWM脈寬調(diào)制基本概念

九、串口通信原理SCON寄存器

任務(wù)1任務(wù)2

十、IO擴(kuò)展與存儲器映射擴(kuò)展十一、DS18B20溫度傳感器基礎(chǔ)知識完成室溫傳感

十二、DS1302十三、NE555定時器十四、PCF8591十五、AT24C02十六、超聲波傳感器

八、PWM脈寬調(diào)制

任務(wù):在CT107D單片機(jī)綜合訓(xùn)練平臺上,利用PWM脈寬信號實現(xiàn)獨(dú)立按鍵S7對L1指示燈亮度變化的控制。 具體要求如下: 1.PWM脈寬信號的頻率為100Hz。 2.系統(tǒng)上電后L1指示燈處在熄滅狀態(tài)。 3.L1指示燈有4種亮度模式,分別是完全熄滅、10%的亮度、 50%的亮度和90%的亮度。 4.按下S7按鍵,循環(huán)切換L1指示燈的四種亮度模式。

基本概念

脈沖寬度調(diào)制:是利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制的一種非常有效的技術(shù)??梢酝ㄟ^改變脈沖列的周期進(jìn)行調(diào)頻,改變脈沖的寬度或占空比進(jìn)行調(diào)壓。(采用適當(dāng)控制方法可使電壓與頻率協(xié)調(diào)變化) 占空比是指在一個脈沖循環(huán)內(nèi),通電時間相對于總時間所占的比例。占空比為30%,則接高電平時間占30%,低電平占70%。 實現(xiàn):

#include "reg52.h"

sbit L1 = P0^0;

sbit S7 = P3^0;

void SelectHC573()

{

P2 = (P2 & 0x1f) |0x80; //LED

}

unsigned char count = 0; //頻率

unsigned char pwm_duty = 0; //占空比

void InitTimer0()

{

TMOD = 0x01;

TH0 = (65535 - 100) / 256;

TL0 = (65535 - 100) % 256;

ET0 = 1;

EA = 1;

}

void ServiceTimer0() interrupt 1

{

TH0 = (65535 - 100) / 256;

TL0 = (65535 - 100) % 256;

count++;

if(count == pwm_duty) //計時達(dá)到占空比則由低電平變?yōu)楦唠娖?/p>

{

L1 = 1;

}

else if(count == 100) //頻率達(dá)到100

{

L1 = 0;

count = 0;

}

}

void Delay(unsigned int t)

{

while(t--);

}

unsigned char stat = 0; //狀態(tài)參數(shù)

void ScanKeys()

{

if(S7 == 0)

{

Delay(100);

if(S7==0)

{

switch(stat)

{

case 0: //10亮度

L1 = 0;

TR0 = 1;

pwm_duty = 10;

stat = 1;

break;

case 1:

pwm_duty = 50; //50

stat = 2;

break;

case 2:

pwm_duty = 90; //90

stat = 3;

break;

case 3:

L1 = 1; //關(guān)燈

TR0 = 0;

stat = 0;

break;

}

while(S7 == 0); //使按鍵靈敏

}

}

}

void main()

{

SelectHC573();

L1 = 0; //剛上電L1熄滅

InitTimer0();

while(1)

{

ScanKeys();

}

}

九、串口通信

原理

微控制器與外部設(shè)備的數(shù)據(jù)通信,根據(jù)連線結(jié)構(gòu)和傳送方式的不同,可以分為兩種: 并行通信:指數(shù)據(jù)的各位同時發(fā)送或接收,每個數(shù)據(jù)位使用一條導(dǎo)線。 串行通信:指數(shù)據(jù)一位接一位地順序發(fā)送或接收。 串行通信有°SPL、IC、UART等多種,最常見最通用的是指UART,大多數(shù)情況下,串口通信指的就是UART。 串行通信的制式有:單工、半雙工、全雙工三種。 RS485總線是半雙工的通信制式。 串行通信的主要方式有兩種:同步和異步。 同步串行通信:需要使用同一個時鐘,以數(shù)據(jù)塊為單位傳送數(shù)據(jù)。 異步串行通信:每個設(shè)備都有自己的時鐘信號,通信中雙方的波特率要保持一致,以字符為單位進(jìn)行數(shù)據(jù)幀傳送,一次傳送一個幀。 波特率:串口每秒鐘傳輸?shù)奈粩?shù)。 在51單片機(jī)的串口通信中,模式1與模式3的波特率是可變的,取決于定時器1的溢出率。 (定時器每溢出一次就發(fā)送一次數(shù)據(jù)) 通常使用定時器1的工作模式2(8位自動重裝)來產(chǎn)生波特率。(不用改計數(shù)初值) TL1作為脈沖計數(shù)寄存器,TH1作為自動重裝寄存器,當(dāng)計數(shù)達(dá)到最大值溢出時,TH1的值會自動裝到TL1中。 波特率的計算公式// 波特率=(2^SMoD / 32)×T1的溢出率 SMOD=0時,TH1參數(shù)=256 - fosc / 12 / 32 / 波特率 SMOD=1時,TH1參數(shù)=256 - fosc / 12 / 16 / 波特率 (翻倍) 12M晶振或11.0592M晶振的情況下,要產(chǎn)生9600BPS的波特率, SMOD=0時,參數(shù)為0xfd; SMOD=1時,參數(shù)為0xfa。

下面以UART口為例介紹串口數(shù)據(jù)發(fā)送接收。 串行口中有兩個緩沖寄存器SBUF,一個是發(fā)送寄存器,一個是接收寄存器,在物理結(jié)構(gòu)上是完全獨(dú)立的。它們都是字節(jié)尋址的寄存器,字節(jié)地址均為99H。 這個重疊的地址靠讀/寫指令區(qū)分: 串行發(fā)送時,CPU向SBUF寫入數(shù)據(jù),此時99H表示發(fā)送緩存SBUF。 串行接收時,CPU從SBUF讀出數(shù)據(jù),此時99H表示接收緩存SBUF。 數(shù)據(jù)發(fā)送,把數(shù)據(jù)扔進(jìn)SBUF后,內(nèi)核會自動將數(shù)據(jù)發(fā)送出去,內(nèi)容發(fā)生完成后,會將TI標(biāo)志位置1. 發(fā)送數(shù)據(jù)程序:SBUF=數(shù)據(jù)/變量; 如:SBUF=0x58; 數(shù)據(jù)接收,內(nèi)核從串口接收到一個完整的數(shù)據(jù)后,會將RI標(biāo)志位置1,用戶用SBUF直接讀取即可。 接收數(shù)據(jù)程序:變量=SBUF; 如:dat=SBUF;(實際上就是賦值)

SCON寄存器

最常用的是模式1,SM0、SM1最常用是”01“,RB8、TB8一般在奇偶校驗使用,不用則輸入0即可。 異步8位UART并且允許接收:SCON=0x50;(大多數(shù)時候SCON直接輸這個就行 ) 對于IAP15F2K61S2單片機(jī),你還要對輔助寄存器AUXR(0x8e)進(jìn)行設(shè)置。

任務(wù)1

任務(wù)1:在CT107D單片機(jī)綜合訓(xùn)練平臺上,利用51單片機(jī)的串行接口與上位機(jī)建 立傳輸信道進(jìn)行數(shù)據(jù)的收發(fā)。采用8位的UART模式,即模式1,波特率為9600BPS。數(shù)據(jù)發(fā)送采用查詢方式,數(shù)據(jù)接收采用中斷方式。系統(tǒng)上電初始化之后,單片機(jī)向上位機(jī)發(fā)送兩個字節(jié):0x5a和0xa5,然后等待接收上位機(jī)的數(shù)據(jù),每接收到一個字節(jié)后,在該字節(jié)的基礎(chǔ)上加1,然后返回給上位機(jī)。

#include "reg52.h"

sfr AUXR = 0x8e; //IAP15F2K61S2需要的

unsigned char urdat;

void SendByte(unsigned char dat);

void InitUart() //采用的是定時器1

{

TMOD = 0x20; //設(shè)置自動重裝計數(shù)器

TH1 = 0xfd; //設(shè)置重新裝入值

TL1 = 0xfd;

TR1 = 1; //啟動定時器

SCON = 0x50; //設(shè)置串口

AUXR = 0x00;

//IE寄存器

ES = 1; //打開串口

EA = 1; //打開總開關(guān)

}

void ServiceUart() interrupt 4

{

if(RI == 1)

{

RI = 0;

urdat = SBUF; //發(fā)送

SendByte(urdat+1);

}

}

void SendByte(unsigned char dat)

{

SBUF = dat; //接收

while(TI == 0);

TI = 0;

}

void main()

{

InitUart();

SendByte(0x5a);

SendByte(0xa5);

while(1);

}

結(jié)果:

任務(wù)2

任務(wù)2:在CT107D單片機(jī)綜合訓(xùn)練平臺上,利用51單片機(jī)的串行接口與上位機(jī)建立傳數(shù)據(jù)輸信道。采用8位的UART模式,即模式1,波特率為9600BPS。數(shù)據(jù)發(fā)送采用查詢方式,數(shù)據(jù)接收采用中斷方式。 1.系統(tǒng)上電初始化之后,關(guān)閉蜂鳴器和繼電器等無關(guān)設(shè)備,并向上位機(jī)發(fā)送字符串:“Welcome to XMF system!”,回車換行。 2.上位機(jī)通過串口發(fā)送單字節(jié)命令可以控制下位機(jī)的8個LED燈開關(guān)。 3.上位機(jī)通過串口發(fā)送單字節(jié)命令可以讀取下位機(jī)運(yùn)行信息。 4.通信規(guī)約如下表: 實現(xiàn):

#include "reg52.h"

sfr AUXR =0x8e;

unsigned char command=0x00;

void SelectHC573(unsigned char channel)

{

switch(channel)

{

case 4:

P2=P2&0x1f|0x80;

break;

case 5:

P2=P2&0x1f|0xa0;

break;

case 6:

P2=P2&0x1f|0xc0;

break;

case 7:

P2=P2&0x1f|0xe0;

break;

case 0:

P2=P2&0x1f|0x00;

break;

}

}

void InitSystem()

{

SelectHC573(5);

P0=0x00;

SelectHC573(4); //4要在5后邊,保證后邊LED會亮

P0=0xff;

}

void InitUART()

{

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;

TR1=1;

SCON=0x50;

ES=1;

EA=1;

AUXR=0x00;

}

void UartInit(void) //9600bps@11.0592MHz

{

SCON = 0x50; //8位數(shù)據(jù),可變波特率

AUXR |= 0x40; //定時器時鐘1T模式

AUXR &= 0xFE; //串口1選擇定時器1為波特率發(fā)生器

TMOD &= 0x0F; //設(shè)置定時器模式

TL1 = 0xE0; //設(shè)置定時初始值

TH1 = 0xFE; //設(shè)置定時初始值

ET1 = 0; //禁止定時器%d中斷

TR1 = 1; //定時器1開始計時

ES=1;

EA=1;

}

void ServiceUART() interrupt 4

{

if(RI==1)

{

command=SBUF;

RI=0;

}

}

void SendByte(unsigned char dat)

{

SBUF=dat; //command接收dat或者*str

while(TI==0);

TI=0;

}

void SendString(unsigned char *str)

{

while(*str != '\0')

{

SendByte(*str++);

}

}

void Working()

{

if(command!=0x00)

{

switch (command&0xf0) //取高四位

{

case 0xa0: //第一位是0

P0=(P0&0xf0)|((~command)&0x0f);

command=0x00;

break;

case 0xb0: //第二位是0

P0=(P0&0x0f)|((~command<<4) &0xf0);

command=0x00;

break;

case 0xc0: //第三位是0

SendString("The System is running!\r\n");

command=0x00;

break;

}

}

}

void main()

{

InitSystem();

// InitUART();

UartInit();

SendString("Welcome to blue bridge cup!\r\n");

while(1)

{

Working();

}

}

P0=(P0&0xf0)|((~command)&0x0f); 將P0的高四位和取反后的command的低四位合并,并賦值給P0。 P0=(P0&0x0f)|((~command<<4) &0xf0); 同上,不過command要先左移再取反。

十、IO擴(kuò)展與存儲器映射擴(kuò)展

任務(wù):在CT107D單片機(jī)綜合訓(xùn)練平臺上,分別用/O擴(kuò)展方式與存儲器擴(kuò)展方式對LED燈和數(shù)碼管進(jìn)行基本的控制。 1.首先點(diǎn)亮指示燈低4位,關(guān)閉高4位,延時片刻,點(diǎn)亮指示燈的高4位,關(guān)閉低4位,延時片刻,關(guān)閉所有指示燈。 2.然后依次逐個點(diǎn)亮數(shù)碼管的所有段碼,每次只點(diǎn)亮一個數(shù)碼管。 3.循環(huán)執(zhí)行上述功能。 外部資源的地址映射關(guān)系: 0x8000–指示燈 0xa000–蜂鳴器與繼電器 0xc000-數(shù)碼管位選 0xe000–數(shù)碼管段碼

通俗而言,IO擴(kuò)展就是直接用HC138譯碼器進(jìn)行輸入輸出。 存儲器映射擴(kuò)展就是通過外擴(kuò)RAM和ROM空間,進(jìn)行外設(shè)的操作。

實現(xiàn): 如果是IO擴(kuò)展:

#include "reg52.h"

void Delay(unsigned int t)

{

while(t--);

while(t--);

}

void SelectHC573(unsigned char channel)

{

switch(channel)

{

case 4:

P2 = (P2 & 0x1f) | 0x80;

break;

case 5:

P2 = (P2 & 0x1f) | 0xa0;

break;

case 6:

P2 = (P2 & 0x1f) | 0xc0;

break;

case 7:

P2 = (P2 & 0x1f) | 0xe0;

break;

}

}

void LEDRunning()

{

SelectHC573(4);

P0 = 0xf0;

Delay(60000);

Delay(60000);

P0 = 0x0f;

Delay(60000);

Delay(60000);

P0 = 0xff;

Delay(60000);

Delay(60000);

}

void SMGRunning()

{

unsigned char i;

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

{

SelectHC573(6);

P0 = 0x01 << i;

SelectHC573(7);

P0 = 0x00;

Delay(60000);

Delay(60000);

}

P0 = 0xff;

Delay(60000);

Delay(60000);

}

void main()

{

while(1)

{

LEDRunning();

SMGRunning();

}

}

存儲器擴(kuò)展:

#include "reg52.h"

#include "absacc.h"

void Delay(unsigned int t)

{

while(t--);

while(t--);

}

void LEDRunning()

{

XBYTE[0x8000]=0xf0;

Delay(65535);

Delay(65535);

XBYTE[0x8000]=0x0f;

Delay(65535);

Delay(65535);

XBYTE[0X8000]=0xff;

}

void DigitalTubeRunning()

{

unsigned char i;

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

{

XBYTE[0xc000]=0x01<

XBYTE[0xe000]=0x00;

Delay(65535);

Delay(65535);

}

XBYTE[0xe000]=0xff;

Delay(65535);

Delay(65535);

}

void main()

{

while(1)

{

DigitalTubeRunning();

LEDRunning();

}

}

*注意:1.進(jìn)行存儲器映射擴(kuò)展,CT107D平臺的J13要將1-2腳短接。 2.引入“absacc.h”,通過XBYTE關(guān)鍵字來直接操作擴(kuò)展資源。 3.存儲器映射擴(kuò)展方式要占用單片機(jī)的P3.6引腳。

十一、DS18B20溫度傳感器

基礎(chǔ)知識

DS18B20是一款常用的高精度的單總線數(shù)字溫度測量芯片。

溫度轉(zhuǎn)換與讀取流程: 【1】DS18B20復(fù)位。 【2】寫入字節(jié)0xCC,跳過ROM指令。(忽略ID匹配過程)

【3】寫入字節(jié)0x44,開始溫度轉(zhuǎn)換。

【4】延時700~900ms。 【5】DS18B20復(fù)位。 【6】寫入字節(jié)0xCC,跳過ROM指令。 【7】寫入字節(jié)0xBE,讀取高速暫存器。

【8】讀取暫存器的第0字節(jié),即溫度數(shù)據(jù)的LSB。 【9】讀取暫存器的第1字節(jié),即溫度數(shù)據(jù)的MSB。 【10】DS18B20復(fù)位。表示讀取數(shù)據(jù)結(jié)束。 【11】將LSB和MSB整合成為一個16位數(shù)據(jù)。 【12】判斷讀取結(jié)果的符號,進(jìn)行正負(fù)溫度的數(shù)據(jù)處理。(DS18B20以16位帶符號位擴(kuò)展的二進(jìn)制補(bǔ)碼形式讀出。)

由于一個本單片機(jī)只有一個DS18B20,可以直接用SKIP RAM無需發(fā)送地址信息實現(xiàn)功能。 數(shù)據(jù)處理: DS18B20的分辨率為0.0625。讀出數(shù)據(jù)為正溫度時,將LSB和MSB整合成的16位整數(shù),直接乘以0.0625即可。讀出數(shù)據(jù)為負(fù)溫度時,則需要將LSB和MSB整合成的16位整數(shù),取反加1后,再乘以0.0625。 注意:在上電復(fù)位的時候,溫度寄存器中的值為0x0550,即+85攝氏度。

完成室溫傳感

#include "reg52.h"

#include "onewire.h"

#include "absacc.h"

unsigned char code DTNumber[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //數(shù)字帶點(diǎn)

unsigned char code DTNumberWithDot[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //不帶點(diǎn)

int temp=0;

unsigned char LSB,MSB;

void DTDynDisplay(void);

void Delay(unsigned int t)

{

while(t--);

}

void DelayWithDT(unsigned int t)

{

while(t--)

{

DTDynDisplay();

}

}

void DTStaticDisplay(unsigned char pos,value)

{

XBYTE[0xe000]=0xff;

XBYTE[0xc000]=0x01<

XBYTE[0xe000]=value;

}

void DTDynDisplay()

{

XBYTE[0xc000]=0xff;

XBYTE[0xe000]=0xff;

DTStaticDisplay(0,0xff);

DTStaticDisplay(1,0xff);

DTStaticDisplay(2,0xff);

DTStaticDisplay(3,0xff);

//如果溫度是負(fù)數(shù)的時候,這個要改

DTStaticDisplay(4,0xff);

DTStaticDisplay(5,DTNumber[temp/100]); //第一位

Delay(5000);

DTStaticDisplay(6,DTNumberWithDot[temp%100/10]); //第二位

Delay(5000);

DTStaticDisplay(7,DTNumber[temp%10]); //小數(shù)點(diǎn)后一位

Delay(5000);

}

void ReadTemp()

{

init_ds18b20();

Write_DS18B20(0xCC);

Write_DS18B20(0x44);

DelayWithDT(100);

init_ds18b20();

Write_DS18B20(0xCC);

Write_DS18B20(0xBE);

LSB=Read_DS18B20();

MSB=Read_DS18B20();

// init_ds18b20();

temp=MSB;

temp=(temp << 8) | LSB;

if((temp&0xf800) == 0x0000) //讀取符號位,說明是正數(shù)

{

temp>>=4;

temp=temp*10;

temp=(LSB&0x0f)*0.0625*10+temp; //這一行為小數(shù)部分的換算,&0x0f將高四位變成0,

//低四位不變,*0.0625即乘上2^(-4),將整數(shù)表示的小數(shù)部分真正變成小數(shù),后*10用于將小數(shù)部分寫入temp的個位

}

// if((temp&0xf800) == 0xf800) //當(dāng)溫度是負(fù)的時候

// {

// temp=~temp+1; //由于讀到的是補(bǔ)碼,所以取反加1,由于后邊運(yùn)算跟符號位無關(guān),所以不用管前五位,直接取反。

// temp=(temp>>4) * 10;

// temp=((~LSB+1)&0x0f)*0.625+temp;

// }

}

void main()

{

XBYTE[0x8000]=0xff;

while (1)

{

ReadTemp();

DTDynDisplay();

}

}

其中onewire模塊:

#include "reg52.h"

sbit DQ = P1^4; //單總線接口

//單總線延時函數(shù)

void Delay_OneWire(unsigned int t) //STC89C52RC

{

while(t--);

}

//通過單總線向DS18B20寫一個字節(jié)

void Write_DS18B20(unsigned char dat)

{

unsigned char i;

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

{

DQ = 0;

DQ = dat&0x01;

Delay_OneWire(60);

DQ = 1;

dat >>= 1;

}

Delay_OneWire(60);

}

//從DS18B20讀取一個字節(jié)

unsigned char Read_DS18B20(void)

{

unsigned char i;

unsigned char dat;

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

{

DQ = 0;

dat >>= 1;

DQ = 1;

if(DQ)

{

dat |= 0x80;

}

Delay_OneWire(60);

}

return dat;

}

//DS18B20設(shè)備初始化

bit init_ds18b20(void)

{

bit initflag = 0;

DQ = 1;

Delay_OneWire(144);

DQ = 0;

Delay_OneWire(960);

DQ = 1;

Delay_OneWire(120);

initflag = DQ;

Delay_OneWire(60);

return initflag;

}

十二、DS1302

采用SPI三線接口與MCU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘參數(shù)和RAM數(shù)據(jù)。 在DS1302中有兩塊存儲器:日歷時鐘寄存器和靜態(tài)RAM存儲器。前者用于記錄實時時間,后者用于記錄其他數(shù)據(jù)。 DS1302介紹 注: 要記得在操作 DS1302 之前關(guān)閉寫保護(hù);不然指令是無法進(jìn)入控制寄存器的 下面進(jìn)行實操說明:

#include "reg52.h"

#include "absacc.h"

#include "ds1302.h"

void Delay(unsigned int t)

{

while(t--);

}

code unsigned char SMG_number[18]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,

0x88,0x80,0xc6,0xc0,0x86,

0x8e,0xbf,0x7f};

void WriteDS()

{

char i;

Write_Ds1302_Byte(0x8e,0x00); // 禁止寫保護(hù)

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

{

Write_Ds1302_Byte(WriteDS_Addr[i],Time[i]); // 將時間數(shù)據(jù)寫入DS1302的指定地址

}

Write_Ds1302_Byte(0x8e,0x80); // 開啟寫保護(hù)

}

void ReadDS()

{

char i;

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

{

Time[i]=Read_Ds1302_Byte(ReadDS_Addr[i]); 從DS1302的指定地址讀取時間數(shù)據(jù)

}

}

void DTDrive(unsigned char pos, value)

{

XBYTE[0xc000]=0x01<

XBYTE[0xe000]=SMG_number[value]; // 顯示對應(yīng)的數(shù)碼管編碼

Delay(1000); // 延時

}

void DTDisplay()

{

XBYTE[0xc000]=0xff;

XBYTE[0xe000]=0xff;

DTDrive(0,Time[5]/16);

DTDrive(1,Time[5]%16);

DTDrive(2,16);

DTDrive(3,Time[4]/16);

DTDrive(4,Time[4]%16);

DTDrive(5,16);

DTDrive(6,Time[3]/16);

DTDrive(7,Time[3]%16);

}

void main()

{

WriteDS(); // 初始化DS1302的時間

while(1)

{

ReadDS(); // 讀取DS1302的時間

DTDisplay(); // 顯示時間

}

}

十三、NE555定時器

整個NE555的電路沒有與單片機(jī)的其它引腳相通,是一個完整電路,可自發(fā)生成方波。 在NE555內(nèi)部,有3個5K的電阻分壓,故稱555定時器。 555定時器的基本原理: 低電平觸發(fā)端TRIG和高電平觸發(fā)端THR: 兩者電壓均小于各自的參考電壓時,U0=1,放電管截至。 兩者電壓均大于各自的參考電壓時,U0=0,放電管導(dǎo)通。 通過AUXR第七位確定是否分頻。

計數(shù)器就是計傳入方波的數(shù)量,定時器通過固定頻率計脈沖數(shù)來計算經(jīng)過時間。

十四、PCF8591

A/D將模擬信號(正弦波)轉(zhuǎn)為數(shù)字信號(方波),D/A數(shù)轉(zhuǎn)模。 PCF8591是一款單芯片、單電源、低功耗8位CMOS數(shù)據(jù)采集設(shè)備具有四個模擬輸入、一個模擬輸出和一個串行12c總線接口。 串行數(shù)據(jù)線SDA——負(fù)責(zé)在設(shè)備間傳輸串行數(shù)據(jù)? 串行時鐘線SCL——負(fù)責(zé)產(chǎn)生同步時鐘脈沖 SCL\SDA是I2C總線的信號線。

IIC I2C總線具有兩根雙向信號線,一根是數(shù)據(jù)線SDA,另一根是時鐘線SCL。 多主機(jī)會產(chǎn)生總線裁決問題。當(dāng)多個主機(jī)同時想占用總線時,企圖啟動總線傳輸數(shù)據(jù),就叫做總線競爭。I2C通過總線仲裁,以決定哪臺主機(jī)控制總線. 對于其中的address 前4位固定,最后一位低電平“寫”,高電平“讀”。(讀取地址:0x91,寫入地址:0x90) 對于“control byte” 第三第四位一般用00。 控制光敏電阻設(shè)置0x41,可調(diào)電阻0x43。

十五、AT24C02

EEPROM與RAM: EEPROM:帶點(diǎn)可擦只讀存儲器 RAM:隨機(jī)存儲器 運(yùn)作模式:

十六、超聲波傳感器

超聲波傳感器主要用于測距。原理還是s=(2/t)*v(聲速) 發(fā)出信號,整個U18相當(dāng)于起信號放大作用 接收信號 J2處跳線帽連接1、3,2、4則選用超聲波模式,選用3、5,4、6則選用紅外模式

柚子快報激活碼778899分享:藍(lán)橋杯學(xué)習(xí)筆記(二)

http://yzkb.51969.com/

參考閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19014934.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄