基于單片機的GPS定位系統設計

1 系統硬件

1.1單片機模塊

單片機的種類和型號可以說是有成百上千種,很多大的公司和企業都生產開發自己的單片機芯片,并且廣泛應用于各種產品。Intel、 philips、 摩托羅拉、凌陽、宏晶等等種類繁多。大體上可以分為51系列單片機和非51系列單片機。
其主要特點是:屬于增強型的80C51系列單片機,指令能夠向上兼容。額定工作電壓是3到5V,功耗相對較低,通用性強。程序存儲空間有8K字節,完全夠用。本設計選擇的是每個機器周期含有12個時鐘的型號,在實際使用中頻率最高可以達到48MHz,剛好滿足GPS信號接收機的刷新頻率。不需要專門的編程器,可以快速地將程序燒錄到單片機存儲器中。具備異步串行通信接口(即UART接口),同時抗干擾能力較強。掉電模式下可由外部中斷喚醒,方便于電池供電及便攜設備。能夠適應嚴酷的溫度環境,最低溫度零下40°C, 最高溫度85℃都可以正常使用。單片機上有512字節的只讀內存。芯片通用32個I/O端口。復位后:P1/P2/P3/P4為內部帶有弱上拉電阻的準雙向口,P0為開路漏極輸出,用作母線延伸時,不需要外接上拉電阻,但當其用作I/O端口時,需要外接上拉電阻。ISP(可編程系統)/IAP(可編程應用程序),不用專門的程序編輯器,不用特殊的仿真器,可以直接通過串口(RXD/P3.0,TXD/P3.1)下載用戶所需的程序,并在幾秒鐘內完成一片具有看門狗功能的EEPROM功能,總共有3個16位計時器/計數器。定時器T0、T1、T2外部中斷4通道、降邊中斷或低電平觸發電路,采用外部中斷、低電平觸發中斷模式激發Power Dawn模式,通用異步收發傳輸器(UART)通過使用定時器軟件可實現多個。單片機采取PDIP封裝。
單片機下電模式:典型功耗小于0.1μA,其喚醒可通過外部中斷。中斷返回后,接著運行原程序。空閑模式:一般情況下的功耗為2mA。正常運行模式:一般情況下的功耗是4mA~7ma外部中斷可以喚醒下電模式,適合運用于水表、煤氣表、便攜設備等電池電源系統以及方便攜帶的設備。
STC89C52RC引腳功能說明:
主電源引腳:
VCC(40引腳):電源電壓
VSS(20引腳):接地
可編程輸入輸出引腳:
P0端口(P0.0~P0.7,39~32引腳):端口P0是一個8位雙向I/O端口,具有漏極開路。作為輸出端口,各個管腳都可驅動8個使用雙極晶體管的數字電路。當將“1”寫入端口P0時,它可以用作高阻抗輸入。當訪問外部程序和數據存儲器時,端口P0還能提供低8位地址和8位數據的多路復用總線。這時,端口P0的內部上拉電阻是有效的。在閃存編程中,端口P0接收指令字節,但在程序驗證中,端口P0反而輸出指令字節。校驗時,需將上拉電阻接在外部。
P1端口(P1.0~P1.7,1~8引腳):端口P1是具有內部上拉電阻的一個8位雙向I/O端口。P1端口的輸出緩沖器能夠驅動(吸收或輸出電流模式)4個TTL輸入。當將1寫入P1端口時,內部上拉電阻能將端口拉到很高的電位,這時可以用作輸入端口。當使用端口p1作為輸入端口時,由于存在內部上拉電阻,從外部拉下的引腳將會出現輸出電流。
此外,P1.0和P1.1還可用作定時器/計數器2的外部計數輸入(P1.0/T2)和定時器/計數器2的觸發輸入(P1.1/T2EX),詳情見表3-1-1:
內置上拉電阻。P2的輸出緩沖器可以驅動(吸收或輸出電流模式)4個TTL輸入。當端口寫入1時,內部上拉電阻將端口拉到較高的電平,可用作輸入端口。當使用p2作為輸入端口時,外部信號拉低的引腳會由于內部拉起電阻而輸出電流。
當訪問16位地址的外部程序存儲器和外部數據存儲器(例如執行“MOVX@DPTR”指令)時,P2發送高8位地址。當訪問8位地址的外部數據存儲器(如執行“MOVX@R1”指令)時,P2端口pin的內容(即特殊寄存器(SFR)區域中P2寄存器的內容)在整個訪問期間不會改變。在對Flash ROM編程和程序校驗期間,P2也接收高位地址和一些控制信號。
P3端口(P3.0~P3.7,10~17引腳):P3是一個帶內部上拉電阻器的8位雙向I/O端口。P3的輸出緩沖器可以驅動(吸收或輸出電流模式)4個TTL輸入。向端口寫入1時,通過內部拉出電阻器將端口拉至高電位,并將其用作輸入端口。當P3作為輸入端口時,由于內部上拉電阻,由外部信號下拉的引腳將輸入電流。在flash ROM編程或程序驗證中,P3還接收一些控制信號。除了作為一個通用的I/O端口,P3端口還具有其他多路復用功能,如表3-1-2所示。
控制引腳:
RST(9引腳):重置輸入。當輸入的高電平達兩個以上的連續機器循環時,它是有效的。用于達到單片機的復位和初始化操作。看門狗定時結束后,該引腳持續發出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可能會使該功能沒有反應。在DISRTO默認狀態下,復位高電平是可行的。
ALE(30引腳):地址鎖存控制信號(ALE)在訪問外部程序存儲器時,會鎖存住較低8位地址的輸出脈沖。在閃存編程時,該引腳也用作編程輸入脈沖。
一般來說,ALE以晶體振蕩器六分之一的固定頻率輸出脈沖,可用作外部定時器或時鐘。但特別強調的是,每次訪問外部數據存儲器時,ALE脈沖將會被跳過。
如有必要,將地址位8EH的SFR的第0位置“1”,ALE操作無效。在此位置“1”,ALE僅在執行MOVX或MOV指令時有效。否則,ALE將被稍微拉高。此ALE啟用標志位(地址位8EH的SFR的第0位)設置為在外部執行模式下對微控制器有效。
PSEN(29引腳):外接程序存儲器選通信號,當單片機從外接程序存儲器運行外界代碼時,它在每一個機器循環中都要被激活兩次,但當訪問外界數據存儲器時,它就不需要被激活。
EA/VPP(31引腳):訪問外部程序存儲器控制信號。為使其可以從0000H至FFFFH的外接程序存儲器讀取到指令,EA一定要接GND。請注意,應用加密方式1時,請重置內部鎖定。為了其可以運行內部程序指令,應連接VCC。在閃存編程過程中,還要連接12伏VPP電壓。
XTAL1(19引腳):振蕩器反相放大器和內部時鐘發生電路的輸入端口。
XTAL2(18引腳):振蕩器反相放大器的輸入端口。
特殊功能寄存器
在STC89C52RC片內存儲器中,80H~FFH一共有128個單元位具有特殊功能寄存器(SFR),SFR的地址空間如下表3-1-3所示。
并不是所有的地址都能被定義,在80H~FFH共128個字節中只有一部分被定義。還有相當多的一部分并沒有被定義。對沒有被定義的單元讀寫將是無效的,讀出的數值將不確定,而寫入進去的數據也將會遺失。
不應將“1”寫入還未被定義的單元,由于這些單元在將來的產品中有可能會被賦予新的功能,在這種情況下,復位后這些單元數值都將會是“0”。
STC89C52RC除了擁有計時器/計數器0與計時器/計數器1之外,還增添了一個計時器/計數器2、計時器/計數器2的控制和狀態位位于T2CON(見表3-1-4)和T2MOD(見表3-1-7)。
計時器2是一個16位計時/計數器。通過對特殊功能的寄存器T2CON中的C/T2位進行設置,可將其視作計時器或計數器使用(T2CON的描述見表3-1-4所列)。計時器2有3種操作模式:捕獲、自動加載(遞增或遞減計數)和波特率發生器,這3種模式由T2CON中的位進行選擇(如表3-1-5所列)
捕獲模式:
在捕獲模式中,通過T2CON中的EXEN2得到2個選項。若EXEN2=0, 計時器2作為一個16位計時器或計數器(由T2CON中的C/位選擇),溢出時置位為TF2(計時器2溢出標志位)。此位可用來生成中斷(經由存在于使能IE寄存器的計時器2中斷使能位)。若EXEN2=1,與上述描述類似,但增添了一個特性,即為外界輸入T2EX由1變0時,將存在于計時器2的TL2和TH2的當前值各自捕捉到RCAP2L和RACP2H。此外,T2EX的負跳變使T2CON中的EXF2置1,EXF2和TF2一樣可以發生中斷(它的向量與定時器2溢出的中斷地址一樣,計時器2中斷服務程序通過訪問TF2和EXF2來弄清引發中斷的原因),捕獲模式如圖3-1-2所示。在此模式中,TL2和TH2不需重新裝載值,甚至當T2EX生成捕獲時間的時候,計數器還是以T2EX的負跳變或振蕩頻率的1/2(12時鐘模式)或者1/6(6時鐘模式)計數。
自動加載(遞增/遞減計數器):
16位自動加載中,計時器2可通過C/T2配置為計時器/計數器,程序控制遞增/遞減。計數的方向根據DCEN(遞減計數使能位)來確定,DCEN位于T2MMOD寄存器中,T2MOD寄存器每一位的功能描述如表3-1-7所示。當DCEN=0時,定時器2自行認定為向上計數;當DCEN=1時,計時器2可通過T2EX確定到底是遞增還是遞減計數。圖3-1-3展示了當DCEN=0時,定時器2如何自行認定遞增計數。在此種模式中,選哪種計數方式由設置EXEN2位來決定。假設EXEN2=0,定時器2依次遞增計數直至0FFFFH,并且在其溢出后將TF2置1,再將RCAP2L和RCAP2H中的16位的數值當作重新加載的值輸入定時器2。RCAP2L和RCAP2H的值是可以通過軟件預先設置的。
使用者切勿將其置1。這些是在將來89C51系列單片機中用來實現的新特性。在這一情況下,要用到保留位,在復位或無效狀態的情況下,它的值應為0;而在這些位的有效狀態情況下,它的值為1。保留位讀取到的值并不是確定的。
如果EXEN2=1,16位的重新裝載可通過滿溢或T2EX由1至0的負跳變來實現。在負跳變同時將EXF2置1。如果計時器2中斷被充能,那么當TF2或EXF2置1時,定時器2實行遞增計數,計數到0FFFFH后溢出并將TF2置1,同時還將產生中斷。定時器2的溢出將使RCAP2L和RCAP2H中的16位值作為重新加載的值存入TL2和TH2。
當T2EX置0時,將會使定時器2開始遞減計數。當TL2和TH2計數到與RCAP2L和RCAP2H中的值相同時,定時器將會產生中斷。
波特率發生器模式:
定時器1或定時器2被寄存器T2CON的位TCLK和RCLK許可得到串行口發送和接收的波特率。當TCLK=0時,定時器1被當做串行口發送波特率的發生器;反之,定時器2被當做串行口發送波特率的發生器。RCLK對串行口接收到的波特率擁有一樣的效果。通過這兩位,串行口能獲得不一樣的接收和發送波特率,一個是由定時器1產生的,另一個是由定時器2產生的。
如圖3-1-5所示為定時器工作在波特率的發生器模式的情況。與自動加載相似,當TH2溢出時,波特率發生器模式使定時器2寄存器重新裝載值,其值由寄存器RCAP2H和RCAP2L的16位提供,寄存器RCAP2H和RCAP2L的值是通過軟件來預先設置的。當工作在模式1和模式3的情況下,波特率由下面的公式所決定:
定時器可設置成“定時”或“計數”方式,在大多應用上,定時器都會被設置成“定時”方式(C/=0)。當定時器2作為定時器時,它的操作波特率發生器并不一樣。通常情況下定時器2會作為定時器來使用,它會在每個機器循環依次遞增(1/6或1/12振蕩頻率)。當定時器2作為波特率發生器使用時,它在6時鐘模式下,以振蕩器的頻率遞增(12時鐘模式時為1/12振蕩頻率)。
如圖3-1-5所示,定時器2處在波特率發生器模式,只有在寄存器T2CON中的RCLK和TCLK=1時,定時器2才會作為波特率發生器有效。應當注意的是TH2的溢出不會將TF2置1,也不能夠產生中斷。在這種情況下,當定時器被當做波特率發生器時,定時器2的中斷不必被禁止。如果EXEN2(T2外界使能標志)被置1,在T2EX中從1至0的轉換會將EXF2(T2外部標志位)置1,但并不能致使TH2和TL2重新加載。當定時器2被用為波特率發生器時,若有需要的話,T2EX可被當做附加的外部中斷。
當計時器工作在波特率發生器模式下,就不用對TH2和TL2進行讀或者寫操作,每經過一個狀態時間或者收到由T2進入的異步信號,定時器2將會加1。在這時,對TH2和TL2進行讀或寫操作都絕對不可能是準確的;可以對RCAP2寄存器進行讀操作,但不能進行寫操作,否則將導致自動加載產生錯誤。當對定時器2或者寄存器RCAP進行查詢時。應先關閉定時器(清零TR2)之后在進行訪問。表3-1-8列出了常用的波特率還有怎樣用定時器2得到的這些波特率。
看門狗應用:
STC單片機有兩種時鐘模式,一種是單倍速,也就是12時鐘模式,在這種模式下,STC單片機和除STC系列外的51單片機具有一樣的機器循環,即12個振蕩周期為一個機器循環;另一種是雙倍速,又稱6時鐘模式,在這種模式下,STC單片機比其他51系列單片機運行速度快了接近一倍之多。

