![單片機(jī)學(xué)習(xí)入門手冊(cè)_第1頁(yè)](http://file4.renrendoc.com/view/bd9a824d59d9447e2437bb7d5e11fe47/bd9a824d59d9447e2437bb7d5e11fe471.gif)
![單片機(jī)學(xué)習(xí)入門手冊(cè)_第2頁(yè)](http://file4.renrendoc.com/view/bd9a824d59d9447e2437bb7d5e11fe47/bd9a824d59d9447e2437bb7d5e11fe472.gif)
![單片機(jī)學(xué)習(xí)入門手冊(cè)_第3頁(yè)](http://file4.renrendoc.com/view/bd9a824d59d9447e2437bb7d5e11fe47/bd9a824d59d9447e2437bb7d5e11fe473.gif)
![單片機(jī)學(xué)習(xí)入門手冊(cè)_第4頁(yè)](http://file4.renrendoc.com/view/bd9a824d59d9447e2437bb7d5e11fe47/bd9a824d59d9447e2437bb7d5e11fe474.gif)
![單片機(jī)學(xué)習(xí)入門手冊(cè)_第5頁(yè)](http://file4.renrendoc.com/view/bd9a824d59d9447e2437bb7d5e11fe47/bd9a824d59d9447e2437bb7d5e11fe475.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Keil軟件的使 *LED顯示輸出 一.閃爍 二.燈的左移右 三.按鍵識(shí) 四.數(shù)碼管動(dòng)態(tài)顯 五.4×4矩陣式鍵盤識(shí) 六.按鍵中斷識(shí) 七.定時(shí)器T0的應(yīng)用---9.9秒計(jì)時(shí)設(shè) 八.利用定時(shí)器產(chǎn)生樂(lè) 九.?dāng)?shù)摸轉(zhuǎn)換ADC0804的應(yīng) 十.摸數(shù)轉(zhuǎn)換DAC0832的應(yīng) 十一.24CO8的讀寫(xiě)操 十二.PC機(jī)與單片機(jī)通信(RS232協(xié)議 十三.DS18B20測(cè)量溫度系 十四.128X64液晶顯示器的基本應(yīng) 十五.標(biāo)準(zhǔn)鍵盤PS/2與單片機(jī)通 十六,128X64無(wú)字庫(kù)液晶4X4鍵盤輸入使用(鎖 十七、串口 Keil80C51系列單片機(jī)的軟件,KeilC編譯器、宏,LED,在彈出的框中選擇 廠商及型號(hào)AtmelAT89S52AT89C52,C51,NewFile(新建文件)保存新建文件使文件名為*.C保存好后把此文件加入到工程中方法如下:用鼠標(biāo)在SourceGroup1上單擊右鍵,然后再單擊添加文件到組‘SourceGroup1'如下圖:,led.C,Add,Target1*LED顯示輸出就是編程序使P1.0輸出地電平。 /*LED顯示輸出具體口輸出*/sbitP1_0=P1^0; /*定義p1.0為p1_0*/sbitP1_1=P2^1;*p2.1p1_1{} /*LED*/{一.P1.0L1L1在不停地一亮一滅,一亮一滅的時(shí)間間隔為0.2秒。#include<reg52h> /*延時(shí)0.2秒*/{}{}}#include//#defineucharunsigned//#defineuint voidmDelay(unsignedint unsignedinti;{}}void{ //}}二.燈的左移右#include<reg52h> unsignedchari;unsignedchara,b;}{{P3=P2=P0=P1=temp;//1/0p3賦值,使批p3.0{}{}}}#include"reg52.h"#include"intrinsh"#defineucharunsignedchar#defineuint unsignedintvoidmDelay(unsignedint unsignedinti;{}}void {);// }}#include<reg52h> unsignedchari;unsignedchara,b;}{{{}{}}}三.(5.1K的[C語(yǔ)言源程序#include//unsignedcharcount;按鍵計(jì)數(shù),每按一下,count1unsignedchartemp;unsignedcharvoiddelay10ms(void{}{//{if(BY1==0)//確認(rèn)按鍵按下{count++;//按鍵計(jì)數(shù)加1{count=0;}//count}while(BY1==0);//按鍵鎖定,每按一次count}}注意:a接P0.0;bP0.1;c注意:4H接P2.4;3H接P2.5;2H接P2.6;1H七段LED顯示器內(nèi)部由七個(gè)條形發(fā)極型和共陽(yáng)極型。LED數(shù)碼管的a-dp七個(gè)發(fā)光二極管因以不同亮暗的組合就能形 [C語(yǔ)言源程序#includecodeunsignedcharseg7code[100xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//顯示段碼數(shù)碼管字跟:// //1 Delay(unsignedinttc)//延時(shí)程序{while(tc0tc0{unsignedinti;tc//tc}}voidLed(intdate){P2=P2&0x7f;//P2.7輸出低電平,選通千位數(shù)P0=seg7code[date/1000];//取位數(shù),查表,輸出。Delay(8);//延時(shí)P2=P2&0xbf;//P2.6輸出低電平,選通百位數(shù)Delay(8);//延時(shí)P2=P2&0xdf;//P2.5輸出低電平,選通十位數(shù)Delay(8);//延時(shí)}{intdisy_date=1234;//定義并賦值要顯示的數(shù)據(jù){}}五.4×4[C語(yǔ)言源程序] seg7code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;unsignedcharvoiddelay10ms(void{}voidGetch(P3=0x0f;P3//{delay10ms();//延時(shí),軟件去干擾{P3=0xf0;//列掃描 Z=X|Y;//取出鍵值switchZ判斷鍵值(那一個(gè)鍵按下{case0xee:k=0;break;對(duì)鍵值賦值case0xde:k=1;break;case0xbe:k=2;break;case0x7e:k=3;break;case0xed:k=4;break;case0xdd:k=5;break;case0xbd:k=6;break;case0x7d:k=7;break;case0xeb:k=8;break;case0xdb:k=9;break;case0xbb:k=10;break;case0x7b:k=11;break;case0xe7:k=12;break;case0xd7:k=13;break;case0xb7:k=14;break;case0x77:k=15;break;voidmain(void){//}}1,并用LED注意:a接P0.0;bP0.1;c注意2HP2.0;1H接P2.1;unsignedchardispcount=0;計(jì)數(shù)sbitgewei=P2^0;個(gè)位選通定義voidDelay(unsignedinttc){while(tc!=0{unsignedinti;}}voidExtInt0interrupt0{if(dispcount==100)//計(jì)數(shù)范圍0-99}voidLED//LED{{}{}}void{}}七.T0的應(yīng)用---9.9開(kāi)始時(shí),顯示“001BY12BY1后,計(jì)時(shí)停止。第3次按BY1后,計(jì)時(shí)歸零。unsignedcharsec1/10秒,secunsignedchar sbitgewei=P2^0;//個(gè)位選通定義sbitshiwei=P2^1;//十位選通定義voidDelay(unsignedinttc)延時(shí)程序{while(tc!=0{unsignedint}}voidLED(//LED{}{{{ {case1://第一次按下TH0=0x06;TH0TL0賦值TR0=0;//定時(shí)結(jié)束case3:sec=0;//計(jì)數(shù)重新從零開(kāi)始}}}} voidt0(void)interrupt1using0//定時(shí)中斷服務(wù)函數(shù){tcnt250usttcntif(tcnt==400400次(1/10秒){{}}}void{{}}[實(shí)驗(yàn)任務(wù)[硬件電路圖[實(shí)驗(yàn)原理口輸出相關(guān)樂(lè)曲的,便產(chǎn)生了樂(lè)曲。[C語(yǔ)言源程序unsignedcharsbit_Speak=P0^0;//訊響器控制腳unsignedcharcodeSONG祝你平安voidIE=TH0=TL00xEF;12MZ}voidTime0_Int()interrupt{TH0=TL0=}voidDelay_xMs(unsignedintx)/1MS{unsignedinti,j;for(i=0;i<x;i++){for(j=0;j<3;j++}voidy_Song(unsignedchari)//:歌曲子程序i為哪一段曲unsignedintAddr;Count0;0Addr=i*217;{Temp1=ifTemp10xFF{TR0=0;Delay_xMs(100);elseifTemp10x00TR0=1;{_Speak=~_Speak;if(Temp2==Count){Count=0;請(qǐng)注意寫(xiě)程序時(shí)的格式規(guī)范,此處是為了節(jié)省空間voidmain()//主程序{y_Song(0);}}ADC0804ADC0804IN+0-5VADC0804轉(zhuǎn)換成數(shù)字[硬件電路圖[實(shí)驗(yàn)原理ADC0804是8位全MOS中速A/D轉(zhuǎn)換器、它是逐次近式A/D轉(zhuǎn)換器,片開(kāi)始轉(zhuǎn)換,一次轉(zhuǎn)換一共需要66-73個(gè)時(shí)鐘周期。CSWR同時(shí)有效時(shí)啟動(dòng)A/D轉(zhuǎn)換,轉(zhuǎn)換結(jié)束產(chǎn)生INTR信號(hào)(低電平有效,可供查詢或者中斷信號(hào)。在CS和RD的控制下可以數(shù)據(jù)結(jié)果[C語(yǔ)言源程序]codeunsignedcharseg7code[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,sbitcs=P3^2;sbitvoidDelay(unsignedinttc){while(tc!=0{unsignedinti;}unsignedcharadc0804voidAD0804{unsignedcharaddata,i;rd=1;wr=1;int1=1;ADC0804前準(zhǔn)備P1=0xff;//P1全部置一準(zhǔn)備while(int1==1);查詢等待A/DINT(低電平有效)信號(hào)rd=0;//開(kāi)始讀轉(zhuǎn)換后數(shù)據(jù)i=i;i=i;//無(wú)意義語(yǔ)句,用于延時(shí)等待ADC0804 }unsignedintdatpro(void)//ADC0804{unsignedcharunsignedintdianyah,dianyal;//用于讀出數(shù)據(jù)的高字節(jié)和低字節(jié)unsignedintdianya=0;//最后處理完的結(jié)果注意數(shù)據(jù)類型for(x=0;x<10;x++)//將10次測(cè)得的結(jié)果在dianya中{dianya=adc0804()+dianya;}dianya=dianya/10;//求平均值dianyah=dianya&0xf0;//低四位dianyal=dianya&0x0f;//高四位取出低四位}void{unsignedint();//P0=seg7code[date/1000]|0x80;輸出個(gè)位數(shù)和小數(shù)點(diǎn)Delay(8);P2=P2|0xf0;P2=P2&0xdf;Delay(8);P2=P2|0xf0;P2=P2&0xbf;P0=seg7code[date%100/10];//輸出小數(shù)點(diǎn)后第二位Delay(8);P2=P2|0xf0;P2=P2&0x7f;P0=seg7code[date%10];//輸出小數(shù)點(diǎn)后第三位Delay(8);P2=P2|0xf0;}{{Led(}}制邏輯的CMOS組件。它是逐次近式A/D轉(zhuǎn)換器,可以和單片機(jī)直接(2).ALE為地址鎖存允許輸入線,高電平有效。當(dāng)ALE線為高電平時(shí),地選中的通道的模擬量進(jìn)轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A,B和C為地址輸入線,用于選通IN0-IN7上的一路模擬量輸入。通道選擇表如下表所示。CBA000001010011100101110111ST為轉(zhuǎn)換啟動(dòng)信號(hào)。當(dāng)ST上跳沿時(shí),所有內(nèi)部寄存器;下跳沿束信號(hào)。當(dāng)EOC為高電平時(shí),表明轉(zhuǎn)換結(jié)束;否則,表明正在進(jìn)行A/D轉(zhuǎn)換。OE為輸出允許信號(hào),用于控制三條輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換狀態(tài)。D7-D0為數(shù)字量輸出線。號(hào)必須由外界提供,通常使用頻率為500KHZ,2ADC0809(1).ADC0809內(nèi)部帶有輸出鎖存器,可以與AT89S51單片機(jī)直接(2).初始化時(shí),使STOE(4).ST100ns(6).當(dāng)EOC變?yōu)楦唠娖綍r(shí),這時(shí)給OE為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸十.摸數(shù)轉(zhuǎn)換DAC0832用兩個(gè)按鍵通過(guò)單片機(jī)控制DAC0832的輸出,使OUT端可以輸出0—5V的幅值,頻率為1KHZ的鋸齒波和三角波兩種波形。通上電源后;按下INT1則輸出三角波,在按下INT0輸出鋸齒波。[硬件電路圖注意:D0P0.0;D1P0.1;D2對(duì)應(yīng)INT0和INT1按鍵(程序中以掃描方式識(shí)別按鍵LM324ADC0804是8位全MOS中速D/A轉(zhuǎn)換器,采用R—2RT形電阻網(wǎng)絡(luò),轉(zhuǎn)換結(jié)1us。使用單電源+5V―+15V供電。參考電壓為-10V-+10V。在此我們直接選擇+5V作為參考電壓。DAC0832有三種工作么經(jīng)過(guò)第一級(jí)運(yùn)放后,輸出電壓將是-5V-0V,在經(jīng)過(guò)第二級(jí)運(yùn)放反相放大1倍以[C語(yǔ)言源程序]unsigned unsignedchartcnt=0voiddelayl()//延時(shí)子程序{unsignedchari,j;{){{TR0=0;//暫時(shí)停止波形輸出TH0=0x256-40;TH0TL0賦值//delayl();//延時(shí)跳過(guò)松開(kāi)后的抖動(dòng)}}{{TR0=0;//暫時(shí)停止波形輸出TH0=0x256-40;TH0TL0賦值TR0=1;}delayl();//延時(shí)跳過(guò)松開(kāi)后的抖動(dòng)}voidt0(void)interrupt1using0//定時(shí)中斷服務(wù)函數(shù){ //{} //{ }{}}}void{{KEY();}十一.24CO8利用24C08斷電以后的數(shù)據(jù)不的特點(diǎn),可以做一個(gè)斷電保護(hù)裝置。0-99SDASCL(I方C)字節(jié)后必須跟一位應(yīng)答位。數(shù)據(jù)傳送首先傳送最(MSB),數(shù)據(jù)傳送按圖1所示格式進(jìn)行。首先由主機(jī)發(fā)出啟動(dòng)信號(hào)“S”(SDA在SCL高電平期間由高電平跳變殊含義:高七位是從機(jī)的地址,第八位是傳送方向位,0表示主機(jī)發(fā)送數(shù)據(jù)(寫(xiě)),1(IC)(IC)如果地址相符則為主機(jī)要尋訪的從機(jī),應(yīng)在第九位答時(shí)鐘脈沖時(shí)向SDA線送出低數(shù)據(jù)字節(jié)。數(shù)據(jù)傳送完畢,由主機(jī)發(fā)出停止信號(hào)“P”(SDA在SCL高電平期間由低電平跳變?yōu)楦唠娖?。AT24CE2PROM(I方C)30μA~110μAT24C系列串行E2PROM器件尋址字節(jié)(8位)一次裝載字節(jié)數(shù)AT24C01128×81010A2A1A0R/WAT24C02256×81010A2A1A0R/WAT24C04512×81010A2A1P0R/W(IC)(IC)128個(gè)不同地址的器件)1位數(shù)據(jù)方向位構(gòu)成一個(gè)D0為方向位(讀/寫(xiě))4位(D7~D4)E2PROM10103A2A1A0,D3、D2、D1位,在硬件設(shè)計(jì)時(shí)由連接的引腳電平給定。對(duì)AT24CE2PROM的讀寫(xiě)操作完全遵守I2C總線的主收從發(fā)和主發(fā)從收的規(guī)則。AT24C081024×81010A2P1P0R/W16AT24C162048×81010P2P1P0R/W[C語(yǔ)言源程序]#include<reg52.H>#include<stdio.h>0x6d,0x7d,0x07,0x7f,0x6f,};unsignedcharsec1秒,sec1unsignedinttcnt;//定時(shí)中斷次數(shù)bitwrite=0;24C08的標(biāo)志;sbitgewei=P2^0;//個(gè)位選通定義/////////24C08讀寫(xiě)驅(qū)動(dòng)程序////////////////////sbitscl=P3^4;//24c08SCLsbitsda=P3^5;//24c08SDAvoiddelay1(unsignedchar{unsignedinti;void{;;voidx24c08_init()//24c08{scl=1;flash();sda=1; voidstart()//啟動(dòng)(I方C)總線{sda=1;flash();scl=1flash();sda=0;flash(scl=0;flash();}voidstop()//停止(I方C)總線{sda=0;flash();scl=1;flash();sda=1flash();}voidwritex(unsignedcharj)//寫(xiě)一個(gè)字節(jié){unsignedchari,temp;for{temp=temp<<1;scl=0;flash();sda=CY;flash();scl=1;flash();}scl=0;flash();sda=1;flash();}unsignedcharreadx{unsignedchari,j,k=0;scl=0;flash();sda=1;for(i=0;i<8;i++){if(sda==1)j=1;elsej=0;flash();}voidclock()(IC){scl=1;flash();scl=0;flash();}////////從24c02的地址address中一個(gè)字節(jié)數(shù)據(jù)/////unsignedcharx24c08_read(unsignedcharaddress){unsignedchari;clock();start();writex(0xa1);clock();i=readx();stop();}//////向24c02的address voidx24c08_write(unsignedcharaddress,unsignedcharinfo)start();writex(0xa0);clock();writex(info);clock();stop();}/////////////24C08讀寫(xiě)驅(qū)動(dòng)程序完/////////////////////voidDelay(unsignedinttc)//延時(shí)程序{while(tc!=0{unsignedinti;}voidLED(//LED{shiwei=0;P0=table[sec/10];Delay(8);shiwei=1;gewei=0;P0=table[sec%10];Delay(5);}voidt0(voidinterrupt1using0{TH0=(65536-50000)/256;TH0TL0//tcnt250usttcntif(tcnt==20)20次(1秒){write=11}}void{ET0=1;EA=1;x24c08_init();//初始化24C08 //TH0TL0TL0=(65536-50000)%256;0.05{//{write=0;x24c08_write(2,sec);24c082中寫(xiě)入數(shù)據(jù)}}}十二.PC機(jī)與單片機(jī)通信(RS232協(xié)議系統(tǒng)接收后,用LED顯示接收到的數(shù)據(jù)和向上位機(jī)發(fā)回原樣數(shù)據(jù)。RS-232是電子工業(yè)正式公布的串行總線標(biāo)準(zhǔn),也是目前最常用的串RS-232串行接口總線適用于:設(shè)備之間的通訊距離不大于15m,傳輸速率最大為20kBps。RS-232協(xié)議以-5V-15V1;以+5V-15V0根線,采用標(biāo)準(zhǔn)的25芯插頭座。我們?cè)谶@里使用的是簡(jiǎn)化的9芯插頭座。需要11.0592M的?!按谡{(diào)試助手V2.1.exe”軟件的使用很簡(jiǎn)單,只要將串口選擇‘CMO1’波特率設(shè)置為‘9600’數(shù)據(jù)位為8位。打開(kāi)串口(如果關(guān)閉。然后在發(fā)送區(qū)里則發(fā)送的是ASCLL碼,那么單片機(jī)控制的數(shù)碼管將顯示ASCLL碼值。Abcdefg0123456789ABCDEF[C語(yǔ)言源程序sbitgewei=P2^6;//個(gè)位選通定義sbitshiwei=P2^5;十位選通定義sbitbaiwei=P2^4; voidDelay(unsignedinttc){while(tc!=0{unsignedinti;}voidLED(//LED顯示接收到的數(shù)據(jù)(十進(jìn)制{shiwei=0;P0=table[dat/10];Delay(10);shiwei=1;gewei=0;P0=table[dat%10];Delay(10);gewei=1;baiwei=0;P0=table[dat/100];Delay(10);} {PCON=0x00;SCON=0x50;TH1=0xFd;TL1=0xFd;TR1=1;}void{{ifRI{RI=0;//RI。SBUFdat;}}}十三.DS18B20DS18B200.1度,測(cè)量的溫度的范圍在-20度到+50度之間,用4位數(shù)碼管顯示出來(lái)。DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線-55。C到+125。 可以從9位到12位選DS18B20詳細(xì)引腳功能描述1GND地信號(hào);2DQ數(shù)據(jù)輸入/輸出引腳。開(kāi)漏單的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。DS18B20的使用方法。由于DS18B20是1-re總協(xié)議方式,即在一根對(duì)8951單片機(jī)來(lái)說(shuō), 須采用軟件的方對(duì)D18B20的 于DS18B20根O線上讀寫(xiě)數(shù)據(jù),因此,對(duì)讀寫(xiě)的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫(xiě)時(shí)序開(kāi)[C語(yǔ)言源程序]0x6d,0x7d,0x07,0x7f,0x6f,0x40};//顯示段碼voidDelay(unsignedinttc){while(tc!=0{unsignedinti;}sbitTMDATP3^1;DS18B20的數(shù)據(jù)輸入/DQ,根據(jù)情況設(shè)定unsignedintsdata;//測(cè)量到的溫度的整數(shù)部分unsignedcharxiaoshu;//兩位小數(shù)bitfg=1;//溫度正負(fù)標(biāo)志voiddmsec(unsignedintcount){}voidtmresetvoid{unsignedcharTMDAT=1;for(i=0;i<4;i++);}bittmrbit(void)讀一位{bitdat;TMDAT=0;ii//dat=TMDAT;return}unsignedchartmrbyte(void){dat=0;for{j=tmrbit();dat=(j<<7)|(dat>>1);}return(dat);}voidtmwbyte(unsignedchardat){bittestb;for{testb=dat&0x01;dat=dat>>1;ifi++;i++;TMDAT0;TMDAT=1;i++;i++;}}}voidtmstartvoidds1820dmsec(1);//延時(shí)tmwbyte(0xcc);//跳過(guò)序列號(hào)命令tmwbyte(0x44}voidtmrtemp(void)//溫{tmreset();//復(fù)位dmsec1tmwbyte(0xbe);//發(fā)送命令atmrbyte btmrbyte 為1時(shí)溫度是fg=0;//溫度為負(fù)時(shí)fg=0}sdataa/16+b*16;xiaoshu1a&0x0f)*10/16;小數(shù)第一位xiaoshu2=(a&0x0f)*100/16%10;//小數(shù)xiaoshu=xiaoshu1*10+xiaoshu2;//小數(shù)}void{//dmsec(5);//如果是不斷地的話可以不tmrtemp();//溫度,執(zhí)行完畢溫度將存}void{//{P2=P2&0xef;P0=seg7code[sdata/10];//輸Delay(8);P2=P2|0xf0;P2=P2&0xbf;P0=seg7code[xiaoshu1];//輸出小數(shù)點(diǎn)Delay(8);P2=P2|0xf0;P2=P2&0x7f;P0=seg7code[xiaoshu2];//輸出小Delay(4);P2=P2|0xf0;}//{P2=P2&0xef;Delay(8);P2=P2|0xf0;P2=P2&0xdf;Delay(8);P2=P2|0xf0;P2=P2&0xbf;P0=seg7code[sdata%10];//輸出個(gè)位Delay(8);P2=P2|0xf0; P0=seg7code[xiaoshu1];//輸出小}}{}}十四.128X64利用128X64點(diǎn)陣液晶顯示屏顯示,字符,漢字,畫(huà)點(diǎn),實(shí)現(xiàn)其基本顯示128X64hzzi.h文檔,再在主程序里面編寫(xiě)程序。我們使用的液晶沒(méi)有自帶字庫(kù),必須提取字模到程序里。5V穩(wěn)壓電源,所以沒(méi)有點(diǎn)亮液晶的背光。[C語(yǔ)言源程序#include<lcd12864.h>128X64#include<hzzi.H>//包含和漢字voiddelay(intx){inti,j;}void{unsignedcharlie;//定義列unsignedcharhang定義行l(wèi)cd_clr();//清屏{);//lcd_clr();//清屏使殘留的點(diǎn)不影響后面的顯示hz_disp(lie+0,hang,da);//15列,0行顯示漢字'大'hz_disp(lie+16,hang,jia);//顯示漢字'家'hz_disp(lie+32,hang,yi);//顯示漢字'一'hz_disp(lie+48,hang,qi);//顯示漢字'起'hz_disp(lie+64,hang,lai);//顯示漢字'來(lái)'hz_disp(lie+80,hang,xue);//顯示漢字'學(xué)'hang=2;//8hz_disp(lie+24,hang,dan);//顯示漢字'單'hz_disp(lie+40,hang,pian);//顯示漢字'片'hz_disp(lie+56,hang,ji);//顯示漢字'機(jī)'hz_disp(lie+0,hang,huan);hz_disp(lie+16,hang,ying);hz_disp(lie+32,hang,jia1);hz_disp(lie+48,hang,ru);hz_disp(lie+64,hang,qq);hz_disp(lie+80,hang,qun);lcd_putchar8x8(lie+0,hang,1+'0');//8X8字符lcd_putchar8x8(lie+8,hang,9+'0');delay(50);lcd_putchar8x8(lie+56,hang,5+'0');}}}十五.標(biāo)準(zhǔn)鍵盤PS/2PS2向單片機(jī)輸入數(shù)字.字母.128X64液晶顯示器顯示111029810[C語(yǔ)言源程序//128X64液晶顯示驅(qū)動(dòng)程序,只有主程序和PS2//請(qǐng)大家 //以下程序只有單片機(jī)接收PS2鍵盤程序,沒(méi)有單片機(jī)向PS2//Bug#include<lcd12864.h>//128X64#include<hzzi.H>//包含和漢字sbitKey_DataP2^0;//定義KeyboardstaticunsignedcharKeyV=0X00;//鍵值staticunsignedcharBF0;標(biāo)識(shí)是否有字符被收到staticunsignedcharIntNum=0;//中斷次數(shù)計(jì)數(shù)unsignedcharlie,hang;//lie為列值,hang為行值bitdx=0;dx==1voidKeyboard_out(void)interrupt2//鍵盤中斷處理鍵值在KeyV{if((IntNum>0)&&(IntNum{KeyVKeyV1;因鍵盤數(shù)據(jù)是低>>高,結(jié)合上一句所以右移一位if(Key_Data==1)//當(dāng)鍵盤數(shù)據(jù)線為1時(shí){KeyV=KeyV|0x80;}//一}if(IntNum>10)//中斷11次后數(shù)據(jù)發(fā)送完畢{BF1;EA0;}}voidDecode(){unsignedchardatasignedchardata//{switchTempCyc鍵值對(duì)應(yīng)字符case0x8A:k=0;break;//0case0x3C:k=2;break;//2case0x2C:k=1;break;//1case0x4C:k=3;break;//3case0x4A:k=4;break;//4case0x88:k=24;break;case0x5C:k=5;break;//5case0x9A:k=25;break;case0x6C:k=6;break;//6case0x2A:k=26;break;case0x7A:k=7;break;//7case0x5A:k=27;break;case0x7C:k=8;break;//8case0x36:k=28;break;case0x8C:k=9;break;//9case0x58:k=29;break;case0x38:k=10;break;//acase0x78:k=30;break;case0x64:k=11;break;//bcase0x54:k=31;break;case0x42:k=12;break;//ccase0x3A:k=32;break;case0x46:k=13;break;//dcase0x44:k=33;break;case0x48:k=14;break;//ecase0x6A:k=34;break;case0x56:k=15;break;//fcase0x34:k=35;break;case0x68:k=16;break;//gcase0x98:k=63;break;case0x66:k=17;break;//hcase0xAA:k=65;breakcase0x86:k=18;break;//icase0xF2:k=68;break;case0x76:k=19;breakjcase0x52:k=-16;break;空case0x84:k=20;break;//kcase0xB0:k=101;breacase0x96:k=21;break;//l大小寫(xiě)控制鍵Capslockcase0x74:k=22;break;//m}case0x62:k=23;break;{lcd_putchar8x8(lie,hang,-16+'0');//清除光標(biāo)}//{lcd_putchar8x8(lie,hang,k+'0');// }{if(k>9&&{lcd_putchar8x8(lie+8,hang,79+'0');//光標(biāo)}if(k>=0&&{lcd_putchar8x8(lie+8,hang,79+'0');//光標(biāo)}}else{lie=lie+8;}}}voiddelay(intx){inti,j;for(j=0;j<x;j++); {lcd_inithz_disp(lie+24,hang,shu輸'lcd_clr();//清屏hz_disp(lie+40,hang,ru);//'入'Disp_Img(yema);//顯示一張hz_disp(lie+56,hang,xi);//'系'delay(200);//延時(shí)等待hz_disp(lie+72,hang,tong);//'統(tǒng)'lie=20;hang=1;delay(200);lcd_clr();lcd_clr();lie=8;hang=0;hz_disp(lie+0,hang,huan);//'歡'hz_disp(lie+16,hang,qing);//'請(qǐng)'hz_disp(lie+16,hang,ying);//'迎'hz_disp(lie+32,hang,shu);//'輸'hz_disp(lie+32,hang,shi);//'使'hz_disp(lie+48,hang,ru);//'入'hz_disp(lie+48,hang,yong);//'用'hz_disp(lie+64,hang,zi);//'字'hz_disp(lie+64,hang,DP);//'DP'hz_disp(lie+80,hang,fu);//'符'lie=8;hang=4;{set_point(lie,15);}}void{IT1=1;//設(shè)外部中斷1為下降沿觸發(fā)EA1;開(kāi)總中斷EX1=1;hang=2;lie=0;//20{}}123一般接4RS=“HD0-D7RS=“LD0-D756E84位總線模式下,D0~D3AK#defineucharunsignedchar#defineuint unsignedint data_IOP2 deng=P0^0;///響音樂(lè)的端口 gg=0 cs=3 ucharm[]={1,2,3,4,5,6初始staticucharmbuf[6];///輸入的 codecharcw[32]={'','C','I','P','H','E','R','','','E','R','R','O','R','',''};////codecharxc[32]={'','','A','M','E','N','D','','S','U','C','C','E','E','D','codecharxg[32]={'','A','M','E','N','D','','','C','I','P','H','E','R',':',''','','','','','_','_','_','_','_','_','','','','',''};///修改voidyanshi(uintn)///////////////延時(shí)函數(shù){uinti;}voiddelay(uintn)///////////////延時(shí)函數(shù){uinti,j;}rs=0;//寫(xiě)指 rw=1;表示讀狀態(tài) 判忙狀態(tài) //}voidxiezl(ucharshuju)*寫(xiě)指令{rs=0;//寫(xiě)指 rw=0;表示寫(xiě)狀態(tài)//下降延 //寫(xiě)指 // }voidw_dat(uintn)//////////////////寫(xiě)數(shù)據(jù){rs=1;//寫(xiě)數(shù) rw=0;//表示寫(xiě)狀態(tài) //三個(gè)的狀態(tài)表示// //}{ucharyanshi(2000);xiezl(0x80DDRAM yanshi(100)} yanshi(100)}}{ucharrs=0;//寫(xiě)指令 { //功能設(shè)置,8位,一行顯示,5*7}xiezl(0x38);//兩行顯示xiezl(0x06);//設(shè)置輸入模式xiezl(0x01);//清屏顯示xiezl(0x80DDRAM地址的設(shè)置}bit{ucharfor{if(m[i]==mbuf[i]) flag=1; {flag=0; i=6;}//*錯(cuò)誤*/}} ucharc;yanshi(3000);yanshi(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度廠房物業(yè)管理與員工食堂運(yùn)營(yíng)合同
- 2025年度股權(quán)融資協(xié)議書(shū)范本
- 2025年度文化產(chǎn)業(yè)過(guò)橋墊資合作協(xié)議書(shū)
- 二零二五年度稅務(wù)籌劃與稅務(wù)籌劃財(cái)務(wù)解決方案合同
- 2025年度全屋智能家居裝修質(zhì)保服務(wù)合同模板
- 施工現(xiàn)場(chǎng)施工防自然災(zāi)害侵襲威脅制度
- 醫(yī)療護(hù)理醫(yī)學(xué)培訓(xùn) 小學(xué)二年級(jí)健康課課件
- DB 3705T 49-2024黃河口灘區(qū)肉羊疫病防控技術(shù)規(guī)范
- 中央空調(diào)清洗保養(yǎng)合同
- 個(gè)人股份代持合同范本
- 玻璃鋼煙囪方案
- 中國(guó)電信應(yīng)急管理整體解決方案
- 中小學(xué)教師師德師風(fēng)法律法規(guī)培訓(xùn)
- 醫(yī)療器械質(zhì)量管理體系文件模板
- 秦始皇嬴政人物生平介紹PPT
- 在馬克思墓前的講話說(shuō)課稿公開(kāi)課一等獎(jiǎng)市賽課獲獎(jiǎng)?wù)n件
- 骨科無(wú)痛病房的建立
- 送養(yǎng)收養(yǎng)合同協(xié)議書(shū)
- 塑料成型模具設(shè)計(jì)(第2版)江昌勇課件0-導(dǎo)論
- 漢語(yǔ)拼音發(fā)音口型及配圖
- 績(jī)效考核管理醫(yī)院績(jī)效分配方案包括實(shí)施細(xì)則考核表
評(píng)論
0/150
提交評(píng)論