日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]摘要:介紹用高級(jí)語(yǔ)言C自動(dòng)生成單片機(jī)的查表程序,用查表的方法取代繁瑣復(fù)雜的數(shù)學(xué)運(yùn)算,計(jì)算精度高、時(shí)間短。包括自動(dòng)生成程序的原理以及D/A輸出復(fù)雜波形、非線性插值的示例。在單片機(jī)應(yīng)用系統(tǒng)中,常用到許多復(fù)雜的

摘要:介紹用高級(jí)語(yǔ)言C自動(dòng)生成單片機(jī)的查表程序,用查表的方法取代繁瑣復(fù)雜的數(shù)學(xué)運(yùn)算,計(jì)算精度高、時(shí)間短。包括自動(dòng)生成程序的原理以及D/A輸出復(fù)雜波形、非線性插值的示例。

在單片機(jī)應(yīng)用系統(tǒng)中,常用到許多復(fù)雜的數(shù)學(xué)計(jì)算,如計(jì)算sin(x)、cos(x)、有效值計(jì)算、非線性插值等。這些在高級(jí)語(yǔ)言中是簡(jiǎn)單的工作,而在單片機(jī)的匯編語(yǔ)言中卻是非常復(fù)雜的。因?yàn)椋@些運(yùn)算大都要用乘除運(yùn)算來(lái)進(jìn)行近似運(yùn)算,計(jì)算的精度很難滿足要求。更難以接受的是其運(yùn)算時(shí)間太長(zhǎng),這對(duì)于無(wú)乘除指令的單片機(jī)系統(tǒng)更是如此。采用查表取代復(fù)雜的計(jì)算是一個(gè)明智的選擇。但是,這種查表程序表格往往都較長(zhǎng),通常為幾十條到一二百條,如果采用手工輸入不但要花費(fèi)大量的時(shí)間,而且還容易出錯(cuò)。利用高級(jí)語(yǔ)言的單片機(jī)查表程序的自動(dòng)生成技術(shù)可以大大減小工作量,而且不易出錯(cuò)。

用過(guò)Microchip公司的PIC16系列單片機(jī)的讀者都知道,該系列單片機(jī)具有許多優(yōu)點(diǎn),唯感遺憾的是在該指令中沒(méi)有乘除指令(PIC17以系列才有乘指令)。在應(yīng)用中常要自編乘除了程序以完成乘除運(yùn)算,這種程序執(zhí)行都要花費(fèi)較多的時(shí)間,如雙字節(jié)的乘法,運(yùn)算一次需要花費(fèi)100多個(gè)指令周期,而如果要用乘除進(jìn)行sin(x)、cos(x)、開方的計(jì)算,則花費(fèi)的時(shí)間就更多。因此,利用高級(jí)語(yǔ)言進(jìn)行單片機(jī)查表程序的自動(dòng)笥成技術(shù)在PIC16系列單片機(jī)中就顯得更有意義。

現(xiàn)以目前在我國(guó)正大量使用的Microchip公司的PIC16系列單片機(jī)為例,用幾個(gè)例子說(shuō)明該技術(shù)的應(yīng)用。當(dāng)然,這種方法也可以用在其它單片機(jī)中,只是所給的示例程序中有關(guān)單片機(jī)的語(yǔ)句要改為相應(yīng)的單片機(jī)語(yǔ)言。本文采用Tubro

C作為高級(jí)語(yǔ)言的編程工具,也可以采用其它高級(jí)語(yǔ)言。

1 原理

利用高級(jí)語(yǔ)言自動(dòng)生成查表程序的實(shí)質(zhì)就是利用高級(jí)語(yǔ)言的計(jì)算功能,把原本復(fù)雜的計(jì)算轉(zhuǎn)換為簡(jiǎn)單的查表結(jié)果,以文本文件的形式輸出查表程序,在單片機(jī)編程中將該段程序插入相應(yīng)的程序中去。在應(yīng)用中需要注意的是:查表結(jié)果沒(méi)有小數(shù),故在計(jì)算輸出時(shí)要四舍五入;查表結(jié)果只能在0~255之間,超出此范圍要加以處理。PIC16系列單片機(jī)的匯編程序默認(rèn)數(shù)制為十六進(jìn)制,如要使用十進(jìn)制,要在數(shù)前加“.”。還有一點(diǎn)要注意的是,在插入查表程序時(shí)特別要注意查表程序不能跨過(guò)0~255的頁(yè)面。

2 示例