2 系統軟件

2.1 初始化模塊

初始化模塊應該在通電開機后,實現單片機、LCD1602液晶顯示屏和GPS模塊的初始化。應該對單片機完成設置串口的工作模式、設置波特率和中斷的工作模式;也要對液晶顯示屏進行設置開機畫面和顯示模式的工作;同時也應該做到對GPS模塊串口的成功通信。

2.2數據接收處理模塊

NMEA-0183數據格式
NMEA-0183是由美國國家海洋電子協會給海上應用的電子設備規定的標準格式。它是在以前的海上應用的電子設備的標準格式0180和0182的基礎之上,添加了GPS接收機發出的內容才完成的。現在大泛圍采取應用的是Ver 2.00版本。目前除了少數初始時期的GPS接收機外,極大多數的GPS接收機都使用了這一種格式。這個協議是給在不同的GPS導航設備中設立一個一致的RTCM標準。這種數據格式的廣泛使用讓GPS接收模塊的通用性和互換性大大提高。
此格式輸出的語句運用的是ASCII字符碼,包括了緯度、經度、速度、日期、時間、航向、以及衛星信號情況等信息。其串行通信默認參數為:波特率=9600bps,數據位=8bit,開始位=1bit,停止位=1bit,沒有奇偶校驗。
幀格式形如: a a c c c , d d d , d d d , … , d d d ? h h < C R > < L F > 1. aaccc,ddd,ddd,…,ddd*hh<CR><LF>    1. aaccc,ddd,ddd,,ddd?hh<CR><LF>  1.”:幀命令起始位;  
2. aaccc:地址域,前兩位為識別符,后三位為語句名;  
3. ddd…ddd:數據;   
4. “”:校驗和前綴;   
5. hh:校驗和(check sum),在$和
之間全部字符ASCII碼的校驗和(每個字節都做異或運算,得到校驗和以后,再變換成16進制格式的ASCII字符碼。)   
6. :Carriage Return和Line Feed的縮寫,回車和換行,表示幀結束。
輸入語句
NMEA-0183輸入語句是指GPS接收模塊可以接收的語句。輸入語句包括初始位置,時間,秒脈沖狀態,差分模式,NMEA輸出間隔等設置信息。這些是GPS接收機可以讀取的語句。通常情況下初始化信息語句為PGRMI。
$GPRMI,(1),(2),(3),(4),(5),(6),(7)hh(CR)(LF)
1)緯度ddmm.mmmm(度分)格式(前面的0也會被發送);
(2)緯度半球分為N(北半球)或S(南半球);
(3)經度dddmm.mmmm(度分)格式(前面的0也會被發送);
(4)經度半球分為E(東經)或W(西經);
(5)國際協調日期,ddmmyy(日月年)格式;
(6)國際協調時間,hhmmss(時分秒)格式;
(7)接收機兩種命令,分別為A和R,其中A為自動定位,R為機器重新啟動。
輸出語句
SiRF Star II的輸出語句共有十余種之多,其主要語句有GPALM(歷書數據)、GPGGA(GPS標準數據)、GPGSV(衛星狀態)、GPVTG、GPRMC、GPGSA、PGRME、PGRMF、PGRMT、PGRMV(GARMIN定義的語句,3D速度信息)、LCGLL、LCVTG(NMEA標準語句)等。可以經GPS串口調試軟件為SiRF Star II芯片傳輸命令語句,在此之后芯片會按照命令語句設置參數。
幾種常用的數據格式如下:
1 .GPS標準數據(GPGGA),其結構為:
$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14)
(15)(CR)(LF)   
(1)國際協調時間,其格式是hhmmss.sss;
(2)緯度,格式是ddmm.mmmm(位數不夠的則需在前面補0);
(3)緯度半球,N或S(北緯或南緯);
(4)經度,格式為dddmm.mmmm(位數不夠的則需在前面補0);
(5)經度半球,E或W(東經或西經);
(6)定位質量效果指示,0表示定位無效,1表示定位有效;
(7)使用衛星的數量,從00到12(位數不足則需在前面補0);
(8)水平的精確度,由0.5至99.9;
(9) 天線距離海平面的高度,從-9999.9到9999.9米 ;
(10)高度單位,M表示長度單位米;
(11)大地橢球面相對海平面的高度,從-999.9到9999.9米;
(12) 和(10)一樣;   
(13) 差分GPS數據間隔(RTCM SC-104),最后設立RTCM傳送的秒數;   
(14) 差分參考基站標號,從0000到1023(位數不夠的則需在前面補0);   
(15) 校驗和。
2.可視衛星狀態輸出語句(GPGSV),其結構為:
$GPGSV,(1),(2),(3),(4),(5),(6),(7),…,(4),(5),(6),(7)(8)(CR)(LF)   
(1)GSV所有的語句電文數;   
(2)此刻GSV的語句號;   
(3)可視衛星的總數,00至12;   
(4)衛星的編號,由01至32;   
5)衛星的仰角,00至90度;   
6)衛星的方位角,000至359度,實際值;   
7)信噪比(C/No),00至99dB;無表示沒有接收到訊號;  
8) 校驗和。
3. 推薦最小的GPS/TRANSIT數據(GPRMC),其結構是:
G P R M C , ( 1 ) , ( 2 ) , ( 3 ) , ( 4 ) , ( 5 ) , ( 6 ) , ( 7 ) , ( 8 ) , ( 9 ) , ( 10 ) , ( 11 ) , ( 12 ) ? h h ( C R ) ( L F ) 當中“ G P ”是交談識別符;“ R M C ”是語句識別符;“ h h ”為校驗和,它代表了在“ GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF) 當中“GP”是交談識別符;“RMC”是語句識別符;“hh”為校驗和,它代表了在“ GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11)(12)?hh(CR)(LF)當中GP是交談識別符;RMC是語句識別符;hh為校驗和,它代表了在”和“
”之間全部字符的按位異或值(但不包含這兩個字符)。
$GPRMC語句數據區的內容是:
(1)定位地點的UTC,hhmmss(時分秒)格式;
(2)定位的兩種狀態,分別是A和V,A表示有效定位,V表示無效定位;
(3)定位點的緯度,ddmm.mmmm(度分)格式;
(4)緯度半球,N(北半球)或S(南半球);
(5)定位點經度,dddmm.mmmm(度分)格式;
(6)經度半球,E(東半球)或W(西半球);
(7)地面的速率,000.0~999.9節;
8)地面航向,000.0~359.9度;
9)國際協調日期,ddmmyy(日月年)格式;
10)磁偏角,000.0~180度;
11)磁偏角方向,E(東)或W(西);
12)四種工作的模式:分別為A、D、E和N,A表示自主,D表示差分,E表示評估,N表示數據無效。

