欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      QwebKit使用心得.

      時間:2019-05-12 12:37:35下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《QwebKit使用心得.》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《QwebKit使用心得.》。

      第一篇:QwebKit使用心得.

      QwebKit使用心得.QwebKit使用心得

      最近這段時間,正在用QWebkit開發(fā)一個Application store的項目。因為需要用到第三方的數(shù)據(jù),但后臺無法直接去獲取,所以需要做一個底層的模塊,去獲取第三方數(shù)據(jù),然后給網(wǎng)頁調(diào)用,因此我們選取了以WebKit為引擎的QWebkit來開發(fā)我們的項目。

      在開發(fā)中,獲得了一些心得體會,寫下來供大家參考。為了方便說明,我特意做了一個例子。

      (圖1)

      此例子中,左邊顯示網(wǎng)頁,右邊是控件部分。

      用戶在網(wǎng)頁的Name和Password輸入框輸入內(nèi)容后,點擊“Submit”按鈕,則右邊的Name和Password框則會出現(xiàn)網(wǎng)頁中的內(nèi)容,這就是網(wǎng)頁調(diào)用Qt模塊。

      而用戶在右邊輸入分別輸入Name和Password,點擊“Call JS”后,輸入的信息也會顯示在左邊的Name和Password欄。這就是Qt調(diào)用網(wǎng)頁。

      由此我們可以看出QWebKit,即可以Qt調(diào)用網(wǎng)頁,也可以網(wǎng)頁調(diào)用Qt。這樣我們就可以做用Qt做一些網(wǎng)頁做不了的事情。

      接下來,將闡述如何實現(xiàn)Qt和網(wǎng)頁互相調(diào)用。

      首先,在“圖1”所示的主界面中生成WebKit控件,可以自己new或者在Design中拖入。在本例中,采取的是拖入此控件。此控件對應(yīng)的類是QWebView。它可以Load和顯示頁面。通過此控件我們來調(diào)用網(wǎng)頁的方法和接受網(wǎng)頁的調(diào)用。本主界面的類是

      #include #include “ui_qwebkittest.h” #include “mywebkit.h”class QWebKitTest : public QDialog {

      Q_OBJECTpublic:

      QWebKitTest(QWidget *parent = 0, Qt::WFlags flags = 0);

      ~QWebKitTest();

      void setValueFromWeb(const QString &strName,const QString &strPwd);protected slots:

      void onBtnCallJSClicked();

      void populateJavaScriptWindowObject();private:

      Ui::QWebKitTestClass ui;

      MyWebKit m_webObj;};而WebKit控件則是

      class Ui_QWebKitTestClass { public:

      QWebView *webView;

      主界面通過下面的形式調(diào)用。ui.webView 接下來我們將用ui.webView來見證奇跡誕生的時刻。

      首先我們先來弄清楚第一個問題,怎么將Qt和網(wǎng)頁聯(lián)系起來,使之能夠互相調(diào)用?

      估計這是大部分看官最關(guān)心的吧。嗯,好吧。廣告時間到

      各位看官也來看看這個帖子吧,Qt的Signal和Slot機制(一),給鄙人攢點人氣,謝了 Qt使用的是向網(wǎng)頁注冊一個QObject對象,通過這個對象,網(wǎng)頁可以通過這個調(diào)用這個對象的方法來實現(xiàn)調(diào)用底層的邏輯。

      以下是本例中的注冊對象的聲明,class MyWebKit : public QObject {

      Q_OBJECTpublic:

      MyWebKit(QObject *parent);

      ~MyWebKit();public slots:

      void onCall(QString strName,QString strPwd);

      private:

      };

      而Qt則通過,調(diào)用下列方法把注冊對象注入到網(wǎng)頁中,ui.webView->page()->mainFrame()-> addToJavaScriptWindowObject(QString(“mywebkit”),&m_webObj);

      注冊過程如下,ui.webView->setUrl((QUrl(“qrc:/form.html”));

      ui.webView->page()->mainFrame()->addToJavaScriptWindowObject(QString(“mywebkit”),&m_webObj);

      看官注意,m_webObj就是注入到網(wǎng)頁中的QObject對象,而“mywebkit”是此對象在網(wǎng)頁中的名字。在網(wǎng)頁中,“mywebkit“就代表著m_webObj,被當(dāng)作一個javascript對像來調(diào)用。具體細(xì)節(jié)請看下列網(wǎng)頁代碼,

      Login page

      Name:

      Password:

      在此網(wǎng)頁中,當(dāng)用戶點擊圖1中的左邊網(wǎng)頁的Submit按鈕時,就會調(diào)用calltoqt的javascript方法。在calltoqt中,我們獲取了username和userpwd的值后,就調(diào)用window.mywebkit.onCall的方法,來通知底層Qt模塊,這里的mywebkit就是我們剛注冊的m_webObj,OnCall就是MyWebKit類的成員函數(shù)。當(dāng)網(wǎng)頁調(diào)用這個函數(shù)時,Qt模塊的MyWebKit::OnCall函數(shù)就會被調(diào)用。代碼如下:

      void MyWebKit::onCall(QString strName,QString strPwd){

      QWebKitTest *pMain =(QWebKitTest*)parent();

      pMain->setValueFromWeb(strName,strPwd);} 在此函數(shù)中,MyWebKit會調(diào)用主界面(QWebKitTest)的setValueFromWeb方法,將網(wǎng)頁中的Name和Password欄的內(nèi)容放到右邊的Name和Password控件中顯示出來。

      代碼如下,void QWebKitTest::setValueFromWeb(const QString &strName,const QString &strPwd)

      {

      ui.textEdit_name->setText(strName);

      ui.textEdit_pwd->setText(strPwd);

      }

      但是不是所注冊對象的成員函數(shù)都可以被調(diào)用呢?答案是否定的,只有Slot函數(shù)才能被網(wǎng)頁調(diào)用,其他的則不能。因為這是一個signal-slot過程。

      Qt是如何調(diào)用網(wǎng)頁的呢?我們來看以下的例子。

      當(dāng)用戶在右邊的Name和Password控件填入內(nèi)容后,點擊”Call JS“按鈕,Qt就調(diào)用evaluateJavaScript函數(shù)來改變網(wǎng)頁的行為。具體代碼如下,void QWebKitTest::onBtnCallJSClicked(){

      QString strVal = QString(”callfromqt(“%1”,“%2”);“).arg(ui.textEdit_name->toPlainText()).arg(ui.textEdit_pwd->toPlainText());

      ui.webView->page()->mainFrame()->evaluateJavaScript(strVal);} 我們可以看到evaluateJavaScript的參數(shù),實際上就是一段javascript代碼(callfromqt(”andrei“,”12345“);)。Qt底層模塊通過evaluateJavaScript調(diào)用了網(wǎng)頁中的”callfromqt“方法

      function callfromqt(name,pwd)

      {

      var nameArray;

      nameArray = document.getElementsByName(”username“);

      var pwdArray;

      pwdArray = document.getElementsByName(”userpwd“);

      nameArray[0].value = name;

      pwdArray[0].value = pwd;

      }

      使右邊的Name和Password控件中的值,賦到了左邊網(wǎng)頁中Name和Password的輸入框中。

      當(dāng)然,evaluateJavaScript的參數(shù)不一定只是javascript方法,同樣一段javascript代碼也是可以的。比如以上功能也可以這樣調(diào)用

      ui.webView->page()->mainFrame()->evaluateJavaScript(” var nameArray;

      nameArray = document.getElementsByName(“username”);

      var pwdArray;

      pwdArray = document.getElementsByName(“userpwd”);

      nameArray[0].value = “andrei”;

      pwdArray[0].value = “123456”;");但這就是QWebKit的全部真相嗎?

      請聽下回分解

      注明:此文章本人在CSDN上同步發(fā)布。

      第二篇:EXCEL使用心得

      一、讓格式自動添加固定的數(shù)字

      例子:

      大家知道,身份證號碼的前6位,是省、市、區(qū)(縣)的代號(如“340505”等),如果持證人是同一區(qū)(縣)的,輸入這樣的的身份證號碼,可以讓“數(shù)字”標(biāo)簽幫你減輕輸入的工作量:選中需要輸入身份證號碼的單元格(區(qū)域),打開“單元格格式”對話框,進(jìn)入“數(shù)字”標(biāo)簽,在“分類”下面選中“自定義”選項,然后在右側(cè)“類型”下面的方框中輸入:“340505”@,確定退出。以后輸入身份證號碼7位及以后的數(shù)字(如“198903040611”)后,系統(tǒng)會自動在前面加上相應(yīng)的代碼,形成完整的身份證號碼(如“***611”)。

      二.教你使用Excel數(shù)組公式

      Excel中數(shù)組公式非常有用,尤其在不能使用工作表函數(shù)直接得到結(jié)果時,數(shù)組公式顯得特別重要,它可建立產(chǎn)生多值或?qū)σ唤M值而不是單個值進(jìn)行操作的公式。

      輸入數(shù)組公式首先必須選擇用來存放結(jié)果的單元格區(qū)域(可以是一個單元格),在編輯欄輸入公式,然后按Ctrl+Shift+Enter組合鍵鎖定數(shù)組公式,Excel將在公式兩邊自動加上花括號“{}”。注意:不要自己鍵入花括號,否則,Excel認(rèn)為輸入的是一個正文標(biāo)簽。

      選取數(shù)組公式所占有的全部區(qū)域先選中區(qū)域中任意一個單元格,然后按下Ctrl+/鍵即可。編輯或刪除數(shù)組公式編輯數(shù)組公式時,須選取數(shù)組區(qū)域并且激活編輯欄,公式兩邊的花括號將消失,然后編輯公式,最后按Ctrl+Shift+Enter鍵。選取數(shù)組公式所占有的全部區(qū)域后,按Delete鍵即可刪除數(shù)組公式。

      數(shù)組常量的使用數(shù)組公式中還可使用數(shù)組常量,但必須自己鍵入花括號“{}”將數(shù)組常量括起來,并且用“,”和“;”分離元素。其中“,”分離不同列的值,“;”分離不同行的值。

      使用不在工作表中的數(shù)組有時,公式僅占用一個單元格時也需要以數(shù)組的方式輸入。其具體原則是:一個公式使用了數(shù)組,并且這個數(shù)組不在工作表上,就應(yīng)該使用數(shù)組的方式輸入這個公式。

      下面介紹兩個使用數(shù)組公式的例子。

      1.如需分別計算各商品的銷售額,可利用數(shù)組公式來實現(xiàn)。

      單元格F2中的公式為:{=SUM(IF(A2:A11=″商品1″,B2:B11*C2:C11,0))}。這個數(shù)組公式創(chuàng)建了一個條件求和,若在A2:A11中出現(xiàn)值“商品1”,則數(shù)組公式將B2:B11和C2:C11中與其相對應(yīng)的值相乘并累加,若是其他值則加零。同時,雖然數(shù)組B2:B11和C2:C11均在工作表中,但其相乘的數(shù)組B2:B11*C2:C11不在工作表中,因此必須使用數(shù)組公式。

      2.假設(shè)要將A1:A50區(qū)域中的所有數(shù)值舍入到2位小數(shù)位,然后對舍入的數(shù)值求和。很自然地就會想到使用公式:=ROUND(A1,2)+ROUND(A2,2)+…+ROUND(A50,2)。

      有沒有更簡捷的算法呢?有。因為數(shù)組ROUND(A1:A50,2)并不在工作表中,因此要使用數(shù)組的方式輸入公式,即:{=SUM(ROUND(A1:A50,2))}。

      三、自動更正

      1.從工具菜單中選擇“自動更正”,打開自動更正對話框。

      2.在“替換”框中輸入數(shù)據(jù),如:“4z”,在“替換為”框中輸入數(shù)據(jù),如:“棗陽市第四中學(xué)”,單擊“添加”,再單擊 “確定”。

      之后,只需在單元格中輸入“4z”兩字,即會自動更正為“棗陽市第四中學(xué)”。

      四、在excel工作表中輸入計算公式時,如果想讓儲存格在顯示計算結(jié)果和計算公式本身之間切換,您會采取什么方式呢?

      是不是每次都從“工具”>“選項”>“視圖”>“窗口選項”>“公式”來切換呢?有沒有更簡便的方法呢?

      其實,我們可以利用“ Ctrl+` ”鍵來決定顯示或隱藏公式,每按一次就可讓儲存格在顯示計算的結(jié)果和計算公式本身之間自由切換。

      五、快速錄入文本文件中的內(nèi)容

      現(xiàn)在您手邊假如有一些以純文本格式儲存的文件,如果此時您需要將這些數(shù)據(jù)制作成Excel XP的工作表,那該怎么辦呢?重新輸入一遍,太浪費時間;將菜單上的數(shù)據(jù)一個個復(fù)制到工作表中,同樣也費事。這時!您只要在Excel XP中巧妙使用其中的文本文件導(dǎo)入功能,就可以大大減輕需要重新輸入或者需要不斷復(fù)制、粘貼的巨大工作量了。使用該功能時,您只要在Excel XP編輯區(qū)中,選定菜單欄中的“數(shù)據(jù)/獲取外部數(shù)據(jù)/導(dǎo)入文本文件”命令,然后在導(dǎo)入文本會話窗口選擇要導(dǎo)入的文本文件,按下“導(dǎo)入”鈕以后,程序會彈出一個文本導(dǎo)入向?qū)υ捒?,您只要按照向?qū)У奶崾具M(jìn)行操作,就可以把以文本格式的數(shù)據(jù)轉(zhuǎn)換成工作表的格式了。

      六、行列轉(zhuǎn)置

      假如A1-A10單元格中有不同的內(nèi)容,現(xiàn)在需要將這些內(nèi)容分別排列在A1、B1、C1、D1...J1單元格中,即將原來在同一列中的內(nèi)容重新排列在一行中。難道要一個一個單元格去復(fù)制粘貼嗎?完全不用。

      首先,選中A1-A10單元格,單擊右鍵,在彈出的菜單中選擇“復(fù)制”命令;接著單擊B1單元格,再單擊右鍵,在彈出的菜單中選擇“選擇性粘貼”命令,彈出對話框,選擇其中的復(fù)選項“轉(zhuǎn)置”,點擊確定。這時你會看到B1、C1....K1單元格中已有了A1-A10單元格中的內(nèi)容,將A列選中,在右鍵菜單中刪除,此時行列轉(zhuǎn)換工作就完成了。

      七、在Excel2000中設(shè)計彩色數(shù)字

      在你使用Excel2000對一張工作表中的數(shù)據(jù)進(jìn)行處理時,有時是不是希望其中某些數(shù)據(jù)能夠有自己特殊的顯示格式?比如,現(xiàn)在你有如圖的一張Excel工作表,在“總成績”一欄中,你需要小于120的顯示為藍(lán)色,大于120的顯示為紅色。下述的方法,可以讓你的愿望變?yōu)楝F(xiàn)實。該方法是:

      1.選中D25的單元格區(qū)域。

      2.單擊“格式”菜單中的“單元格”命令,然后單擊“數(shù)字”選項卡。

      3.單擊“分類”列表中的“自定義”選項,在“類型”框中鍵入“[藍(lán)色][<120];[紅色][>=120]”。

      4.單擊“確定”按鈕。

      怎么樣,Excel按你的要求顯示出不同顏色的數(shù)字了吧?

      最后,對在“類型”框中鍵入的數(shù)字格式代碼進(jìn)行簡單地說明,“[藍(lán)色]”是對數(shù)據(jù)顯示顏色的設(shè)置,除“紅色”、“藍(lán)色”外,還可使用六種顏色,它們是黑色、青色、綠色、洋紅、白色、黃色?!埃郏荆?20]”是條件設(shè)置,可用的條件運算符有:>、<、>=、<=、=、<>。當(dāng)有多個條件設(shè)置時,各條件設(shè)置以分號“;”間隔。

      八、減少修改EXCEL參數(shù)的秘籍

      在此處設(shè)計好的公式,拿到彼處用時,大部分不會完全合適,往往要修改公式中的參數(shù).特別是函數(shù)中引用的單元格區(qū)域,往往需要修改.所以這里就以單元格區(qū)域為例,介紹一種減少或者是避免參數(shù)修改的辦法.雖然說不上"萬能",但將公式任意粘貼而基本不用修改是確實能辦到的.

      一個單元格、或者由許多單元格組成的單元格集合都可以作為一個區(qū)域,并可以命名一個名字。這許多朋友都知道。但對合理恰當(dāng)?shù)厥褂妹麉^(qū)域帶來的方便,許多朋友或者是不重視,或者是覺得麻煩而較少使用。不過要實現(xiàn)上面的目標(biāo),我建議大家還是盡可能使用命名的區(qū)域。其好處如下:

      1、直觀易記,區(qū)域很多時,形式如(B2:M50)的名字既不好記憶,也難以一下子斷定意義,反之,使用區(qū)域名字,特別是用中文作為區(qū)域名字時,能見文知義,大大減輕了記憶負(fù)

      擔(dān)。例如,將區(qū)域(B2:M50)命名為“三甲物理分”,一見名字就明白意思.

      2、如果某一區(qū)域需要在多個公式中使用,采用區(qū)域命名會很方便。例如函數(shù)中需要引用“三甲物理分”這個區(qū)域時,可以直接拿它當(dāng)參數(shù).如果想得到那種一次設(shè)計,多次重用的“計算模板”,則更是非將區(qū)域命名不可。

      3、如果區(qū)域的范圍需要擴大或縮小,只需要將原來的名字重新命名一下,而原來使用的函數(shù)參數(shù)不必改動。例如,要統(tǒng)計上面區(qū)域中有效數(shù)字的個數(shù),用的公式是:=COUNT(三甲物理分)(注意函數(shù)括號內(nèi)的區(qū)域名字不用加雙引號);當(dāng)需要把該區(qū)域擴大或縮小時,可以先將原有的區(qū)域名字“三甲物理分”刪除,然后重新選定合適的范圍再次用這個名字命名,而所有以“三甲物理分”作參數(shù)的函數(shù)均不須修改而仍能使用。

      乍一看這好像就不錯了,其實,這還不算完善.

      前已述及,當(dāng)函數(shù)移到別的地方使用時,其參數(shù)一般需要修改。比如要用上面的公式計算二乙班物理成績的有效數(shù)字個數(shù)時(這里假設(shè)你已經(jīng)將相應(yīng)區(qū)域命名為“二乙物理分”),則函數(shù)中用到區(qū)域參數(shù)又都要修改為“二乙物理分”??梢酝浦?,即使是只修改這一處參數(shù),在處理很多學(xué)科時(因為每個班級可能進(jìn)行多個學(xué)科的考試),修改參數(shù)的工作量也很大,況且實際計算中往往同時使用多個公式,更導(dǎo)致參數(shù)修改的工作量成幾倍增加。以某中學(xué)三個年級24個教學(xué)班為例,假如每個年級考試5個學(xué)科,要求計算出每班各個學(xué)科的最高分、平均分、整個年級的前百強學(xué)生等項目.這些活兒就是讓你用上? 命名的法寶,手工修改參數(shù)也會磨壞你的手指!

      怎樣才能減少修改的工作量、甚至做到不修改參數(shù)就能用呢?這就得需要在函數(shù)內(nèi)間接引用參數(shù)。請往下看

      A B C三甲物理分 三乙物理分 三甲語文分AVERAGE(三甲物理分)=AVERAGE(三甲物理分)=AVERAGE(三甲物理分)AVERAGE(INDIRECT(A1))AVERAGE(INDIRECT(B1))AVERAGE(INDIRECT(C1))假設(shè)先設(shè)計好EXCEL工作表,將準(zhǔn)備處理的數(shù)據(jù)區(qū)域都進(jìn)行命名,并把名字依次輸入到表中第一行的各個單元格,類似下表那樣.為了對兩種方法進(jìn)行比較,我們先在A2單元格中輸入公式:=AVERAGE(三甲物理分),可得出三甲班的物理平均分,結(jié)果也正確,缺點就是像上面說的,將公式粘貼在B2、C2單元格中時,括號中的參數(shù)并不會自動取出第一行里對應(yīng)的名字,還需要用手工一一修改!如何讓它能"自動"引用正確的參數(shù)、即能"自動"引用第一行對應(yīng)單元格里的文字呢?可以使用函數(shù)INDIRECT().

      在EXCEL中,函數(shù)INDIRECT()的作用比較特殊.其作用介紹如下:例如已知存放在A1單元格中的文字"三甲物理分"是一個區(qū)域名字,當(dāng)用INDIRECT(A1)函數(shù)時,可以通過A1單元格獲得對"三甲物理分"區(qū)域的引用.好!下面我們驗證一下:請你在上表中的A3單元格中輸入:=AVERAGE(INDIRECT(A1)),從得出的結(jié)果看,與A2單元格中使用的公式結(jié)果相同.從公式的組成看,多了函數(shù)INDIRECT(A1),省去了區(qū)域名字!注意,這就是激動人心的關(guān)鍵點了:當(dāng)你用鼠標(biāo)拖拽的辦法向右邊單元格粘貼這個公式后,會發(fā)現(xiàn)這些單元格中的公式已經(jīng)"自動"地引用了相應(yīng)區(qū)域的名字,你連一個參數(shù)也不用修改就得出了正確結(jié)果?。??這不正是實現(xiàn)了我們苦苦追求的目標(biāo)嗎?怎么樣,很爽吧?

      感謝你有耐心看到這里,下面我再送你一個"秘密武器"

      上面介紹的那個有功勞的函數(shù)是INDIRECT(),它是解決名字引用的,當(dāng)要引用的單元格中是數(shù)值時,它就不管用了.能引用單元格數(shù)值的是另一個函數(shù)VALUE()。它的用法是:如果在A2單元格中存放有數(shù)字85,那么在A3單元格輸入:=VALUE(A2),在A3中也能得到85這個數(shù)字。要只是這樣的代換顯然意義不大,但把它用在公式中后意義就大不一樣了??聪卤恚旱诙兄械臄?shù)字是該學(xué)科達(dá)到“優(yōu)秀”的分

      A B C

      三乙物理分 三乙物理分 三甲語文分

      80

      =COUNTIF(INDIRECT(A1,),“$#@62;=”&VALUE(A2))

      DIRECT(B1,),“$#@62;=”&VALUE(B2))=COUNTIF(IN A

      =COUNTIF(INDIRECT(C1,),“$#@62;=”&VALUE(C2))

      數(shù)線,我們的目的是:在第三行中根據(jù)該學(xué)科的分?jǐn)?shù)線求出該學(xué)科達(dá)到優(yōu)秀成績的人數(shù).由于不同學(xué)科劃定優(yōu)秀的分?jǐn)?shù)線一般也不同.要是直接了當(dāng)?shù)脑?,在A3中使用公式=COUNTIF((INDIRECT(A1,),“$#@62;=85”)就可以,但這樣用到B列又會遇到類似上面的修改參數(shù)問題。要也像上面那樣能"自動"引用第二行中的分?jǐn)?shù)線該多好?。e急,把VALUE()函數(shù)用上就成了!我們把A3中的公式改成:=COUNTIF(INDIRECT(A1,),“$#@62;=”&VALUE(A2)).請你把這個公式向右面粘貼,可以發(fā)現(xiàn),不用修改任何參數(shù)就能"自動"地引用正確的單元格了.

      如果你能夠熟練應(yīng)用INDIRECT()和VALUE()這兩個函數(shù),再加上區(qū)域命名的法寶,會給你帶來不小的方便!

      至于制作能多次使用的計算"模板",我采用的是很懶也很容易的方法:將上一次用過的EXCEL文件用"另存為"作個備份,然后打開,只將原始數(shù)據(jù)清去,其他全部保留,就成了一個"模板".這樣,只需要輸入原始數(shù)據(jù),立即會得到結(jié)果,免去了輸入公式,設(shè)計格式等一大堆麻煩.

      九、技巧1:給別人看,但不給別人動

      辛辛苦苦地設(shè)計了一個數(shù)據(jù)庫或者表格,卻被別人毛手毛腳地搞亂了,是不是很惱火?如果 是私人文件還好,只要設(shè)個密碼就可以了,偏偏這是要別人往里面填數(shù)據(jù)或者是要給大家參考的,往往由于他人的“不小心”,而導(dǎo)致自己要重做整個表格,這種事情不知道大家遇到?jīng)]有,我可是遇到過,辛苦加班加點用了7天才設(shè)計好的表格,因為沒做好防護措施,致使....哎,傷心往事,不說也罷!

      現(xiàn)在,我教大家一個好辦法,讓別人只能看,不能動!

      為了防止別人無意改動表格的內(nèi)容(尤其是一些計算公式),我們必須把這些單元格設(shè)成“只讀”!

      把不需要保護的的單元格選定,單擊右鍵,設(shè)置單元格,將保護標(biāo)簽中的鎖定復(fù)選框清除,然后對該工作表設(shè)置保護。此時,鎖定的單元格是只讀的,剛才已被清除鎖定復(fù)選框的單元則可以正常輸入。當(dāng)然,如果你連某些單元的內(nèi)容也不想別人看到,在確定這些單元保護標(biāo)簽中的鎖定復(fù) 選框是選中的情況下,再選擇隱藏即可,這樣將不顯示這些單元其中的內(nèi)容。但是你必須對工作表或工作簿實施保護后,你的保護和隱藏才有效。要保護工作表,可按以下選擇:

      [工具]→[保護]→[保護工作表]→選擇密碼,重復(fù)輸入相同密碼,這樣,以后要進(jìn)入這個工作表,只要輸入密碼即可。

      技巧2:得到偶數(shù)的單元格的相加值

      因為工作需要,要得到偶數(shù)的單元格的值相加之和,以下是具體的要求和思路:

      要求:得到A2+A4+A6+A8+A10+A12+A14......之和,假如是少還好辦,假如有數(shù)十個相加的話就不好辦了,怎樣才能用一個公式來搞定它呢???

      思路:呵呵,我已得到答案了!先用一列來得到當(dāng)前行的行號,你可在C1輸入1,然后向下拖得到每一行的行號,再用一列來判斷當(dāng)前行是否為偶數(shù)行,輸入公式:"=IF(INT(C1/2)=C1/2,A1,0)",然后再累加C列即可。

      函數(shù)解析:其中的INT函數(shù)為判斷C1/2是否為整數(shù),如果C1是偶數(shù)C1/2當(dāng)然是整數(shù)了,IF函數(shù)判斷INT(C1/2)是否為偶數(shù),如是,則取A列值,如果不是,就取0值。

      看懂以上公式后,再教你一個更簡單的方法:用ROW函數(shù).ROW()可以得到當(dāng)前行的行號,這樣,判斷當(dāng)前行是否為偶數(shù)就不用再增加C列了,只要直接輸入公式:"=IF(INT(ROW(?)=ROW()/2,A1,0)",向下拖動,累加即可。

      技巧3:如何使Excel中數(shù)字計算自動四舍五入

      目的:要對一個單元格中的數(shù)據(jù)(利用函數(shù)計算得出的)在它本身所在的單元格內(nèi)進(jìn)行四舍五入。

      //* 假設(shè)B1單元格內(nèi)容為:=if(A1$#@62;5,6234*.05)*//

      1.如果B1單元此后不再加入其他運算,只要:

      右鍵單擊B1 → 設(shè)置單元格格式 → 小數(shù)位數(shù)調(diào)整到2位.或者單擊B1,選擇快捷菜單上的 "千分格式",再選擇快捷菜單上的 "退一位小數(shù)位" 即可。

      2.如果B1單元此后還要再加入其他運算,只要:

      在B1單元,將原有內(nèi)容加入ROUND函數(shù)即可:=round(if(A1$#@62;5,6234*.05),2)

      其中,最后一位數(shù)"2"代表你想要數(shù)據(jù)參與計算的結(jié)果截止到小數(shù)點后兩位,如果想要三位,直接改成"3"即可。

      以上第一種方法只能達(dá)到顯示上的四舍五入,當(dāng)數(shù)據(jù)再次參與計算時,將不會以四舍五入后的數(shù)值參與。第二種方法,當(dāng)數(shù)據(jù)再次參與計算時,將以四舍五入后的數(shù)值(即其顯示在單元格中的數(shù)據(jù))參與計算。

      技巧4:將鍵入的阿拉伯?dāng)?shù)字自動轉(zhuǎn)換成人民幣大寫金額

      在使用EXCEL過程中,在制作財務(wù)憑證時經(jīng)常需要將數(shù)字表示為大寫的數(shù)字金額,可用設(shè)置單元格格式的方法來實現(xiàn):

      1.首先鼠標(biāo)右鍵單擊需要用大寫金額顯示的單元格。

      2.(*假設(shè)此單元格金額為123.50元*)→ 設(shè)置單元格格式 → 數(shù)字 → 自定義 → 在類型框中輸入 [DBNum2]0“百”0“拾”0“元”0“角”“整” 即可將選中的單元格中的數(shù)字顯示為大寫金額:(壹百貳拾叁元伍角整)。

      (*假設(shè)此單元格金額為1234.51元*)→ 設(shè)置單元格格式 → 數(shù)字 → 自定義 → 在類型框中輸入 [DBNum2]0“千”0“百”0“拾”0“元”0“角”0“分”“整” 即可將選中的單元格中的數(shù)字顯示為大寫金額:(壹千貳百叁拾肆元伍角壹分整)。

      第三篇:Excle使用心得

      EXCEL使用技巧

      01、如何在已有的單元格中批量加入一段固定字符?

      例如:在單位的人事資料,在excel中輸入后,由于上級要求在原來的職稱證書的號碼全部再加兩位,即要在每個人的證書號碼前再添上兩位數(shù)13,如果一個一個改的話實在太麻煩了,那么我們可以用下面的辦法,省時又省力:

      1)假設(shè)證書號在A列,在A列后點擊鼠標(biāo)右鍵,插入一列,為B列;

      2)在B2單元格寫入: =“13” & A2 后回車;

      3)看到結(jié)果為 13xxxxxxxxxxxxx 了嗎?鼠標(biāo)放到B2位置,單元格的下方不是有一個小方點嗎,按著鼠標(biāo)左鍵往下拖動直到結(jié)束。當(dāng)你放開鼠標(biāo)左鍵時就全部都改好了。若是在原證書號后面加13 則在B2單元格中寫入:=A2 & “13” 后回車。

      02 用IF函數(shù)清除EXCEL工作表中的計算出現(xiàn)的0

      =IF(K14*M14=0,“",K14*M14)該式所表示的含義為:如果單元格K14與M14內(nèi)數(shù)值的乘積為零,那么存放計算結(jié)果的單元格顯示為一個空白單元格;反之,單元格K14與M14內(nèi)數(shù)值的乘機為不為零,這兩個單元格的數(shù)值將被進(jìn)行乘積運算。

      06、在Excel中如何設(shè)置加權(quán)平均?

      加權(quán)平均在財務(wù)核算和統(tǒng)計工作中經(jīng)常用到,并不是一項很復(fù)雜的計算,關(guān)鍵是要理解加權(quán)平均值其實就是總量值(如金額)除以總數(shù)量得出的單位平均值,而不是簡單的將各個單位值(如單價)平均后得到的那個單位值。在Excel中可設(shè)置公式解決(其實就是一個除法算式),分母是各個量值之和,分子是相應(yīng)的各個數(shù)量之和,它的結(jié)果就是這些量值的加權(quán)平均值。

      07、如果在一個Excel文件中含有多個工作表,如何將多個工作表一次設(shè)置成同樣的頁眉和頁腳?如何才能一次打印多個工作表?

      把鼠標(biāo)移到工作表的名稱處(若你沒有特別設(shè)置的話,Excel自動設(shè)置的名稱是“sheet1、sheet2、sheet3.......”),然后點右鍵,在彈出的菜單中選擇“選擇全部工作表”的菜單項,這時你的所有操作都是針對全部工作表了,不管是設(shè)置頁眉和頁腳還是打印你工作表。

      15、如何快速選取工作表中所有包含公式的單元格?

      有時,需要對工作表中所有包含公式的單元格加以保護,或填入與其他單元格不同的顏色,以提醒用戶注意不能在有此顏色的區(qū)域內(nèi)輸入數(shù)據(jù)。以下方法可以幫助快速選取所有包含公式的單元格:選擇“編輯”“定位”(F5),單擊“定位條件”按鈕,在“定位條件”對話框中選擇“公式”項,按“確定”按鈕即可。

      16、如何在不同單元格中快速輸入同一數(shù)內(nèi)容?

      選定單元格區(qū)域,輸入值,然后按 Ctrl+ Ener鍵,即可實現(xiàn)在選定的單元格區(qū)域中一次性輸入相同的值。

      17、只記得函數(shù)的名稱,但記不清函數(shù)的參數(shù)了,怎么辦?

      如果你知道所要使用函數(shù)的名字,但又記不清它的所有參數(shù)格式,那么可以用鍵盤快捷鍵把

      參數(shù)粘貼到編輯欄內(nèi)。

      具體方法是:在編輯欄中輸入一個等號其后接函數(shù)名,然后按 Ctr+ A鍵,Excel則自動進(jìn)入“函數(shù)指南——步驟 2之2”。當(dāng)使用易于記憶的名字且具有很長一串參數(shù)的函數(shù)時,上述方法顯得特別有用。

      27、如何快速地將數(shù)字作為文本輸入?

      在輸入數(shù)字前加一個單引號“’”,可以強制地將數(shù)字作為文本輸入。

      35、如何使單元格中的顏色和底紋不打印出來?

      對那些加了保護的單元格,還可以設(shè)置顏色和底紋,以便讓用戶一目了然,從顏色上看出那些單元格加了保護不能修改,從而可增加數(shù)據(jù)輸入時的直觀感覺。但卻帶來了問題,即在黑白打印時如果連顏色和底紋都打出來,表格的可視性就大打折扣。解決辦法是:選擇“文件”“頁面設(shè)置”“工作表”,在“打印”欄內(nèi)選擇“單元格單色打印”選項。之后,打印出來的表格就面目如初了。

      37、“$”的功用

      Excel一般使用相對地址來引用單元格的位置,當(dāng)把一個含有單元格地址的公式拷貝到一個新的位置,公式中的單元格地址會隨著改變。你可以在列號或行號前添加符號 “$”來凍結(jié)單元格地址,使之在拷貝時保持固定不變。

      38、如何用漢字名稱代替單元格地址?

      如果你不想使用單元格地址,可以將其定義成一個名字。

      定義名字的方法有兩種:一種是選定單元格區(qū)域后在“名字框”直接輸入名字,另一種是選定想要命名的單元格區(qū)域,再選擇“插入”“名字”“定義”,在“當(dāng)前工作簿中名字”對話框內(nèi)鍵人名字即可。使用名字的公式比使用單元格地址引用的公式更易于記憶和閱讀,比如公式“=SUM(實發(fā)工資)”顯然比用單元格地址簡單直觀,而且不易出錯。

      39、如何在公式中快速輸入不連續(xù)的單元格地址?

      在SUM函數(shù)中輸入比較長的單元格區(qū)域字符串很麻煩,尤其是當(dāng)區(qū)域為許多不連續(xù)單元格區(qū)域組成時。這時可按住Ctrl鍵,進(jìn)行不連續(xù)區(qū)域的選取。區(qū)域選定后選擇“插入”“名字”“定義”,將此區(qū)域命名,如Group1,然后在公式中使用這個區(qū)域名,如“=SUM(Group1)”。

      42、工作表名稱中能含有空格嗎?

      能。例如,你可以將某工作表命名為“Zhu Meng”。有一點結(jié)注意的是,當(dāng)你在其他工作表中調(diào)用該工作表中的數(shù)據(jù)時,不能使用類似“= Zhu Meng!A2”的公式,否則 Excel將提示錯誤信息“找不到文件Meng”。解決的方法是,將調(diào)用公式改為“='Zhu Mg'!A2”就行了。當(dāng)然,輸入公式時,你最好養(yǎng)成這樣的習(xí)慣,即在輸入“=”號以后,用鼠標(biāo)單由 Zhu Meng工作表,再輸入余下的內(nèi)容。

      46、如何減少重復(fù)勞動?

      我們在實際應(yīng)用Excel時,經(jīng)常遇到有些操作重復(fù)應(yīng)用(如定義上下標(biāo)等)。為了減少重復(fù)勞動,我們可以把一些常用到的操作定義成宏。其方法是:選取“工具”菜單中的“宏”命令,執(zhí)行“記錄新宏”,記錄好后按“停止”按鈕即可。也可以用VBA編程定義宏。

      47、如何快速地批量修改數(shù)據(jù)?

      假如有一份 Excel工作簿,里面有所有職工工資表?,F(xiàn)在想將所有職工的補貼增加50(元),當(dāng)然你可以用公式進(jìn)行計算,但除此之外還有更簡單的批量修改的方法,即使用“選擇性粘貼”功能: 首先在某個空白單元格中輸入50,選定此單元格,選擇“編輯”“復(fù)制”。選取想修改的單元格區(qū)域,例如從E2到E150。然后選擇“編輯”“選擇性粘貼”,在“選擇性粘貼”對話框“運算”欄中選中“加”運算,按“確定”健即可。最后,要刪除開始時在某個空白單元格中輸入的50。

      48、如何快速刪除特定的數(shù)據(jù)?

      假如有一份Excel工作薄,其中有大量的產(chǎn)品單價、數(shù)量和金額。如果想將所有數(shù)量為0的行刪除,首先選定區(qū)域(包括標(biāo)題行),然后選擇“數(shù)據(jù)”“篩選”“自動篩選”。在“數(shù)量”列下拉列表中選擇“0”,那么將列出所有數(shù)量為0的行。此時在所有行都被選中的情況下,選擇“編輯”“刪除行”,然后按“確定”即可刪除所有數(shù)量為0的行。最后,取消自動篩選。

      49、如何快速刪除工作表中的空行?

      以下幾種方法可以快速刪除空行:

      方法一:如果行的順序無關(guān)緊要,則可以根據(jù)某一列排序,然后可以方便地刪掉空行。方法二:如果行的順序不可改變,你可以先選擇“插入”“列”,插入新的一列入在A列中順序填入整數(shù)。然后根據(jù)其他任何一列將表中的行排序,使所有空行都集中到表的底部,刪去所有空行。最后以A列重新排序,再刪去A列,恢復(fù)工作表各行原來的順序。

      方法三:使用上例“如何快速刪除特定的數(shù)據(jù)”的方法,只不過在所有列的下拉列表中都選擇“空白”。

      50、如何使用數(shù)組公式?

      Excel中數(shù)組公式非常有用,它可建立產(chǎn)生多值或?qū)σ唤M值而不是單個值進(jìn)行操作的公式。要輸入數(shù)組公式,首先必須選擇用來存放結(jié)果的單元格區(qū)域,在編輯欄輸入公式,然后按ctrl+Shift+Enter組合鍵鎖定數(shù)組公式,Excel將在公式兩邊自動加上括號“{}”。不要自己鍵入花括號,否則,Excel認(rèn)為輸入的是一個正文標(biāo)簽。要編輯或清除數(shù)組公式.需選擇數(shù)組區(qū)域并且激活編輯欄,公式兩邊的括號將消失,然后編輯或清除公式,最后按Ctrl+shift+Enter鍵。

      52、在Excel中用Average函數(shù)計算單元格的平均值的,值為0的單元格也包含在內(nèi)。有沒有辦法在計算平均值時排除值為0的單元格?

      方法一:如果單元格中的值為0,可用上例“0值不顯示的方法”將其內(nèi)容置為空,此時空單元格處理成文本,這樣就可以直接用Average函數(shù)計算了。

      方法二:巧用Countif函數(shù) 例如,下面的公式可計算出b2:B10區(qū)域中非0單元格的平均值: =sum(b2: b10)/countif(b2: b1o,”<>0")

      三、讓不同類型數(shù)據(jù)用不同顏色顯示

      在工資表中,如果想讓大于等于2000元的工資總額以“紅色”顯示,大于等于1500元的工資總額以“藍(lán)色”顯示,低于1000元的工資總額以“棕色”顯示,其它以“黑色”顯示,我們可以這樣設(shè)置。

      1.在工作簿中,選中“工資總額”所在列,執(zhí)行“格式→條件格式”命令,打開“條件

      格式”對話框。單擊第二個方框右側(cè)的下拉按鈕,選中“大于或等于”選項,在后面的方框中輸入數(shù)值“2000”。單擊“格式”按鈕,打開“單元格格式”對話框,將“字體”的“顏色”設(shè)置為“紅色”。(在Excle07中 開始----樣式---條件格式 下面設(shè)置)

      2.按“添加”按鈕,并仿照上面的操作設(shè)置好其它條件(大于等于1500,字體設(shè)置為“藍(lán)色”;小于1000,字體設(shè)置為“棕色”)。

      3.設(shè)置完成后,按下“確定”按鈕。

      第四篇:CAD使用心得之一

      CAD使用心得之一--CAD使用的三個基本方面:清晰、準(zhǔn)確、高效

      (2012-07-02 10:49:16)

      很多CAD的教材,如果對照著學(xué)習(xí)的話,確實都能夠在一定程度上掌握這個軟件,如果到工作崗位,也都能勉勉強強的開始畫圖。但是,這遠(yuǎn)遠(yuǎn)不夠,從書本到實戰(zhàn),還有一大段距離。因此,將收集的有關(guān)于使用CAD的一系列心得體會發(fā)出來與大家分享。

      CAD使用心得連載之一

      ——CAD使用的三個基本方面:清晰、準(zhǔn)確、高效

      目前,設(shè)計公司的設(shè)計文件,特別是圖紙,都是用CAD軟件繪制的,但是還有很多人對CAD并不是非常熟悉,或者說使用起來并非得心應(yīng)手,以至于效率并不是很高,可以說,繪制同樣的一張圖紙,速度快的和慢的在耗時上可能會相差好幾倍。同時,每個人繪制出來的圖紙看上去感覺都不盡相同:有些圖紙看上去一目了然、清晰漂亮,而有些圖紙不但表達(dá)不清,甚至可以用慘不忍睹來形容。

      不知大家認(rèn)為,使用CAD畫圖最重要的是什么?對這個問題,每個人都有可能理解不同,但在我看來,最重要的是時時刻刻記住自己使用CAD畫圖的目的是什么。

      我們進(jìn)行工程設(shè)計,不管是什么專業(yè)、什么階段,實際上都是要將某些設(shè)計思想或者是設(shè)計內(nèi)容,表達(dá)、反映到設(shè)計文件上。而圖紙,就是一種直觀、準(zhǔn)確、醒目、易于交流的表達(dá)形式。所以我們完成的東西(不管是最終完成的設(shè)計成果,還是作為條件提交給其它專業(yè)的過程文件,一定需要能夠很好的幫助我們表達(dá)自己的設(shè)計思想、設(shè)計內(nèi)容。

      有了這個前提,我們就應(yīng)該明白,好的CAD圖紙應(yīng)該具有以下兩個特征:清晰、準(zhǔn)確。清晰,就是需要表達(dá)的東西必須清楚明了。好的圖紙,看上去一目了然。構(gòu)件表達(dá)、尺寸標(biāo)注、文字說明清清楚楚,互不重疊??除了圖紙打印效果清晰以外,在屏幕上的顯示也必須清晰。圖面清晰除了能清楚表達(dá)設(shè)計思路和設(shè)計內(nèi)容外,也是提高繪圖速度的基礎(chǔ)。準(zhǔn)確,就是標(biāo)注不能錯誤,指示不能模糊。制圖準(zhǔn)確不僅是為了好看,更重要的是可以直觀的反映一些圖面問題,對于提高繪圖速度也有重要的影響,特別是在圖紙修改時。我們在使用CAD繪圖時,無時無刻都應(yīng)該把以上兩點銘刻在心。只有做到這兩點,才能說在繪圖方面基本過關(guān)。

      圖面表示要“清晰”、“準(zhǔn)確”,而在繪圖過程中,還有同樣重要的一點,就是“高效”。能夠高效繪圖,好處不用多說。

      清晰、準(zhǔn)確、高效是CAD軟件使用的三個基本點。在CAD軟件中,除了一些最基本的繪圖命令外,其他的各種編輯命令、各種設(shè)置定義,可以說都是圍繞著清晰、準(zhǔn)確、高效這三方面來編排的。我們在學(xué)習(xí)CAD中的各項命令、各種設(shè)置時,都要思考一下,它們能在這三個方面起到那些作用;在使用時應(yīng)該注重什么;在什么情況和條件下,使用這些命令最為合適。

      第五篇:STM32使用心得

      stm32使用心得

      第一次使用stm32,以前用過

      51、avr、pic、2812,感覺stm32還真有點不一樣,呵呵。

      因為是第一次使用,下面說的肯定有不少錯誤,誠心求大家指正。

      這次做的是用stm32f103zd+lattice 的lc4256v做一個波形發(fā)生器。通過上位機可以控制生成波形的頻率,然后stm32根據(jù)頻率計算波形占空比數(shù)據(jù),通過總線形式傳給cpld,然后cpld把這些數(shù)據(jù)轉(zhuǎn)換成相對應(yīng)占空比的pwm輸出,外部接RC濾波電路,產(chǎn)生相對應(yīng)的波形。由于頻率范圍較大,計算量也比較大,所以采用了stm32+cpld的結(jié)構(gòu)。Stm32運行在72MHZ,通過mco腳給cpld 36M HZ的時鐘,stm32和cpld通過總線方式通信。

      此系統(tǒng)中Stm32主要用到的資源是:一個UART,一個TIMER及其中斷,F(xiàn)SMC和DMA。

      本人總結(jié)了下,Stm32初始化一個片內(nèi)外設(shè)一般過程一般有以下幾部分:

      1.InitStructure配置及初始化

      2.時鐘使能

      3.相對應(yīng)的IOInitStructure配置及初始化

      4.相對應(yīng)的IO時鐘使能

      5.外設(shè)使能

      6.中斷配置及中斷程序編寫

      下面介紹一下自己所用的UART、TIMER、FSMC、DMA的初始化。

      UART初始化:

      此系統(tǒng)中使用的是UART2,未用UART中斷。UART初始化主要有:IO初始化,UART InitSturcture初始化,UART時鐘使能,UART使能。程序如下: GPIO_InitTypeDef GPIO_InitStructure;

      // Configure USART2_Tx as alternate push-pull

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

      GPIO_Init(GPIOA, &GPIO_InitStructure);

      // Configure USART2_Rx as input floating

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

      GPIO_Init(GPIOA, &GPIO_InitStructure);

      //IO時鐘使能

      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

      USART_InitTypeDef USART_InitStructure;

      /* USART2 configured as follow:

      -BaudRate = 9600 baud

      -Word Length = 8 Bits

      -One Stop Bit

      -No parity

      -Hardware flow control disabled(RTS and CTS signals)

      -Receive and transmit enabled

      */

      USART_InitStructure.USART_BaudRate = 9600;

      USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;

      USART_InitStructure.USART_Parity = USART_Parity_No;

      USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

      USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

      /* Configure the USART2*/

      USART_Init(USART2, &USART_InitStructure);

      //UART時鐘使能

      RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

      /* Enable the USART2 */

      USART_Cmd(USART2, ENABLE);

      TIMER初始化

      使用的是TIM2。初始化主要包括TIM2 InitSturcture初始化,時鐘使能,TIM2開啟,中斷配置,及中斷服務(wù)程序編寫。此TIM2作用主要是給DMA提供時鐘,DMA在TIM2 UP時啟動一次DMA發(fā)送過程。TIM2程序如下:

      TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

      //定時器2

      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

      TIM_TimeBaseStructure.TIM_Period = 33;

      TIM_TimeBaseStructure.TIM_Prescaler = 71;

      TIM_TimeBaseStructure.TIM_ClockDivision = 0;

      TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;

      TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

      TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

      TIM_ClearFlag(TIM2,TIM_FLAG_Update);

      TIM_ARRPreloadConfig(TIM2,ENABLE);

      TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

      TIM_Cmd(TIM2, ENABLE);

      //中斷配置

      /* Enable the TIM2 gloabal Interrupt */

      NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;

      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

      NVIC_Init(&NVIC_InitStructure);

      //定時器2中斷服務(wù)程序

      void TIM2_IRQHandler(void)//這個函數(shù)可以在文件stm32f10x.c文件中查找到 {

      TIM_ClearITPendingBit(TIM2,TIM_IT_Update);

      }

      FSMC初始化

      FSMC主要用來和CPLD進(jìn)行總線通信,由DMA方式發(fā)送,在TIM2計時時間到后啟動一次DMA發(fā)送,發(fā)送的數(shù)據(jù)由已計算好的數(shù)組中的一個16位數(shù)據(jù)以16位方式發(fā)給FSMC的地址。由于此系統(tǒng)電路已固定,stm32與CPLD間數(shù)據(jù)線是8位,故在向FSMC地址寫16位數(shù)據(jù)時,F(xiàn)SMC會將數(shù)據(jù)拆成2部分發(fā)送。本人在實際編程時發(fā)現(xiàn),如向*(volatile u16*)(Bank1_NOR4_ADDR+0x40)地址給CPLD寫16位數(shù)據(jù)時,會在40h接收到低8位數(shù)據(jù),在41h接收到高8位數(shù)據(jù)。按道理來說這些數(shù)據(jù)應(yīng)該與NBL0, NBL1信號有關(guān),本人在CPLD編程時未理會這個,具體時序不是很清楚,有待考究。

      FSMC初始化程序如下:

      FSMC_NORSRAMInitTypeDefFSMC_NORSRAMInitStructure;

      FSMC_NORSRAMTimingInitTypeDefp;

      p.FSMC_AddressSetupTime = 3;//6

      p.FSMC_AddressHoldTime = 0;//3

      p.FSMC_DataSetupTime = 8;//25

      p.FSMC_BusTurnAroundDuration = 0;

      p.FSMC_CLKDivision = 0;

      p.FSMC_DataLatency = 0;

      p.FSMC_AccessMode = FSMC_AccessMode_A;

      FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;

      FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;

      FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;

      FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;

      FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;

      FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;

      FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;

      FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;

      FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;

      FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;

      FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable;

      FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;

      FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

      FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

      FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);

      //IO初始化

      GPIO_InitTypeDef GPIO_InitStructure;

      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOG | RCC_APB2Periph_GPIOE |

      RCC_APB2Periph_GPIOF, ENABLE);

      /*--GPIO Configuration-----------------------*/

      /* SRAM Data lines configuration */

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |

      GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

      GPIO_Init(GPIOD, &GPIO_InitStructure);

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |

      GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |

      GPIO_Pin_15;

      GPIO_Init(GPIOE, &GPIO_InitStructure);

      /* SRAM Address lines configuration */

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |

      GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;

      GPIO_Init(GPIOF, &GPIO_InitStructure);

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |

      GPIO_Pin_4 | GPIO_Pin_5;

      GPIO_Init(GPIOG, &GPIO_InitStructure);

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;GPIO_Init(GPIOD, &GPIO_InitStructure);

      /* NOE and NWE configuration */

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5;

      GPIO_Init(GPIOD, &GPIO_InitStructure);

      /* NE4 configuration */

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;

      GPIO_Init(GPIOG, &GPIO_InitStructure);

      /* NBL0, NBL1 configuration */

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;

      GPIO_Init(GPIOE, &GPIO_InitStructure);

      此處簡單介紹一下FSMC總線方式的使用。

      FSMC初始化完了之后,進(jìn)行如下定義,#define Bank1_NOR4_ADDR((u32)0x6c000000)

      #define cs_sin*(volatile u16*)(Bank1_NOR4_ADDR+0x40)

      然后cs_sin=1000就是往這個地址寫數(shù)字1000=0x03e8,則cpld 40h地址收到數(shù)據(jù)為0xe8,41h收到的數(shù)據(jù)為0x03

      i=cs_sin,就是讀這個地址的數(shù)據(jù),由于定義的是16位的數(shù)據(jù)地址,故讀到的數(shù)據(jù)是40h為低8位數(shù)據(jù),41h為高8位數(shù)據(jù)

      DMA初始化:

      DMA在TIM2 UP時觸發(fā),將已經(jīng)計算好放在數(shù)組dat_tocpld的16位數(shù)據(jù)發(fā)送到fsmc地址為(Bank1_NOR4_ADDR+0x40)的空間。

      初始化程序如下:

      DMA_InitTypeDef DMA_InitStructure;

      DMA_DeInit(DMA1_Channel2);

      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

      /* Enable TIM2 DMA interface */

      TIM_DMACmd(TIM2, TIM_DMA_Update, ENABLE);

      DMA_InitStructure.DMA_PeripheralBaseAddr =(u32)(Bank1_NOR4_ADDR+0x

      40);

      DMA_InitStructure.DMA_MemoryBaseAddr =(u32)dat_tocpld;

      DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;

      DMA_InitStructure.DMA_BufferSize = 1152;

      DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

      DMA_InitStructure.DMA_PeripheralDataSize =DMA_PeripheralDataSize_HalfWord;

      DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;

      DMA_InitStructure.DMA_Priority = DMA_Priority_High;

      DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

      DMA_Init(DMA1_Channel2, &DMA_InitStructure);

      /* Enable DMA1 Channel2 */

      DMA_Cmd(DMA1_Channel2, ENABLE);

      最后附上源自http://sxqstudy.blog.163.com/blog/static/***03148709/介紹的關(guān)于PWM電壓轉(zhuǎn)換電路。

      在PWM用于DA轉(zhuǎn)換的場合,阻容濾波電路是關(guān)系轉(zhuǎn)換效果的重要環(huán)節(jié)。

      由RC充放電常數(shù)我們可以大致計算出阻容環(huán)節(jié)的充放電頻率,一般為了得到理想的濾波效果,這個頻率要遠(yuǎn)小于PWM的輸出頻率(小于四分之一)。

      一般情況下,當(dāng)C較小R較大時,DA轉(zhuǎn)換出的電壓損耗很小,但是紋波卻很大;當(dāng)C較大R較小時,DA轉(zhuǎn)換出的電壓損耗很大,但紋波相對較小。

      所以當(dāng)需要進(jìn)行線形度很高的精確DA轉(zhuǎn)換時必須使用較小的濾波電容,且盡量避免使用電解類電容。而為了得到較強的信號輸出,RC慣性環(huán)節(jié)之后還必須加一級高性能的電壓跟隨,然后在跟隨器輸出的地方加上一個濾波用的電解電容,用于平滑RC慣性環(huán)節(jié)的紋波。但是這還不夠,因為這時的輸出電壓里可能含有較多的交流諧波成分,如果處理不當(dāng),跟隨器有可能自激。解決的辦法就是使用一個小的去藕電容。而且這里電容的放置順序必須是電解電容在前,去藕電容在后!

      如果輸出電壓精度和線形度要求不高,但是對紋波要求卻很高,或者這個電壓比較固定時,可以使用電容較大的濾波組合。因為,雖然大電容的直流損耗較大,但是我們可以通過調(diào)節(jié)PWM占空比來達(dá)到要求的輸出電壓,或者通過一級AD轉(zhuǎn)換的反饋來實現(xiàn)精確的固定電壓輸出。只是這里仍然要加一級電壓跟隨器,以便于后級采集電路使用,且AD采集點放置在跟隨器輸出處。

      下載QwebKit使用心得.word格式文檔
      下載QwebKit使用心得..doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        430使用心得

        學(xué)習(xí)MSP430G2553,已有7天有余。個人覺著:低功耗是其最大亮點。為此可謂是處心積慮。因而中斷/低功耗模式在430的應(yīng)用中便顯得千嬌百媚,楚楚動人!這里,先跟大伙看下這個中斷的情況......

        SINET使用心得

        SINET使用心得 艾曉欣 摘要本文主要介紹工藝計算模擬軟件SINET的使用方法及心得體會 關(guān)鍵詞SINET 工程模擬工藝計算2.2 工程相關(guān)信息的定義 點擊File下來菜單中的Project f......

        autocad使用心得

        一、柵格+捕捉 柵格的應(yīng)用可以提高作圖速度,主要體現(xiàn)在畫墻的時候。 當(dāng)墻厚100時,可以設(shè)置柵格間距為200,捕捉間距為100,墻厚為120時,可以設(shè)置柵格間距180,捕捉間距60。下面以墻......

        電子白板使用心得

        科學(xué)使用電子白板 適時提高課堂效率 ——白板學(xué)習(xí)心得體會 芹池中心學(xué)校 張學(xué)鋒 電子白板是一種高科技產(chǎn)品,利用計算機的數(shù)據(jù)處理功能,可以輕松實現(xiàn)書寫、標(biāo)注、畫圖、編輯......

        AUTOCAD使用心得

        CAD中的字體高度! 如果你A0的圖出成A0圖紙的粗實線在大約0.6-0.8,其他就0.1-0.2,如果你是A0圖出成A3、A2等圖紙那就要根據(jù)實際情況改一下,多出幾次積累經(jīng)驗,這是個人意見希望對你......

        遠(yuǎn)程教育使用心得(模版)

        使用遠(yuǎn)程教育資源心得體會 眾所周知,我們現(xiàn)在所處的時代,信息技術(shù)的使用已成為實現(xiàn)現(xiàn)代化、信息化必不可少的手段,也成為我們教育工作者提高課堂教學(xué)質(zhì)量、應(yīng)用多媒體教學(xué)的最......

        CRM使用心得

        crm客戶關(guān)系管理系統(tǒng)使用心得 crm既是一套原則制度,也是一套軟件和技術(shù)。它的目標(biāo)是縮減銷售周期和銷售成本、增加收入、尋找擴展業(yè)務(wù)所需的新的市場和渠道以及提高客戶的價......

        Multisim10.0使用心得

        課 程 設(shè) 計 報 告 課程名稱Multisim軟件應(yīng)用 課題名稱Multisim軟件匯報 專 業(yè) 電氣工程及其自動化 班 級 電氣1091 學(xué) 號 201001019207 姓 名 萬仁欽 指導(dǎo)教師 李立 2011......