2.1 用D/A輸出復(fù)雜的波形

用D/A器件可以輸出復(fù)雜的波形,如sin(x)、雙音多頻信號(hào)等復(fù)雜的波形。這里以并行D/A、輸出sin(x)為例,假設(shè)電源電壓為5V,D/A的參考電壓也為5V;同時(shí)假設(shè)在sin(x)的半波中共輸出90個(gè)點(diǎn)(2°輸出1個(gè)點(diǎn)),相應(yīng)的C語(yǔ)言源程序如下:

  /*程序A.C*/
     #include<STdio.h>
     #include<math.h>
     main()
     {
     FILE *fp;
     char f[15];
     float Vmax,v,w;
     int i,k;
     puts ("the output file name:");
     gets (f); /*輸入要輸出的文件名*/
     if((fp=fopen(f,"w"))= =NULL)
     {puts("cON't open output file");
     exit(0);
     }
     puts("Vmax:");
     scanf("%f",&Vmax); /*輸入要輸出的sin波形峰值*/
     fprintf(fp,"SUB1 MOVWF BUF"); /*輸出查表程序的第1行*/
     fprintf(fp,"SUBLW .%d",90); /*輸出查表程序的第2行*/
     fprintf(fp,"BTFSS STATUS,C");/*輸出查表程序的第3行*/
     fprintf(fp,"RETLW .0"); /*輸出查表程序的第4行*/
     fprintf(fp,"MOVLW HIGH($+4)"); /*輸出查表程序的第5行*/
     fprintf(fp,"MOVWF PCLATH"); /*輸出查表程序的第6行*/
     fprintf(fp,"MOVF BUF,W"); /*輸出查表程序的第7行*/
     fprintf(fp,"ADDWF PCL,F"); /*輸出查表程序的第8行*/
     for(i=0;i<=90;i++)
     {w=i*2; /*2°輸出1個(gè)點(diǎn)*/
     w=w*3.14159/180; /*轉(zhuǎn)換成弧度*/
     v=sin(w)*255*Vmax*5; /*根據(jù)電壓峰值計(jì)算該點(diǎn)的輸出值*/
     k=v+0.5; /*四舍五入*/
     if(k<0)k=0;
     if(k>255)k=255;
     fprinft(fp,"RETLW.%d;%.d",k,i); /*輸出查表表格*/
     }
     fclose(fp);
     printf("Press any key to end
     ……");
     getch();
     }


     利用以上程序,計(jì)算時(shí)輸入文件名為A.ASM,Vmax=3,得至的A.ASM的內(nèi)容如下(共90行表格,略去其中的大部分表格):
     ;A.ASM
     SUB1 MOVWF BUF
     SUBLW .90
     BTFSS STATUS,C
     RETLW .0
     MOVLW HIGH($+4)
     MOVWF PCLATH
     MOVF BUF,W
     ADDWF PCL,F(xiàn)
     RETLW .0;0
     RETLW .5;1
     ……
     RETLW .90;72
     RETLW .86;73
     RETLW .81;74
     ……
     RETLW .11;88
     RETLW .5;89
     RETLW .0;90
 

 

把以下程序插入單片機(jī)程序的適當(dāng)?shù)胤?,查表時(shí)中要賦以W相應(yīng)的值,再CALL

SUB1就可以得到sin(x)第W點(diǎn)上的值。整個(gè)計(jì)算約10個(gè)指令周期(如采用4MHz晶振,為10μs左右)。如果采用乘除的方法計(jì)算,至少要花幾百甚至上千個(gè)指令周期,而且得到的結(jié)果精度也差。

2.2 非線性插值

在單片機(jī)應(yīng)用中會(huì)遇到非線性元件,例如熱敏電阻的電阻-溫度特性、斷路器的保護(hù)特性等都是非線性關(guān)系。這里以斷路器的保護(hù)特性為例,說(shuō)明自動(dòng)編程的應(yīng)用。假設(shè)現(xiàn)在要仿真的斷路器的特性為雙曲線,如圖1所示。

據(jù)此,可以設(shè)延時(shí)時(shí)間與電流的關(guān)系為

(I+I0)(t+t0)=K

(1)

由圖1的三個(gè)點(diǎn)可以得到以下聯(lián)立方程組:

(I+20)(t+33)=K

(I+40)(t+20)=K (2)

(I+90)(t+10)=K

采用迭代法解得I0=11.111 1,t0=0.222

2,K=1 033.58,代入式(1)得