3 系統仿真

3.1 Proteus軟件介紹

Proteus是來自英國LabcenterE1 ectronics公司的EDA工具軟件.Proteus軟件有十多年的歷史,在全球廣泛使用,除了其具有和其它EDA工具-樣的原理布圖、PCB 自動或人工布線及電路仿真的功能外,其革命性的功能是,它的電路仿真是互動的,針對微處理器的應用,還可以直接在基于原理圖的虛擬原型上編程,并實現軟件源碼級的實時調試,如有顯示及輸出,還能看到運行后輸入輸出的效果,配合系統配置的虛擬儀器如示波器、邏輯分析儀等,Proteus 為設計者建立了完備的電子設計開發環境。
Proteus軟件具有以下兩個重要特點:(1)互動的電路仿真。用戶可以實時采用諸如RAM, ROM,鍵盤,馬達,LED, LCD, AD/DA,部分SPI器件,部分IIC器件進行電路仿真。(2)仿真處理器及其外圍電路。可以仿真51系列、AVR、PIC、 ARM等常用主流單片機。還可以直接在基于原理圖的虛擬原型上編程,再配臺顯示及輸出,能看到運行后輸入輸出的效果。配合系統配置的虛擬邏輯分析儀、示波器等,Proteus建 立了完備的電子設計開發環境。
Keil軟件是目前最流行的開發MCS-51系列單片機的軟件。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(uVision) 將這些部份組合在一起。
Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢。
Keil C51 軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51 生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。
C51工具包的中uVision與Ishell分別是C51 for Windows和for Dos的集成開發環境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發流程。開發人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標文件(.0BJ)。目標文件可由LIB51創建生成庫文件,也可以與庫文件一起經L51連接定位生成絕對目標文件(.ABS)。ABS文件由0H51轉換成標準的Hex文件,以供調試器dScope51或tScope51使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM中。

