版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中國(guó)地質(zhì)大學(xué)(武漢) 課 程: 電子工程實(shí)習(xí)報(bào)告 學(xué) 號(hào): 班 級(jí): 姓 名: 指導(dǎo)老師:陳分雄、葉敦范、羅大鵬、楊勇、王勇目 錄第一階段 軟件使用與仿真31.1 單片機(jī)系統(tǒng)原理圖繪制31.2 pcb制板31.3 編程訓(xùn)練4第二階段 焊接電路板182.1單片機(jī)最小系統(tǒng)板焊接 18第三階段 電路調(diào)試與程序設(shè)計(jì)183.1 電路調(diào)試及功能測(cè)試183.2 蜂鳴器調(diào)試193.3 串口通信調(diào)試 193.4 液晶顯示調(diào)試193.5 數(shù)碼管及鍵盤控制調(diào)試203.6 系統(tǒng)綜合功能設(shè)計(jì)20附錄21實(shí)習(xí)小結(jié)38第一階段 軟件使用與仿真1.1單片機(jī)系統(tǒng)原理圖繪制(指導(dǎo)老師:羅大鵬)1.地點(diǎn):信息樓5032.目的:熟練
2、掌握protel99的使用方法,繪制單片機(jī)最小系統(tǒng)原理圖,且保證erc校驗(yàn)無誤,并生成網(wǎng)絡(luò)報(bào)表3.內(nèi)容:文件管理先新建設(shè)計(jì)數(shù)據(jù)庫(kù),再在數(shù)據(jù)庫(kù)中新建各種文件,主要用到schematic document和pcb document。在使用中學(xué)會(huì)及時(shí)保存原理圖或pcb文件以及熟練文件的導(dǎo)入導(dǎo)出。protel的繪圖方法 通過學(xué)習(xí)掌握繪圖的一些方法。要對(duì)鍵盤上的快捷鍵熟練應(yīng)用,比如:把原理圖的放大page up,縮小page down,追蹤鼠標(biāo)視野home,刪除delete,空格鍵轉(zhuǎn)換元件以及撤銷選擇區(qū)域x-a等。元器件或區(qū)域的復(fù)制,粘貼,刪除等。熟悉界面中的工作條功能。繪制原理圖首先添加元件庫(kù),包括自
3、制元件和下載的元件庫(kù),加上protel自帶的元件庫(kù)。把需要用到的元件在自定義合適大小的圖紙上合理擺布,再用導(dǎo)線把各器件連接起來,注意各電源及接地符號(hào),節(jié)點(diǎn),總線等的設(shè)置方法,使用繪圖工具實(shí)現(xiàn)文字注釋或其他注釋。erc校驗(yàn)待原理圖繪制完畢,然后進(jìn)行電氣法則測(cè)試,即erc校驗(yàn),若產(chǎn)生錯(cuò)誤,則根據(jù)錯(cuò)誤提示對(duì)原電路圖進(jìn)行修改,直至通過erc校驗(yàn),原理圖無誤。修改元器件封裝當(dāng)erc校驗(yàn)無錯(cuò)時(shí),然后對(duì)照元件清單及pcb元件庫(kù),對(duì)每一個(gè)元器件封裝進(jìn)行修改,產(chǎn)生元件清單。修改器件封裝,修改其屬性中的footprint即可。修改完以后,再進(jìn)行一次erc校驗(yàn),若出現(xiàn)錯(cuò)誤,則根據(jù)錯(cuò)誤提示修改,直至能通過erc校驗(yàn)無
4、錯(cuò)誤產(chǎn)生。生成網(wǎng)絡(luò)報(bào)表待修改封裝之后,并再次通過erc校驗(yàn)無錯(cuò)誤產(chǎn)生,生成網(wǎng)絡(luò)報(bào)表。然后對(duì)照原電路圖把網(wǎng)絡(luò)報(bào)表仔細(xì)檢查一遍,檢查每一個(gè)器件與其他器件間的連接是否有誤,及是否有元器件的丟失,檢查vcc與gnd的連接,是否全部連上。若有遺漏或錯(cuò)誤,則返回修改,在進(jìn)行erc校驗(yàn),生成網(wǎng)絡(luò)報(bào)表,直至無遺漏和錯(cuò)誤。此工作非常繁瑣,需耐心和仔細(xì)對(duì)待。 但由于前些工作比較仔細(xì)所以原理圖基本沒有太大錯(cuò)誤。原理圖見附錄1。1.2pcb制板1.地點(diǎn):信息樓5032.目的:熟練掌握protel99的使用方法,繪制單片機(jī)最小系統(tǒng)原理圖3.內(nèi)容:新建pcb文件,并添加老師要求的pcb元件庫(kù)。導(dǎo)入網(wǎng)絡(luò)報(bào)表導(dǎo)入上一階段產(chǎn)生
5、的網(wǎng)絡(luò)報(bào)表,在導(dǎo)入過程中會(huì)進(jìn)行錯(cuò)誤檢查,若產(chǎn)生錯(cuò)誤,則需返回上一階段,根據(jù)錯(cuò)誤提示,修改元器件的封裝等等,然后按步驟生成網(wǎng)絡(luò)報(bào)表,再次導(dǎo)入網(wǎng)絡(luò)報(bào)表,直至導(dǎo)入無錯(cuò)誤。手工布局在pcb圖紙上keepoutlayer層放置線定義板寬,在導(dǎo)入網(wǎng)絡(luò)報(bào)表無錯(cuò)誤之后,然后執(zhí)行,在將導(dǎo)入的各元器件進(jìn)行布局?jǐn)[放,其中鍵盤按照矩陣形式排列,我們所用的是16個(gè)鍵,按44矩陣進(jìn)行排列,其中外部擴(kuò)展及下載口及電源及串口等等器件應(yīng)放置在pcb板邊緣,在元件布局應(yīng)按原理圖的各個(gè)模塊的具體分布進(jìn)行,把每一模塊的各器件盡量擺放在一起,并標(biāo)注各個(gè)模塊,再逐步調(diào)整,使所用pcb板面積盡量小,利用效率最大。自動(dòng)布線及手工改動(dòng)首先設(shè)計(jì)
6、規(guī)則,主要是電線寬度,孔大小約束。待手工布局結(jié)束后,進(jìn)行自動(dòng)布線,自動(dòng)布線結(jié)束后,仔細(xì)檢查布線效果,布線應(yīng)遵循導(dǎo)線走鈍角,線盡量走近路,盡量保證toplayer層走橫線,bottomlayer層走豎線。然后去掉自動(dòng)布線所產(chǎn)生的毛刺,修改走直角或銳角的連線,并使線程盡量短。此過程中應(yīng)逐個(gè)局部仔細(xì)檢查修正。修正結(jié)束后,可以對(duì)pcb添加淚滴焊盤,進(jìn)行覆銅或放置漢字,防止實(shí)際硬件電路靜電干擾。 pcb板見附錄2。設(shè)計(jì)規(guī)則檢查對(duì)已經(jīng)布局布線的pcb圖進(jìn)行設(shè)計(jì)規(guī)則檢查,對(duì)pcb圖進(jìn)行查錯(cuò),以保證其正確無誤。觀看3d圖 單pcb圖畫好后,可以觀看其3d效果圖,以驗(yàn)證其布局布線合理,和提前知曉制成板后的效果。
7、 pcb3d效果圖見附錄3生成pcb報(bào)表最后可以生成pcb報(bào)表,包括電路板狀態(tài)信息報(bào)表,引腳信息報(bào)表,元件信息報(bào)表,網(wǎng)絡(luò)分析信息報(bào)表等,以對(duì)板子有個(gè)清晰的認(rèn)識(shí)。1.3、編程訓(xùn)練:(指導(dǎo)老師:楊勇)(一 )熟悉keil軟件的使用和仿真步驟keil集成開發(fā)軟件基本操作1、 新建一個(gè)項(xiàng)目文件2、 首先點(diǎn)擊 keil uvision2 ,進(jìn)入uvision2界面。點(diǎn)擊工具欄project選項(xiàng)中的newproject,準(zhǔn)備開始建立自己的項(xiàng)目3、 輸入工程文件名稱,并選擇保存工程文件的目錄。 4、 為項(xiàng)目文件選擇一個(gè)目標(biāo)器件(如at89c51),如圖所示。 5、 用鼠標(biāo)對(duì)項(xiàng)目工作區(qū)的目標(biāo)1,點(diǎn)擊右鍵在彈出
8、的菜單中選擇“為目標(biāo)目標(biāo)1設(shè)置選項(xiàng)”如下圖所示。 6、 在“為目標(biāo)目標(biāo)1設(shè)置選項(xiàng)”中,點(diǎn)擊“調(diào)試”菜單,在此菜單中可選擇是使用硬件仿真,還是軟件仿真,連接實(shí)驗(yàn)箱做實(shí)驗(yàn)時(shí)選擇硬件仿真,點(diǎn)擊硬件仿真選項(xiàng)后面的設(shè)置選項(xiàng),在此對(duì)對(duì)話框中選擇串口和波特率,串口根據(jù)所連電腦來決定。7、 點(diǎn)擊“文件/新建”創(chuàng)建源程序文件并輸入程序代碼。8、 在文本框中輸入原程序9、 點(diǎn)擊“文件/保存“對(duì)程序進(jìn)行保存。 10、 用鼠標(biāo)對(duì)項(xiàng)目工作區(qū)的目標(biāo)1,點(diǎn)擊右鍵在彈出的菜單中選擇添加文件到原代碼組,如下圖所示: 11、 在彈出的添加文件框中,選擇需要添加到項(xiàng)目中的文件。 12、 點(diǎn)擊編譯連接的圖標(biāo),對(duì)項(xiàng)目文件進(jìn)行編譯13、
9、 點(diǎn)擊“調(diào)試/啟動(dòng)/停止調(diào)試”進(jìn)入調(diào)試界面若要查看內(nèi)存中的數(shù)據(jù),點(diǎn)擊“視圖/存儲(chǔ)器窗口” (二)實(shí)訓(xùn)100例部分led顯示#include sbit led=p32;void delay_ms(unsigned char x_ms)unsigned char i;while(x_ms-)for(i=124;i0;i-)void main(void)while(1)led=1;delay_ms(100);led=0;delay_ms(100);3.7 8只數(shù)碼管滾動(dòng)顯示單個(gè)數(shù)字#include#include#define uchar unsigned char#define uint unsi
10、gned intuchar code dsy_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void delayms(uint x)uchar i;while(x-) for(i=0;i120;i+);void main()uchar i,k=0x80;while(1)for(i=0;i8;i+)p2=0xff;k=_crol_(k,1);p0=dsy_codei;p2=k;delayms(300);3.8 8只數(shù)碼管顯示多個(gè)不同字符#include#include#define uchar unsigned char#defin
11、e uint unsigned intuchar code dsy_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void delayms(uint x)uchar i;while(x-) for(i=0;i120;i+);void main()uchar k,m=0x80;p0=0xff;p2=0x00;while(1)for(k=0;k8;k+)m=_crol_(m,1);p2=m;p0=dsy_codek+1;delayms(2);3.35 定時(shí)器控制數(shù)碼管動(dòng)態(tài)顯示#include#include#define uchar
12、unsigned char#define uint unsigned intuchar code dsy_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf;uchar code table_of_digits8=0,9,10,1,2,10,2,5,2,1,10,5,7,10,3,9;uchar i=0,j=0;uint t=0;void main()p3=0x80;tmod=0x00;th0=(8192-4000)/32;tl0=(8192-4000)%32;ie=0x82;tr0=1;while(1);void dsy_s
13、how() interrupt 1th0=(8192-4000)/32;tl0=(8192-4000)%32;p3=_crol_(p3,1);p0=dsy_codetable_of_digitsij;j=(j+1)%8;if(+t!=350) return;t=0;i=(i+1)%2;3.42 報(bào)警器和旋轉(zhuǎn)燈#include#include#define uchar unsigned char#define uint unsigned intsbit spk=p37;uchar frq=0x00;void delayms(uint ms)uchar i;while(ms-) for(i=0;i
14、120;i+);void main()p2=0x00;tmod=0x11;th0=0x00;tl0=0xff;it0=0;ie=0x8b;ip=0x01;tr0=0;tr1=0;while(1)frq+;delayms(1);void ex0_int() interrupt 0tr0= !tr0;tr1= !tr1;if( p2=0x00)p2=0xe0;else p2=0x00;void t0_int() interrupt 1th0=0xfe;tl1=frq;spk=spk;void t1_int() interrupt 3th1=-45000/256;tl1=-45000%256;p2=
15、_crol_(p2,1);4.12 1602字符液晶滾動(dòng)顯示程序#include reg51.h#include intrins.h /包含此頭文件可直接操作內(nèi)核的寄存器以及一些定義好的宏/ this file for mcu i/o port or the orthers hardware config/ for lcd display/ define for the port use by lcd driversbit lcd_ep=p27;sbit lcd_rw=p26;sbit lcd_rs=p25;#define lcd_data_bus_out p0#define lcd_data
16、_bus_in p0code unsigned char lcd_initialcode=0x30,0x30,0x30,0x38,0x01,0x06,0x0c;void lcd_datawrite(unsigned char data)unsigned int read_dat=0;lcd_ep = 0; /ep、rs端口為低,rw為高lcd_rs = 0;lcd_rw = 1;dolcd_data_bus_in = 0xff;lcd_ep = 1;read_dat = lcd_data_bus_in&0x80;lcd_ep = 0;while(read_dat!=0); /讀狀態(tài)字并判斷是否
17、可進(jìn)行讀寫操作lcd_rw = 0; /ep rw to lowlcd_rs = 1; /rs hightlcd_data_bus_out = data;lcd_ep = 1; /ep to hightlcd_ep = 0; /ep to lowvoid lcd_regwrite(unsigned char command)unsigned int read_dat=0;lcd_ep = 0; /ep、rs置低,rw置高,表為讀狀態(tài)字lcd_rs = 0;lcd_rw = 1;dolcd_data_bus_in = 0xff;lcd_ep = 1;read_dat = lcd_data_bus
18、_in&0x80;lcd_ep = 0;while(read_dat!=0); /讀狀態(tài)字并判斷是否可進(jìn)行讀寫操作lcd_rw = 0; /rw to low,表為寫指令lcd_data_bus_out = command;lcd_ep = 1; /ep to hightlcd_ep = 0;unsigned char lcd_dataread(void)unsigned char read_dat=0;lcd_ep = 0; /ep、rs置低,rw置高,表為讀狀態(tài)字lcd_rs = 0;lcd_rw = 1;dolcd_data_bus_in = 0xff;lcd_ep = 1;read_d
19、at = lcd_data_bus_in&0x80;lcd_ep = 0;while(read_dat!=0); /讀狀態(tài)字并判斷是否可進(jìn)行讀寫操作lcd_rs = 1; /rs置高,表為讀數(shù)據(jù)lcd_ep = 1; /ep to hightread_dat = lcd_data_bus_in; /讀出數(shù)據(jù)lcd_ep = 0;return read_dat;unsigned char lcd_statusread(void)unsigned char read_dat=0;lcd_ep = 0; /ep、rs置低,rw置高,表為讀狀態(tài)字lcd_rs = 0;lcd_rw = 1;lcd_da
20、ta_bus_in = 0xff;lcd_ep = 1;read_dat = lcd_data_bus_in; /讀狀態(tài)字lcd_ep = 0;return read_dat;include #define lcdport p0#define h 1#define l 0sbit lcdrs = p20;sbit lcdrw = p21;sbit lcden = p22;void delay_ms(unsigned char xms)unsigned char i;while(xms-)for(i=125;i0;i-)void lcd_write_data(unsigned char dat)
21、lcdrs = h;lcdrw = l;lcden = l;lcdport = dat;lcden = h;delay_ms(2);lcden = l;void lcd_write_command(unsigned char com)void lcd_init(void)驗(yàn)收:用1602實(shí)現(xiàn)兩行顯示并閃爍#include#define lcdport p0sbit lcdrs = p20;sbit lcdrw = p21;sbit lcden = p22;void delay_ms(unsigned int ms) int i; while(ms-) for(i=125;i0;i-) void
22、 write_data(unsigned char dat) lcdrs=1; lcdrw=0; lcden=0; lcdport=dat; lcden=1; delay_ms(2); lcden=0;void write_command(unsigned char c) lcdrs=0; lcdrw=0; lcden=0; lcdport=c; lcden=1; delay_ms(2); lcden=0;void lcd_busy() do lcdrs=0; lcdrw=1; lcden=0; lcden=1; delay_ms(1); while(lcdport&0x80); lcden=
23、0;void init_lcd1602() write_command(0x38); write_command(0x01); write_command(0x06); write_command(0x0c); void main() init_lcd1602(); while(1) lcd_busy(); write_command(0x80+0x06); write_data(w); delay_ms(10); write_command(0x80+0x07); write_data(e); delay_ms(10); write_command(0x80+0x09); write_dat
24、a(a); delay_ms(10); write_command(0x80+0x0a); write_data(r); delay_ms(10); write_command(0x80+0x0b); write_data(e); delay_ms(10); write_command(0x80+0x47); write_data(y); delay_ms(10); write_command(0x80+0x48); write_data(o); delay_ms(10); write_command(0x80+0x49); write_data(u); delay_ms(10); write
25、_command(0x80+0x4a); write_data(n); delay_ms(10); write_command(0x80+0x4b); write_data(g); delay_ms(10); write_command(0x0c); delay_ms(10); write_command(0x08); delay_ms(10);第二階段 焊接電路板(指導(dǎo)老師:王勇 葉敦范 )2.1單片機(jī)最小系統(tǒng)板焊接1.地點(diǎn):信息樓4052.目的:完成電路板和jtag下載線的硬件焊接3.內(nèi)容:(1)首先對(duì)照元件清單和電路圖,檢查器件是否完整,型號(hào)規(guī)格安裝是否正確。(2)然后將各器件根據(jù)焊接規(guī)
26、則焊接到電路板上,其中對(duì)于器件的擺放方向和位置需十分注意。先焊發(fā)熱器件電阻和較低的電容,再焊較大的器件(3)而后,焊接jtag線,jtag線里面的芯片電阻,電阻電容均為貼片封裝,焊接時(shí)需小心謹(jǐn)慎,對(duì)于各條線引的焊接也需謹(jǐn)慎,按照其對(duì)應(yīng)的順序進(jìn)行焊接,焊接結(jié)束后,自行組裝。第三階段 電路調(diào)試與程序設(shè)計(jì) (指導(dǎo)老師:陳分雄 王勇 葉敦范 )3.1電路調(diào)試及功能測(cè)試1.地點(diǎn):信息樓5032.目的:檢查已經(jīng)焊好的電路板和jtag下載線是否無誤3.內(nèi)容:先用萬用表檢查電路板焊接是否都正確。當(dāng)檢查沒有短路,斷路,虛焊,漏焊等錯(cuò)誤后,給電路板供電,看二極管是否亮,是否有器件過熱,有可能二極管或三極管會(huì)在焊接
27、的過程中被燒壞,那樣的話就要重新焊器件。再用keil軟件給板子拷正確的程序,檢查是否能按功能正常工作。單片機(jī)系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,許多硬件錯(cuò)誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。3.2蜂鳴器調(diào)試1.目的:主要是檢驗(yàn)程序能否下載到芯片,蜂鳴器能正常工作,掌握程序的編譯下載到芯片的方法。2.內(nèi)容:在keil環(huán)境中用c語言編寫簡(jiǎn)單是蜂鳴器程序或音樂播放程序。對(duì)keil軟件和程序下載軟件進(jìn)行相關(guān)配置設(shè)置。將編譯產(chǎn)生的hex文件下載到芯片,檢測(cè)其工作是否正常,若工作不正常,則從軟件及硬件兩方面進(jìn)行檢查。 有用的報(bào)警聲程序見附錄33.3串口通信調(diào)試1.地點(diǎn):信息樓5032.目的:實(shí)現(xiàn)計(jì)算機(jī)與單片
28、機(jī)之間相互通訊功能3.內(nèi)容:將編寫的串口調(diào)試程序經(jīng)過編譯,下載到單片機(jī)。串口實(shí)現(xiàn)功能為在計(jì)算機(jī)上能顯示單片機(jī)的輸出。檢測(cè)串口是否能正常工作,此階段需用到串口軟件及串口線。若不能正常工作,則需從軟件和硬件兩方面進(jìn)行檢查。正確功能為在電腦超級(jí)終端不停顯示輸出內(nèi)容,與預(yù)期相同,工作正常。串口調(diào)試程序見附錄43.4液晶顯示調(diào)試1.地點(diǎn):信息樓5032.目的:保證液晶屏lcd能正常工作,輸出效果有所擴(kuò)展。3.內(nèi)容:在編寫程序前,認(rèn)真閱讀lcd液晶屏資料,掌握lcd1602及1602液晶模塊數(shù)據(jù)手冊(cè)(中文)中的液晶的使用和編程方法,了解其工作時(shí)序,及各個(gè)指令及初始化。對(duì)照電路圖中l(wèi)cd連接情況,編寫lcd
29、1602移動(dòng)顯示程序,經(jīng)編譯下載至單片機(jī),檢測(cè)輸出,若無輸出,則調(diào)整電位器,若仍無輸出則從軟件及硬件兩方面進(jìn)行檢查,找出錯(cuò)誤原因,直至液晶屏能正常工作。在程序編寫時(shí)應(yīng)時(shí)刻注意各個(gè)指令間的延時(shí)控制。以保證液晶屏呈現(xiàn)效果移動(dòng)循環(huán)顯示,液晶屏工作正常。之后也可用lcd做數(shù)字鐘,這將在綜合程序里被用到,液晶移屏顯示程序見附錄53.5數(shù)碼管及鍵盤控制調(diào)試1.地點(diǎn):信息樓5032.目的:保證數(shù)碼管能正常顯示,以及按鍵能控制數(shù)碼管的顯示3.內(nèi)容:在編寫程序前,應(yīng)認(rèn)真閱讀led和zlg7289a資料,了解和掌握其工作時(shí)序,及各個(gè)指令及初始化,在程序編寫時(shí)應(yīng)時(shí)刻注意各個(gè)指令間的延時(shí)控制。對(duì)照電路圖中zlg728
30、9模塊的連接情況,編寫程序,經(jīng)過編譯,然后下載到單片機(jī),檢測(cè)展現(xiàn)效果,是否與程序預(yù)期相同。實(shí)現(xiàn)效果逐個(gè)閃爍,逐個(gè)消隱,鍵盤控制改變數(shù)據(jù)并移動(dòng),與預(yù)期相同,工作狀態(tài)正常。再利用單片機(jī)內(nèi)部時(shí)鐘中斷,編寫數(shù)碼管時(shí)鐘程序,使數(shù)碼管能夠?qū)崿F(xiàn)計(jì)時(shí)功能,鍵盤能夠控制時(shí)分秒。數(shù)碼管顯示及鍵盤控制程序見附錄63.6系統(tǒng)綜合功能設(shè)計(jì)1.地點(diǎn):信息樓5032.目的:綜合單片機(jī)開發(fā)板上的各個(gè)功能模塊,以實(shí)現(xiàn)一個(gè)完整的系統(tǒng)功能3.內(nèi)容:根據(jù)前面對(duì)各模塊功能的理解和程序編寫,結(jié)合各個(gè)模塊實(shí)現(xiàn)一個(gè)整體系統(tǒng),把各模塊功能綜合起來。設(shè)計(jì)一綜合系統(tǒng)。系統(tǒng)設(shè)計(jì)程序見附錄7。驗(yàn)收程序設(shè)計(jì):仿手機(jī)按鍵 如圖功能概述:1,led:12個(gè)
31、按鍵仿手機(jī)按鍵(按“按鍵”一下led顯示對(duì)應(yīng)的數(shù)字,按兩下顯示后面的字母,以此類推2,蜂鳴器:有按鍵按下則響一下3,數(shù)碼管部分:0,1位置顯示按下的按鍵的對(duì)應(yīng)鍵值附錄附錄1:附錄2:附錄3:#include #define uchar unsigned charsbit buzz=p33;void delay()uchar i;for(i=0;i1000;i+)main()while(1)buzz=0;delay();buzz=1;delay();附錄4:#include #include #ifdef monitor51 char code reserve 3 _at_ 0x23;#endi
32、fvoid main (void) unsigned int i=100;#ifndef monitor51scon = 0x50;tmod |= 0x20; th1 = 0xe6; tr1 = 1; ti = 1; #endifwhile (i-) printf(%d,i); printf (hello everyonen); while(1);附錄5:#include unsigned char codedispcode1=happy birthdy!; /要顯示的字符串unsigned char codedispcode2=happy everyday!;unsigned char i,
33、j,k,l;sbit rs=p20; /io口定義sbit rw=p21;sbit e=p22;void delay() /延時(shí)函數(shù) for(l=0;l=100;l+);void lcd_cmd(unsigned char cmd)/寫指令函數(shù)p0=cmd;rs=0;rw=0;e=0;delay();e=1;void lcd_dat(unsigned char dat) /寫數(shù)據(jù)函數(shù) p0=dat;rs=1;rw=0;e=0;delay();e=1;void lcd_table(unsigned char table,int n) /寫字符串函數(shù)int i=0;for(i=0;in;i+)lc
34、d_dat(tablei);void initializtion() /初始化函數(shù)lcd_cmd(0x01); lcd_cmd(0x38); lcd_cmd(0x0f); lcd_cmd(0x06);void main() initializtion(); lcd_cmd(0x80); lcd_table(dispcode1 ,16); lcd_cmd(0xc0); lcd_table(dispcode2 ,16);附錄6: #includesbit cs=p10; /io定義sbit clk=p11;sbit dio=p12;sbit int=p32;void delay(unsigned
35、int n)while(n-); void write(char dat)int t=8;dodio= (bit)(dat & 0x80);dat=1; clk=1;delay(30);clk=0; delay(30);while(-t!=0) ;char read() char dat; int t=8; dio=1; do clk = 1;delay(50); dat 2 ) mod = 2;d1 = moddatmod;x &= 0x07;d1 |= x;d2 = dat & 0x7f;if ( dp ) d2 |= 0x80;cmd_dat(d1,d2); /下載數(shù)據(jù)并且按方式0 進(jìn)行
36、譯碼char key() /讀按鍵值的函數(shù)char key;cs = 0;delay(200);write(0x15);delay(200);key = read();cs = 1;delay(100);return key;void keydisp() /數(shù)碼管顯示按鍵的函數(shù)char k,dat;char i=150;while(i)if ( int = 0 ) /有鍵按下k = key();switch(k)case 10:cmd_dat(0x88,0);break;/閃爍 case 11:cmd_dat(0x88,0xff);break;/ 去閃爍case 12:cmd(0xa1);br
37、eak;/ 右移case 13:cmd(0xa0);break;/ 左移case 14:cmd_dat(0x98,0xaa);break;/ 消影case 15:cmd_dat(0x98,0xff);break;/ 顯示default: cmd(0xa2); download(1,3,0,k); /顯示09 while ( !int ); i-=1; void init()/初始化函數(shù)unsigned char x;cs = 1;clk = 0;dio = 1;int = 1;for ( x=0; x8; x+ ) /點(diǎn)亮所有數(shù)碼管/download(1,x,1,8); void main()
38、init();cmd(0xa4);keydisp();/調(diào)用函數(shù)以在數(shù)碼管上顯示按鍵值while(1); 附錄7:#include#include#include #define uchar unsigned char#define uint unsigned int#define delaynop() _nop_();_nop_();_nop_();_nop_();sbit rs=p20;sbit rw=p21;sbit en=p22;sbit spk=p33;unsigned char x;unsigned char dat;unsigned char k;/定義i/o 接口sbit zl
39、g7289_pincs = p10; /片選信號(hào),低電平有效sbit zlg7289_pinclk = p11; /時(shí)鐘信號(hào),上升沿有效sbit zlg7289_pindio = p12; /數(shù)據(jù)信號(hào),雙向sbit zlg7289_pinint = p32; /鍵盤中斷請(qǐng)求信號(hào),低電平(負(fù)邊沿)有效/執(zhí)行zlg7289 純指令extern void zlg7289_cmd(char cmd);/執(zhí)行zlg7289 帶數(shù)據(jù)指令extern void zlg7289_cmd_dat(char cmd, char dat);/以下是zlg7289 的用戶指令集/復(fù)位(清除)指令#define zlg
40、7289_reset() zlg7289_cmd(0xa4)/測(cè)試指令#define zlg7289_test() zlg7289_cmd(0xbf)/左移指令#define zlg7289_shl() zlg7289_cmd(0xa0)/右移指令#define zlg7289_shr() zlg7289_cmd(0xa1)/循環(huán)左移指令#define zlg7289_rol() zlg7289_cmd(0xa2)/循環(huán)右移指令#define zlg7289_ror() zlg7289_cmd(0xa3)/下載數(shù)據(jù)extern void zlg7289_download(unsigned ch
41、ar mod, char x, bit dp, char dat);/閃爍控制/ x 的8 個(gè)位分別對(duì)應(yīng)數(shù)碼管的8 個(gè)位,0閃爍,1不閃爍#define zlg7289_flash(x) zlg7289_cmd_dat(0x88,(x)/消隱控制/ x 的8 個(gè)位分別對(duì)應(yīng)數(shù)碼管的8 個(gè)位,0消隱,1顯示#define zlg7289_hide(x) zlg7289_cmd_dat(0x98,(x)/段點(diǎn)亮指令/seg=063,8 只數(shù)碼管被看成64 只獨(dú)立的led/每只數(shù)碼管中各段的點(diǎn)亮順序按照“g,f,e,d,c,b,a,dp”進(jìn)行#define zlg7289_segon(seg) zlg
42、7289_cmd_dat(0xe0,(seg)/段關(guān)閉指令/seg=063,8 只數(shù)碼管被看成64 只獨(dú)立的led/每只數(shù)碼管中各段的熄滅順序按照“g,f,e,d,c,b,a,dp”進(jìn)行#define zlg7289_segoff(seg) zlg7289_cmd_dat(0xc0,(seg)/執(zhí)行zlg7289 鍵盤命令extern char zlg7289_key() reentrant;/zlg7289 初始化extern void zlg7289_init(unsigned char t);unsigned char zlg7289_delay_t;/*宏定義:zlg7289_shor
43、tdelay()功能:短延時(shí)說明:延時(shí)(zlg7289_delay_t*2+2)個(gè)機(jī)器周期*/#define zlg7289_shortdelay() unsigned char t = zlg7289_delay_t;while ( -t != 0 );/*宏定義:zlg7289_longdelay()功能:長(zhǎng)延時(shí)說明:延時(shí)(zlg7289_delay_t*12+8)個(gè)機(jī)器周期*/#define zlg7289_longdelay() unsigned char t = zlg7289_delay_t * 6;while ( -t != 0 );/*函數(shù):zlg7289_spi_write()功能:向spi 總線寫入1 個(gè)字節(jié)的數(shù)據(jù)參數(shù):dat:要寫入的數(shù)據(jù)*/void zlg7289_spi_write(char dat) reentrantunsigned char t = 8;dozlg7289_pindio = (bit)(dat & 0x80);dat = 1;zlg7289_pinclk =
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)學(xué)整形美容服務(wù)協(xié)議
- 2025年員工福利和解合同
- 2025年在線教育運(yùn)營(yíng)合同
- 2025年公司融資投資人增資協(xié)議
- 2025年代理合作簽約協(xié)議
- 二零二五年度嬰幼兒奶粉產(chǎn)品追溯系統(tǒng)建設(shè)合作協(xié)議3篇
- 2025年項(xiàng)目建議書編制委托人工智能+大數(shù)據(jù)合同模板2篇
- 2025年度健康養(yǎng)生產(chǎn)品居間營(yíng)銷合同模板4篇
- 跟著2025年新番走:《動(dòng)漫欣賞》課件帶你領(lǐng)略動(dòng)漫魅力2篇
- 2025年度智能牧場(chǎng)羊代放牧與物聯(lián)網(wǎng)服務(wù)合同
- 反騷擾政策程序
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十一章運(yùn)動(dòng)技能的練習(xí)
- 射頻在疼痛治療中的應(yīng)用
- 四年級(jí)數(shù)學(xué)豎式計(jì)算100道文檔
- “新零售”模式下生鮮電商的營(yíng)銷策略研究-以盒馬鮮生為例
- 項(xiàng)痹病辨證施護(hù)
- 職業(yè)安全健康工作總結(jié)(2篇)
- 懷化市數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展概況及未來投資可行性研究報(bào)告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會(huì)
- 彈簧分離問題經(jīng)典題目
評(píng)論
0/150
提交評(píng)論