




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 計算機與信息學院 電子信息工程系綜合課程設計報告專 業 班 級 電子信息工程11-2班 學生姓名及學號 陳雪瑩 20112661 指導教師 方靜 課題名稱 函數信號發生器 2013 2014 學年第 三 學期函數信號發生器的設計與實現一課題的基本描述在科學研究和實際工業測量控制系統開發過程中,方波、三角波和正弦波等是常用的基本測試信號,函數信號發生器就是用來產生、模擬這些真實信號源的通用電子設備。本課題要求設計一種以單片機為控制器的簡易函數信號發生器,包含:主控電路、D/A轉換電路、按鍵和波形選擇電路以及顯示輸出電路,可以輸出正弦波、三角波和方波三種信號,輸出信號的頻率可用按鍵進行增、減調整
2、,并在LCD(12864)實時顯示輸出波形。2 設計的基本要求1. 正弦波、三角波頻率調節范圍:0.1-50HZ 輸出幅值:1.0-1.5V 方波頻率調節范圍:1Hz-1KHz 輸出幅值:5V2. 通過按鍵選擇輸出信號類型,幅值、頻率等相關指標;3. 具有顯示輸出波形的頻率和幅度的功能。三技術方案及關鍵問題(1).總體方案:數字信號可以通過數/模轉換器轉換成模擬信號,因此可通過產生數字信號再轉換成模擬信號的方法來獲得所需要的波形。89C51單片機本身就是一個完整的微型計算機,具有組成微型計算機的各部分部件:中央處理器CPU、隨機存取存儲器RAM、只讀存儲器ROM、I/O接口電路、定時器/計數器
3、以及串行通訊接口等,只要將89C51再配置按鍵、數模轉換及波形輸出等部分,即可構成所需的函數信號發生器。因此本系統利用單片機AT89C51采用程序設計方法產生三角波、正弦波、矩形波三種波形,再通過D/A轉換器PCF8591T將數字信號轉換成模擬信號,最終由液晶屏12864顯示出來。通過按鍵來控制三種波形的類型選擇、頻率和幅度的變化,并通過數碼管顯示其各自的類型,液晶屏顯示幅度和頻率的大小。系統大致包括信號發生部分、數/模轉換部分以及液晶顯示部分三部分。(2).信號發生電路方案: 通過單片機控制D/A,輸出三種波形。此方案輸出的波形不夠穩定,抗干擾能力弱,不易調節。但此方案電路簡單、成本低。(3
4、).顯示方案:采用一位共陰LED數碼管,顯示波形類型(1-3)。由于人眼具有視覺暫留特性,當每只數碼管顯示的時間間隔小于1/16s時人眼感覺不到閃動,看到的是每只數碼管常亮。使用數碼管顯示編程較易,但要顯示內容多,而且數碼管不能顯示字母。采用LCD液晶顯示器12864,顯示波形以及它的幅度和頻率。12864其功率小,效果明顯,顯示編程容易控制,可以顯示波形。(4).按鍵方案:獨立按鍵,當沒有鍵閉合時,呈高電平。當某一個鍵閉合時,該鍵所對應的線被短路。系統的總體框圖 :波形選擇按鍵液晶顯示單片機幅值調節按鍵輸出運放D/A轉換頻率調節按鍵圖(1) 系統的總體框圖四系統(算法)設計實現硬件實現及單元
5、電路設計:AT89C51是片內有ROM/EPROM的單片機,因此,這種芯片構成的最小系統簡單可靠。用AT89C51單片機構成最小應用系統時,只要將單片機接上時鐘電路和復位電路即可,如圖(2)AT89C51單片機最小系統所示。由于集成度的限制,最小應用系統只能用作一些小型的控制單元。其應用特點:(1) 有可供用戶使用的大量I/O口線。(2) 內部存儲器容量有限。(3) 應用系統開發具有特殊性。圖(2) AT89C51單片機最小系統芯片的引腳描述如下:1、主電源引腳VCC和VSS VCC(40腳)接+5V電壓; VSS(20腳)接地。2、外接晶體引腳XTAL1和XTAL2XTAL1(19腳)接外部
6、晶體的一個引腳。在單片機內部,它是一個反相放大器的輸入端,這個放大器構成了片內振蕩器。當采用外部振蕩器時,對HMOS單片機,此引腳應接地;對CHMOS單片機,此引腳作為驅動端。XTAL2(18腳)接外晶體的另一端。在單片機內部,接至上述振蕩器的反相放大器的輸出端。采用外部振蕩器時,對HMOS單片機,該引腳接外部振蕩器的信號,即把外部振蕩器的信號直接接到內部時鐘發生器的輸入端;對XHMOS,此引腳應懸浮。3、控制或與其它電源復用引腳RST/VPD、ALE/PROG、PSEN和EA/VPPRST/VPD(9腳)當振蕩器運行時,在此腳上出現兩個機器周期的高電平將使單片機復位。推薦在此引腳與VSS引腳
7、之間連接一個約8.2k的下拉電阻,與VCC引腳之間連接一個約10F的電容,以保證可靠地復位。VCC掉電期間,此引腳可接上備用電源,以保證內部RAM的數據不丟失。當VCC主電源下掉到低于規定的電平,而VPD在其規定的電壓范圍(5±0.5V)內,VPD就向內部RAM提供備用電源。ALE/PROG(30腳):當訪問外部存貯器時,ALE(允許地址鎖存)的輸出用于鎖存地址的低位字節。即使不訪問外部存儲器,ALE端仍以不變的頻率周期性地出現正脈沖信號,此頻率為振蕩器頻率的1/6。因此,它可用作對外輸出的時鐘,或用于定時目的。然而要注意的是,每當訪問外部數據存儲器時,將跳過一個ALE脈沖。ALE端
8、可以驅動(吸收或輸出電流)8個LS型的TTL輸入電路。對于EPROM單片機(如8751),在EPROM編程期間,此引腳用于輸入編程脈沖(PROG)。PSEN(29腳):此腳的輸出是外部程序存儲器的讀選通信號。在從外部程序存儲器取指令(或常數)期間,每個機器周期兩次PSEN有效。但在此期間,每當訪問外部數據存儲器時,這兩次有效的PSEN信號將不出現。PSEN同樣可以驅動(吸收或輸出)8個LS型的TTL輸入。EA/VPP(引腳):當EA端保持高電平時,訪問內部程序存儲器,但在PC(程序計數器)值超過0FFFH(對851/8751/80C51)或1FFFH(對8052)時,將自動轉向執行外部程序存儲
9、器內的程序。當EA保持低電平時,則只訪問外部程序存儲器,不管是否有內部程序存儲器。對于常用的8031來說,無內部程序存儲器,所以EA腳必須常接地,這樣才能只選擇外部程序存儲器。對于EPROM型的單片機(如8751),在EPROM編程期間,此引腳也用于施加21V的編程電源(VPP)。4、輸入/輸出(I/O)引腳P0、P1、P2、P3(共32根)P0口(39腳至32腳):是雙向8位三態I/O口,在外接存儲器時,與地址總線的低8位及數據總線復用,能以吸收電流的方式驅動8個LS型的TTL負載。P1口(1腳至8腳):是準雙向8位I/O口。由于這種接口輸出沒有高阻狀態,輸入也不能鎖存,故不是真正的雙向I/
10、O口。P1口能驅動(吸收或輸出電流)4個LS型的TTL負載。對8052、8032,P1.0引腳的第二功能為T2定時/計數器的外部輸入,P1.1引腳的第二功能為T2EX捕捉、重裝觸發,即T2的外部控制端。對EPROM編程和程序驗證時,它接收低8位地址。P2口(21腳至28腳):是準雙向8位I/O口。在訪問外部存儲器時,它可以作為擴展電路高8位地址總線送出高8位地址。在對EPROM編程和程序驗證期間,它接收高8位地址。P2可以驅動(吸收或輸出電流)4個LS型的TTL負載。P3口(10腳至17腳):是準雙向8位I/O口,在MCS-51中,這8個引腳還用于專門功能,是復用雙功能口。P3能驅動(吸收或輸
11、出電流)4個LS型的TTL負載。作為第一功能使用時,就作為普通I/O口用,功能和操作方法與P1口相同。作為第二功能使用時,各引腳的定義如表所示。值得強調的是,P3口的每一條引腳均可獨立定義為第一功能的輸入輸出或第二功能。第二功能描述如下:P3.0 10 RXD(串行輸入口) P3.1 11 TXD(串行輸出口) P3.2 12 INT0(外部中斷0) P3.3 13 INT1(外部中斷1) P3.4 14 T0(定時器0外部輸入) P3.5 15 T1(定時器1外部輸入) P3.6 16 WR(外部數據存儲器寫脈沖) P3.7 17 RD(外部數據存儲器讀脈沖)(1) 波形產生模塊設計 由單片
12、機采用編程方法產生三種波形、通過DA轉換模塊PCF8591之后輸出。其電路圖如下: 圖(3) PCF8591芯片在與CPU的信息傳輸過程中僅靠時鐘線SCL和數據線SDA就可以實現。 PCF8591是具有I2C總線接口的8位A/D及D/A轉換器。有4路A/D轉換輸入,1路D/A模擬輸出。這就是說,它既可以作A/D轉換也可以作D/A轉換。A/D轉換為逐次比較型。AIN0AIN3:模擬信號輸入端。 A0A3:引腳地址端。 SDA、SCL:I2C總線的數據線、時鐘線。 OSC:外部時鐘輸入端,內部時鐘輸出端。 EXT:內部、外部時鐘選擇線,
13、使用內部時鐘時EXT接地。 AGND:模擬信號地。 AOUT:D/A轉換輸出端。 VREF:基準電源端。PCF8591采用典型的I2C總線接口器件尋址方法,即總線地址由器件地址、引腳地址和方向位組成。飛利蒲公司規定A/D器件地址為1001。引腳地址為A2A1A0,其值由用戶選擇,因此I2C系統中最多可接23=8個具有I2C總線接口的A/D器件。地址的最后一位為方向位R/ ,當主控器對A/D器件進行讀操作時為1,進行寫操作時為0。總線操作時,由器件地址、引腳地址和方向位組成的從地址為主控器發送的第一字節。 控制字節用于實現器件的各種功
14、能,如模擬信號由哪幾個通道輸入等??刂谱止澊娣旁诳刂萍拇嫫髦小?偩€操作時為主控器發送的第二字節。其格式如下所示: 其中:D1、D0兩位是A/D通道編號:00通道0,01通道1,10通道2,11通道3 D2 自動增益選擇(有效位為1) D5、D4模擬量輸入選擇:00為四路單數入、01為三路差分輸入、10為單端與差分配合輸入、11為模擬輸出允許有效 當系統為A/D轉換時,模擬輸出允許為0。模擬量輸入選擇位取值由輸入方式決定:四路單端輸入時取00,三路差分輸入時取01,單端與差分輸入時取10,二路差分輸入時取11。最低兩位時通道編號位,當對0通道的模擬信號進
15、行A/D轉換時取00,當對1通道的模擬信號進行A/D轉換時取01,當對2通道的模擬信號進行A/D轉換時取10,當對3通道的模擬信號進行A/D轉換時取11。 在進行數據操作時,首先是主控器發出起始信號,然后發出讀尋址字節,被控器做出應答后,主控器從被控器讀出第一個數據字節,主控器發出應答,主控器從被控器讀出第二個數據字節,主控器發出應答一直到主控器從被控器中讀出第n個數據字節,主控器發出非應答信號,最后主控器發出停止信號。 (2)顯示模塊的設計通過液晶12864顯示輸出的波形以及波形的頻率和幅度頻率,其電路圖如下: 圖(4) 液晶顯示模塊如上圖所示,12864的八位數據端接單
16、片機的P0口,其三個使能端RS、RW、E分別接單片機的P2.2P2.4。通過軟件控制液晶屏可以顯示波形以及波形的幅度和頻率。帶中文字庫的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構成全中文人機交互圖形界面??梢燥@示8×4行16×16點陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點。LCD12864基本特性
17、: (1)、低電源電壓(VDD:+3.0-+5.5V)(2)、顯示分辨率:128×64點 (3)、內置漢字字庫,提供8192個16×16點陣漢字(簡繁體可選) (4)、內置 128個16×8點陣字符 (5)、2MHZ時鐘頻率 (6)、顯示方式:STN、半透、正顯 (7)、驅動方式:1/32DUTY,1/5BIAS (8)、視角方向:6點 (9)、背光方式:側部高亮白色LED,功耗僅為普通LED的1/51/10 (10)、通訊方式:串行、并口可選 (11)、
18、內置DC-DC轉換電路,無需外加負壓 (12)、無需片選信號,簡化軟件設計(13)、工作溫度: 0 - +55 ,存儲溫度: -20-+60 圖(5) 數碼管顯示模塊通過一位數碼管顯示波形類型(1-3).(3)按鍵顯示模塊的設計本系統采用獨立按鍵,其連接電路圖如下: 圖(6) 按鍵顯示模塊圖中四個按鍵引出的四個線分別接單片機的P3.2P3.6口,如圖KEY1用來切換輸出波形、KEY2和KEY3用來調節頻率的加減,KEY4和KEY5用來調節幅度的加減。當按KEY2時輸出波形的頻率增加,按KEY3時輸出波形的頻率減小。當按KEY
19、4時輸出波形的幅度增加,按KEY5時輸出波形的幅度減小。軟件設計流程:本系統采用AT89C51單片機,用編程的方法來產生三種波形,并通過編程來切換三種波形以及波形頻率的改變。具體功能有:(1)各個波形的切換;(2)各種參數的設定;(3)頻率增減等。軟件調通后,通過編程器下載到AT89C51芯片中,然后插到系統中即可獨立完成所有的控制。軟件的流程圖如下: 開始I2C總線協議 主函數 初始化輸出方波液晶顯示#include <reg51.h>#include <intrins.h>#include"LCD12864.h"#define uchar uns
20、igned char#define uint unsigned int#define _Nop() _nop_()#define AddW 0x90#define AddR 0x91/sbit SDA=P12;/sbit SCL=P17;/sbit dula=P20;/sbit wela=P21;sbit SDA=P20;sbit SCL=P21;sbit key1=P32;sbit key2=P33;sbit key3=P34;sbit key4=P35;sbit key5=P36;bit back;uchar wave=0;uchar f=1;uchar A1=10;uchar A2=1;
21、uint num=0;/unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,; /共陽unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,;/共陰 unsigned char code juxing= 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,255,255,255,255, 255,255,255,255,255,255, 255,255,255,255,255,255, 255,255,
22、255,255,255,255, 255,255,255,255,255,255, 255,255,255,255, ; unsigned char code sanjiao = 0,4,8,12,16,20,24,28,32,36,40,44,48,52,56, 60,64,68,72,76,80,84,88,92,96,100,104, 108,112,116,120,124,128,124,120,116,112, 108,104,100,96,92,88,84,80,76,72,68,64, 60,56,52,48,44,40,36,32,28,24,20,16,12,8,4,0, ;
23、 unsigned char code sin = 135,145,158,167,176,188,199,209,218,226, 234,240,245,249,252,254,254,253,251,247, 243,237,230,222,213,204,193,182,170,158, 146,133,121,108,96,84,72,61,50,41,32,24, 17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66, 78,90,102,114,128 ; void delay1(uint z) uint x,y;for(x=z;x>0;x-
24、)for(y=60;y>0;y-); void Start_I2c() SDA=1;_Nop();SCL=1;_Nop();_Nop();_Nop();_Nop();SDA=0;_Nop();_Nop();_Nop();_Nop();_Nop();SCL=0;_Nop();_Nop(); /結束總線 void Stop_I2c() SDA=0; _Nop();SCL=1;_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1;_Nop();_Nop();_Nop();_Nop(); void SendByte(uchar c) /發送字節函數 unsigned
25、char Bit;for(Bit=0;Bit<8;Bit+) /要傳送的數據長度為8位 if(c<<Bit)&0x80) /判斷發送位SDA=1;elseSDA=0;_Nop();SCL=1; /置時鐘線為高 ,通知被控器開始接收數據位_Nop();_Nop();_Nop();_Nop();_Nop();SCL=0;_Nop();_Nop();SDA=1;_Nop();_Nop();SCL=1;_Nop();_Nop();_Nop();if(SDA=1)back=0;elseback=1;SCL=0;_Nop();_Nop(); bit WriteDAC(uchar
26、dat, uchar num) unsigned char i;Start_I2c();SendByte(AddW);if(back=0)return(0);SendByte(0x40);if(back=0)return(0);for(i=0;i<num;i+)SendByte(dat);if(back=0)return(0);Stop_I2c(); void keys()if(key1=0)delay1(10); if(key1=0)num+;while(!key1);/ dula=1;/ P0=tablenum;/ dula=0;/ P0=0xff;/ wela=1;/ P0=0xf
27、e;/ wela=0;/ delay1(5); wave+;if(wave=4)wave=1;num=1; P1=tablenum;void keys1()if(key2=0)delay1(10);if(key2=0)while(!key2);f+;if(f>500)f=500;if(key3=0)delay1(10);if(key3=0)while(!key3);if(f>1)f-;if(key4=0) delay1(10);if(key4=0)while(!key4);A1+;if(A1>15)A1=15;if(key5=0)delay1(10);if(key5=0)wh
28、ile(!key5);if(A1>1)A1-;void keys2()if(key2=0)delay1(10);if(key2=0)while(!key2);f+;if(f>100)f=100;if(key3=0)delay1(10);if(key3=0)while(!key3);if(f>1)f-;if(key4=0) delay1(10);if(key4=0)while(!key4);A2+;if(A2>5)A2=5;if(key5=0)delay1(10);if(key5=0)while(!key5);if(A2>1)A2-;void main()unsig
29、ned char i,temp,Atemp,Ftemp;LcdInit(); P1=table0;/ dula=1;/ P0=table1;/ dula=0;/ P0=0xff;/ wela=1;/P0=0xfe;/wela=0;/delay1(5);while (1)temp=wave;keys();if(temp!=wave)ClrGDRAM();if(wave=1) Atemp=A1;Ftemp=f; keys1();if(Atemp!=A1)ClrGDRAM();if(Ftemp!=f)ClrGDRAM(); for(i=0;i<65;i+)WriteDAC(1.0*sanjia
30、oi*A1/20,21-f);drawTri(A1,f); /繪制 三角波圖像。 delayms(10);else if(wave=2) Atemp=A1;Ftemp=f; keys1();if(Atemp!=A1)ClrGDRAM();if(Ftemp!=f)ClrGDRAM();for(i=0;i<64;i+)WriteDAC(1.0*sini*A1/40,21-f);drawSin(A1,f); /繪制 A*sin(2*Pi*f)圖像。 delayms(10);else if(wave=3) Atemp=A2;Ftemp=f; keys2();if(Atemp!=A2)ClrGDR
31、AM();if(Ftemp!=f)ClrGDRAM();for(i=0;i<64;i+)WriteDAC(1.0*juxingi*A2/40,21-f);drawSquare(A2,f);/繪制方波圖像。 delayms(10);else if(wave=3)for(i=0;i<64;i+)if(i%2=0)WriteDAC(1.0*0xff*A2/40,21-f);elseWriteDAC(0,21-f);#include <reg51.h>#include <intrins.h>#include"LCD12864.h"#define
32、uchar unsigned char#define uint unsigned int#define _Nop() _nop_()#define AddW 0x90#define AddR 0x91/sbit SDA=P12;/sbit SCL=P17;/sbit dula=P20;/sbit wela=P21;sbit SDA=P20;sbit SCL=P21;sbit key1=P32;sbit key2=P33;sbit key3=P34;sbit key4=P35;sbit key5=P36;bit back;uchar wave=0;uchar f=1;uchar A1=10;uc
33、har A2=1;uint num=0;/unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,; /共陽unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,;/共陰 unsigned char code juxing= 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,255,255,255,255, 255,255,255,255,255,255, 255,255,255,255,255,255,
34、 255,255,255,255,255,255, 255,255,255,255,255,255, 255,255,255,255, ; unsigned char code sanjiao = 0,4,8,12,16,20,24,28,32,36,40,44,48,52,56, 60,64,68,72,76,80,84,88,92,96,100,104, 108,112,116,120,124,128,124,120,116,112, 108,104,100,96,92,88,84,80,76,72,68,64, 60,56,52,48,44,40,36,32,28,24,20,16,12
35、,8,4,0, ; unsigned char code sin = 135,145,158,167,176,188,199,209,218,226, 234,240,245,249,252,254,254,253,251,247, 243,237,230,222,213,204,193,182,170,158, 146,133,121,108,96,84,72,61,50,41,32,24, 17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66, 78,90,102,114,128 ; void delay1(uint z) uint x,y;for(x=z;
36、x>0;x-)for(y=60;y>0;y-); void Start_I2c() SDA=1;_Nop();SCL=1;_Nop();_Nop();_Nop();_Nop();SDA=0;_Nop();_Nop();_Nop();_Nop();_Nop();SCL=0;_Nop();_Nop(); /結束總線 void Stop_I2c() SDA=0; _Nop();SCL=1;_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1;_Nop();_Nop();_Nop();_Nop(); void SendByte(uchar c) /發送字節函數
37、unsigned char Bit;for(Bit=0;Bit<8;Bit+) /要傳送的數據長度為8位 if(c<<Bit)&0x80) /判斷發送位SDA=1;elseSDA=0;_Nop();SCL=1; /置時鐘線為高 ,通知被控器開始接收數據位_Nop();_Nop();_Nop();_Nop();_Nop();SCL=0;_Nop();_Nop();SDA=1;_Nop();_Nop();SCL=1;_Nop();_Nop();_Nop();if(SDA=1)back=0;elseback=1;SCL=0;_Nop();_Nop(); bit WriteD
38、AC(uchar dat, uchar num) unsigned char i;Start_I2c();SendByte(AddW);if(back=0)return(0);SendByte(0x40);if(back=0)return(0);for(i=0;i<num;i+)SendByte(dat);if(back=0)return(0);Stop_I2c(); void keys()if(key1=0)delay1(10); if(key1=0)num+;while(!key1);/ dula=1;/ P0=tablenum;/ dula=0;/ P0=0xff;/ wela=1
39、;/ P0=0xfe;/ wela=0;/ delay1(5); wave+;if(wave=4)wave=1;num=1; P1=tablenum;void keys1()if(key2=0)delay1(10);if(key2=0)while(!key2);f+;if(f>500)f=500;if(key3=0)delay1(10);if(key3=0)while(!key3);if(f>1)f-;if(key4=0) delay1(10);if(key4=0)while(!key4);A1+;if(A1>15)A1=15;if(key5=0)delay1(10);if(
40、key5=0)while(!key5);if(A1>1)A1-;void keys2()if(key2=0)delay1(10);if(key2=0)while(!key2);f+;if(f>100)f=100;if(key3=0)delay1(10);if(key3=0)while(!key3);if(f>1)f-;if(key4=0) delay1(10);if(key4=0)while(!key4);A2+;if(A2>5)A2=5;if(key5=0)delay1(10);if(key5=0)while(!key5);if(A2>1)A2-;void ma
41、in()unsigned char i,temp,Atemp,Ftemp;LcdInit(); P1=table0;/ dula=1;/ P0=table1;/ dula=0;/ P0=0xff;/ wela=1;/P0=0xfe;/wela=0;/delay1(5);while (1)temp=wave;keys();if(temp!=wave)ClrGDRAM();if(wave=1) Atemp=A1;Ftemp=f; keys1();if(Atemp!=A1)ClrGDRAM();if(Ftemp!=f)ClrGDRAM(); for(i=0;i<65;i+)WriteDAC(1
42、.0*sanjiaoi*A1/20,21-f);drawTri(A1,f); /繪制 三角波圖像。 delayms(10);else if(wave=2) Atemp=A1;Ftemp=f; keys1();if(Atemp!=A1)ClrGDRAM();if(Ftemp!=f)ClrGDRAM();for(i=0;i<64;i+)WriteDAC(1.0*sini*A1/40,21-f);drawSin(A1,f); /繪制 A*sin(2*Pi*f)圖像。 delayms(10);else if(wave=3) Atemp=A2;Ftemp=f; keys2();if(Atemp!=
43、A2)ClrGDRAM();if(Ftemp!=f)ClrGDRAM();for(i=0;i<64;i+)WriteDAC(1.0*juxingi*A2/40,21-f);drawSquare(A2,f);/繪制方波圖像。 delayms(10);else if(wave=3)for(i=0;i<64;i+)if(i%2=0)WriteDAC(1.0*0xff*A2/40,21-f);elseWriteDAC(0,21-f);輸出三角波液晶顯示輸出正弦波液晶顯示wave=3 wave=2wave=1根據相應的wave值進入相應的if語句 圖(7)軟件的流程圖部分程序代碼:hnh.c
44、文件:#include <reg51.h>#include <intrins.h>#include"LCD12864.h"#define uchar unsigned char#define uint unsigned int#define _Nop() _nop_()#define AddW 0x90#define AddR 0x91sbit SDA=P20;sbit SCL=P21;sbit key1=P32;sbit key2=P33;sbit key3=P34;sbit key4=P35;sbit key5=P36;bit back;ucha
45、r wave=0;uchar f=1;uchar A1=10;uchar A2=1;uint num=0;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,; /共陰 unsigned char code fangbo= 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255, 255,
46、255,255,255,255,255,255,255,255,255, ; unsigned char code sanjiao = 0,4,8,12,16,20,24,28,32,36,40,44,48,52,56, 60,64,68,72,76,80,84,88,92,96,100,104, 108,112,116,120,124,128,124,120,116,112, 108,104,100,96,92,88,84,80,76,72,68,64, 60,56,52,48,44,40,36,32,28,24,20,16,12,8,4,0,; unsigned char code sin =135,145,158,167,176,188,1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 英語(廣州卷)2025年中考考前押題最后一卷
- 環保材料在飲料設備中的應用與循環利用路徑-洞察闡釋
- 互助性養老服務在農村的可行性研究
- 醫院能源托管項目可行性研究報告
- 2025至2030年中國電串烤式烤爐行業投資前景及策略咨詢報告
- 數據驅動下的醫療資源分配優化策略
- 2025至2030年中國浴塊行業投資前景及策略咨詢報告
- 2025至2030年中國沙發坐墊帶行業投資前景及策略咨詢報告
- 2025至2030年中國毛尖染色毛皮行業投資前景及策略咨詢報告
- 2025至2030年中國染色彈力帆布行業投資前景及策略咨詢報告
- 人行現金業務培訓課件
- 2024年廣東廣州市海珠區華洲街道雇員招聘筆試參考題庫附帶答案詳解
- 金屬表面處理的安全與環保要求
- 馬拉之死藝術鑒賞
- 2024《HSK標準教程3》第3課 桌子上放著很多飲料 教案
- 中國傳統元素之中國紅
- 2024年大學試題(教育學)-現代遠程教育概論歷年高頻考點試卷專家薈萃含答案
- 客車塞拉門-塞拉門原理
- 2024年臨界生輔導計劃及措施初中
- 會計學 第7版 課后習題及答案 徐經長 -第1-4章
- 14S501-2 雙層井蓋圖集
評論
0/150
提交評論