4 仿真過程

在Proteus軟件中搜索相關零部件,依據電路圖連接,仔細檢查是否有錯誤檢查接線。完成電路圖連接如圖5-1
使用keil軟件編譯程序源碼軟件測試和修正,編譯成功結果如圖5-2
使用Virtual GPS模擬GPS信號,如圖5-3
雙擊單片機燒寫程序后上電測試運行結果,液晶顯示如圖5-3
調試過程可以分為三個部分:
第一部分:通過實踐表明,電子裝置即運用依照電路的完善參數安裝設計也不可避免產生出較小的誤差。因此,設計的時候,可能出現很多方面想不到的問題,在改善之后,運用了多種方式,通過各種各樣的途徑實現裝置的技術指標。
第二部分:對于軟件部分的調試,應用KEIL軟件界面,在程序編輯的窗口,選好單片機的類型,編譯程序源碼,鏈接,通過軟件仿真調試器。
第三部分:是軟件和調試,實現GPS信號的液晶顯示。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896742.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

對大模型輸出的 logits 進行處理,從而控制文本的生成

對大模型輸出的 logits 進行處理&#xff0c;從而控制文本的生成 flyfish 在文本生成任務中&#xff0c;模型輸出的 logits 代表了每個詞被選為下一個生成詞的未歸一化概率得分。通過對 logits 進行處理&#xff0c;可以精確地控制文本的生成 基本原理 在每一步生成過程中&…

