這一顆,我們學(xué)習(xí)如何讓跑馬燈自動(dòng)按照我們預(yù)定的順序進(jìn)行。這種控制在工控場(chǎng)合經(jīng)常用到。這個(gè)程序里,我們預(yù)先定義了一個(gè)變化的順序speedcode,每跑一圈燈就根據(jù)預(yù)定設(shè)置的表格數(shù)據(jù)來(lái)決定下一圈的跑馬速度。這樣我們就實(shí)現(xiàn)了按照預(yù)定的順序自動(dòng)變化運(yùn)行。請(qǐng)看代碼:-----------------------------------#define uchar unsigned char //定義一下方便使用#define uint unsigned int#define ulong unsigned long#include <reg52.h> //包括一個(gè)52 標(biāo)準(zhǔn)內(nèi)核的頭文件sbit P10 = P1^0; //頭文件中沒(méi)有定義的IO 就要自己來(lái)定義了sbit P11 = P1^1;sbit P12 = P1^2;sbit P13 = P1^3;bit ldelay=0; //長(zhǎng)定時(shí)溢出標(biāo)記,預(yù)置是0uchar speed=10; //設(shè)置一個(gè)變量保存跑馬燈的移動(dòng)速度uchar code speedcode[10]={3,1,5,12,3,20,2,10,1,4}; //10 個(gè)預(yù)定義的速度char code dx516[3] _at_ 0x003b;//這是為了仿真設(shè)置的//可編程自動(dòng)控制跑馬燈void main(void) // 主程序{uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//預(yù)定的寫(xiě)入P1 的值uchar ledi; //用來(lái)指示顯示順序uchar i;RCAP2H =0x10; //賦T2 的預(yù)置值0x1000,溢出30 次就是1 秒鐘RCAP2L =0x00;TR2=1; //啟動(dòng)定時(shí)器ET2=1; //打開(kāi)定時(shí)器2 中斷EA=1; //打開(kāi)總中斷
標(biāo)簽: 可編程 自動(dòng)控制 控制 跑馬燈
上傳時(shí)間: 2013-11-20
上傳用戶(hù):ming529
如何導(dǎo)入ASM文件到工程(視頻教程)
上傳時(shí)間: 2013-10-22
上傳用戶(hù):胡蘿卜醬
有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過(guò)為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過(guò)輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語(yǔ)言的訪問(wèn)設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來(lái)調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪問(wèn)的第一步就是打開(kāi)一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開(kāi)一個(gè)設(shè)備的句柄為了打開(kāi)一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開(kāi)句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開(kāi)一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開(kāi)它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類(lèi)KunitizedName來(lái)構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱(chēng)的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個(gè)輸出接口打開(kāi)句柄用這種方式打開(kāi)一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫(kù)提供兩個(gè)助手類(lèi)來(lái)使獲得對(duì)該接口的訪問(wèn)容易一些,這兩個(gè)類(lèi)是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類(lèi)封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類(lèi)中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類(lèi)的一個(gè)實(shí)例來(lái)獲得一個(gè)或更多的CdeviceInterface類(lèi)的實(shí)例。CdeviceInterface類(lèi)是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來(lái)打開(kāi)設(shè)備。下面用一個(gè)小例子來(lái)顯示這些類(lèi)最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError){ CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << "The device path is " << DevInterface.DevicePath() << endl; HANDLE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來(lái)產(chǎn)生到設(shè)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(yīng)關(guān)系。Win32 API DRIVER_FUNCTION_xxxIRP_MJ_xxx KDevice subclass member function CreateFile CREATE Create ReadFile READ Read WriteFile WRITE Write DeviceIoControl DEVICE_CONTROL DeviceControl CloseHandle CLOSECLEANUP CloseCleanUp 需要解釋一下設(shè)備類(lèi)成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個(gè)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶(hù)級(jí)句柄被撤銷(xiāo)后,I/O管理器調(diào)用CleanUp。當(dāng)沒(méi)有任何用戶(hù)級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問(wèn)的時(shí)候,I/O管理器調(diào)用Close。如果被打開(kāi)的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無(wú)效功能)。以前為Windows95編寫(xiě)的VxD的應(yīng)用程序代碼中可能會(huì)在打開(kāi)設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒(méi)有特權(quán)的用戶(hù)企圖打開(kāi)這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴(lài)于設(shè)備對(duì)象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過(guò)調(diào)用Kirp::Mdl來(lái)存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對(duì)象分別通過(guò)KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來(lái)對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒(méi)有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來(lái)存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴(lài)于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來(lái)構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):Method Input Buffer Parameter Output Buffer Parameter METHOD_BUFFERED KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統(tǒng)分配一個(gè)單一的緩沖來(lái)作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過(guò)調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級(jí)調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過(guò)調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對(duì)象,驅(qū)動(dòng)程序?qū)@個(gè)對(duì)象的訪問(wèn)通過(guò)調(diào)用KIrp::Mdl來(lái)實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫(xiě)訪問(wèn)權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來(lái)配置緩沖。虛擬地址只對(duì)調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來(lái)定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING, NULL, // no input 注意,這里放的是包含有執(zhí)行操作命令的字符串指針 0, FirmwareRev, //這里是output串指針,存放從驅(qū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來(lái)如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){ ULONG fwLength=0; switch ( I.IoctlCode() ) { case IOCTL_MYDEV_GET_FIRMWARE_REV: fwLength = strlen(FIRMWARE_REV)+1; if (I.IoctlOutputBufferSize() >= fwLength) { strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV); I.Information() = fwLength; return I.Complete(STATUS_SUCCESS); } else { } case . . . } }
標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口
上傳時(shí)間: 2013-10-17
上傳用戶(hù):gai928943
《現(xiàn)代微機(jī)原理與接口技術(shù)》實(shí)驗(yàn)指導(dǎo)書(shū) TPC-H實(shí)驗(yàn)臺(tái)C語(yǔ)言版 1.實(shí)驗(yàn)臺(tái)結(jié)構(gòu)1)I / O 地址譯碼電路如上圖1所示地址空間280H~2BFH共分8條譯碼輸出線:Y0~Y7 其地址分別是280H~287H、288H~28FH、290H~297H、298H~29FH、2A0H~2A7H、2A8H~2AFH、2B0H~2B7H、2B8H~2BFH,8根譯碼輸出線在實(shí)驗(yàn)臺(tái)I/O地址處分別由自鎖緊插孔引出供實(shí)驗(yàn)選用(見(jiàn)圖2)。 2) 總線插孔采用“自鎖緊”插座在標(biāo)有“總線”區(qū)引出數(shù)據(jù)總線D7~D0;地址總線A9~A0,讀、寫(xiě)信號(hào)IOR、IOW;中斷請(qǐng)求信號(hào)IRQ ;DMA請(qǐng)求信號(hào)DRQ1;DMA響應(yīng)信號(hào)DACK1 及AEN信號(hào),供學(xué)生搭試各種接口實(shí)驗(yàn)電路使用。3) 時(shí)鐘電路如圖-3所示可以輸出1MHZ 2MHZ兩種信號(hào)供A/D轉(zhuǎn)換器定時(shí)器/計(jì)數(shù)器串行接口實(shí)驗(yàn)使用。圖34) 邏輯電平開(kāi)關(guān)電路如圖-4所示實(shí)驗(yàn)臺(tái)右下方設(shè)有8個(gè)開(kāi)關(guān)K7~K0,開(kāi)關(guān)撥到“1”位置時(shí)開(kāi)關(guān)斷開(kāi),輸出高電平。向下打到“0”位置時(shí)開(kāi)關(guān)接通,輸出低電平。電路中串接了保護(hù)電阻使接口電路不直接同+5V 、GND相連,可有效地防止因誤操作誤編程損壞集成電路現(xiàn)象。圖 4 圖 55) L E D 顯示電路如圖-5所示實(shí)驗(yàn)臺(tái)上設(shè)有8個(gè)發(fā)光二極管及相關(guān)驅(qū)動(dòng)電路(輸入端L7~L0),當(dāng)輸入信號(hào)為“1” 時(shí)發(fā)光,為“0”時(shí)滅6) 七段數(shù)碼管顯示電路如圖-6所示實(shí)驗(yàn)臺(tái)上設(shè)有兩個(gè)共陰極七段數(shù)碼管及驅(qū)動(dòng)電路,段碼為同相驅(qū)動(dòng)器,位碼為反相驅(qū)動(dòng)器。從段碼與位碼的驅(qū)動(dòng)器輸入端(段碼輸入端a、b、c、d、e、f、g、dp,位碼輸入端s1、 s2)輸入不同的代碼即可顯示不同數(shù)字或符號(hào)。
標(biāo)簽: TPC-H 實(shí)驗(yàn)指導(dǎo)書(shū) C語(yǔ)言 實(shí)驗(yàn)臺(tái)
上傳時(shí)間: 2013-11-22
上傳用戶(hù):sssnaxie
HI-TECH PICC C 的使用說(shuō)明. 這里我們只講述了PICC C 與標(biāo)準(zhǔn)C 的不同,它不是一本C 語(yǔ)言的教程, 并且我們假定你有C 語(yǔ)言的基礎(chǔ). 為了對(duì)PIC 單片機(jī)有更好的支持,PICC 在標(biāo)準(zhǔn)C 的基礎(chǔ)上作了一些擴(kuò)充: 定義I/O 函數(shù),以便在你的硬件系統(tǒng)中使用<stdio.h>中定義的函數(shù)。 用C 語(yǔ)言編寫(xiě)中斷服務(wù)程序 用C 語(yǔ)言編寫(xiě)I/O 操作程序 C 語(yǔ)言與匯編語(yǔ)言間的接口1-1 與標(biāo)準(zhǔn)C 的不同PICC 只在一處與標(biāo)準(zhǔn)C 不同:函數(shù)的重入。因?yàn)镻IC 單片機(jī)的寄存器及堆棧有限,所以PICC 不支持可重入函數(shù)。1-2 支持的PIC 芯片PICC 支持很多PIC 單片機(jī),支持PIC 單片機(jī)的類(lèi)型在LIB 目錄下的picinfo.ini文件中有定義。1-3 PICC 包含一些標(biāo)準(zhǔn)庫(kù)1-4 PICC 編譯器可以輸出一些格式的目標(biāo)文件,缺省設(shè)置為輸出Bytecraft 的'COD'格式和 Intel 的'HEX'格式。你可以用表1-1 中的命令來(lái)指定輸出格式。
標(biāo)簽: HI-TECH PICC 使用說(shuō)明
上傳時(shí)間: 2013-10-10
上傳用戶(hù):781354052
USB2.0轉(zhuǎn)IDE的電路圖為protel文件格式的文檔原理圖。
上傳時(shí)間: 2013-10-11
上傳用戶(hù):tianyi223
單片機(jī)基礎(chǔ)知識(shí)單片機(jī)的外部結(jié)構(gòu):1、 DIP40雙列直插;2、 P0,P1,P2,P3四個(gè)8位準(zhǔn)雙向I/O引腳;(作為I/O輸入時(shí),要先輸出高電平)3、 電源VCC(PIN40)和地線GND(PIN20);4、 高電平復(fù)位RESET(PIN9);(10uF電容接VCC與RESET,即可實(shí)現(xiàn)上電復(fù)位)5、 內(nèi)置振蕩電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)6、 程序配置EA(PIN31)接高電平VCC;(運(yùn)行單片機(jī)內(nèi)部ROM中的程序)7、 P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 單片機(jī)內(nèi)部I/O部件:(所為學(xué)習(xí)單片機(jī),實(shí)際上就是編程控制以下I/O部件,完成指定任務(wù))1、 四個(gè)8位通用I/O端口,對(duì)應(yīng)引腳P0、P1、P2和P3;2、 兩個(gè)16位定時(shí)計(jì)數(shù)器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、 一個(gè)串行通信接口;(SCON,SBUF)4、 一個(gè)中斷控制器;(IE,IP)針對(duì)AT89C52單片機(jī),頭文件AT89x52.h給出了SFR特殊功能寄存器所有端口的定義。教科書(shū)的160頁(yè)給出了針對(duì)MCS51系列單片機(jī)的C語(yǔ)言擴(kuò)展變量類(lèi)型。 C語(yǔ)言編程基礎(chǔ):1、 十六進(jìn)制表示字節(jié)0x5a:二進(jìn)制為01011010B;0x6E為01101110。2、 如果將一個(gè)16位二進(jìn)數(shù)賦給一個(gè)8位的字節(jié)變量,則自動(dòng)截?cái)酁榈?位,而丟掉高8位。3、 ++var表示對(duì)變量var先增一;var—表示對(duì)變量后減一。4、 x |= 0x0f;表示為 x = x | 0x0f;5、 TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。6、 While( 1 ); 表示無(wú)限執(zhí)行該語(yǔ)句,即死循環(huán)。語(yǔ)句后的分號(hào)表示空循環(huán)體,也就是{;}第一章 單片機(jī)最小應(yīng)用系統(tǒng):?jiǎn)纹瑱C(jī)最小系統(tǒng)的硬件原理接線圖:1、 接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF2、 接晶體:X1(PIN18)、X2(PIN19)。注意標(biāo)出晶體頻率(選用12MHz),還有輔助電容30pF3、 接復(fù)位:RES(PIN9)。接上電復(fù)位電路,以及手動(dòng)復(fù)位電路,分析復(fù)位工作原理4、 接配置:EA(PIN31)。說(shuō)明原因。第二章 基本I/O口的應(yīng)用第三章 顯示驅(qū)動(dòng)第七章 串行接口應(yīng)用
標(biāo)簽: 單片機(jī)
上傳時(shí)間: 2013-10-30
上傳用戶(hù):athjac
AVR Studio 幫助文件中文翻譯,網(wǎng)友翻譯的AVR Studio軟件里面的幫助文件。轉(zhuǎn)自“我們的AVR”網(wǎng)站,在此表示感謝。 圖元文件(metafile) 以.emf為擴(kuò)展名的文件。是下面各種結(jié)構(gòu)的基本組成部分,可以用來(lái)讓AVR LCD編輯器設(shè)計(jì)軟件模擬顯示器。它可以是一個(gè)段或者一個(gè)圖像。您不能直接用AVR LCD編輯器生成一個(gè)這樣的圖元文件。但是可以使用第三方軟件。Companion Software的Metafile Companion和Microsoft Visio 就是兩個(gè)讓用戶(hù)自己定義圖元文件的軟件。在市場(chǎng)上有好多更簡(jiǎn)單,更便宜的轉(zhuǎn)換軟件支持gif,jpeg,bmp等的文件轉(zhuǎn)換成.emf文件。 (例如:www.harmware.com 網(wǎng)站上的Batch Thumb 、和www.irfanview.com網(wǎng)站上的IrfanView). 段(segment)這是軟件模擬顯示器的一部分。用LCD編輯器您可以分配所有的段對(duì)應(yīng)到實(shí)際的LCD寄存器的位上。段被存成.emf文件。圖像(image)被用作背景圖像和外圍圖像的圖元文件。充當(dāng)所有段的布景。這些對(duì)象是“靜態(tài)”的,不對(duì)任何LCD寄存器值有反映。圖像也被存成.emf文件。 模擬顯示器(display)多層的元文件和圖像的組合。它包含LCD 寄存器的分配信息。用XML格式保存成.dis文件。組(group)為了簡(jiǎn)化設(shè)計(jì),需要頻繁的保存使用段。組就是同一層中一些段(圖元文件)的集合。它的設(shè)計(jì)沒(méi)有實(shí)際的限制,但是不能包括靜態(tài)圖像(背景/前景)。最典型的組就是7段碼數(shù)字字型。組只是理論的設(shè)計(jì)工具,在最終的模擬顯示器文件中是沒(méi)有組存在的。組用擴(kuò)展名為.pri 的文件保存。 對(duì)象(object)對(duì)包括以上各個(gè)元件的各種事物的稱(chēng)謂的術(shù)語(yǔ)。模擬顯示器文件(display file)以.dis為擴(kuò)展名的XML類(lèi)型的文件。包含了所有的關(guān)于顯示器的信息。
上傳時(shí)間: 2013-10-31
上傳用戶(hù):paladin
ICCAVR中文使用說(shuō)明:ICCAVR 介紹1 ImageCraft 的ICCAVR 介紹ImageCraft 的ICCAVR 是一種使用符合ANSI 標(biāo)準(zhǔn)的C 語(yǔ)言來(lái)開(kāi)發(fā)微控制器MCU程序的一個(gè)工具它有以下幾個(gè)主要特點(diǎn)ICCAVR 是一個(gè)綜合了編輯器和工程管理器的集成工作環(huán)境IDE 其可在WINDOWS9X/NT 下工作源文件全部被組織到工程之中文件的編輯和工程的構(gòu)筑也在這個(gè)環(huán)境中完成編譯錯(cuò)誤顯示在狀態(tài)窗口中并且當(dāng)你用鼠標(biāo)單擊編譯錯(cuò)誤時(shí)光標(biāo)會(huì)自動(dòng)跳轉(zhuǎn)到編輯窗口中引起錯(cuò)誤的那一行這個(gè)工程管理器還能直接產(chǎn)生您希望得到的可以直接使用的INTELHEX 格式文件INTEL HEX 格式文件可被大多數(shù)的編程器所支持用于下載程序到芯片中去ICCAVR 是一個(gè)32 位的程序支持長(zhǎng)文件名出于篇幅考慮本說(shuō)明書(shū)并不介紹通用的C 語(yǔ)言語(yǔ)法知識(shí)僅介紹使用ICC AVR 所必須具備的知識(shí)因此要求讀者在閱讀本說(shuō)明書(shū)之前應(yīng)對(duì)C 語(yǔ)言有了一定程度的理解2 ICCAVR 中的文件類(lèi)型及其擴(kuò)展名文件類(lèi)型是由它們的擴(kuò)展名決定的IDE 和編譯器可以使用以下幾種類(lèi)型的文件輸入文件.c 擴(kuò)展名----表示是C 語(yǔ)言源文件.s 擴(kuò)展名----表示是匯編語(yǔ)言源文件.h 擴(kuò)展名----表示是C 語(yǔ)言的頭文件.prj 擴(kuò)展名----表示是工程文件這個(gè)文件保存由IDE 所創(chuàng)建和修改的一個(gè)工程的有關(guān)信息.a 擴(kuò)展名----庫(kù)文件它可以由幾個(gè)庫(kù)封裝在一起libcavr.a 是一個(gè)包含了標(biāo)準(zhǔn)C 的庫(kù)和AVR 特殊程序調(diào)用的基本庫(kù)如果庫(kù)被引用鏈接器會(huì)將其鏈接到您的模塊或文件中您也可以創(chuàng)建或修改一個(gè)符合你需要的庫(kù)輸出文件.s 對(duì)應(yīng)每個(gè)C 語(yǔ)言源文件由編譯器在編譯時(shí)產(chǎn)生的匯編輸出文件.o 由匯編文件匯編產(chǎn)生的目標(biāo)文件多個(gè)目標(biāo)文件可以鏈接成一個(gè)可執(zhí)行文件.hex INTEL HEX 格式文件其中包含了程序的機(jī)器代碼.eep INTEL HEX 格式文件包含了EEPROM 的初始化數(shù)據(jù).cof COFF 格式輸出文件用于在ATMEL 的AvrStudio 環(huán)境下進(jìn)行程序調(diào)試.lst 列表文件在這個(gè)文件中列舉出了目標(biāo)代碼對(duì)應(yīng)的最終地址.mp 內(nèi)存映象文件它包含了您程序中有關(guān)符號(hào)及其所占內(nèi)存大小的信息.cmd NoICE 2.xx 調(diào)試命令文件.noi NoICE 3.xx 調(diào)試命令文件.dbg ImageCraft 調(diào)試命令文件
標(biāo)簽: ICCAVR 使用說(shuō)明
上傳時(shí)間: 2013-10-29
上傳用戶(hù):truth12
16 16點(diǎn)陣顯示漢字原理及顯示程序 #include "config.h" #define DOTLED_LINE_PORT PORTB #define DOTLED_LINE_DDR DDRB #define DOTLED_LINE_PIN PINB #define DOTLED_LINE_SCKT PB1 #define DOTLED_LINE_SCKH PB5 #define DOTLED_LINE_SDA PB3 #define DOTLED_ROW_PORT PORTC #define DOTLED_ROW_DDR DDRC #define DOTLED_ROW_PIN PINC #define DOTLED_ROW_A0 PC0 #define DOTLED_ROW_A1 PC1 #define DOTLED_ROW_A2 PC2 #define DOTLED_ROW_A3 PC3 #define DOTLED_ROW_E PC4 uint8 font[] = { /*-- 調(diào)入了一幅圖像:這是您新建的圖像 --*/ /*-- 寬度x高度=16x16 --*/ 0x00,0x00,0x00,0x00,0x08,0x38,0x18,0x44,0x08,0x44,0x08,0x04,0x08,0x08,0x08,0x10, 0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x40,0x3E,0x7C,0x00,0x00,0x00,0x00,0x00,0x00 }; static void TransmitByte(uint8 byte); static void SelectRow(uint8 row); static void FlipLatchLine(void); static void TransmitByte(uint8 byte) { uint8 i; for(i = 0 ; i < 8 ; i ++) { if(byte & (1 << i)) { DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA); } else { DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SDA); } //__delay_cycles(100); DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKH); //__delay_cycles(100); DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKH); //__delay_cycles(100); } } static void SelectRow(uint8 row) { //row -= 1; row |= DOTLED_ROW_PIN & 0xe0; DOTLED_ROW_PORT = row; } static void FlipLatchLine(void) { DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKT); DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKT); } void InitDotLedPort(void) { DOTLED_LINE_PORT &= ~(_BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH)); DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA); DOTLED_LINE_DDR |= _BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH) | _BV(DOTLED_LINE_SDA); DOTLED_ROW_PORT |= 0x1f; DOTLED_ROW_PORT &= 0xf0; DOTLED_ROW_DDR |= 0x1f; } void EnableRow(boolean IsEnable) { if(IsEnable) { DOTLED_ROW_PORT &= ~_BV(DOTLED_ROW_E); } else { DOTLED_ROW_PORT |= _BV(DOTLED_ROW_E); } } void PrintDotLed(uint8 * buffer) { uint8 i , tmp; for(i = 0 ; i < 16 ; i ++) { tmp = *buffer ++; TransmitByte(~tmp); tmp = *buffer ++; TransmitByte(~tmp); SelectRow(i); FlipLatchLine(); } } void main(void) { InitDotLedPort(); EnableRow(TRUE); while(1) { PrintDotLed(font); __delay_cycles(5000); } } //---------------------------------------------------- config.h文件 #ifndef _CONFIG_H #define _CONFIG_H //#define GCCAVR #define CPU_CYCLES 7372800L #ifndef GCCAVR #define _BV(bit) (1 << (bit)) #endif #define MSB 0x80 #define LSB 0x01 #define FALSE 0 #define TRUE 1 typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; typedef unsigned char boolean; #include <ioavr.h> #include <inavr.h> #include "dotled.h" #endif //-----
標(biāo)簽: 16 點(diǎn)陣顯示 漢字 顯示程序
上傳時(shí)間: 2013-11-18
上傳用戶(hù):mnacyf
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1