• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Keil時(shí)序邏輯和Proteus的電路仿真

      2017-04-10 12:05:43
      實(shí)驗(yàn)室研究與探索 2017年1期
      關(guān)鍵詞:電路仿真電平時(shí)序

      鄧 力

      (桂林理工大學(xué)南寧分校, 南寧 530001)

      基于Keil時(shí)序邏輯和Proteus的電路仿真

      鄧 力

      (桂林理工大學(xué)南寧分校, 南寧 530001)

      針對(duì)Proteus仿真液晶LCD1602出現(xiàn)的問題,對(duì)LCD1602技術(shù)手冊(cè)中的讀寫操作時(shí)序圖進(jìn)行LCD1602相關(guān)引腳時(shí)序邏輯電平分析,通過Keil4的邏輯分析儀對(duì)程序中LCD1602的讀寫時(shí)序進(jìn)行查看,根據(jù)邏輯分析儀的時(shí)序波型對(duì)液晶顯示程序代碼進(jìn)行修改使程序符合LCD1602的讀寫時(shí)序要求,并使用Proteus的圖表分析對(duì)電路程序代碼執(zhí)行時(shí)的電平進(jìn)行查看,直觀顯示了程序在電路執(zhí)行的過程。在嵌入式系統(tǒng)開發(fā)中使用Keil4時(shí)序邏輯及Proteus圖表仿真,可以對(duì)軟件及電路中出現(xiàn)的問題有針對(duì)性的分析,探索了使用Keil4的邏輯分析儀和Proteus的圖表分析對(duì)程序執(zhí)行時(shí)序進(jìn)行分析的新方法。

      Keil邏輯分析儀; 電路仿真; 圖表分析

      0 引 言

      Keil4是Keil公司開發(fā)的一個(gè)IDE開發(fā)環(huán)境,Realview MDK是Keil公司推出的ARM開發(fā)工具,采用uVision3開發(fā)環(huán)境,結(jié)合RealView編譯器,支持ARM7、ARM9、Cortex-M3/M1的開發(fā)工具[1]。

      在Keil MDK中軟件邏輯分析儀有很強(qiáng)的功能,可以分析數(shù)字、模擬信號(hào)、CPU總線(UART、IIC等一切有輸出的管腳),提供調(diào)試函數(shù)機(jī)制,用于產(chǎn)生自定義的信號(hào),如Sin、三角波、噪聲信號(hào)等[2]。

      Proteus是一個(gè)基于ProSPICE混合模型仿真器的、完整的嵌入式系統(tǒng)軟、硬件設(shè)計(jì)仿真平臺(tái)。Proteus提供了一個(gè)圖表仿真功能,可以將線路上變化的信號(hào),以圖表的方式地顯示出來,其作用與示波器相似,但功能更多[3-9]。

      筆者在教學(xué)和實(shí)驗(yàn)實(shí)訓(xùn)中,使用Proteus仿真LCD1602液晶顯示的Keil4程序曾出現(xiàn)如下的問題:將C51程序移植到Keil4后,1602液晶Proteus仿真在設(shè)定LPC21xx主頻12Mb時(shí)不顯示,將Proteus仿真電路中CPU頻率降低后能顯示。

      1 Proteus仿真液晶電路問題的分析

      1.1 仿真電路元件

      LCD1602是一種專門用于顯示字母、數(shù)字、符號(hào)等字符型液晶,可以顯示2行,每行16個(gè)ASCII字符[10-12]。LPC2106是基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的ARM7TDMI-S CPU,并帶有128 Kb嵌入的高速Flash存儲(chǔ)器,片內(nèi)多達(dá)64 Kb的SRAM,32個(gè)GPIO[13-15]。

      LPC2106的P0.8~P0.10分別連接LCD1602的E、RW、RS,P0.0~P0.7分別連接D0~D7。

      根據(jù)液晶連接的I/O口,編寫液晶顯示程序:

      int main(void)

      { //寫指令時(shí)序測(cè)試

      IO0CLR=rs; //全部清零

      IO0CLR=rw;

      IO0CLR=0xff; //先清零

      IO0SET=0x08; //再送數(shù)

      IO0SET=en;

      IO0CLR=en;

      lcd_init();

      IO0DIR=0x7ff; //設(shè)置為輸出

      IO0CLR=0x7ff;

      WrOp(0xc1);

      WrDat('a');

      while(1);

      }

      1.2 Keil4邏輯分析儀對(duì)LCD1602指令及機(jī)器時(shí)鐘的仿真、分析

      針對(duì)Proteus仿真出現(xiàn)的問題,首先通過Keil4的邏輯分析儀對(duì)程序中LCD1602的讀寫時(shí)序進(jìn)行時(shí)序分析(此時(shí)由于使用Proteus進(jìn)行電路仿真時(shí)液晶顯示不出結(jié)果,Proteus圖表仿真還不能顯示出波形,因此通過Keil4的邏輯分析儀查看波形)。

      設(shè)置邏輯仿真儀,通過查看I0CLR和I0SET寄存器中的0X7FF值來查看輸出的P0~P10各I/O口引腳的電平。

      圖1所示為邏輯分析儀中與I0CLR=RS;I0CLR=RW兩條指令相對(duì)應(yīng)的時(shí)刻分別為21.733 44 μs,21.680 46 μs,相差的時(shí)間為5.298 ns,約為53 ns。

      對(duì)邏輯分析儀中I0CLR=RS;I0CLR=RW指令時(shí)序的分析:

      Keil4項(xiàng)目設(shè)定的Target中頻率為12 MHz,項(xiàng)目啟動(dòng)代碼文件Sartup.s中定義為4:

      圖1 時(shí)序邏輯圖中各寄存器值及相對(duì)應(yīng)的時(shí)間

      PLLCFG_OFS EQU 0x04 ; PLL Configuration Offset

      一般把振蕩器頻率稱為Fosc[16],ARM處理器時(shí)鐘頻率稱為cclk。

      由于PLL定義為0x04,因此,CPU的時(shí)鐘頻率為:12×(4+1)=60 MHz

      在調(diào)試中查看對(duì)應(yīng)的匯編代碼如下:

      136:

      137: int main(void)

      138: {

      139: //寫指令時(shí)序測(cè)試

      0x00000390 E8BD4070 LDMIA R13!,{R4-R6,R14}

      0x00000394 E12FFF1E BX R14

      140: IO0CLR=rs; //全部清零

      0x00000398 E3A00C01 MOV R0,#0x00000100

      0x0000039C E59F102C LDR R1,[PC,#0x002C]

      0x000003A0 E581000C STR R0,[R1,#0x000C]

      141: IO0CLR=rw;

      0x000003A4 E3A00C02 MOV R0,#0x00000200

      0x000003A8 E581000C STR R0,[R1,#0x000C]

      142: IO0CLR=0xff; //先清零

      0x000003AC E3A000FF MOV R0,#0x000000FF

      0x000003B0 E581000C STR R0,[R1,#0x000C]

      143: IO0SET=0x08; //再送數(shù)

      0x000003B4 E3A00008 MOV R0,#0x00000008

      0x000003B8 E5810004 STR R0,[R1,#0x0004]

      144: IO0SET=en;

      145: // nop();

      146: // nop();

      0x000003BC E3A00B01 MOV R0,#0x00000400

      0x000003C0 E5810004 STR R0,[R1,#0x0004]

      147: IO0CLR=en;

      由C語(yǔ)言語(yǔ)句I0CLR=RS;對(duì)應(yīng)的匯編代碼為:

      0x00000398 E3A00C01 MOV R0,#0x00000100

      0x0000039C E59F102C LDR R1,[PC,#0x002C]

      0x000003A0 E581000C STR R0,[R1,#0x000C]

      與C語(yǔ)言相對(duì)應(yīng)的總共為3條匯編指令,CPU的時(shí)鐘頻率為:12×(4+1)=60 MHz,ARM是RISC結(jié)構(gòu),一個(gè)指令周期就是一個(gè)時(shí)鐘周期,指令周期為1/60=16.7 ns,3個(gè)指令時(shí)鐘的時(shí)間:16.7 ns×3=51 ns,與邏輯分析儀中與IO0CLR=rs;IO0CLR=RW;2條指令相對(duì)應(yīng)的時(shí)刻基本相符。

      由IO0SET=0x08;IO0SET=en;查看邏輯仿真儀中IOSET的值可知:IOSET由0變?yōu)?x08然后變?yōu)?x408,en保持為高電平的時(shí)間為值為Ox408的時(shí)段,時(shí)間為:21.916 25 μs-21.883 2 μs=0.033 32 μs=33 ns,達(dá)不到LCD1602引腳E脈沖寬度的最小時(shí)間:150 ns。

      由C語(yǔ)言語(yǔ)句I0SET=en對(duì)應(yīng)的匯編指令為兩條匯編指令,可以認(rèn)為I0SET=en;IO0CLR=en;執(zhí)行的過程中,IO0SET=en;執(zhí)行兩個(gè)時(shí)鐘周期:16.7×2=33 ns,與邏輯仿真儀所得的時(shí)間相符。

      144: IO0SET=en;

      0x000003BC E3A00B01 MOV R0,#0x00000400

      0x000003C0 E5810004 STR R0,[R1,#0x0004]

      由于電路的晶振為12 MHz時(shí)EN的高電平維持時(shí)間達(dá)不到LCD1602中EN高電平所需的最小時(shí)間,Proteus電路仿真時(shí),LCD無法顯示出字符,但當(dāng)電路晶振降低后,指令執(zhí)行的時(shí)間增大,IO0SET=en指令中EN高電平的時(shí)間增加,符合LCD1602中EN高電平所需的最小時(shí)間,Proteus電路仿真時(shí),LCD就可以顯示出字符,這就是相同的程序和電路,當(dāng)晶振頻率n降低到一定程度時(shí),Proteus電路仿真電路正常而當(dāng)晶振頻率為12 MHz時(shí),Proteus電路仿真電路不正常的原因。

      1.3 Keil4液晶顯示程序的修改及時(shí)序邏輯分析

      根據(jù)LCD1602技術(shù)手冊(cè)中的時(shí)序參數(shù),對(duì)Keil4的LCD1602液晶讀寫操作程序進(jìn)行修改。

      LCD1602讀寫時(shí)序的要求如表1所示。

      表1 LCD1602時(shí)序參數(shù) ns

      由表1可知,LCD 1602讀寫控制信號(hào)中E脈沖寬度周期最小值為150 ns,為了使EN的電平能保持時(shí)間符合LCD1602的要求,可在IO0SET=en;后加入延

      時(shí),為了能用C語(yǔ)言實(shí)再現(xiàn)較精確的延時(shí),可采用空指令函數(shù):

      //空函數(shù)

      __asm void nop(void)

      {

      NOP

      }

      在IO0SET=en;指令后增加相應(yīng)的空指令函數(shù):nop();忽略進(jìn)出函數(shù)的時(shí)間,空指令nop();執(zhí)行的時(shí)間為一個(gè)指令的時(shí)間:16.7 ns,加入兩個(gè)空指令函數(shù)后,EN高電平的時(shí)間變?yōu)椋?2.7 μs-21.933 μs=76.7 ns,大約增加了兩個(gè)指令周期的時(shí)間(76.7-33=43 ns,約等于16.7×2=33 ns.),在LCD 1602液晶顯示程序中,通過多個(gè)空指令函數(shù)的調(diào)用可實(shí)現(xiàn)對(duì)EN信號(hào)的脈沖寬度時(shí)度精確控制。

      通過Proteus的圖表仿真功能查看液晶顯示時(shí)對(duì)應(yīng)的邏輯電平時(shí)序:

      Proteus電路仿真成功后(能在指定的位置正常顯示出字符‘a(chǎn)’),可以使用Proteus圖表仿真查看LCD1602的時(shí)序:

      主程序最后執(zhí)行:WrDat('a');

      字符a的ASCII碼為:097,轉(zhuǎn)為16進(jìn)制數(shù)為:0x61,二進(jìn)制數(shù)為0110,0001。查看圖表仿真最后輸?shù)牡牟ㄐ危篋7D6D5D4D3D2D1D0對(duì)應(yīng)的電平為:LHHL,LLLH(對(duì)應(yīng)圖2中D7~D0),按數(shù)字電路的高低電平轉(zhuǎn)化為數(shù)字為:0110,0001,與字符a的ASCII碼相符。

      圖2 WrDat(′a′)函數(shù)顯示字符“a”時(shí)D0~D7的電平

      WrDat('a');為寫數(shù)據(jù)函數(shù),對(duì)應(yīng)LCD的操作為:

      寫數(shù)據(jù),輸入:RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖

      前面查看的D0~D7與輸入的數(shù)據(jù)相符,查看數(shù)據(jù)輸出前的RS,RW,E的高平分別為:H,L,H,并且E在數(shù)據(jù)D0~D7輸出一段時(shí)間后變?yōu)榈碗娖?圖3中RS,RW,E對(duì)應(yīng)的仿真波形),符合E=高脈沖的要求。

      在寫數(shù)據(jù)前的寫指令函數(shù)為:WrOp(0xc1),在圖表仿真中該函數(shù)對(duì)應(yīng)的波形如圖4所示。

      圖3 WrDat(′a′)函數(shù)時(shí)RS、RW、E的電平

      圖4 寫指令函數(shù):WrOp(0xc1)時(shí)各引腳對(duì)應(yīng)的電平

      可見RS、RW、E、D0~D7都符合函數(shù)的定義:

      寫指令,輸入:RS=L,RW=L,D0~D7=指令,E=高脈沖。輸出:RS=L,RW=L,E=高脈沖(圖4中RS,RW,E對(duì)應(yīng)的仿真波形),D7~D0:1100,0001,16進(jìn)制為何0xC1,正是寫指令函數(shù)輸出的指令碼。

      2 結(jié) 論

      在使用Keil 4開發(fā)嵌入式系統(tǒng)時(shí),通過Keil 4的時(shí)序邏輯仿真可以查看程序代碼執(zhí)行時(shí)的邏輯及前后時(shí)序,可以用來驗(yàn)證程序運(yùn)行的邏輯對(duì)應(yīng)關(guān)系,而使用Proteus的圖表仿真,可以查看程序在電路中的運(yùn)行時(shí)序,可以直觀的顯示程序在電路執(zhí)行的過程。在嵌入式系統(tǒng)開發(fā)中使用Keil 4時(shí)序邏輯及Proteus圖表仿真,可以對(duì)軟件及電路中出現(xiàn)的問題有針對(duì)性的分析,提高代碼的調(diào)試速度并增加系統(tǒng)的穩(wěn)定。

      國(guó)內(nèi)外對(duì)Keil 4邏輯仿真儀和Prouteus圖表仿真研究的相關(guān)文章較少,在嵌入式開發(fā)中將Keil4邏輯仿真儀和Prouteus圖表仿真結(jié)合綜合應(yīng)用的研究,經(jīng)檢索,國(guó)內(nèi)外還未有相關(guān)的研究,因此進(jìn)行相關(guān)的研究探索具有較高的意義。

      [1] 黎雪芬.Keil及Proteus軟件在單片機(jī)仿真教學(xué)中的應(yīng)用[J].裝備制造技術(shù),2012(3):49-50.

      [2] 王海燕,楊艷華.Proteus和Keil軟件在單片機(jī)實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2012,31(5):88-91.

      [3] 劉昆磊,馬 超. Proteus仿真圖表在單片機(jī)教學(xué)過程中的應(yīng)用[J]. 內(nèi)江科技, 2010(8):139.

      [4] 趙金龍,趙 博,李 蕊. DS18B20測(cè)溫元件基于Proteus的仿真應(yīng)用[J]. 科技信息, 2009(28):307-308.

      [5] 于志贛,劉國(guó)平,張旭斌. 液顯LCD1602模塊的應(yīng)用[J]. 機(jī)電技術(shù), 2009(3):21.

      [6] 周靈彬,任開杰.基于Proteus的電路與PCB設(shè)計(jì)[M].北京:電子工業(yè)出版社,2010.

      [7] 吳小花,吳先球.Proteus電路設(shè)計(jì)與仿真在教學(xué)中的實(shí)踐[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(2):201-204.

      [8] 毛玉蓉. Proteus在單片機(jī)原理及應(yīng)用教學(xué)中的應(yīng)用[J]. 實(shí)驗(yàn)科學(xué)與技術(shù), 2009(8):48.

      [9] 鄧 力. 使用Proteus仿真圖表對(duì)單片機(jī)指令時(shí)序仿真[J].科技通報(bào),2013(5):130-133.

      [10] 王 娟.Proteus軟件在單片機(jī)專題實(shí)訓(xùn)中的應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2012,31(8):73-74.

      [11] 孫凌燕,黃允千.Proteus與Keil軟件的整合在單片機(jī)實(shí)驗(yàn)開發(fā)中的應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2008,27(4):59-61.

      [12] 鐘良驥. 基于PROTEUS軟件展開的單片機(jī)教學(xué)與科研[J]. 科技咨詢導(dǎo)報(bào), 2007(26):243-244.

      [13] 劉文光,張銘銘.Proteu仿真在單片機(jī)課程項(xiàng)目式教學(xué)中的應(yīng)用[J].信息技術(shù)與信息化,2012(2):31-33.

      [14] 江 維,桑 楠.面向高等教育的嵌入式系統(tǒng)教學(xué)改革[J]. 計(jì)算機(jī)教育,2011(16):33-35.

      [15] 權(quán)寧一,權(quán)曉林.嵌入式系統(tǒng) 專業(yè)實(shí)驗(yàn)教學(xué) 改革的探索與實(shí)踐[J].實(shí)驗(yàn)技術(shù)與管理,2011(3):146-147.

      [16] 胡小玲. 一種超低功耗單片機(jī)MSP430F6736實(shí)驗(yàn)裝置研制[J].實(shí)驗(yàn)室研究與探索,2014,33(1): 69-72.

      Circuit Simulation Based on Keil Time Sequence Logic and Proteus

      DENGLi

      (Guilin University of Technology at Nanning, Nanning 530001, China)

      This paper introduces the functions and application fields of Keil and Proteus two software, introduces the situation of embedded simulation at home and abroad. In view of the problems in the Proteus simulation of LCD LCD1602, technical manual on the LCD1602 read write operation timing diagram LCD1602 pin temporal logic level is analyzed. Through Keil4 logic analyzer on procedures LCD1602 read and write timing view. According to a level of temporal logic analyzer wave type, liquid crystal display program code is amended to make the program in line with the LCD1602 read and write timing requirements. The Proteus chart analysis of the circuit program code is used to be executed when the view. It intuitively shows program in the executive circuit. In the embedded system development, by using Keil 4 temporal logic and Proteus simulation graph, the problem of the software and the circuit is analyzed. The paper also explores a new method of program execution timing by using Keil4 logic analyzer and Proteus chart analysis.

      Keil logic analyzer; circuit simulation; chart analysis

      2016-05-06

      廣西高等學(xué)校優(yōu)秀中青年骨干培養(yǎng)工程第一期(桂教人[2013] 16號(hào));南寧市科學(xué)研究與技術(shù)開發(fā)計(jì)劃項(xiàng)目(科技攻關(guān)計(jì)劃20151038)

      鄧 力(1971-),男,瑤族,廣西梧州人,碩士,教授,研究方向?yàn)榍度胧较到y(tǒng)、EDA技術(shù)。

      Tel.:13367815798;E-mail:dldl021@163.com

      TP 311

      A

      1006-7167(2017)01-0080-04

      猜你喜歡
      電路仿真電平時(shí)序
      時(shí)序坐標(biāo)
      基于Sentinel-2時(shí)序NDVI的麥冬識(shí)別研究
      基于Multisim的集成運(yùn)放應(yīng)用電路仿真分析
      電子制作(2018年19期)2018-11-14 02:37:02
      基于Multisim的功率放大電路仿真分析
      基于集成運(yùn)放的壓控振蕩電路仿真研究
      電子制作(2017年19期)2017-02-02 07:08:26
      一個(gè)新型對(duì)數(shù)混沌系統(tǒng)及其電路仿真
      電子制作(2016年15期)2017-01-15 13:39:42
      一種毫米波放大器時(shí)序直流電源的設(shè)計(jì)
      電子制作(2016年15期)2017-01-15 13:39:08
      NPC五電平Z源逆變器的設(shè)計(jì)研究
      基于三電平光伏并網(wǎng)逆變器控制系統(tǒng)的研究與實(shí)踐
      基于NPC三電平變換器的STATCOM研究
      页游| 奉新县| 衡阳县| 神池县| 信阳市| 南京市| 陇川县| 亚东县| 富平县| 潜山县| 普陀区| 五华县| 定日县| 大悟县| 都安| 巫山县| 澎湖县| 灌南县| 海盐县| 沾化县| 安泽县| 丰都县| 和田市| 安仁县| 峡江县| 淅川县| 鄢陵县| 大冶市| 兴文县| 泸西县| 东山县| 武冈市| 大港区| 平乡县| 华蓥市| 仲巴县| 久治县| 黄梅县| 和政县| 平山县| 乳山市|