第一篇:?jiǎn)纹瑱C(jī)編程心得
一、延時(shí)程序的處理:
1、對(duì)于可以設(shè)置系統(tǒng)時(shí)鐘的單片機(jī),延時(shí)程序統(tǒng)一先把系統(tǒng)時(shí)鐘設(shè)頻率置為最低,然后按這個(gè)最低時(shí)鐘頻率寫(xiě)延時(shí)
函數(shù),這樣的好處:第一,統(tǒng)一了不同系統(tǒng)時(shí)鐘下的延時(shí);第二,降低功耗
2、對(duì)于單片機(jī)系統(tǒng),不同的外部時(shí)鐘,延時(shí)程序?qū)?yīng)的時(shí)間不同,為了方便使用,加入預(yù)編譯指令#ifdef/#else/
#endif這樣如果預(yù)定義了一個(gè)系統(tǒng)時(shí)鐘,則選擇相應(yīng)的延時(shí)參數(shù)進(jìn)行編譯,而延時(shí)程序主體不變,只是里面有
一個(gè)延時(shí)參數(shù),根據(jù)預(yù)定義選擇相應(yīng)參數(shù)。
二、for循環(huán)的處理:
用for(i=XX,i>0,i--)而不用for(i=0;i 對(duì)于兩層或多層for循環(huán),頻繁的循環(huán)放在內(nèi)層,減少循環(huán)間跳轉(zhuǎn)花費(fèi)的時(shí)間 三、對(duì)外設(shè)的操作:可以把外設(shè)作為一個(gè)文件來(lái)操作,比如液晶,就可以把液晶看作一個(gè)文件,往液晶打印字符串或 者數(shù)據(jù),就可以用fprintf()來(lái)做,(51的C標(biāo)準(zhǔn)庫(kù)不支持,但是可以自己寫(xiě)一個(gè)文件操作的庫(kù))。只要是輸入輸出 設(shè)備,都試著用文件操作的方法去操作。 四、標(biāo)準(zhǔn)庫(kù)函數(shù)的使用: 1、標(biāo)準(zhǔn)輸入輸出庫(kù)(stdio.h): 字符串夾雜變量數(shù)字(比如:發(fā)送完nihao字符串,然后發(fā)送變量i的值)往液晶顯示或往串口發(fā)送的時(shí)候,往串口發(fā) 送可以使用格式輸出函數(shù)printf(“nihao%d”,i);但是往LCD顯示就不好做了,通常是寫(xiě)一個(gè)數(shù)字轉(zhuǎn)字符串的函數(shù),然 后先送原來(lái)的字符串,再送數(shù)字轉(zhuǎn)換后的字符串,太麻煩,可以使用標(biāo)準(zhǔn)輸入輸出庫(kù)里的sprintf()函數(shù)來(lái)完成,它的原型為:sprintf(char *buffer, const char *format, …),*buffer是要把字符串和變量寫(xiě)入的緩沖區(qū),可以使 用數(shù)組或者指針,后面的格式和printf()函數(shù)一樣;與之對(duì)應(yīng)的還有sscanf()函數(shù),從緩沖區(qū)讀一個(gè)字符串把它 轉(zhuǎn)成相應(yīng)的類型后賦給指定的變量。 比如: #include void PrintToLcd(unsigned char *str) { ...} void main() { unsigned char *p; unsigned char i = 50; sprintf(p,“nihao%d”,i); PrintToLcd(p); } 2、字符串庫(kù)(string.h) 字符串連接(相加)char *strcat(char *dest,const char *stc) 把src連接到dest字符串后面,返回指向dest的指針 字符串比較int strcmp(char *str1,char *str2) 返回值:小于0: str1 字符串拷貝1char *strcpy(char *dest,const char *src) 結(jié)果把src的內(nèi)容拷進(jìn)dest,兩個(gè)字符串內(nèi)容相同,返回指向dest的指針字符串拷貝2char *strdup(const char *src) src:待拷貝的源字符串,返回值:指向拷貝后的字符串的指針 字符串倒序char *strrev(char *s); 返回指向倒序后字符串的指針 3、類型轉(zhuǎn)換(math.h;stdlib.h) 字符串轉(zhuǎn)雙精度(類似C++Builder里的StrToDouble)double atof(char *str)字符串轉(zhuǎn)整數(shù)(類似StrToInt)int atoi(char *str) 字符串轉(zhuǎn)長(zhǎng)整型long atol(char *str) 浮點(diǎn)數(shù)轉(zhuǎn)字符串char *ecvt(double value,int ndigit,int*dec,int *sign)char *fcvt(double value,int ndigit,int*dec,int *sign) 輸入?yún)?shù):value: 待轉(zhuǎn)換浮點(diǎn)數(shù),ndigit: 轉(zhuǎn)換后的字符串長(zhǎng)度 輸出參數(shù):dec: 小數(shù)點(diǎn)位置,sign: 符號(hào) 返回轉(zhuǎn)換后的字符串指針 整型轉(zhuǎn)字符串char *itoa(int value,char *string,int radix) 輸入?yún)?shù):value: 要轉(zhuǎn)換的數(shù),radix: 轉(zhuǎn)換的進(jìn)制 輸出參數(shù):string: 轉(zhuǎn)換后的字符串 返回指向string的指針 長(zhǎng)整型轉(zhuǎn)字符串char *ltoa(long value,char *string,int radix) /*延時(shí)函數(shù)*/ #define CPU_F((double)8000000) #define delay_us(x)__delay_cycles((long)(CPU_F*(double)x/1000000.0))#define delay_ms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0)) /*時(shí)鐘初始化函數(shù)*/ void Clk_Init() { unsigned char i; BCSCTL1&=~XT2OFF;//打開(kāi)XT振蕩器 do { IFG1 &= ~OFIFG;//清除振蕩錯(cuò)誤標(biāo)志 for(i = 0;i < 0xff;i++)_NOP();//延時(shí)等待 } while((IFG1 & OFIFG)!= 0);//如果標(biāo)志為1繼續(xù)循環(huán)等待 IFG1&=~OFIFG; BCSCTL2|=SELM_2+SELS;//MCLK 8M and SMCLK 8M } /*IO口關(guān)閉函數(shù)*/ void Close_IO(void) { P1DIR=0XFF,P1OUT=0XFF; P2DIR=0XFF,P2OUT=0XFF; P3DIR=0XFF,P3OUT=0XFF; P4DIR=0XFF,P4OUT=0XFF; P5DIR=0XFF,P5OUT=0XFF; P6DIR=0XFF,P6OUT=0XFF; } /*關(guān)閉看門(mén)狗*/ WDTCTL = WDTPW + WDTHOLD; 1. 對(duì)于液晶點(diǎn)陣,做任何圖形的子函數(shù),一定要注意,必須為整數(shù),即像素必須為整數(shù),否則將出現(xiàn)錯(cuò)誤,比如劃三角形,必須讓三角形的斜率為直線,不然不能得到預(yù)期的結(jié)果。 2. 對(duì)于變量的定義,如果在條件語(yǔ)句里面必須放在語(yǔ)句最前面,如果在整個(gè)函數(shù)的里面,必須放在整個(gè)函數(shù)的最前面。 3. GDB來(lái)調(diào)試已經(jīng)生成的可執(zhí)行程序hello.命令如下:Gdbhello ,參數(shù)-d指示源代碼所 在的目錄去搜尋。一旦出現(xiàn)GDB的命令提示符(gdb),就表明GDB已經(jīng)準(zhǔn)備好接收來(lái)自用戶的各種調(diào)試命令了。如果想在調(diào)試環(huán)境下運(yùn)行這個(gè)程序,可以使用GDB提供的“run”命令,而程序在正常運(yùn)行時(shí)所需的各種參數(shù)可以作為“run”命令的參數(shù)傳入,或者使用單獨(dú)的“set args”命令進(jìn)行設(shè)置。如果在執(zhí)行“run”命令時(shí)沒(méi)有給出任何參數(shù),GDB將使用上一次“run”或“set args”命令指定的參數(shù)。如果想取消上次設(shè)置的參數(shù),可以執(zhí)行不帶任何參數(shù)的“set args”命令。 GDB是一個(gè)源代碼級(jí)的調(diào)試器,使用“l(fā)ist”命令可以查看當(dāng)前調(diào)試對(duì)象的源代碼。該命令的通用格式為“l(fā)ist [m,n]”,表示顯示從m行開(kāi)始到n行結(jié)束的代碼段,而不帶任何參數(shù)的“l(fā)ist”命令將顯示最近10行源代碼。 要根據(jù)行號(hào)設(shè)置斷點(diǎn),可以使用“ break linenum”命令。要根據(jù)函數(shù)名設(shè)置斷點(diǎn),則應(yīng)該使用“break funcname”命令。 條件斷點(diǎn)允許當(dāng)一定條件滿足時(shí)暫時(shí)停止程序的執(zhí)行。它對(duì)于調(diào)試來(lái)講非常有用。設(shè)置條件斷點(diǎn)的正確語(yǔ)法如下: break linenum if expr break funcname if expr 使用“continue”命令繼續(xù)執(zhí)行程序,直到遇到下一個(gè)斷點(diǎn)。如果在調(diào)試時(shí)設(shè)置了很多斷點(diǎn),可以隨時(shí)使用“info breakpoints”命令來(lái)查看設(shè)置的斷點(diǎn)。此外,開(kāi)發(fā)人員還可以使用“delete”命令刪除斷點(diǎn),或者使用“disable”命令來(lái)使設(shè)置的斷點(diǎn)暫時(shí)無(wú)效。被設(shè)置為無(wú)效的斷點(diǎn)在需要的時(shí)候可以用“enable”命令使其重新生效。 為了單步跟蹤代碼,可以使用單步跟蹤命令“step”,它每次執(zhí)行源代碼中的一行。 4、程序調(diào)試過(guò)程中,如果出現(xiàn)segment,一般來(lái)說(shuō)是指針沒(méi)有賦值,找不到原型。比如線程里面如果要調(diào)用screen_mm,那么必須傳遞參數(shù)screen_mm,而且需要在線程里面定義參數(shù)。 5、如果線程里面用到串口的操作,則最好把串口初始化程序放到線程里面進(jìn)行。也可以把初始化作成模塊,這樣不會(huì)影響串口的收發(fā)數(shù)據(jù)。如果將串口初始化放到主程序里面,則最后將初始化程序放在線程的屬性定義和建立線程之前,否則其他地方可能導(dǎo)致串口收發(fā)數(shù)據(jù)產(chǎn)生問(wèn)題。還有對(duì)于串口操作的定義最好放在所有變量定義的最前面。 6、對(duì)于段錯(cuò)誤這種問(wèn)題??梢苑治鲆韵略颍?/p> (1):指針?lè)欠?,比如使用沒(méi)有初始化的指針(沒(méi)有為此指針指向的對(duì)象分配空間),或著Free掉之后再次使用。 (2):數(shù)組訪問(wèn)越界,訪問(wèn)的元素下標(biāo)超過(guò)數(shù)組圍長(zhǎng) (3):緩存溢出,對(duì)于這種while(1){do}的程序,這個(gè)問(wèn)題最容易發(fā)生,多此sprintf或著strcat有可能將某個(gè) buff填滿,溢出,所以每次使用前,最好memset一下,不過(guò)要是一開(kāi)始就是段錯(cuò)誤,而不是運(yùn)行了一會(huì)兒出現(xiàn)的,(3)的可能性就比較小。 “單片機(jī)”學(xué)習(xí)心得 這學(xué)期我們開(kāi)了《單片機(jī)》的課程,這也是第一次與“單片機(jī)”接觸。說(shuō)實(shí)話剛開(kāi)始聽(tīng)到這個(gè)課程真是一頭霧水?!皢纹瑱C(jī)”是什么的?做什么用的?當(dāng)然如果沒(méi)有學(xué)習(xí)過(guò)電信專業(yè)的人肯定是不知道的!呵呵!帶著這些疑問(wèn)我們走進(jìn)了“單片機(jī)的世界”。 教《電片機(jī)》課程的是個(gè)女老師,上課很認(rèn)真。帶著我們做了過(guò)很多次實(shí)驗(yàn),還有給我們布臵做有關(guān)課本以外的各種“單片機(jī)”、各種“顯示器”、“鍵盤(pán)”的PPT作業(yè)。讓我們以小組合作的方式來(lái)完成,好促進(jìn)同學(xué)之間的關(guān)系,培養(yǎng)團(tuán)結(jié)合作的精神! 單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。 我們?cè)谶@學(xué)期做了有近十次的實(shí)驗(yàn),通過(guò)學(xué)習(xí)讓我深深感到“單片機(jī)”的重大作用和樂(lè)趣。“麻雀雖小五臟俱全”!這句話完全可以用在形容“單片機(jī)”上。生活中“單片機(jī)”無(wú)所不在,應(yīng)用在各種領(lǐng)域中! 我們做過(guò)的程序有很多。下面就說(shuō)說(shuō)我們的實(shí)驗(yàn)和PPT1、單片機(jī)仿真試驗(yàn)系統(tǒng)的應(yīng)用練習(xí) 任務(wù)步驟: ——硬件搭建——軟件編程(在計(jì)算機(jī)中打開(kāi)編程軟件“偉?!?,輸入?yún)⒖汲绦颍幾g(將輸入的程序編譯直至沒(méi)有錯(cuò)誤。)——仿真調(diào)試(通過(guò)軟件調(diào)試觀察存儲(chǔ)單元結(jié)果變化是否正確,或者在仿真開(kāi)發(fā)系統(tǒng)中在線仿真。)——執(zhí)行程序 當(dāng)然老師會(huì)教我們?nèi)绾尉幊绦?!讓我們體會(huì)自己編程序,使小燈成功順序閃爍后的喜悅心情。 2、用單片機(jī)控制閃爍燈——在廣告行業(yè)中,單片機(jī)作為主控芯片得到廣泛應(yīng)用。在試驗(yàn)中,要對(duì)一個(gè)彩燈的閃爍進(jìn)行控制。 3、端口輸入輸出/輸出控制,模擬開(kāi)關(guān)燈 4、順序彩燈的控制——設(shè)計(jì)順序彩燈控制系統(tǒng),假設(shè)晶振為12MHz,8個(gè)發(fā)光二極管VL1~VL8分別接在單片機(jī)的P1.0~P1.7端口上。 5、多狀態(tài)閃爍燈控制 6、簡(jiǎn)單交通信號(hào)燈模擬控制——假設(shè)單片機(jī)晶振頻率為12MHz,實(shí)現(xiàn)用P1口控制6個(gè)發(fā)光二極管,模擬一個(gè)簡(jiǎn)單的十字路口交通信號(hào)燈的工作。東西向與南北向的紅、綠、黃燈各一個(gè)。交通信號(hào)燈規(guī)律為,十字路口是東西南北走向,每一時(shí)刻每個(gè)方向只能有一個(gè)燈亮,初始狀態(tài)STATE0為東西南北均紅燈亮,1s后轉(zhuǎn)入狀態(tài)STAYE1,南北綠燈亮同時(shí)東西紅燈亮,延時(shí)20s后轉(zhuǎn)入狀態(tài)STATE2,南北黃燈亮東西紅燈亮,5s后轉(zhuǎn)入狀態(tài)STATE3,東西綠燈亮南北紅燈亮,20s后轉(zhuǎn)入狀態(tài)STATE4,東西黃燈亮南北紅燈亮,5s后轉(zhuǎn)入狀態(tài)STATE1,如此循環(huán)。 這些實(shí)驗(yàn)看似很難,但是實(shí)際操作起來(lái)不是很難,要有耐心,細(xì)心。當(dāng)然上課聽(tīng)講很重要啦!呵呵! 還有我們做的PPT,每次我都很認(rèn)真的去做。查資料,整理資料,然后制作。每次我們組都得到老師的表?yè)P(yáng)。自己組的成果得到老師認(rèn)可心里當(dāng)然很高興啦! 第一次PPT作業(yè)是以“單片機(jī)”為題目。在這次制作ppt中是我收獲最大的一次,學(xué)習(xí)到了有關(guān)“單片機(jī)”書(shū)中沒(méi)有介紹的很多知識(shí)。每次的作業(yè)我都有好好的吸收資料中的只是。 一、單片機(jī)歷史 單片機(jī)誕生于20世紀(jì)70年代末,經(jīng)歷了SCM、MCU、SoC三大階段。 1.SCM即單片微型計(jì)算機(jī)(Single Chip Microcomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)。“創(chuàng)新模式”獲得成功,奠定了SCM與通用計(jì)算機(jī)完全不同的發(fā)展道路。在開(kāi)創(chuàng)嵌入式系統(tǒng)獨(dú)立發(fā)展道路上,Intel公司功不可沒(méi)。 2.MCU即微控制器(Micro Controller Unit)階段,主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時(shí),對(duì)象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對(duì)象的智能化控制能力。它所涉及的領(lǐng)域都與對(duì)象系統(tǒng)相關(guān),因此,發(fā)展MCU的重任不可避免地落在電氣、電子技術(shù)廠家。從這一角度來(lái)看,Intel逐漸淡出MCU的發(fā)展也有其客觀因素。在發(fā)展MCU方面,最著名的廠家當(dāng)數(shù)Philips公司。Philips公司以其在嵌入式應(yīng)用方面的巨大優(yōu)勢(shì),將MCS-51從單片微型計(jì)算機(jī)迅速發(fā)展到微控制器。因此,當(dāng)我們回顧嵌入式系統(tǒng)發(fā)展道路時(shí),不要忘記Intel和Philips的歷史功績(jī)。 3.單片機(jī)是嵌入式系統(tǒng)的獨(dú)立發(fā)展之路向MCU階段發(fā)展的重要因素,就是尋求應(yīng)用系統(tǒng)在芯片上的最大化解決;因此,專用單片機(jī)的發(fā)展自然形成了SoC化趨勢(shì)。隨著微電子技術(shù)、IC設(shè)計(jì)、EDA工具的發(fā)展,基于SoC的單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)會(huì)有較大的發(fā)展。因此,對(duì)單片機(jī)的理解可以從單片微型計(jì)算機(jī)、單片微控制器延伸到單片應(yīng)用系統(tǒng)。 二、單片機(jī)的應(yīng)用領(lǐng)域 按照不同的應(yīng)用領(lǐng)域劃分: 商業(yè)級(jí)(0~70攝氏度)、工業(yè)級(jí)(-40~85攝氏度)、汽車(chē)級(jí)(-40~120攝氏度)、軍工級(jí)(-55~150攝氏度)。其中醫(yī)療器械、宇航以及生命工程方面都是考慮軍工級(jí)。 商業(yè)級(jí)的通用性最大,所有單片機(jī)都可以適用。 工業(yè)級(jí)的單片機(jī)就少的多了,歐美和日本的芯片比較多。 汽車(chē)和軍工級(jí)的最少,只有少數(shù)美國(guó)公司、俄羅斯、和歐洲的公司有生產(chǎn) 單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過(guò)程控制等領(lǐng)域。大致可分如下幾個(gè)范疇: 1.在智能儀器儀表上的應(yīng)用2.在工業(yè)控制中的應(yīng)用3.在家用電器中的應(yīng)用4.在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用5.單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用6.在各種大型電器中的模塊化應(yīng)用 三、單片機(jī)編程軟件KEIL 單片機(jī)開(kāi)發(fā)中除必要的硬件外,同樣離不開(kāi)軟件,我們寫(xiě)的匯編語(yǔ)言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過(guò)匯編軟件將源程序變?yōu)闄C(jī)器 碼,用于MCS-51單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開(kāi)發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開(kāi)發(fā),單片機(jī)的開(kāi)發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開(kāi)發(fā)MCS-51系列單片機(jī)的軟件,這從近年來(lái)各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision)將這些部份組合在一起。運(yùn)行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤(pán)空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的愛(ài)好者來(lái)說(shuō)是十分必要的,如果你使用C語(yǔ)言編程,那么Keil幾乎就是你的不二之選(目前在國(guó)內(nèi)你只能買(mǎi)到該軟件、而你買(mǎi)的仿真機(jī)也很可能只支持該軟件),即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。目前最新的版本是keil uv3,可下載破解版本,否則有容量限制。 不同的單處機(jī)有不同的編譯軟件.因?yàn)镃語(yǔ)言具有通用性.在不同的單片機(jī)之間容易移植.51用keil c,msp430用IAR軟件,avr用AVR STUDIO,PIC一般用MPLAB IDE+PICC或MPLAB IDE+PICC18 等等 四、常用單片機(jī)芯片 STC單片機(jī)、PIC單片機(jī)、EMC單片機(jī)、PHLIPIS 51PLC系列單片機(jī)(51單片機(jī))、HOLTEK單片機(jī)、TI公司單片機(jī)(51單片機(jī))、松翰單片機(jī)(SONIX)。 五、單片機(jī)應(yīng)用的六大重要部分 1、總線 2、數(shù)據(jù)、地址、指令 3、P0口、P2口和P3的第二功能用法 4、程序的執(zhí)行過(guò)程 五、堆棧 六、單片機(jī)的開(kāi)發(fā)過(guò)程: 這里所說(shuō)的開(kāi)發(fā)過(guò)程并不是一般書(shū)中所說(shuō)的從任務(wù)分析開(kāi)始,我們假設(shè)已設(shè)計(jì)并制作好硬件,下面就是編寫(xiě)軟件的工作。在編寫(xiě)軟件之前,首先要確定一些常數(shù)、地址,事實(shí)上這些常數(shù)、地址在設(shè)計(jì)階段已被直接或間接地確定下來(lái)了。如當(dāng)某 器件的連線設(shè)計(jì)好后,其地址也就被確定了,當(dāng)器件的功能被確定下來(lái)后,其控制字也就被確定了。然后用文本編輯器(如EDIT、CCED等)編寫(xiě)軟件,編寫(xiě)好后,用編譯器對(duì)源程序文件編譯,查錯(cuò),直到?jīng)]有語(yǔ)法錯(cuò)誤,除了極簡(jiǎn)單的程序外,一般應(yīng)用仿真機(jī)對(duì)軟件進(jìn)行調(diào)試,直到程序運(yùn)行正確為止。運(yùn)行正確后,就可以寫(xiě)片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴(kuò)展名為HEX的目標(biāo)文件,一般編程器能夠識(shí)別這種格式的文件,只要將此文件調(diào)入即可寫(xiě)片。 第二次PPT我們以“顯示器”為題目,在這次作業(yè)中我學(xué)習(xí)到了生活中很多我們常見(jiàn)的電子產(chǎn)品都是由不同種類和原理的顯示器而工作的。 LCD 液晶顯示器LCD 液晶顯示器是 Liquid Crystal Display 的簡(jiǎn)稱,LCD 的構(gòu)造是在兩片平行的玻璃當(dāng)中放臵液態(tài)的晶體,兩片玻璃中間有許多垂直和水平的細(xì)小電線,透過(guò)通電與否來(lái)控制桿狀水晶分子改變方向,將光線折射出來(lái)產(chǎn)生畫(huà)面。比CRT要好的多,但是價(jià)錢(qián)較其貴。 LED顯示屏LED顯示屏(LED panel),是一種通過(guò)控制半導(dǎo)體發(fā)光二極管的顯示方式,用來(lái)顯示文字、圖形、圖像、動(dòng)畫(huà)、行情、視頻、錄像信號(hào)等各種信息的顯示屏幕。 CRT顯示器是一種使用陰極射線管(Cathode Ray Tube)的顯示器,陰極射線管主要有五部分組成:電子槍(Electron Gun),偏轉(zhuǎn)線圈(Deflection coils),蔭罩(Shadow mask),高壓石墨電極和熒光粉涂層(Phosphor)及玻璃外殼。它是目前應(yīng)用最廣泛的顯示器之一,CRT純平顯示器具有可視角度大、無(wú)壞點(diǎn)、色彩還原度高、色度均勻、可調(diào)節(jié)的多分辨率模式、響應(yīng)時(shí)間極短等LCD顯示器難以超過(guò)的優(yōu)點(diǎn),而且現(xiàn)在的CRT顯示器價(jià)格要比LCD顯示器便宜不少。 OLED顯示屏OLED為自發(fā)光材料,與傳統(tǒng)的LCD顯示方式不同,不需用到背光板,采用非常薄的有機(jī)材料涂層和玻璃基板,同時(shí)視角廣、畫(huà)質(zhì)均勻、反應(yīng)速度快、較易彩色化、用簡(jiǎn)單驅(qū)動(dòng)電路即可達(dá)到發(fā)光、制程簡(jiǎn)單、可制作成撓曲式面板,符合輕薄短小的原則,應(yīng)用范圍屬于中小尺寸面板。 第三次PPT是以“鍵盤(pán)”為主題。 觸摸屏觸控屏(Touch panel)又稱為觸控面板,是個(gè)可接收觸頭等輸入訊號(hào)的感應(yīng)式液晶顯示裝臵,當(dāng)接觸了屏幕上的圖形按鈕時(shí),屏幕上的觸覺(jué)反饋系統(tǒng)可根據(jù)預(yù)先編程的程式驅(qū)動(dòng)各種連結(jié)裝臵,可用以取代機(jī)械式的按鈕面板,并借由液晶顯示畫(huà)面制造出生動(dòng)的影音效果。 打字機(jī)打字機(jī)是用于書(shū)寫(xiě)的一種機(jī)械的,電機(jī)的,或電子的設(shè)備。使用時(shí),通過(guò)敲擊鍵盤(pán)上的某一個(gè)按鍵,該按鍵對(duì)應(yīng)的字符的字模會(huì)打擊到色帶上,從而在紙或其他媒介上打出該字符。每一次字符的敲打,打字機(jī)都會(huì)把紙向左移動(dòng),以備打印下一個(gè)字符。 電子琴是用AT89C51單片機(jī)做比較簡(jiǎn)單配上按鍵鍵盤(pán),三極管驅(qū)動(dòng)一個(gè)喇叭就能實(shí)現(xiàn) 電視機(jī)遙控器由形成遙控信號(hào)的微處理器芯片、晶體振蕩器、放大晶體管、紅外發(fā)光二極管以及鍵盤(pán)矩陣組成。其工作原理如下 微處理器芯片IC1內(nèi)部的振蕩器通過(guò)2、3腳與外部的振蕩晶體X組成一個(gè)高頻振蕩器,產(chǎn)生高頻振蕩信號(hào)(480kHz)。此信號(hào)送入定時(shí)信號(hào)發(fā)生器后產(chǎn)生40KHz的正弦信號(hào)和定時(shí)脈沖信號(hào)。正弦信號(hào)送入編碼調(diào)制器作為載波信號(hào);定時(shí)脈沖信號(hào)送制掃信號(hào)發(fā)生器、鍵控輸入編碼器和指令編碼器作為這些電路的時(shí)間標(biāo)準(zhǔn)信號(hào)。 這學(xué)期很快就要結(jié)束了,在17,18周我們還有一門(mén)“單片機(jī)”試訓(xùn)的課程。相信在這兩周的實(shí)訓(xùn)過(guò)程中,我還會(huì)受益更多,更廣。實(shí)操還會(huì)更熟練。 設(shè)計(jì)題目:漂亮的LED燈閃設(shè)計(jì) 設(shè)計(jì)內(nèi)容: 在現(xiàn)在諸多的娛樂(lè)場(chǎng)所、理發(fā)店、賓館、飯店、公司等的門(mén)外,都可以看到各式各樣的廣告流水燈。所謂“廣告流水燈”,就是將一系列的有顏色的廣告燈串聯(lián)接在一起,然后令這些燈按一定的次序逐個(gè)或者幾個(gè)的一次點(diǎn)亮和熄滅。由于各燈點(diǎn)亮和熄滅,產(chǎn)生的效果就像流動(dòng)的水一樣,因此,就稱這類廣告燈為“廣告流水燈”。生活中廣告流水燈的形式和點(diǎn)亮的次序是多種多樣的。有單一顏色的幾個(gè)燈按固定的次序來(lái)點(diǎn)亮的,有多個(gè)不同顏色的燈構(gòu)成某一圖案依次點(diǎn)亮的,也有多排廣告燈按多種組合好的次序循環(huán)點(diǎn)亮的等。我們?cè)O(shè)計(jì)的廣告流水燈,就是這些廣告燈中的類型?;拘Ч褪怯辛魉疅?,跑馬燈,間隔閃爍,讓任意燈閃的的花樣燈閃效果。 硬件原理圖是我們?cè)赼ltium desiigner 6.9中設(shè)計(jì)出來(lái)的,具體原理圖如下 : 原理圖中,左上角為單片機(jī)的晶振,左下角為單片機(jī)的復(fù)位電路,下面這個(gè)是單片機(jī)的電源模塊,與單片機(jī)一起,組成了單片機(jī)的最小系統(tǒng)。右邊接的是功能需要的LED小燈。 具體來(lái)說(shuō),單片機(jī)復(fù)位電路要求有一個(gè)持續(xù)時(shí)間,加上電容可以利用其兩端電壓不能突變的特性,使復(fù)位電平維持一定時(shí)間,使單片機(jī)復(fù)位。單片機(jī)復(fù)位電平在其手冊(cè)里可以看到。另外這個(gè)電容還可以去除一些雜波的干擾,防止單片機(jī)被錯(cuò)誤復(fù)位 就常用的51,復(fù)位電平的要求如下: 當(dāng)單片機(jī)的復(fù)位引腳出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循 環(huán)復(fù)位狀態(tài),所以復(fù)位引腳的電容大一點(diǎn)沒(méi)多大關(guān)系,頂多是復(fù)位時(shí)間長(zhǎng)一點(diǎn);但如果電容太小,高電平持續(xù)時(shí)間太短,則單片機(jī)無(wú)法正常復(fù)位,就不能工作 電容通常取 10UF 或 22UF,鋁電解電容即可 XTAL1(19腳)接外部晶體的一個(gè)引腳。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部振蕩器時(shí),對(duì)HMOS單片機(jī),此引腳應(yīng)接地;對(duì)CHMOS單片機(jī),此引腳作為驅(qū)動(dòng)端。 XTAL2(18腳)接外晶體的另一端。在單片機(jī)內(nèi)部,接至上述振蕩器的反相放大器的輸出端。采用外部振蕩器時(shí),對(duì)HMOS單片機(jī),該引腳接外部振蕩器的信號(hào),即把外部振蕩器的信號(hào)直接接到內(nèi)部時(shí)鐘發(fā)生器的輸入端;對(duì)XHMOS,此引腳應(yīng)懸浮。 將51單片機(jī)第40腳Vcc接電源+5V,第20腳Vss接地,為單片機(jī)工作提供能源;再將19腳XTAL1與18腳XTAL2分別接外部晶體兩個(gè)引腳,由石英晶體組成震蕩器,保證單片機(jī)內(nèi)部各部分有序地工作。軟件設(shè)計(jì)這部分 很簡(jiǎn)單,下面附上源程序: ORG 00H SJMP START START: ORG 30H LOOP: LCALL DELAY MOV P1,#0AAH LCALL DELAY LCALL DELAY MOV P1,#55H LCALL DELAY MOV P1,#0F0H LCALL DELAY MOV P1,#0FH LCALL DELAY MOV P1,#0FFH LCALL DELAY LCALL DELAY MOV P1,#00H LCALL DELAY LCALL DELAY LJMP LOOP DELAY:MOV R7,#50 ;延時(shí)0.5秒需要更長(zhǎng)的話多加幾個(gè)LCALL DELAY D1: MOV R6,#250 D2:NOP NOP NOP NOP NOP NOP DJNZ R6,D2 DJNZ R7,D1 RET END 結(jié)論:實(shí)現(xiàn)了漂亮的LED燈閃 通過(guò)這次的課程設(shè)計(jì),讓我們受益匪淺,也讓我了解和掌握了一些編程思想和對(duì)I/O口的使用和應(yīng)用的條件的思考,對(duì)單片機(jī)的各個(gè)管腳功能的理解和掌握。實(shí)現(xiàn)了軟件和硬件的有效結(jié)合,缺一不可。設(shè)計(jì)讓我把單片機(jī)的理論知識(shí)用在實(shí)踐中,實(shí)現(xiàn)了理論和實(shí)踐相結(jié)合,從中更懂得理論的是實(shí)踐的基礎(chǔ),實(shí)踐有能檢驗(yàn)理論的正確性,更激發(fā)了我對(duì)專業(yè)知識(shí)的渴求,這些對(duì)我以后參加工作或者繼續(xù)學(xué)習(xí)都會(huì)有很大的幫助和影響。第二篇:msp單片機(jī)編程常用語(yǔ)段
第三篇:編程心得
第四篇:?jiǎn)纹瑱C(jī)心得
第五篇:?jiǎn)纹瑱C(jī)編程實(shí)習(xí)報(bào)告(河南農(nóng)業(yè)大學(xué))