t=[1 033.58/(I+11.111 1)]-0.222

2 (3)

現(xiàn)在假設(shè)在硬件線路中,電流信號(hào)是轉(zhuǎn)換為電壓信號(hào)經(jīng)A/D后得到的,其相應(yīng)點(diǎn)的關(guān)系為:0A→0V,100A→3V,A/D為8位,A/D參考電壓為5V。轉(zhuǎn)換計(jì)算首先將A/D值轉(zhuǎn)換為對(duì)應(yīng)的電壓值,再將電壓值轉(zhuǎn)換為對(duì)應(yīng)的電流值I,再根據(jù)式(3)求相應(yīng)的延時(shí)時(shí)間T,最后將延時(shí)時(shí)間T再轉(zhuǎn)換為延時(shí)的間常數(shù)T0。T0按式(4)計(jì)算:

(256-t0)·Tcy·K=T  (4)

t0=256-t/(Tcy·K) (5)

其中,Tcy為指令周期,在4MHz晶振時(shí),Tcy=1μs;K為預(yù)分頻系數(shù);t為欲延時(shí)的時(shí)間,單位為μs。

假設(shè)定時(shí)器用TMR0,預(yù)分頻系數(shù)為256,晶振的振蕩頻率為4MHz,則最大延時(shí)為65.535ms。程序如下(其中與程序A.C相同或類似的均略去):

   /*程序B.C*/
     ……
     fprintf(fp,"SUB2 MOVWF BUF");
     fprintf(fp,"MOVLW HIGH($+4)");
     fprintf(fp,"MOVWF PCLATH");
     fprintf(fp,"MOVF BUF,W");
     fprintf(fp,"ORG 200H,F"); /*表格從200H開始,避免跨頁(yè)*/
     fprintf(fp,"ADDWF PLC,F");
     for(i=0;i<=254;i++)
     {ad=i;
     v=ad*5/255; /*求相應(yīng)于A/D值的電壓V*/
     I=100*v/3; /*求相應(yīng)的電流I*/
     T=1033.58/(I+11.1111)-0.2222; /*按式(3)求相應(yīng)的延時(shí)時(shí)間*/
     T0=256-T*1000*256; /*轉(zhuǎn)換為時(shí)間常數(shù)*/
     k=T0+0.5;
     if(k<0)k=0;
     if(k>255)k=255;
     fprintf(fp,)"
     RETLW.%d;AD=.%d,I=%5.1f(A),T=%5.1f(ms)",k,i,I,T);
     }
     ……
     形成的查表程序如下(共255行表格,略去其中的大部分表格):
     ;B.asm
     SUB2 MOVWF BUF
     MOVLW HIGH($+4)
     MOVWF PCLATH
     MOVF BUF,W
     ORG 200H
     ADDWF PCL,F
     RETLW .0;AD=.0,I=0.0(A),T=92.8(ms)
     ……
     RETLW .116;AD=.27,I=17.6(A),T=35.7(ms)
     RETLW .120;AD=.28,I=18.3(A),T=34.9(ms)
     RETLW .123;AD=.29,I=19.0(A),T=34.2(ms)
     RETLW .125;AD=.30,I=19.6(A),T=33.4(ms)
     ……
     RETLW .234;AD=.254,I=166.0(A),T=5.6(ms)

 

單片機(jī)進(jìn)行電流采樣A/D,把A/D結(jié)果賦給W,CALL

SUB2便可得到相應(yīng)的延時(shí)時(shí)間常數(shù)W。

3 結(jié)論

利用高級(jí)語(yǔ)言自動(dòng)生成單片機(jī)的查表程序,可以完成許多單片機(jī)難以完成或需要進(jìn)行大量計(jì)算才能完成的復(fù)雜運(yùn)算,計(jì)算精度高。單片機(jī)利用此結(jié)果進(jìn)行插值運(yùn)行速度要快得多。典型的4MHz晶振時(shí),需要的運(yùn)算時(shí)間為10μs。限于篇幅,本文只給出兩個(gè)實(shí)例,實(shí)際上它可以用于單片機(jī)測(cè)控系統(tǒng)中的許多方面,如模糊控制中的模糊規(guī)則的推理、非線性傳感器的特性讀取以及其它方面。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

武漢2025年9月9日 /美通社/ -- 7月24日,2025慧聰跨業(yè)品牌巡展——湖北?武漢站在武漢中南花園酒店隆重舉辦!本次巡展由慧聰安防網(wǎng)、慧聰物聯(lián)網(wǎng)、慧聰音響燈光網(wǎng)、慧聰LED屏網(wǎng)、慧聰教育網(wǎng)聯(lián)合主辦,吸引了安防、...