Reids緩存穿透、緩存雪崩和緩存擊穿

Redis緩存中常見的三個問題&#xff1a;緩存穿透、緩存雪崩和緩存擊穿。這些問題在使用Redis作為緩存時經常遇到&#xff0c;但通過合理的策略可以有效解決。我會用簡單易懂的方式來講解&#xff0c;幫助你理解這些問題的原理和解決方案。 1. 緩存穿透 1.1 什么是緩存穿透&…

附錄-Python — 包下載緩慢,配置下載鏡像

1??命令行配置 pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/ pip config set install.trusted-host mirrors.aliyun.com 2??配置文件配置 1、打開文件夾&#xff0c;輸入 %APPDATA% 回車 2、打開 %APPDATA% 路徑&#xff0c;并在此路徑下新建…

VS 2019 免費版 下載與安裝 教程說明

推薦大家直接轉到第13步&#xff0c;點擊鏈接即可下載VS2019版本 1.VS官網 2.登錄賬號 3.在搜索欄輸入“2019” 4.點擊2019這個標題 5.點擊“下載” 6.選擇合適的版本下載 7.打開下載文件&#xff08;若下載過程總是轉圈圈&#xff0c;則換個網絡下載即可&#xff09; 8.安…

介紹 torch-mlir 從 pytorch 生態到 mlir 生態

