娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

簡介:這里用到PCF8591 ADDA芯片和51單片機和一個電位器。通過控制電位器,產生PWM波,控制舵機旋轉。并在數碼管上顯示角度。

電路圖

這是程序,、


/*-----------------------------------------------


名稱:IIC協議 PCF8591ADDA轉換


內容:此程序通過IIC協議對DAAD芯片操作,讀取電位器的電壓,并輸出模擬量,用LED亮度漸變指示,晶體選用12MHz


------------------------------------------------*/


#include"reg52.h"


#include //包含NOP空指令函數_nop_();


#define AddWr 0x90 //寫數據地址


#define AddRd 0x91 //讀數據地址


sbit Sda=P1^2; //定義總線連接端口


sbit Scl=P1^1;


sbit control_signal=P1^5;


data unsigned int Display[8];//定義臨時存放數碼管數值


unsigned char code Datatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//7段數共陰碼管段碼表


unsigned int ADtemp; //定義全局變量


unsigned int high,low;


static unsigned int count1;


/*------------------------------------------------


延時程序


------------------------------------------------*/


void mDelay(unsigned char j)


{


unsigned int i;


for(;j>0;j--)


{


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


{;}


}


}


/*------------------------------------------------


初始化定時器0


------------------------------------------------*/


void Init_Timer0(void)


{


TMOD |=0x01; //定時器設置 0.1ms in 11.0592M crystal


TH0=(65536-78)/256;


TL0=(65536-78)%256; //定時0.1mS


ET0=1;//定時器中斷打開


EA=1;//總中斷


TR0=1; //啟動定時器0


}


/*------------------------------------------------


啟動IIC總線


------------------------------------------------*/


void Start(void)


{


Sda=1;


_nop_();


Scl=1;


_nop_();


Sda=0;


_nop_();


Scl=0;


}


/*------------------------------------------------


停止IIC總線


------------------------------------------------*/


void Stop(void)


{


Sda=0;


_nop_();


Scl=1;


_nop_();


Sda=1;


_nop_();


Scl=0;


}


/*------------------------------------------------


應答IIC總線


------------------------------------------------*/


void Ack(void)


{


Sda=0;


_nop_();


Scl=1;


_nop_();


Scl=0;


_nop_();


}


/*------------------------------------------------


非應答IIC總線


------------------------------------------------*/


void NoAck(void)


{


Sda=1;


_nop_();


Scl=1;


_nop_();


Scl=0;


_nop_();


}


/*------------------------------------------------


發送一個字節


------------------------------------------------*/


void Send(unsigned char Data)


{


unsigned char BitCounter=8;


unsigned char temp;


do


{


temp=Data;


Scl=0;


_nop_();


if((temp&0x80)==0x80)


Sda=1;


else


Sda=0;


Scl=1;


temp=Data<<1;


Data=temp;


BitCounter--;


}


while(BitCounter);


Scl=0;


}


/*------------------------------------------------


讀入一個字節并返回


------------------------------------------------*/


unsigned char Read(void)


{


unsigned char temp=0;


unsigned char temp1=0;


unsigned char BitCounter=8;


Sda=1;


do


{


Scl=0;


_nop_();


Scl=1;


_nop_();


if(Sda)


temp=temp|0x01;


else


temp=temp&0xfe;


if(BitCounter-1)


{


temp1=temp<<1;


temp=temp1;


}


BitCounter--;


}


while(BitCounter);


return(temp);


}


/*------------------------------------------------


讀取AD模數轉換的值,有返回值


------------------------------------------------*/


unsigned int ReadADC(unsigned char Chl)


{


unsigned int Data;


Start(); //啟始信號


Send(AddWr);//0x90


Ack();


Send(0x40|Chl);//寫入選擇的通道,本程序只用單端輸入,差分部分需要自行添加


//Chl的值分別為0、1、2、3,分別代表1-4通道


Ack();


Start();


Send(AddRd); //讀入地址


Ack();


Data=Read(); //讀數據


Scl=0;


NoAck();


Stop();


return Data; //返回值


}


/******************************************************************/


/* 主程序 */


/******************************************************************/


void main()


{


Init_Timer0();


while(1)


{


unsigned int angle;


ADtemp=ReadADC(0); //ADtemp的取值范圍是0-255,定時的時間范圍是0.5-2.5ms


high=65075-7.2*ADtemp; // ( high=65035-7.8*ADtemp;12MHz)(65535-(460+7.2*ADtemp 11.0592MHz)


low=47563+7.2*ADtemp; // ( low=46035+7.8*ADtemp; ) ( 65535-(17972-7.2*ADtemp 11.0592MHz )


angle=ADtemp*0.7;


Display[0]=Datatab[angle/100];//處理0通道電壓顯示


Display[1]=Datatab[(angle%100)/10];


Display[2]=Datatab[angle%10];


while(1)


{


P0=Display[count1];//用于動態掃描數碼管


P2=count1;


mDelay(1);


count1++;


if(count1==3) //表示掃描3個數碼管


{


count1=0;


break;


}


}


}


}


/******************************************************************/


/* 定時器中斷函數


/******************************************************************/


void tim(void) interrupt 1 using 1


{


static unsigned char count;


if (!count)


{


control_signal = 1; //給高電平


TH0=high/256;


TL0=high%256; }


else


{


control_signal=0 ;


TH0=low/256;


TL0=low%256;


}


count=~count;


}


關鍵字:51單片機  控制舵機  PCF8591 引用地址:51單片機控制舵機實驗

上一篇:基于DS18B20 的遠程糧倉溫控系統
下一篇:探討PC機與多MCS-51單片機間的串行通信設計