關(guān)鍵字: AI 希捷 BSP 平板

上海2025年9月9日 /美通社/ -- 9月8日,移遠(yuǎn)通信宣布,其自研藍(lán)牙協(xié)議棧DynaBlue率先通過(guò)藍(lán)牙技術(shù)聯(lián)盟(SIG)BQB 6.1標(biāo)準(zhǔn)認(rèn)證。作為移遠(yuǎn)深耕短距離通信...

關(guān)鍵字: 藍(lán)牙協(xié)議棧 移遠(yuǎn)通信 COM BSP

上海2025年9月9日 /美通社/ -- 為全面落實(shí)黨中央、國(guó)務(wù)院和上海市委、市政府關(guān)于加快發(fā)展人力資源服務(wù)業(yè)的決策部署,更好發(fā)揮人力資源服務(wù)業(yè)賦能百業(yè)作用,8月29日,以"AI智領(lǐng) HR智鏈 靜候你來(lái)&quo...

關(guān)鍵字: 智能體 AI BSP 人工智能

北京2025年9月8日 /美通社/ -- 近日,易生支付與一汽出行達(dá)成合作,為其自主研發(fā)的"旗馭車管"車輛運(yùn)營(yíng)管理平臺(tái)提供全流程支付通道及技術(shù)支持。此次合作不僅提升了平臺(tái)對(duì)百余家企業(yè)客戶的運(yùn)營(yíng)管理效率...

關(guān)鍵字: 一汽 智能化 BSP SAAS

深圳2025年9月8日 /美通社/ -- 晶泰科技(2228.HK)今日宣布,由其助力智擎生技制藥(PharmaEngine, Inc.)發(fā)現(xiàn)的新一代PRMT5抑制劑PEP0...

關(guān)鍵字: 泰科 AI MT BSP

上海2025年9月5日 /美通社/ -- 由上海市經(jīng)濟(jì)和信息化委員會(huì)、上海市發(fā)展和改革委員會(huì)、上海市商務(wù)委員會(huì)、上海市教育委員會(huì)、上海市科學(xué)技術(shù)委員會(huì)指導(dǎo),東浩蘭生(集團(tuán))有限公司主辦,東浩蘭生會(huì)展集團(tuán)上海工業(yè)商務(wù)展覽有...

關(guān)鍵字: 電子 BSP 芯片 自動(dòng)駕駛

推進(jìn)卓越制造,擴(kuò)大產(chǎn)能并優(yōu)化布局 蘇州2025年9月5日 /美通社/ --?耐世特汽車系統(tǒng)與蘇州工業(yè)園區(qū)管委會(huì)正式簽署備忘錄,以設(shè)立耐世特亞太總部蘇州智能制造項(xiàng)目。...

關(guān)鍵字: 智能制造 BSP 汽車系統(tǒng) 線控

慕尼黑和北京2025年9月4日 /美通社/ -- 寶馬集團(tuán)宣布,新世代首款量產(chǎn)車型BMW iX3將于9月5日全球首發(fā),9月8日震撼亮相慕尼黑車展。中國(guó)專屬版車型也將在年內(nèi)與大家見面,2026年在國(guó)內(nèi)投產(chǎn)。 寶馬集團(tuán)董事...

關(guān)鍵字: 寶馬 慕尼黑 BSP 數(shù)字化

北京2025年9月4日 /美通社/ --?在全球新一輪科技革命與產(chǎn)業(yè)變革的澎湃浪潮中,人工智能作為引領(lǐng)創(chuàng)新的核心驅(qū)動(dòng)力,正以前所未有的深度與廣度重塑各行業(yè)發(fā)展格局。體育領(lǐng)域深度融入科技變革浪潮,駛?cè)霐?shù)字化、智能化轉(zhuǎn)型快車...

關(guān)鍵字: 人工智能 智能體 AI BSP

上海2025年9月2日 /美通社/ -- 近日,由 ABB、Moxa(摩莎科技)等八家企業(yè)在上海聯(lián)合發(fā)起并成功舉辦"2025 Ethernet-APL 技術(shù)應(yīng)用發(fā)展大會(huì)"。會(huì)議以"破界?融合...

關(guān)鍵字: ETHERNET 智能未來(lái) BSP 工業(yè)通信
關(guān)閉