MSP430系列flash型超低功耗16位單片機(jī)MSP430系列單片機(jī)在超低功耗和功能集成等方面有明顯的特點(diǎn)。該系列單片機(jī)自問(wèn)世以來(lái),頗受用戶關(guān)注。在2000年該系列單片機(jī)又出現(xiàn)了幾個(gè)FLASH型的成員,它們除了仍然具備適合應(yīng)用在自動(dòng)信號(hào)采集系統(tǒng)、電池供電便攜式裝置、超長(zhǎng)時(shí)間連續(xù)工作的設(shè)備等領(lǐng)域的特點(diǎn)外,更具有開(kāi)發(fā)方便、可以現(xiàn)場(chǎng)編程等優(yōu)點(diǎn)。這些技術(shù)特點(diǎn)正是應(yīng)用工程師特別感興趣的。《MSP430系列FLASH型超低功耗16位單片機(jī)》對(duì)該系列單片機(jī)的FLASH型成員的原理、結(jié)構(gòu)、內(nèi)部各功能模塊及開(kāi)發(fā)方法與工具作詳細(xì)介紹。MSP430系列FLASH型超低功耗16位單片機(jī) 目錄 第1章 引 論1.1 MSP430系列單片機(jī)1.2 MSP430F11x系列1.3 MSP430F11x1系列1.4 MSP430F13x系列1.5 MSP430F14x系列第2章 結(jié)構(gòu)概述2.1 引 言2.2 CPU2.3 程序存儲(chǔ)器2.4 數(shù)據(jù)存儲(chǔ)器2.5 運(yùn)行控制2.6 外圍模塊2.7 振蕩器與時(shí)鐘發(fā)生器第3章 系統(tǒng)復(fù)位、中斷及工作模式3.1 系統(tǒng)復(fù)位和初始化3.1.1 引 言3.1.2 系統(tǒng)復(fù)位后的設(shè)備初始化3.2 中斷系統(tǒng)結(jié)構(gòu)3.3 MSP430 中斷優(yōu)先級(jí)3.3.1 中斷操作--復(fù)位/NMI3.3.2 中斷操作--振蕩器失效控制3.4 中斷處理 3.4.1 SFR中的中斷控制位3.4.2 中斷向量地址3.4.3 外部中斷3.5 工作模式3.5.1 低功耗模式0、1(LPM0和LPM1)3.5.2 低功耗模式2、3(LPM2和LPM3)3.5.3 低功耗模式4(LPM4)22 3.6 低功耗應(yīng)用的要點(diǎn)23第4章 存儲(chǔ)空間4.1 引 言4.2 存儲(chǔ)器中的數(shù)據(jù)4.3 片內(nèi)ROM組織4.3.1 ROM 表的處理4.3.2 計(jì)算分支跳轉(zhuǎn)和子程序調(diào)用4.4 RAM 和外圍模塊組織4.4.1 RAM4.4.2 外圍模塊--地址定位4.4.3 外圍模塊--SFR4.5 FLASH存儲(chǔ)器4.5.1 FLASH存儲(chǔ)器的組織4.5.2 FALSH存儲(chǔ)器的數(shù)據(jù)結(jié)構(gòu)4.5.3 FLASH存儲(chǔ)器的控制寄存器4.5.4 FLASH存儲(chǔ)器的安全鍵值與中斷4.5.5 經(jīng)JTAG接口訪問(wèn)FLASH存儲(chǔ)器39第5章 16位CPU5.1 CPU寄存器5.1.1 程序計(jì)數(shù)器PC5.1.2 系統(tǒng)堆棧指針SP5.1.3 狀態(tài)寄存器SR5.1.4 常數(shù)發(fā)生寄存器CG1和CG25.2 尋址模式5.2.1 寄存器模式5.2.2 變址模式5.2.3 符號(hào)模式5.2.4 絕對(duì)模式5.2.5 間接模式5.2.6 間接增量模式5.2.7 立即模式5.2.8 指令的時(shí)鐘周期與長(zhǎng)度5.3 指令組概述5.3.1 雙操作數(shù)指令5.3.2 單操作數(shù)指令5.3.3 條件跳轉(zhuǎn)5.3.4 模擬指令的簡(jiǎn)短格式5.3.5 其他指令第6章 硬件乘法器6.1 硬件乘法器6.2 硬件乘法器操作6.2.1 無(wú)符號(hào)數(shù)相乘(16位×16位、16位×8位、8位×16位、8位×8位)6.2.2 有符號(hào)數(shù)相乘(16位×16位、16位×8位、8位×16位、8位×8位)6.2.3 無(wú)符號(hào)數(shù)乘加(16位×16位、16位×8位、8位×16位、8位×8位)6.2.4 有符號(hào)數(shù)乘加(16位×16位、16位×8位、8位×16位、8位×8位)6.3 硬件乘法器寄存器6.4 硬件乘法器的軟件限制6.4.1 尋址模式6.4.2 中斷程序6.4.3 MACS第7章 基礎(chǔ)時(shí)鐘模塊7.1 基礎(chǔ)時(shí)鐘模塊7.2 LFXT1與XT27.2.1 LFXT1振蕩器7.2.2 XT2振蕩器7.2.3 振蕩器失效檢測(cè)7.2.4 XT振蕩器失效時(shí)的DCO7.3 DCO振蕩器7.3.1 DCO振蕩器的特性7.3.2 DCO調(diào)整器7.4 時(shí)鐘與運(yùn)行模式7.4.1 由PUC啟動(dòng)7.4.2 基礎(chǔ)時(shí)鐘調(diào)整7.4.3 用于低功耗的基礎(chǔ)時(shí)鐘特性7.4.4 選擇晶振產(chǎn)生MCLK7.4.5 時(shí)鐘信號(hào)的同步7.5 基礎(chǔ)時(shí)鐘模塊控制寄存器7.5.1 DCO時(shí)鐘頻率控制7.5.2 振蕩器與時(shí)鐘控制寄存器7.5.3 SFR控制位第8章 輸入輸出端口8.1 引 言8.2 端口P1、P28.2.1 P1、P2的控制寄存器8.2.2 P1、P2的原理8.2.3 P1、P2的中斷控制功能8.3 端口P3、P4、P5和P68.3.1 端口P3、P4、P5和P6的控制寄存器8.3.2 端口P3、P4、P5和P6的端口邏輯第9章 看門狗定時(shí)器WDT9.1 看門狗定時(shí)器9.2 WDT寄存器9.3 WDT中斷控制功能9.4 WDT操作第10章 16位定時(shí)器Timer_A10.1 引 言10.2 Timer_A的操作10.2.1 定時(shí)器模式控制10.2.2 時(shí)鐘源選擇和分頻10.2.3 定時(shí)器啟動(dòng)10.3 定時(shí)器模式10.3.1 停止模式10.3.2 增計(jì)數(shù)模式10.3.3 連續(xù)模式10.3.4 增/減計(jì)數(shù)模式10.4 捕獲/比較模塊10.4.1 捕獲模式10.4.2 比較模式10.5 輸出單元10.5.1 輸出模式10.5.2 輸出控制模塊10.5.3 輸出舉例10.6 Timer_A的寄存器10.6.1 Timer_A控制寄存器TACTL10.6.2 Timer_A寄存器TAR10.6.3 捕獲/比較控制寄存器CCTLx10.6.4 Timer_A中斷向量寄存器10.7 Timer_A的UART應(yīng)用 第11章 16位定時(shí)器Timer_B11.1 引 言11.2 Timer_B的操作11.2.1 定時(shí)器長(zhǎng)度11.2.2 定時(shí)器模式控制11.2.3 時(shí)鐘源選擇和分頻11.2.4 定時(shí)器啟動(dòng)11.3 定時(shí)器模式11.3.1 停止模式11.3.2 增計(jì)數(shù)模式11.3.3 連續(xù)模式11.3.4 增/減計(jì)數(shù)模式11.4 捕獲/比較模塊11.4.1 捕獲模式11.4.2 比較模式11.5 輸出單元11.5.1 輸出模式11.5.2 輸出控制模塊11.5.3 輸出舉例11.6 Timer_B的寄存器11.6.1 Timer_B控制寄存器TBCTL11.6.2 Timer_B寄存器TBR11.6.3 捕獲/比較控制寄存器CCTLx11.6.4 Timer_B中斷向量寄存器第12章 USART通信模塊的UART功能12.1 異步模式12.1.1 異步幀格式12.1.2 異步通信的波特率發(fā)生器12.1.3 異步通信格式12.1.4 線路空閑多機(jī)模式12.1.5 地址位多機(jī)通信格式12.2 中斷和中斷允許12.2.1 USART接收允許12.2.2 USART發(fā)送允許12.2.3 USART接收中斷操作12.2.4 USART發(fā)送中斷操作12.3 控制和狀態(tài)寄存器12.3.1 USART控制寄存器UCTL12.3.2 發(fā)送控制寄存器UTCTL12.3.3 接收控制寄存器URCTL12.3.4 波特率選擇和調(diào)整控制寄存器12.3.5 USART接收數(shù)據(jù)緩存URXBUF12.3.6 USART發(fā)送數(shù)據(jù)緩存UTXBUF12.4 UART模式,低功耗模式應(yīng)用特性12.4.1 由UART幀啟動(dòng)接收操作12.4.2 時(shí)鐘頻率的充分利用與UART的波特率12.4.3 多處理機(jī)模式對(duì)節(jié)約MSP430資源的支持12.5 波特率計(jì)算 第13章 USART通信模塊的SPI功能13.1 USART同步操作13.1.1 SPI模式中的主模式13.1.2 SPI模式中的從模式13.2 中斷與控制功能 13.2.1 USART接收/發(fā)送允許位及接收操作13.2.2 USART接收/發(fā)送允許位及發(fā)送操作13.2.3 USART接收中斷操作13.2.4 USART發(fā)送中斷操作13.3 控制與狀態(tài)寄存器13.3.1 USART控制寄存器13.3.2 發(fā)送控制寄存器UTCTL13.3.3 接收控制寄存器URCTL13.3.4 波特率選擇和調(diào)制控制寄存器13.3.5 USART接收數(shù)據(jù)緩存URXBUF13.3.6 USART發(fā)送數(shù)據(jù)緩存UTXBUF第14章 比較器Comparator_A14.1 概 述14.2 比較器A原理14.2.1 輸入模擬開(kāi)關(guān)14.2.2 輸入多路切換14.2.3 比較器14.2.4 輸出濾波器14.2.5 參考電平發(fā)生器14.2.6 比較器A中斷電路14.3 比較器A控制寄存器14.3.1 控制寄存器CACTL114.3.2 控制寄存器CACTL214.3.3 端口禁止寄存器CAPD14.4 比較器A應(yīng)用14.4.1 模擬信號(hào)在數(shù)字端口的輸入14.4.2 比較器A測(cè)量電阻元件14.4.3 兩個(gè)獨(dú)立電阻元件的測(cè)量系統(tǒng)14.4.4 比較器A檢測(cè)電流或電壓14.4.5 比較器A測(cè)量電流或電壓14.4.6 測(cè)量比較器A的偏壓14.4.7 比較器A的偏壓補(bǔ)償14.4.8 增加比較器A的回差第15章 模數(shù)轉(zhuǎn)換器ADC1215.1 概 述15.2 ADC12的工作原理及操作15.2.1 ADC內(nèi)核15.2.2 參考電平15.3 模擬輸入與多路切換15.3.1 模擬多路切換15.3.2 輸入信號(hào)15.3.3 熱敏二極管的使用15.4 轉(zhuǎn)換存儲(chǔ)15.5 轉(zhuǎn)換模式15.5.1 單通道單次轉(zhuǎn)換模式15.5.2 序列通道單次轉(zhuǎn)換模式15.5.3 單通道重復(fù)轉(zhuǎn)換模式15.5.4 序列通道重復(fù)轉(zhuǎn)換模式15.5.5 轉(zhuǎn)換模式之間的切換15.5.6 低功耗15.6 轉(zhuǎn)換時(shí)鐘與轉(zhuǎn)換速度15.7 采 樣15.7.1 采樣操作15.7.2 采樣信號(hào)輸入選擇15.7.3 采樣模式15.7.4 MSC位的使用15.7.5 采樣時(shí)序15.8 ADC12控制寄存器15.8.1 控制寄存器ADC12CTL0和ADC12CTL115.8.2 轉(zhuǎn)換存儲(chǔ)寄存器ADC12MEMx15.8.3 控制寄存器ADC12MCTLx15.8.4 中斷標(biāo)志寄存器ADC12IFG.x和中斷允許寄存器ADC12IEN.x15.8.5 中斷向量寄存器ADC12IV15.9 ADC12接地與降噪第16章 FLASH型芯片的開(kāi)發(fā)16.1 開(kāi)發(fā)系統(tǒng)概述16.1.1 開(kāi)發(fā)技術(shù)16.1.2 MSP430系列的開(kāi)發(fā)16.1.3 MSP430F系列的開(kāi)發(fā)16.2 FLASH型的FET開(kāi)發(fā)方法16.2.1 MSP430芯片的JTAG接口16.2.2 FLASH型仿真工具16.3 FLASH型的BOOT ROM16.3.1 標(biāo)準(zhǔn)復(fù)位過(guò)程和進(jìn)入BSL過(guò)程16.3.2 BSL的UART協(xié)議16.3.3 數(shù)據(jù)格式16.3.4 退出BSL16.3.5 保護(hù)口令16.3.6 BSL的內(nèi)部設(shè)置和資源附錄A 尋址空間附錄B 指令說(shuō)明B.1 指令匯總B.2 指令格式B.3 不增加ROM開(kāi)銷的模擬指令B.4 指令說(shuō)明(字母順序)B.5 用幾條指令模擬的宏指令附錄C MSP430系列單片機(jī)參數(shù)表附錄D MSP430系列單片機(jī)封裝形式附錄E MSP430系列器件命名
上傳時(shí)間: 2014-04-28
上傳用戶:sssnaxie
C++完美演繹 經(jīng)典算法 如 /* 頭文件:my_Include.h */ #include <stdio.h> /* 展開(kāi)C語(yǔ)言的內(nèi)建函數(shù)指令 */ #define PI 3.1415926 /* 宏常量,在稍后章節(jié)再詳解 */ #define circle(radius) (PI*radius*radius) /* 宏函數(shù),圓的面積 */ /* 將比較數(shù)值大小的函數(shù)寫(xiě)在自編include文件內(nèi) */ int show_big_or_small (int a,int b,int c) { int tmp if (a>b) { tmp = a a = b b = tmp } if (b>c) { tmp = b b = c c = tmp } if (a>b) { tmp = a a = b b = tmp } printf("由小至大排序之后的結(jié)果:%d %d %d\n", a, b, c) } 程序執(zhí)行結(jié)果: 由小至大排序之后的結(jié)果:1 2 3 可將內(nèi)建函數(shù)的include文件展開(kāi)在自編的include文件中 圓圈的面積是=201.0619264
標(biāo)簽: my_Include include define 3.141
上傳時(shí)間: 2014-01-17
上傳用戶:epson850
在WinAVR下的ST7565圖形點(diǎn)陣的驅(qū)動(dòng)程序,可以顯示5*7 & 8*16的ASCII和自定義的漢字,並且有3*4矩陣按鍵的掃描解碼程序。
標(biāo)簽: WinAVR 7565 ST 驅(qū)動(dòng)
上傳時(shí)間: 2013-12-26
上傳用戶:LIKE
針對(duì)傳統(tǒng)PID控制器參數(shù)整定不易的局限性,將模糊控制與PID相結(jié)合,構(gòu)造了一個(gè)模糊自整定PID控制器
上傳時(shí)間: 2017-03-23
上傳用戶:jing911003
實(shí)數(shù)編碼的遺傳算法pid整定,實(shí)現(xiàn)系數(shù)自整定
標(biāo)簽: pid 實(shí)數(shù)編碼 算法 整定
上傳時(shí)間: 2013-12-21
上傳用戶:fandeshun
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定義 sfr WDT_CONTR = 0xe1;//stc2051的看門狗?????? /**********全局常量************/ //寫(xiě)卡的命令 #define write_command0 0//寫(xiě)密碼 #define write_command1 1//寫(xiě)配置字 #define write_command2 2//密碼寫(xiě)數(shù)據(jù) #define write_command3 3//喚醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //讀卡的時(shí)間參數(shù)us #define ts_min 250//270*11.0592/12=249//取近似的整數(shù) #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10調(diào)整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中斷處理:采用查詢的方法讀卡時(shí)關(guān)所有中斷****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI總線 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//測(cè)試綠燈 sbit led_light1 = P1^5;//測(cè)試紅燈 sbit led_light_ok = P1^1;//讀卡成功標(biāo)志 sbit fengmingqi = P1^5; /***********全局變量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密碼 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存儲(chǔ)卡上用戶數(shù)據(jù)(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收數(shù)組ram uchar command; //第一個(gè)命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //緩存定時(shí)值,因用同一個(gè)定時(shí)器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //緩存定時(shí)值,因用同一個(gè)定時(shí)器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函數(shù)原型*****************/ //讀寫(xiě)操作 void f_readcard(void);//全部讀出1~7 AOR喚醒 void f_writecard(uchar x);//根據(jù)命令寫(xiě)不同的內(nèi)容和操作 void f_clearpassword(void);//清除密碼 void f_changepassword(void);//修改密碼 //功能子函數(shù) void write_password(uchar data *data p);//寫(xiě)初始密碼或數(shù)據(jù) void write_block(uchar x,uchar data *data p);//不能用通用指針 void write_bit(bit x);//寫(xiě)位 /*子函數(shù)區(qū)*****************************************************/ void delay_2(uint x) //延時(shí),時(shí)間x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能頻繁的復(fù)位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允許接收 //SCON =0x50; //01010000B:10位異步收發(fā),波特率可變,SM2=0不用接收到有效停止位才RI=1, //REN=1允許接收 TMOD = 0x21; //定時(shí)器1 定時(shí)方式2(8位),定時(shí)器0 定時(shí)方式1(16位) TCON = 0x40; //設(shè)定時(shí)器1 允許開(kāi)始計(jì)時(shí)(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //啟動(dòng)定時(shí)器 WDT_CONTR = 0x3c;//使能看門狗 p_U2270B_Standby = 0;//單電源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//讀卡 { EA = 0;//全關(guān),防止影響跳變的定時(shí)器計(jì)時(shí) WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用喚醒功能來(lái)防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作碼讀0頁(yè) write_bit(0); write_password(&bankdata[24]);//密碼block7 p_U2270B_CFE =1 ;// delay_2(516);//編程及確認(rèn)時(shí)間5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一個(gè)穩(wěn)定的低電平?超時(shí)判斷? while(!p_U2270B_OutPut);//等待上升沿的到來(lái)同步信號(hào)檢測(cè)1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定時(shí)器晚啟動(dòng)10個(gè)周期 //同步頭 if((324 < a.W) && (a.W < 353)) ;//檢測(cè)同步信號(hào)1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //讀0~7塊的數(shù)據(jù) for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8個(gè)位 { //等待下降沿的到來(lái) while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再賦值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//讀卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//寫(xiě)卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//寫(xiě)密碼:初始化密碼 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//寫(xiě)操作碼1:10 write_bit(0);//寫(xiě)操作碼0 write_bit(0);//寫(xiě)鎖定位0 for(i = 0;i < 35;i++) { write_bit(1);//寫(xiě)數(shù)據(jù)位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//測(cè)試使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密碼存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡參數(shù):初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//寫(xiě)操作碼1:10 write_bit(0);//寫(xiě)操作碼0 write_bit(0);//寫(xiě)鎖定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密碼寫(xiě)數(shù)據(jù) { uchar data*data p; p = &bankdata[24]; write_bit(1);//寫(xiě)操作碼1:10 write_bit(0);//寫(xiě)操作碼0 write_password(p);//發(fā)口令 write_bit(0);//寫(xiě)鎖定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//寫(xiě)數(shù)據(jù) } else if(x == write_command3)//aor //喚醒 { //cominceptbuff[1]操作碼10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密碼 p_U2270B_CFE = 1;//此時(shí)數(shù)據(jù)不停的循環(huán)傳出 } else //停止操作碼 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密碼 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密碼 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作碼10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//發(fā)原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//寫(xiě)新配置參數(shù):pwd=0 //密碼無(wú)效:即清除密碼 DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密碼 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密碼 DATA = 0x80;//操作碼10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//發(fā)原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//寫(xiě)新密碼 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密碼存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函數(shù)***********************************/ void write_bit(bit x)//寫(xiě)一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延時(shí)448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫(xiě)1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫(xiě)0 } } /*******************寫(xiě)一個(gè)block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0數(shù)據(jù) { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //讀卡 f_writecard(command1); //寫(xiě)卡 f_clearpassword(); //清除密碼 f_changepassword(); //修改密碼 } }
標(biāo)簽: 12345
上傳時(shí)間: 2017-10-20
上傳用戶:my_lcs
貴州電解鋁廠供電四車間廠房?jī)?nèi)變壓器、整流柜、電容等設(shè)備種類繁多,同系列設(shè)備安放距離跨度較大.這些電力電子器件長(zhǎng)期運(yùn)行導(dǎo)致系統(tǒng)內(nèi)部某些連接點(diǎn)絕緣介質(zhì)老化,甚至脫落.這種現(xiàn)象單憑肉眼很難觀察,該廠對(duì)此問(wèn)題的解決方法為:技術(shù)工人攜帶小型紅外探測(cè)儀定期采集上述器件的某些連接點(diǎn),從紅外圖像數(shù)據(jù)得出溫度數(shù)據(jù)以此判斷器件工作是否處于良好狀態(tài).由于人為因素,工人不一定能全部獲取所有連接點(diǎn)數(shù)據(jù).可見(jiàn),此方法費(fèi)時(shí)費(fèi)力,還存在隱患. 針對(duì)現(xiàn)行探測(cè)方法存在的弊端,依托"中鋁貴州分公司電解鋁廠整流所安全運(yùn)行監(jiān)控系統(tǒng)開(kāi)發(fā)"項(xiàng)目,利用一臺(tái)直線行走的智能小車停靠在已選擇的定位點(diǎn)處監(jiān)測(cè)車間的電器設(shè)備,因此這就涉及到了監(jiān)控小車的精準(zhǔn)定位問(wèn)題.本文以卞位機(jī)智能監(jiān)控小車為研究對(duì)象,采用模糊PID控制技術(shù)對(duì)PLC發(fā)出的脈沖頻率進(jìn)行自動(dòng)調(diào)節(jié),依據(jù)脈沖頻率誤差E和誤差變化率EC的變化對(duì)PID控制的參數(shù)進(jìn)行自整定,實(shí)現(xiàn)對(duì)小車速度的模糊控制,從而實(shí)現(xiàn)了小車的精準(zhǔn)定位,為上位機(jī)的監(jiān)控工作做好了準(zhǔn)備. 論文第一章介紹了電解鋁廠供電車間的供電情況,分析了小車定位精準(zhǔn)的重要性,介紹了本文的研究?jī)?nèi)容.第二章對(duì)小車主要結(jié)構(gòu)的硬件設(shè)計(jì)作了介紹.第三章論述了小車的運(yùn)動(dòng)控制,從分析步進(jìn)電機(jī)的矩頻特性和數(shù)學(xué)模型入手,介紹了小車的啟停控制和運(yùn)動(dòng)中的測(cè)速.第四章論述了小車的精準(zhǔn)定位方法,介紹了模糊PID控制器設(shè)計(jì),重點(diǎn)介紹了模糊PID控制算法的程序設(shè)計(jì).第五章列舉了實(shí)際運(yùn)行調(diào)試中出現(xiàn)的幾種問(wèn)題,介紹了相應(yīng)的控制方法加以克服.第六章對(duì)論文進(jìn)行了總結(jié).
標(biāo)簽: 直線 智能監(jiān)控 定位
上傳時(shí)間: 2013-04-24
上傳用戶:kirivir
減搖鰭是船舶與海洋工程中的一種重要系統(tǒng),目前已在多種船舶中廣泛應(yīng)用。減搖鰭對(duì)于提高船舶耐波性,增加船舶使用壽命,改善設(shè)備與人員的工作條件,提高艦艇的戰(zhàn)斗力具有重要作用。減小船舶橫搖是目前船舶運(yùn)動(dòng)控制領(lǐng)域的重要課題之一。本文以船舶減搖鰭系統(tǒng)作為研究對(duì)象,重點(diǎn)講述了基于ARM處理器的減搖鰭控制器的設(shè)計(jì)與實(shí)現(xiàn)方案。 減搖鰭系統(tǒng)目前大多采用基于力矩對(duì)抗原理的PID控制器。控制器的性能對(duì)船舶自然橫搖周期和無(wú)因次橫搖衰減系數(shù)有著很大的依賴關(guān)系。由于船舶橫搖運(yùn)動(dòng)的復(fù)雜性、非線性、時(shí)變性和海況的不確定性,經(jīng)典PID控制難以獲得滿意的控制效果。采用先進(jìn)的控制策略是解決這一問(wèn)題的有效方法。本論文將模糊控制與PID控制相結(jié)合,實(shí)現(xiàn)了無(wú)須精確的對(duì)象模型,只須將操作人員和專家長(zhǎng)期實(shí)踐積累的經(jīng)驗(yàn)知識(shí)用控制規(guī)則模型化,然后用模糊推理在線辨識(shí)對(duì)象特征參數(shù),便可對(duì)PID參數(shù)實(shí)現(xiàn)自整定。另外,浪級(jí)調(diào)節(jié)器做為減搖鰭控制器的一個(gè)重要組成部分,本論文也對(duì)其設(shè)計(jì)進(jìn)行了研究,提出了一種基于海浪譜估計(jì)的浪級(jí)調(diào)節(jié)器的設(shè)計(jì)方法,彌補(bǔ)了傳統(tǒng)浪級(jí)調(diào)節(jié)器不能充分利用海浪信息的不足。 目前大多數(shù)的減搖鰭控制器使用單片機(jī)作為主處理器或者以工控機(jī)為基礎(chǔ)開(kāi)發(fā)而來(lái)的,前者集成度不高,穩(wěn)定性也不好,而后者成本較高。因此,本課題設(shè)計(jì)了一款新型的基于ARM處理器的減搖鰭控制器,解決了上述問(wèn)題。該系統(tǒng)主要由硬件平臺(tái)和軟件平臺(tái)兩部分組成。硬件平臺(tái)主要包括基于飛利浦公司的LPC2214的控制器核心電路和輔助實(shí)現(xiàn)控制的驅(qū)動(dòng)電路;軟件平臺(tái)主要是基于ARM的軟件,包括啟動(dòng)代碼和應(yīng)用程序。 研究結(jié)果表明:開(kāi)發(fā)的嵌入式減搖鰭控制系統(tǒng)不僅具有集成度高、性價(jià)比高、性能優(yōu)越、抗干擾能力強(qiáng)、穩(wěn)定性好、實(shí)時(shí)性高等優(yōu)點(diǎn)。同時(shí)更能夠適應(yīng)減搖鰭控制系統(tǒng)智能化的發(fā)展趨勢(shì),所以該減搖鰭控制器具有很好的使用價(jià)值及意義。
上傳時(shí)間: 2013-07-10
上傳用戶:giser
本文主要介紹了`加熱爐混合模糊控制的方案。該方案采用了“短周期”預(yù)測(cè)爐溫的模糊控制策略,將模糊控制和PID 控制結(jié)合在一起,利用協(xié)調(diào)因子的在線自整定來(lái)確定重油流量,實(shí)現(xiàn)了空燃比的自尋優(yōu)模糊控制。該系統(tǒng)
標(biāo)簽: PID 模糊 加熱爐 中的應(yīng)用
上傳時(shí)間: 2013-06-25
上傳用戶:牧羊人8920
課題分析了目前國(guó)內(nèi)外減搖鰭控制技術(shù)的發(fā)展與現(xiàn)狀,重點(diǎn)講述了基于ARM處理器的減搖鰭控制器的功能設(shè)計(jì)與實(shí)現(xiàn)方案。 減搖鰭是一種由微機(jī)控制的自動(dòng)化程度很高的船舶減搖裝置。減搖鰭控制系統(tǒng)根據(jù)人為輸入的信號(hào)和來(lái)自鰭本身的反饋信號(hào),及時(shí)輸出不同的控制指令,控制鰭轉(zhuǎn)動(dòng)到期望的角度,達(dá)到減小船舶橫搖的目的。但目前大多數(shù)的減搖鰭控制器使用單片機(jī)作為主處理器或者以工控機(jī)為基礎(chǔ)開(kāi)發(fā)而來(lái)的,前者集成度不高,穩(wěn)定性也不好,而后者成本較高。因此,課題設(shè)計(jì)了一款新型的基于ARM嵌入式處理器的嵌入式減搖鰭控制器,解決了上述問(wèn)題。 該系統(tǒng)主要由硬件平臺(tái)和軟件平臺(tái)兩部分組成。硬件平臺(tái)主要包括基于飛利浦公司的LPC2290的控制器核心電路和輔助實(shí)現(xiàn)控制的驅(qū)動(dòng)電路;軟件平臺(tái)主要是基于ARM的軟件,包括啟動(dòng)代碼和應(yīng)用程序;為實(shí)現(xiàn)系統(tǒng)的可靠運(yùn)行,同時(shí)也采取了一些保證系統(tǒng)可靠性的措施。 目前,減搖鰭系統(tǒng)大多采用基于力矩對(duì)抗原理的PID控制器。由于船舶橫搖運(yùn)動(dòng)的非線性、復(fù)雜性、時(shí)變性以及海況的不確定性,經(jīng)典PID控制很難獲得令人滿意的控制效果。因此,如何實(shí)現(xiàn)PID參數(shù)的自整定就顯得猶為重要。模糊控制事先不需要獲知對(duì)象的精確數(shù)學(xué)模型,而是基于人類的思維以及經(jīng)驗(yàn),用語(yǔ)言規(guī)則描述控制過(guò)程,并根據(jù)規(guī)則去調(diào)整控制算法或控制參數(shù)。本論文將模糊控制與PID控制相結(jié)合,實(shí)現(xiàn)了無(wú)須精確的對(duì)象模型,只須將操作人員和專家長(zhǎng)期實(shí)踐積累的經(jīng)驗(yàn)知識(shí)用控制規(guī)則模型化,然后用模糊推理在線辨識(shí)對(duì)象特征參數(shù),實(shí)時(shí)改變控制策略,便可對(duì)PID參數(shù)實(shí)現(xiàn)最佳調(diào)整。 研究結(jié)果表明:采用該控制手段能較好的滿足設(shè)計(jì)要求,開(kāi)發(fā)的嵌入式減搖鰭控制系統(tǒng)具有設(shè)計(jì)合理、集成度高、性價(jià)比高、性能優(yōu)越、抗干擾能力強(qiáng)、穩(wěn)定性好、實(shí)時(shí)性高等優(yōu)點(diǎn)。同時(shí)能夠適應(yīng)減搖鰭控制系統(tǒng)智能化的發(fā)展趨勢(shì),所以該減搖鰭控制器具有很好的使用價(jià)值及意義。
上傳時(shí)間: 2013-06-06
上傳用戶:mslj2008
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1