




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 單片機(jī)課程設(shè)計(jì) ADC輸入控制 姓 名涂序平 學(xué) 號(hào) 201220120236專 業(yè) 測控技術(shù)與儀器班 級(jí) 1221202 指導(dǎo)教師周偉 22目 錄摘要11.系統(tǒng)設(shè)計(jì)方案2 1.1. 設(shè)計(jì)思路2 1.2 方案選擇與比較22.系統(tǒng)硬件設(shè)計(jì)3 2.1 MCS-52單片機(jī)硬件結(jié)構(gòu)以及主要引腳3 2.2復(fù)位電路3 2.3 晶振電路4 2.4模數(shù)轉(zhuǎn)換電路5 2.5 TLC549的管腳功能5 2.6顯示電路6 2.7 12864液晶引腳圖及各引腳功能6 2.8 主控制器電路73.系統(tǒng)軟件設(shè)計(jì) 3.1 系統(tǒng)整體流程7 3.2 模數(shù)轉(zhuǎn)換程序設(shè)計(jì)8 3.3 12864驅(qū)動(dòng)程序84.系統(tǒng)調(diào)試194.1 Prot
2、ues簡介194.2 硬件調(diào)試194.3 軟件調(diào)試194.4 調(diào)試結(jié)果204.5 結(jié)果分析20實(shí)驗(yàn)結(jié)論21實(shí)驗(yàn)心得22 摘要單片機(jī)是利用半導(dǎo)體集成技術(shù)將中央處理單元CPU和一定數(shù)量的數(shù)據(jù)存儲(chǔ)器RAM、程序存儲(chǔ)器ROM、定時(shí)/計(jì)數(shù)器單元T/C、并行輸入輸出接口I/O和串行通信接口UART等多個(gè)功能部件集成在一塊芯片上,是一臺(tái)具有完整計(jì)算功能的大規(guī)模集成電路。單片機(jī)具有體積小、功能全、價(jià)格便宜、功耗低、控制能力強(qiáng)和運(yùn)算速度快等優(yōu)點(diǎn),被廣泛應(yīng)用在國民建設(shè)、工業(yè)控制、通信技術(shù)、農(nóng)業(yè)機(jī)械化、國防軍事及家用電器中。數(shù)字信號(hào)相對(duì)與模擬信號(hào)有諸多的優(yōu)點(diǎn),通常所見到的信號(hào)均為模擬信號(hào),而計(jì)算機(jī)所能處理的是數(shù)字信
3、號(hào),為了實(shí)現(xiàn)用計(jì)算機(jī)進(jìn)行工程控制,需要對(duì)模擬信號(hào)和數(shù)字信號(hào)進(jìn)行相互轉(zhuǎn)換。能夠?qū)⒛M信號(hào)轉(zhuǎn)換位數(shù)字信號(hào)的器件為A/D器件,將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào)的器件為D/A器件。 采集模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)是現(xiàn)在社會(huì)儀器方面的趨向,可以說大自然中不存在數(shù)字信號(hào),模以信號(hào)的輸入控制是非常有必要掌握的技能。; 1. 系統(tǒng)設(shè)計(jì)方案1.1設(shè)計(jì)思路 為了實(shí)現(xiàn)設(shè)計(jì)任務(wù)將總體設(shè)計(jì)電路分為兩個(gè)主要的模塊:模數(shù)轉(zhuǎn)換模塊和顯示模塊。模數(shù)轉(zhuǎn)換模塊利用ADC進(jìn)行A到D的轉(zhuǎn)換,其中單片機(jī)控制ADC的啟動(dòng)、通道選擇和接收數(shù)據(jù);顯示模塊由單片機(jī)將轉(zhuǎn)換得到的數(shù)字信號(hào)轉(zhuǎn)換為液晶顯示屏的相應(yīng)字符,并將轉(zhuǎn)換結(jié)果輸出到液晶顯示屏進(jìn)行顯示。1.2方
4、案選擇與比較本次實(shí)驗(yàn)ADC可以選擇的有ADC0809,ADC0804,TLC549等等。液晶顯示屏可以選擇的有12864無字庫液晶顯示屏。 ADC0809,是8位逐次逼近式A/D模數(shù)轉(zhuǎn)換器。它由8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型A/D轉(zhuǎn)換器、逐次逼近寄存器、邏輯控制和定時(shí)電路組成。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。 ADC0804是一款8位、單通道、低價(jià)格A/D轉(zhuǎn)換器,主要特點(diǎn)是:模數(shù)轉(zhuǎn)換時(shí)間大約100us;方便TTL或CMOS標(biāo)準(zhǔn)接口;可以滿足差分電壓輸入;具有參考電壓輸入端;內(nèi)含時(shí)鐘發(fā)生器;單電源工
5、作時(shí)(05)V輸入電壓范圍是05V;不需要調(diào)零等等。 就本次實(shí)驗(yàn)來說ADC方面我想選擇的是TLC549,因?yàn)槠湟_較少,硬件設(shè)計(jì)比較容易,并且驅(qū)動(dòng)程序容易理解,顯示方面我采用的是12864液晶。因?yàn)樗瓤梢燥@示數(shù)字電壓,又可以顯示正弦波形。關(guān)于TLC549的介紹后面會(huì)涉及到。 2.系統(tǒng)硬件設(shè)計(jì)2.1 MCS-52單片機(jī)硬件結(jié)構(gòu)3.1.1 單片機(jī)內(nèi)部結(jié)構(gòu)8052單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線。其功能框圖如下:單片機(jī)的引腳圖 MCS-52單片機(jī)主要引腳1. RESET/V
6、pd(9腳)復(fù)位信號(hào)當(dāng)8052通電,時(shí)鐘電路開始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計(jì)數(shù)器PC指向0000H。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。其復(fù)位電路如下所示:2.2復(fù)位電路 2.3晶振電路2. (30腳)地址所存信號(hào)當(dāng)訪問外部程序存儲(chǔ)器時(shí),ALE的輸出用于鎖存地址的低位字節(jié),而訪問內(nèi)部程序存儲(chǔ)器時(shí),ALE端將有一個(gè)1/6時(shí)鐘頻率的正脈沖信號(hào),這個(gè)信號(hào)可以用于識(shí)別單片機(jī)是否工作,也可以當(dāng)作一個(gè)時(shí)鐘向外輸出。更有一個(gè)特點(diǎn),當(dāng)訪問外部程序存儲(chǔ)器,ALE會(huì)跳過一個(gè)脈沖。 3. (29腳)片外程序存儲(chǔ)器讀選通當(dāng)訪
7、問外部程序存儲(chǔ)器時(shí),此腳輸出負(fù)脈沖選通信號(hào),PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲(chǔ)器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。4. EA/Vpp(31腳)內(nèi)部和外部程序存儲(chǔ)器選擇信號(hào)程序存儲(chǔ)器的內(nèi)外部選通線,8051和8751單片機(jī),內(nèi)置有4kB的程序存儲(chǔ)器,當(dāng)EA為高電平并且程序地址小于4kB時(shí),讀取內(nèi)部程序存儲(chǔ)器指令數(shù)據(jù),而超過4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲(chǔ)器指令。 2.4模數(shù)轉(zhuǎn)換電路2.5 TLC549 引腳圖及各引腳功能TLC549引腳圖REF+:正基準(zhǔn)電壓輸入 2.5VREF+Vcc+0.1。REF:負(fù)基準(zhǔn)電壓
8、輸入端,-0.1VREF-2.5V。且要求:(REF+)(REF-)1V。VCC:系統(tǒng)電源3VVcc6V。GND:接地端。/CS:芯片選擇輸入端,要求輸入高電平 VIN2V,輸入低電平 VIN0.8V。DATA OUT:轉(zhuǎn)換結(jié)果數(shù)據(jù)串行輸出端,與 TTL 電平兼容,輸出時(shí)高位在前,低位在后。ANALOGIN:模擬信號(hào)輸入端,0ANALOGINVcc,當(dāng) ANALOGINREF+電壓時(shí),轉(zhuǎn)換結(jié)果為全“1”(0FFH),ANALOGINREF-電壓時(shí),轉(zhuǎn)換結(jié)果為全“0”(00H)。I/O CLOCK:外接輸入/輸出時(shí)鐘輸入端,同于同步芯片的輸入 2.6顯示電路2.7 12864液晶引腳圖及各引腳功
9、能CS1:選擇左邊64x46點(diǎn)CS2:選擇右邊64x46點(diǎn)GND:地 VCC:電源+5v VO:顯示驅(qū)動(dòng)電源05vRS:1數(shù)據(jù)輸入,0命令輸入R/W:1數(shù)據(jù)讀取,0數(shù)據(jù)寫入 E:使能信號(hào),負(fù)跳變有效DB0DB7:數(shù)據(jù)信號(hào) RST:復(fù)位信號(hào) -VOUT:LCD驅(qū)動(dòng)負(fù)電源 2.8 主控制器電路總體設(shè)計(jì)的電路圖如下,模數(shù)轉(zhuǎn)換模塊和顯示模塊之間通過cpu進(jìn)行數(shù)據(jù)轉(zhuǎn)換。模數(shù)轉(zhuǎn)換模塊作為發(fā)送方,顯示模塊作為接收方。開始3.系統(tǒng)軟件設(shè)計(jì)3.1系統(tǒng)整體流程編譯前準(zhǔn)備定義 端口設(shè)計(jì)模數(shù)轉(zhuǎn)換 驅(qū)動(dòng)程序12864初始化 程序 編譯檢測 軟件調(diào)試 3.2 模數(shù)轉(zhuǎn)換程序sbit SCLK=P36;sbit CS=P35
10、;sbit SDO=P34;uchar TLC549()uchar Dat,i;Dat=0;CS=0;for(i=0;i<8;i+)SCLK=1;Dat<<=1;/獲得轉(zhuǎn)換數(shù)據(jù)Delay(20);if(SDO)Dat|=1;SCLK=0; CS=1; dianya =Dat; /轉(zhuǎn)換數(shù)據(jù)送給DatDelay(10); 3.3 12864驅(qū)動(dòng)程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int #define ulong uns
11、igned long#define PORT P0sbit CS1=P23;sbit CS2=P24;sbit RS=P22;sbit RW=P21;sbit E=P20;sbit RESET=P26;sbit SCLK=P36;sbit CS=P35;sbit SDO=P34; /定義LCM12864的命令字#define LCM12864_DB7_DB0 P0#define LCM12864_DISP_ON 0x3f / 打開LCM12864顯示#define LCM12864_DISP_OFF 0x3e / 關(guān)閉LCM12864顯示#define LCM12864_START_ROW 0
12、xc0 /1100 0000 / 顯示起始行0,可以用LCM12864_START_ROW+x設(shè)置起始行。(x<64)#define LCM12864_PAGE_START_ADDR 0xb8 /1011 1000 / 頁起始地址,可以用LCM12864_PAGE_START_ADDR+x設(shè)置當(dāng)前頁。(x<8)#define LCM12864_COL_START_ADDR 0x40 / 列起始地址,可以用LCM12864_COL_START_ADDR+x設(shè)置當(dāng)前列。(x<64)/定義LCM12864的狀態(tài)屏蔽碼/在BUSY和REST狀態(tài)時(shí),除讀狀態(tài)指令外,其他指令均不對(duì)LCM
13、12864產(chǎn)生作用。/在對(duì)LCM12864操作之前要查詢BUSY狀態(tài),以確定是否可以對(duì)LCM12864進(jìn)行操作。#define LCM12864_STATUS_BUSY 0x80 / LCM12864忙狀態(tài)屏蔽碼#define LCM12864_STATUS_DISP_OFF 0x20 / LCM12864顯示關(guān)閉狀態(tài)屏蔽碼#define LCM12864_STATUS_REST 0x10 / LCM12864復(fù)位狀態(tài)屏蔽碼unsigned char code nq = / ASCII 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,0x00, 0
14、x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, / -0- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80;unsigned char code ya =0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x62,0x42,0x02,0x00,0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x21,0
15、x2E,0x24,0x20,0x20,0x00; unsigned char code dian =0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00;/ ASCII字模的數(shù)據(jù)表 / 碼表從0x200x7e / 字庫:Asc8X16E.dat 縱向取模下高位 /unsigned char code nAsciiDot = / AS
16、CII 0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, / -0- 0x00, 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, 0x00, 0x00, 0x10, 0x18, 0xFC, 0xFC, 0x00, 0x00, 0x00, / -1- 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x00, 0x08, 0x0C, 0x84, 0xC4, 0x64, 0x3C, 0x18, 0x00, / -2- 0x0E, 0x0F, 0x09, 0x08, 0x08, 0x0C, 0x
17、0C, 0x00, 0x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00, / -3- 0x00, 0x18, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, 0xC0, 0xE0, 0xB0, 0x98, 0xFC, 0xFC, 0x80, 0x00, / -4- 0x00, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00, / -5- 0x00, 0x19, 0x21, 0x20, 0x20, 0x
18、11, 0x0E, 0x00, 0xF0, 0xF8, 0x4C, 0x44, 0x44, 0xC0, 0x80, 0x00, / -6- 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07, 0x00, 0x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, / -7- 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFC, 0x44, 0x44, 0x44, 0xFC, 0xB8, 0x00, / -8- 0x07, 0x0F, 0x08, 0x08, 0x
19、08, 0x0F, 0x07, 0x00, 0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, / -9- 0x00, 0x00, 0x31, 0x22, 0x22, 0x11, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, / -:- 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, / -.- 0x00, 0x30, 0x30, 0x
20、00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x78, 0x88, 0x00, 0x00, 0xC8, 0x38, 0x08, / -V- 0x00, 0x00, 0x07, 0x38, 0x0E, 0x01, 0x00, 0x00;void Delay(unsigned int count);void Delay(unsigned int count) unsigned char i; while (-count != 0) for (i = 0; i < 50; i+) ; / "" 表示空語句,CPU空轉(zhuǎn)。 / i 從0加到125,在12
21、M晶體下CPU大概耗時(shí)1毫秒/LCM12864測忙函數(shù) LCM12864_TestBusy()void LCM12864_TestBusy(void) unsigned char STATE; RW = 1; /讀數(shù)據(jù)RS = 0; /指令 do LCM12864_DB7_DB0 = 0XFF; /p0置1 E = 1;/讀DDRAM數(shù)據(jù) STATE = LCM12864_DB7_DB0 &LCM12864_STATUS_BUSY;/讀取數(shù)據(jù)總線狀態(tài),判斷忙否? E = 0; /寫入數(shù)據(jù)或指令 while (STATE = 0X00); /STATE為0,即不忙,寫入 /寫指令到LCM
22、12864 LCM12864_WriteCMD() void LCM12864_WriteCMD(unsigned char LCM12864_command) /LCM12864_command 欲寫入指令 LCM12864_TestBusy();RW = 0;/數(shù)據(jù)被寫到IR或DR中RS = 0; /BD0DB7為指令 LCM12864_DB7_DB0 = LCM12864_command;/將要寫入的數(shù)據(jù)送到數(shù)據(jù)線E = 1; /可讀E = 0; /寫入 LCM12864_TestBusy();/寫數(shù)據(jù)到LCM12864 LCM12864_WriteData()void LCM12864
23、_WriteData(unsigned char LCM12864_data) /LCM12864_command 欲寫入數(shù)據(jù) RW = 0; RS = 1; LCM12864_DB7_DB0 = LCM12864_data; /將要寫入的指令送到數(shù)據(jù)線 E = 1; E = 0; LCM12864_TestBusy(); /讀LCM忙/從LCM12864讀數(shù)據(jù) LCM12864_ReadData() unsigned char LCM12864_ReadData(void) unsigned char LCM12864_data; E = 0; RW = 1; RS = 1; E = 1;
24、LCM12864_data = LCM12864_DB7_DB0; /送入8位數(shù)據(jù) LCM12864_TestBusy(); /讀LCM忙 return LCM12864_data;/向LCM12864指定點(diǎn)寫一字節(jié)數(shù)據(jù) LCM12864_Write1Byte_X_Y()/void LCM12864_Write1Byte_X_Y(unsigned char x, /x坐標(biāo)值(0-127)unsigned char y, /y坐標(biāo)值(0-63)unsigned char LCM12864_data) /LCM12864_data 所要寫的數(shù)據(jù) x = x &0x7f; y = y &am
25、p;0x3f; /參數(shù)過濾 CS1 = 1; CS2 = 1; /不選中左半屏及右半屏 if (x < 64) / 判斷選擇左、右半屏 CS1 = 1; / 選中左半屏 else CS2 = 0; / 選中右半屏 x = x - 64; LCM12864_WriteCMD(LCM12864_COL_START_ADDR + x); / 設(shè)置當(dāng)前列地址,即x坐標(biāo) LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR + y); / 設(shè)置當(dāng)前頁地址,即y坐標(biāo) LCM12864_WriteData(LCM12864_data); / 向LCM12864寫數(shù)據(jù)/從
26、LCM12864指定點(diǎn)讀取一字?jǐn)?shù)據(jù) LCM12864_Read1Byte_X_Y()unsigned char LCM12864_Read1Byte_X_Y(unsigned char x, /x坐標(biāo)值(0-127)unsigned char y) /y坐標(biāo)值(0-63) unsigned char LCM12864_data; x = x &0x7f; y = y &0x3f; /參數(shù)過濾 CS1 = 1; CS2 = 1; /不選中左半屏及右半屏 if (x < 64) / 判斷選擇左、右半屏 CS1 = 0; / 選中左半屏 else CS2 = 0; / 選中右半
27、屏 x = x - 64; LCM12864_WriteCMD(LCM12864_COL_START_ADDR + x); / 設(shè)置當(dāng)前列地址,即x坐標(biāo) LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR + y); / 設(shè)置當(dāng)前頁地址,即y坐標(biāo) LCM12864_data = LCM12864_ReadData(); / 向LCM12864寫數(shù)據(jù) return LCM12864_data;/向LCM12864填充數(shù)據(jù) LCM12864_Fill_Screen()void LCM12864_Fill_Screen(unsigned char t, /設(shè)置涮屏速
28、度(為1不涮屏,默認(rèn)為60)unsigned char LCM12864_FillData) /欲寫入的數(shù)據(jù) unsigned char x, y; CS1 = 0; CS2 = 0; / 選中左半屏及右半屏 LCM12864_WriteCMD(LCM12864_START_ROW + 0); / 設(shè)置顯示起始行為0 for (x = 0; x < 8; x+) Delay(t); / 涮屏速度延時(shí) LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR + x); / 設(shè)置頁地址 LCM12864_WriteCMD(LCM12864_COL_START_A
29、DDR); / / 設(shè)置列地址 for (y = 0; y < 64; y+) LCM12864_WriteData(LCM12864_FillData); CS1 = 1; / 不選中右半屏 CS2 = 1; / 不選中右半屏/LCM12864清屏 LCM12864_Clear_Screen()/ void LCM12864_Clear_Screen(void) LCM12864_Fill_Screen(60, 0x00); /寫入0到每個(gè)顯示區(qū) /*/LCM12864黑屏 LCM12864_Clear_black()/ */void LCM12864_Clear_black(void
30、) LCM12864_Fill_Screen(60, 0xff); /可寫入其它數(shù)值以填滿LCD屏/在LCM12864的指定點(diǎn)顯示16*16點(diǎn)陣漢字 LCM12864_Disp_Chinese_16_16()/ LCM12864_Disp_Char_x_16(8, 8, 1, lx + 8 * i, nAsciiDot + 16 * i);lcd12864void LCM12864_Disp_Char1_x_16(unsigned char t, /設(shè)置書寫速度(為1直接顯示,默認(rèn)為12)unsigned char b, /輸入8:8*16字符,16:16*16字符unsigned char
31、LCM12864_page, /LCM12864的頁地址(07)unsigned char LCM12864_col, /LCM12864的列地址(0128)注意:右半屏起始是64unsigned char code *Char_x_16,unsigned char i ) /16*16點(diǎn)陣漢字字模(縱向取模,字節(jié)倒序) unsigned char j = 0; if (LCM12864_col < 64) CS1 = 0; CS2 = 1; /判斷屏幕使能 ,左屏幕 else CS1 = 1; CS2 = 0; LCM12864_col = LCM12864_col - 64; for
32、 (j = 0; j < 2; j+) LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR + LCM12864_page );/b8+1+j 第一頁 13 LCM12864_WriteCMD(LCM12864_COL_START_ADDR + LCM12864_col);/40+32叢2列開始 LCM12864_WriteData(Char_x_16b *j + i); Delay(t); void LCM12864_Disp_Char_x_16(unsigned char t, /設(shè)置書寫速度(為1直接顯示,默認(rèn)為12)unsigned char b
33、, /輸入8:8*16字符,16:16*16字符unsigned char LCM12864_page, /LCM12864的頁地址(07)unsigned char LCM12864_col, /LCM12864的列地址(0128)注意:右半屏起始是64unsigned char code *Char_x_16) /16*16點(diǎn)陣漢字字模(縱向取模,字節(jié)倒序) unsigned char j = 0, i = 0; if (LCM12864_col < 64) CS1 = 0; CS2 = 1; /判斷屏幕使能 ,左屏幕 else CS1 = 1; CS2 = 0; LCM12864_
34、col = LCM12864_col - 64; for (j = 0; j < 2; j+) LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR + LCM12864_page + j);/b8+1+j 第一頁 LCM12864_WriteCMD(LCM12864_COL_START_ADDR + LCM12864_col);/40+32叢2列開始 for (i = 0; i < b; i+)/每8個(gè)一組 LCM12864_WriteData(Char_x_16b *j + i); Delay(t); /LCM12864初始化 LCM12864_
35、Init()void LCM12864_Init(void)RESET = 0; /復(fù)位 Delay(500);RESET = 1; Delay(300); LCM12864_Clear_Screen(); /清除屏幕 CS1 = 0; CS2 = 0; /選中雙屏 LCM12864_WriteCMD(LCM12864_DISP_OFF); /關(guān)顯示 LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR + 0); /第0頁位置 LCM12864_WriteCMD(LCM12864_START_ROW + 0); /第0行 LCM12864_WriteCMD(L
36、CM12864_COL_START_ADDR + 0); /第0列 LCM12864_WriteCMD(LCM12864_DISP_ON); /開顯示/ 以上是 LCM12864液晶模塊驅(qū)動(dòng)程序int duan, wei, ge,shi,bai; int Dat, dianya, dy,jieya;/獲取到的數(shù)字量 void jiema() long int jieya;jieya = TLC549(); bai=(dianya/51)%10;/計(jì)算并得到最高位shi=(dianya%51)*10 / 51;/計(jì)算并得到中間位 ge=dianya%51*10%51*10/51; /計(jì)算并得到最
37、低位/LCM12864液晶模塊驅(qū)動(dòng)演示 main() void main(void) unsigned char lx = 32; unsigned char ww = 32; LCM12864_Init(); / LCM12864初始化 LCM12864_WriteCMD(0x36); while (1) jiema(); LCM12864_Disp_Char_x_16(12, 16, 5, 32, dian); LCM12864_Disp_Char_x_16(12, 16, 5, 32+16, ya); LCM12864_Disp_Char_x_16(8, 8, 5, lx+32, nAsciiDot + 16 * bai);LCM12864_Disp_Char_x_16(8, 8, 5, lx+32+8, nAsciiDot + 16 * 11);/.LCM12864_Disp_Char_x_16(8, 8, 5, lx+32+8+8, nAsciiDot + 16 * shi);LCM12864_Disp_Char_x_16(8, 8, 5, lx+32+8+8+8, nAsciiDot + 16 * ge);LCM12864_Disp_Char_x_16(8, 8, 5, lx+32+8+8+8+8,nAsciiDot +
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商場內(nèi)的商鋪?zhàn)赓U合同
- 停車場承包合同
- 技術(shù)培訓(xùn)委托合同書
- 草籽草坪采購合同
- 房屋獨(dú)家代理銷售合同
- 車庫轉(zhuǎn)讓合同協(xié)議書
- 醫(yī)療美容手術(shù)項(xiàng)目合同協(xié)議書
- 高層管理團(tuán)隊(duì)建設(shè)活動(dòng)方案
- 上海餐飲商鋪?zhàn)赓U合同
- 奶茶店轉(zhuǎn)讓合同(新標(biāo)準(zhǔn)版)8篇
- 幼兒園中班開學(xué)第一課
- 招商人員薪酬及提成
- 物業(yè)保潔員培訓(xùn)專業(yè)課件
- 飲品店操作流程圖
- 風(fēng)居住的街道鋼琴二胡合奏譜
- 六年級(jí)《我的夢(mèng)想》作文指導(dǎo)(課堂PPT)
- PADS元件封裝制作規(guī)范要點(diǎn)
- 膠水行業(yè)中最常用的英文術(shù)語
- 科技英語翻譯中的美學(xué)
- citrix桌面虛擬化平臺(tái)健康檢查指南10
- 生產(chǎn)制造部KPI績效考核指標(biāo)(精)
評(píng)論
0/150
提交評(píng)論