/**************************文件所用資源1.端口:P22.調(diào)用delay_ms函數(shù)**************************/#include #include #define key_port P2//鍵盤接口定義sbitkey_port_0=key_port^0;sbitkey_port_1=key_port^1;sbi
/**************************文件所用資源1.端口:P0.2,P0.32.調(diào)用delay_ms函數(shù)**************************//************************端口定義************************/sbit i2c_dat =P0^2;sbit i2c_clk =P0^3;#de
/**************************文件所用資源1.端口:P0.4,P0.5,P0.6,P0.72.調(diào)用delay_ms函數(shù)**************************//************************* 模擬SPI接口I/O定義*************************/sbit spi_cs=P0^1;s
/********************************文件所用資源1.外部中斷0、1 定時(shí)中斷0、1 串口中斷2.端口:P3.0,P3.1,P3.3,P3.4,P3.5********************************/sfr ISP_CONTR = 0xe7;/***************************外部中
模塊內(nèi)接口:使用如下標(biāo)志符:asm匯編語句endasm注意:如果在程序中使用了,注意在Keil編譯器中需要激活Properties中的“GenerateAssemblerFile”和“AssemblerFile”兩個(gè)選項(xiàng)1、把"xx.c"加入工程中,右擊"xx.c"選擇
關(guān)于spi協(xié)議見:http://hi.baidu.com/gilbertjuly/blog/item/0be222eeac9abae5cf1b3e38.html ISD4002芯片資料參考:http://download.csdn.net/source/1208805 以下是單片機(jī)spi通信的通用程序,在不同晶振情況下
typedef struct PID{ double SetPoint; // Desired Value double Proportion; // Proportional Const double Integral; // Integral Const double Derivative; // Derivative Const double LastError; // Error[-1]
/*--------------------------24C01的IIC 讀寫的c51程序---------------------程序中很多NOP是冗余的,希望讀者能進(jìn)一步精簡,但必須經(jīng)過驗(yàn)證。 Atmel 24C01 比較特殊,為簡約型. 51晶振為11.0592MHz --------------
void X5045SpiOpen(void);//打開X5045片選void X5045SpiClose(void);//關(guān)閉X5045片選 void X5045WriteEnable(void);//軟件使能X5045寫操作 void X5045WriteDisable(void);//軟件禁止X5045寫操作 unsigned char X5
/*------------------------------------------------------------------------------為了安全起見,程序中很多NOP是冗余的,希望讀者能進(jìn)一步精簡,但必須經(jīng)過驗(yàn)證。 Atmel 24C01 比較特殊,為簡約型. 51晶振為11.059
/**************************文件所用資源1.外部中斷02.端口:P3.3、P3.4**************************/sbit BT_REC =P3^3;//接收 P3.0sbit BT_SND =P3^4;//發(fā)送 P3.1#define MODE_QUICK#define F_TM F0#define TIMER0
關(guān)于PID比例調(diào)節(jié)作用:是按比例反應(yīng)系統(tǒng)的偏差,系統(tǒng)一旦出現(xiàn)了偏差,比例調(diào)節(jié)立即產(chǎn)生調(diào)節(jié)作用用以減少偏差。比例作用大,可以加快調(diào)節(jié),減少誤差,但是過大的比例,使系統(tǒng)的穩(wěn)定性下降,甚至造成系統(tǒng)的不穩(wěn)定。積分
#include #include //_nop_();延時(shí)函數(shù)用#define uchar unsigned char#define uint unsigned int//********************** DS18B20 指令********************* *********#define ds18B20_READ_ROM 0x33 // 讀ROM指令
typedef struct PIDValue{ uint32 Ek_Uint32[3]; //差值保存,給定和反饋的差值 uint8 EkFlag_Uint8[3]; //符號,1則對應(yīng)的Ek[i]為負(fù)數(shù),0為對應(yīng)的Ek[i]為正數(shù) uint8 KP_Uint8;uint8 KI_Uint8;uint8 KD_Uint8;uint8
由于12232F這個(gè)顯示器用得比較平常,但平常見到的是一些并口的匯編程序,并且也沒有對應(yīng)于12232F的并口程序,串口的C51程序極少見,為了方便大家使用,所以本站把它調(diào)試了一個(gè)出來,大家多多指教!由于12232F這個(gè)顯示
本人初學(xué)C,曾為這個(gè)問題大傷腦筋^_^,就是一個(gè)單片機(jī)系統(tǒng)有兩個(gè)以上的相同地址的I2C設(shè)備,無法用兩個(gè)同一對SDA/SCL引腳#include "stc89c51.h" #include "iic.h"sbit scl0=P3^5; sbit sda0 = P3^4; sbit scl1= P3^3; sb
單片機(jī)IO驅(qū)動74LS165C51程序 //-------------------------------------庫函數(shù)聲明,管腳定義-------------- #include sbita7=ACC^7; sbitsimuseri_CLK=P1^6;//用P1^6模擬串口時(shí)鐘 sbitsimuseri_DATA=P1^5;//用P
#include #include struct _pid { int pv; /*integer that contains the process value*/ int sp; /*integer that contains the set point*/ float integral; float pgain; float ig
沒有中斷時(shí)以流水燈顯示,外中斷0使左右4個(gè)LED交替閃爍,外中斷1使LED閃亮,#includeunsigned char code design[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x00};void Delay(unsigned int i){ unsigned int j;
這是從網(wǎng)上找來的一個(gè)比較典型的PID處理程序,在使用單片機(jī)作為控制cpu時(shí),請稍作簡化,具體的PID參數(shù)必須由具體對象通過實(shí)驗(yàn)確定。由于單片機(jī)的處理速度和ram資源的限制,一般不采用浮點(diǎn)數(shù)運(yùn)算,而將所有參數(shù)全部用