推薦閱讀

  近日,在美國斯坦福大學發起機器閱讀理解領域頂級賽事SQuAD中,阿里巴巴開發的人工智能模型獲得了82.44的高分,超過了人類平均值82.304的分數。這是機器首次在此類測試中獲得超過人類的分數,微軟的AI模型獲得了82.650的分數,排名首位。下面就隨網絡通信小編一起來了解一下相關內容吧。  此外,三星開發的AI模型三星MAMCN+)得分為77.436分,排名第1...
隨著科技的發展,從生產現場到日常生活,機器人已成為人類不可或缺的一部分。從第一代工業機器人、第二代帶有"感覺"的機器人,到第三代智能機器人,現今我們在很多方面都離不開機器人的幫助,那機器人發展到現在經歷了哪些重要時刻呢?1939年Elektro美國紐約世博會展出了西屋電氣公司制造的家用機器人Elektro。它由電纜控制,可以行走,會說77個字,甚至可...
6x16音樂頻譜(源代碼 原理圖)#include "STC12C5A.h"#include <intrins.h> #include <math.h>#include "DS1302.h"#include "Led.h"#define uchar unsigned char#define uint unsigned int#define BinToHex(n) (((n>>21)&0x80)|((n>>18)&0x40)|((n>>15)&0x20)|((n>>12)&0x10)|((n>>9)& 0x08)|((n>>6)&0x04)|((n>>3)&0x02)|((n)&0x01))...
1寫在前面STM32CubeMX的好處相信大部分朋友都知道,那就是幫你快速生成初始化代碼工程。雖然方便了開發,但也給一些初學者,或者不怎么懂底層的朋友帶來了不少困擾。特別是使用該工具生成代碼,出現問題的時候,如果你不懂一些底層的知識,可能你會很頭疼。本文關于DEBUG配置的問題,針對初學者,我也把前因后果簡單說一下。2起因STM32CubeMX配置STM32F1系...

史海拾趣

問答坊 | AI 解惑

DSP培訓第二天全部資料

DSP培訓第二天全部資料…

查看全部問答∨

北京2008安防展上的新動向---1

1、普通視頻監控基本退出參觀者的視線,由網絡監控完全取代。除了網絡化硬盤錄像機,更注重寬帶和高清晰。無線視頻監控,尤其是基于FODM的無線壓縮傳輸被很多廠商所推崇,價格也比前幾年大幅下降。…

查看全部問答∨

電子設計賽前培訓流程

本帖最后由 paulhyde 于 2014-9-15 09:15 編輯  …

查看全部問答∨

受控源的輸入電阻怎么理解?

一直不能感性的理解什么是輸入電阻,什么是輸出電阻,請問各位能否幫忙講解一下? 還有,“從輸入端看去,電壓控制的受控源其輸入電阻無限大,電流控制的受控源其輸入電阻為0”怎么理解?…

查看全部問答∨

求一個簡單的能產生正弦波信號的芯片

我的要求很簡單,就是需要10HZ信號,5V左右的穩定幅度就可以了。供電電源為正負5V。 查過很多(如XR2206,ICL8038,MAX038,XR8038)都停產了,有沒有還沒有停產的推薦一下呀,最好成本不是太高的那種。 先謝謝了。…

查看全部問答∨

[求助]遇到問題,FLASH存在壞扇區,U-BOOT應該怎么修改跳過這個扇區?

我向FLASH燒ramdisk.image.gz的時候,遇到壞扇區,怎么辦? 是跳過還是直接這一段扇區不要,ramdisk.image.gz燒到后面,但是我想這樣是要在U-BOOT中做修改,還是image中做修改?U-BOOT引導LINUX的流程是怎么樣的? 還有要如何修改?…

查看全部問答∨

高分求教串口通訊老發生串口管腳變化的事件

求教,我用的筆記本電腦通過并口連著這一臺進口的系統,運行著這個設備的軟件系統。同時我也運行著我自己設備的軟件系統,是通過U口連接的,如果兩個程序同時運行我的程序經常會出現串口管教變化的事件,請問如何解決,非常急!先謝過了。 &nb ...…

查看全部問答∨

verilog語言中input[0:0]是什么數據類型

verilog語言中input[0:0]是什么數據類型 有段語言是這樣的:    input [0:0] Hclk0,Hsynco,Vsynco; 不懂啊.高人指點來著...…

查看全部問答∨

AMLogic AML8726-M3 CortexA9 產品規格書提供

我司在研發AMLogic方案體有獨特的優勢:結合了原廠的資源(我司和AMLogic合作有6年時間)及自己本身強大的研發實力(自己也有貼片機)能很好的控制研發及生產質量。我們可以根據客戶需要選配帶內置3G GPS 前后攝像頭,目前7寸 8寸 9.7寸 10.1寸An ...…

查看全部問答∨

g2553怎么測方波頻率

由于以前是學的M3,這次比賽要用launchpad,只有幾天的學習時間,求一個g2553測頻率的程序 [ 本帖最后由 51新手 于 2012-8-8 20:03 編輯 ]…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 明溪县| 临高县| 桐庐县| 柘荣县| 北宁市| 昌图县| 景宁| 屯昌县| 楚雄市| 普兰县| 三江| 吴忠市| 延庆县| 通榆县| 高安市| 万州区| 武陟县| 开江县| 娱乐| 翼城县| 商都县| 繁昌县| 五大连池市| 吴忠市| 南丹县| 嘉鱼县| 青岛市| 汤原县| 河西区| 石棉县| 建湖县| 滨海县| 黔西| 策勒县| 景洪市| 汝阳县| 闵行区| 中西区| 金沙县| 郸城县| 乌兰浩特市|