一、引言 The Torch-MLIR project provides core infrastructure for bridging the PyTorch ecosystem and the MLIR ecosystem. For example, Torch-MLIR enables PyTorch models to be lowered to a few different MLIR dialects. Torch-MLIR does not attempt to provide a…

Java并發編程之ConcurrentHashMap的原理和使用

ConcurrentHashMap(CHM)是Java為解決高并發場景下哈希表性能瓶頸而設計的線程安全容器,其核心目標在于: 線程安全?:避免多線程操作導致的數據不一致問題?;高吞吐量?:通過細粒度鎖和無鎖化設計降低線程競爭?;動態擴展?:支持自動擴容與數據結構優化(如鏈表轉紅黑樹…

AbMole揭秘傷口愈合:IGF-1-SP1-CD248信號通路的新發現

科學家們揭示了一條新的信號通路——IGF-1-SP1-CD248&#xff0c;這一發現為理解傷口愈合障礙提供了新的視角&#xff0c;并為未來的研究開辟了新方向。 研究背景 糖尿病患者的傷口愈合是一個長期存在的挑戰。據統計&#xff0c;約15%的糖尿病患者會遭受慢性傷口的困擾&#…

Go入門之文件

以只讀方式打開文件 package mainimport ("fmt""io""os" )func main() {file, err : os.Open("./main.go")defer file.Close()if err ! nil {fmt.Println(err)return}fmt.Println(file)var tempSlice make([]byte, 128)var strSlice…

python量化交易——金融數據管理最佳實踐——使用qteasy管理本地數據源

文章目錄 統一定義的金融歷史數據表最重要的數據表數據表的定義交易日歷表的定義&#xff1a;交易日歷表: trade_calendar qteasy是一個功能全面且易用的量化交易策略框架&#xff0c; Github地址在這里。使用它&#xff0c;能輕松地獲取歷史數據&#xff0c;創建交易策略并完…

通過 PromptTemplate 生成干凈的 SQL 查詢語句并執行SQL查詢語句

問題描述 在使用 LangChain 和 Llama 模型生成 SQL 查詢時&#xff0c;遇到了 sqlite3.OperationalError 錯誤。錯誤信息如下&#xff1a; OperationalError: (sqlite3.OperationalError) near "sql SELECT Name FROM MediaType LIMIT 5; ": syntax error [SQL: …

STaR(Self-Taught Reasoner)方法:讓語言模型自學推理能力(代碼實現)

STaR&#xff08;Self-Taught Reasoner&#xff09;方法&#xff1a;讓語言模型自學推理能力 在大型語言模型&#xff08;LLM&#xff09;的推理能力優化中&#xff0c;STaR&#xff08;Self-Taught Reasoner&#xff09; 是一種引人注目的技術&#xff0c;屬于“修改提議分布…

Asp.Net Web API| React.js| EF框架 | SQLite|

asp.net web api EF SQLiteReact前端框架 設計一個首頁面&#xff0c;包含三個按鈕分別對應三類用戶&#xff08;數據查看&#xff0c;設計人員&#xff0c;管理員&#xff09;&#xff0c;當點擊管理員的時候彈出一個前端頁面可以輸入信息&#xff08;以學生數據為例&#…

[SWPUCTF 2022 新生賽]1z_unserialize

題目描述&#xff1a;是很簡單的反序列化噢 代碼審計看注釋 <?phpclass lyh{ //定義一個類為lyhpublic $url NSSCTF.com;//公共屬性&#xff0c;初始值為NSSCTF.compublic $lt; //公共屬性&#xff0c;沒有初始值public $lly; //公共屬性&…

【數據庫】Update兩階段提交

為什么要兩階段提交 事務提交之后&#xff0c;redo log和bin log 都是需要1持久化到磁盤中&#xff0c;但是這兩個是獨立的邏輯&#xff0c;可能出現半成功的狀態&#xff0c;這樣就造成兩份日志之間的邏輯不一致。如&#xff1a; 以id1&#xff0c;name ‘小明’執行 updat…

【藍橋】排序

1、sort簡介 sort函數包含在頭文件<algorithm>中sort函數使用之前&#xff0c;需要通過#include <algorithm>引入sort函數使用的是快速排列或類似快速排列的改進算法&#xff0c;時間復雜度一般為O(nlog(n)) 2、sort用法 2.1 基礎用法 #include <iostream>…

2024年中國城市統計年鑒(PDF+excel)

2024年中國城市統計年鑒&#xff08;PDFexcel&#xff09; 說明&#xff1a;包括地級縣級市 格式&#xff1a;PDFEXCEL 《中國城市統計年鑒》是一部全面反映中國城市發展狀況的官方統計出版物&#xff0c;包括各級城市的詳細統計數據。這部年鑒自1985年開始出版&#xff0c;…

android 資源selector寫法注意

1、res文件夾下面color文件夾,放的xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/color_brand1" android:s…

藍橋杯 燈籠大亂斗【算法賽】

問題描述 元宵佳節&#xff0c;一場別開生面的燈籠大賽熱鬧非凡。NN 位技藝精湛的燈籠師依次落座&#xff0c;每位師傅都有相應的資歷值&#xff0c;其中第 ii 位師傅的資歷值為 AiAi?。從左到右&#xff0c;師傅們的資歷值逐級遞增&#xff08;即 A1<A2<?<ANA1?&l…

商城源碼的框架

商城源碼的框架通常是基于某種Web開發框架或者電子商務平臺來構建的。以下是一些常見的商城源碼框架&#xff1a; WooCommerce&#xff1a;基于WordPress的電子商務插件&#xff0c;適用于小型到中型的在線商店。 Magento&#xff1a;一個功能強大和靈活的開源電子商務平臺&am…

HarmonyOS 5.0應用開發——多線程Worker和@Sendable的使用方法

【高心星出品】 文章目錄 多線程Worker和Sendable的使用方法開發步驟運行結果 多線程Worker和Sendable的使用方法 Worker在HarmonyOS中提供了一種多線程的實現方式&#xff0c;它允許開發者在后臺線程中執行長耗時任務&#xff0c;從而避免阻塞主線程并提高應用的響應性。 S…