山东大学单片机硬件试验汇编_第1页
山东大学单片机硬件试验汇编_第2页
山东大学单片机硬件试验汇编_第3页
山东大学单片机硬件试验汇编_第4页
山东大学单片机硬件试验汇编_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学习-好资料更多精品文档单片机原理与应用实验文档存放目录:实验题目:实验1按键声光报警实验实验5: 8255并行I/O扩展及交通信号灯控制实验实验7: 7279键盘扫描及动态LED显示实验实验要求实验1:本实验联系静态按键识别,发光二极管驱动,要求利用外部硬件中断, 按键按下一次产生一次外部中断, 在中断服务程序中计数器加 1,同时,通过发 光二极管的闪烁和蜂鸣器响的次数, 指示计数器的当前值。当计数到10时,再次 按键将重新从1开始计。实验2:本实验利用8255实现可编程的并行IO扩展功能,并利用其完成交通 灯控制。实验要求红灯常亮 30S,绿灯常亮25S后闪烁5S。使用静态数码管 显示绿灯

2、常亮倒计时。本实验中的东西方向信号灯同步控制, 南北方向信号灯同 步控制,即:东西方向上同种颜色的灯同时亮或灭, 南北方向上同种颜色的灯同 时亮或灭。实验3:本实验利用7279进行键盘扫描及动态 LED数码管显示控制。当按下 某个按键时所按按键对应的字符显示在最右端 LED数码管上,如果再次按下一 个按键2',则原来显示的内容往左移 1位,将新按下的按键2',的字符显 示在最右端,依次类推显示0F。学习-好资料#iefine Hint urLaigrLed int#de fine uchar unaigntd chaisbit bell-P3ftl;/P3.1 口位St值给铸声

3、 sbit led-P3rt0;/P3.0口位赋喧给町 sbit keyO-P3-2;/P3.2口吃联追给按匾|uint coun;vdid de 1 ay (uint count) /延时 1ms uint 肌y;for jc=coun.t;x>0;x) for ty«110?y>0?y > Jvoid shQW(ulnt count) uint i;f os:i+)led=0;be 11=0; /:tTK> 铤近delay (5G<0U/m 时 CL 5#led=l;bell=l; 7::T-铃丐网 delay (SOD);void s_timsro

4、() ititerrupt 0 using 0 EA=0; 丁霁甚所有耳箭请求 show (cqubC) :子tJNeDunt+4-:tfelayiSO):if (CDunt>=10) count=0;EA-1;/幵敦中斷/* 主裡甲VDid main()EA=1; 放中斷EX0-l:/7t许夕卜圧中近口丰新 rrotj;"外部中审:无岂=兰三玄于 whilt(l);"吃环执疔1±11实验2学习一好资料4in,clude<reg51h> # lnel ude<3 tdlo h> 4include <absaccBh>ide

5、fine 4define t-def ine *社efl&euchar unsigned char uinc ULEisigned dn匸 PACOM KBYTE | 0 X7 EFF XEYTE0X7FFCr/CSA15P3Q=E3*0;P31=F3*1;Klanshl (ulnt, Lemp); dlay ();delays(); init_e255();voidinit_e255()CQ4*0x8O:/ c = out t aout: * b = out:void dt-elay ()ulnt lf j;for ( i«500;i>0Ji-) for Cj=120

6、;3>0;j-):void delays () /延时1号子程宇uxnt: ij, j ;for <1=1000JI I£転佥七*古七占七舌占*+W* + M金吉七* 士 程申古+ 士 舌吉士七吉击古士扫矗*吉吉士弘古吉吉/ void main )foz)/绿 rr 闪烁刊init_a255);TMOD-OxOl;/ 工作"冥忒 1EA=1:/FF 中迂ETD=1;"允许匸士箭TFO=O;.定时垂:溢出t?.壬泣while(1)(a=0x26;/ga®£for (tsirp"2S:temp>19jtemp-、V探灯住

7、计时鮎3 (a=a-l;PA=0x69r/ 西耀 b 耳xlanjhi (酣谒用嶽网瞥星示于程序 delays ();廷时"a-0xla;/变挠£氓宜f or (tecp=l 9; teir?»9; teng>- )菱计旺a=a-L;PA-0x69;/7 5?5SS 灯亮xiaashi(a);delays();a=0xC!a;for (tezzp=9; tezrp>0; terEp-)(FA=Cm69;xiashi(a);delays(>:学习-好资料a=0;/当计时值为0时闪烁(a);FA-OKeb;/坯西暈灯灭 dslayO;/ 证时0”5n

8、 酹-吟百头“命臣滾.丁凭 delfl¥();"薙时0*孔a=Qz26;for (teip=25:L&ir>19;ttitp-) - a=a-l;PA-0x9f; 北嬢订克 xianshi(a|; delays();a "Ox La.;foz (tea(p=l 9: i;emp>9; iemp-a-a-1;poxs-e; xlazishi (A l : delays 0;1a*0xCia;for (tesp=9 r rew>0 * texipPA=Oir56; xiaMhUa; delays(>;for氛JT lAlf 5 s亠&q

9、uot;D; J舍计片直为0片可烁xianhl (auPA-Oxbe;/北耀:厅式 delays ;厂'.辽对0.5日 PA=0e96;/南北録灯巽 delay();"逛时口.暗void xianshi (uinu a), 三示子咗-.-5CON=03i&/X 式 05BUr=a; P变莹就专宜迂绘盪年左殍芻whileTI-Of/*»t标吉住渣毎实验3学习一好资料f IndudecregSl«h>+include<stdiD.h>北近 CS-FlO;/ C9 PUOsbit CLK=P1A1;/ elk 逹接于 Fl.l/bit

10、DAIA-FlZ;/ 却t 途接于 Fl.2mbit KE¥=P1A3;/ ley 連接于 Pl. 3HD7279A 指令 -*>+define RESET Ma4 / 負 二措令idefLue RL WMi".主韬拦 ¥fdefine DECODE1 g囲"渥码方式 1ildefrne READ Qxl$ /读掛直拖卡严” ”* “拴暹时子悝咚void ldelay/25uaunsigned char a r b;forfora=20;a>n;a);1,占倉*短延时子程字t金古古ih Si *+ + +古/void edslaiy"

11、;unsigned char a;f&r (a=3;a>0;a):)void send (unsigned char out三送入审节 Iujisigned char 1;CS-0;"芯片愎能ldelayO; /长延时for ti-Ofl<aji+)人寸舱匚普入 気掴i£ outaOxeO) "土梅転'i raiA=i;学习一好资料else DATA=O;CLK-l;sdelay();CLK=O;3del*y);OUt=DUt«l; /7较据左替 DAT-O;void wrme 1 unsigned chac ccjwicid

12、, unjtgned char dat (3end(comir,aiid);aendfdati;unsigned char tecelven/接左一个字书unsigned char i rinbyte;ldelay(|;/a£ 时for(1=0;i<0j 1+)据 崙位在前CL«-1;sdelayf?inbyte=inbyte«l;ii (DATA intoyta-inbyta I OjiOI ;舌左弓CLiO;sdelay);DAIA=0;return inhyte;1y 土* 许吉看Sr土吉遂至/日扌苗子翟字古吉吉右i: 吉*费:fc 士+询吉* / u

13、nsigned char keyscanO-unsigned char keyscan() unsigned char key;it (IKEY).3 是百 口 为喘电=sendfREAE;key=receive() 将接女至訂数賦给Ireyswitch (Icey)/IS <3*53case Oxlb::return Os DO; break;case 0«13:return 0x01:b3:eak;case case case case case case case case case case case case caw caseOsOCIO:return DmOI;br

14、eakDxOb: return0z03:return OxlatreturnQxl2:return Ozda:return 0x02:revurn 0x19:: re turn Dzllj:return 03e09: return DxOliretLirnDzl8:return DkIO:return 0x08:returnDxH2;break;Qx03;break;0x04;break;0x05;break; DzD6;break;0x07;break;DxOS;break;Dx09;break:0x0a;breakDxOb»break;DxOc;break; OxOd;break

15、; OacOe; break;工皂匸urn Oxf f ;void rain ()unsigned char irkey? send(RESET);while(1|学习-好资料更多精品文档if (I KEY) /ZfeiiijEl .3.- 为低电平(key=keyscaii();"将擁盘扫描Jff柯ttUNt给妊丫 flecid(RL):wrie(DEC0DE1,key);while (!KEY>;"当P丄.3 口为低电平.循环执存|1四、实验源程序实验1#in clude<reg52.h>#defi ne uint un sig ned int#def

16、i ne uchar un sig ned char sbit bell=P3A1;sbit led=P3A0;sbit keyO=P3A2;uint count;void delay( uint count)uint x,y;for(x=co un t;x>0;x-) for(y=110;y>0;y-);void show( uint count) uint i;for(i=O;i<=co un t;i+)led=0;bell=0;delay(500);led=1;bell=1;delay(500);/P3.1/P3.0/P3.2/口位赋值给铃声 口位赋值给灯 口位赋值给按

17、键延时1ms灯亮,铃响延时0.5s灯灭,铃不响void s_timerO() interrupt 0 using 0EA=0;/show(co un t);/coun t+;delay(50);if(cou nt>=10)coun t=0;EA=1;/屏蔽所有中断请求调用子程序开放中断void mai n() EA=1;/开放中断EX0=1;/允许外部中断0中断IT0=0;/外部中断0为电平触发方式while(1);/循环执行主程序实验2#in clude<reg51.h>#i nclude<stdio.h>#in clude <absacc.h>#d

18、efi ne uchar un sig ned char#defi ne uint un sig ned int#define PA XBYTE0x7FFC#defi ne COM XBYTE0x7FFF sbit P30=P3A0;sbit P31=P3A1;uint temp,shi,ge,t;/CS-A15uchar a;void xia nshi( uint temp);void delay();void delays();void ini t_8255();void ini t_8255()COM=0x80;void delay()uint i,j;for( i=500;i>0

19、;i-)for(j=120;j>0;j-);void delays()uint i,j;for(i=1000;i>0;i-) for(j=120;j>0;j-);/*/c = out, a = out,b/延时500MS子程序/延时1S子程序=out主程序void mai n()ini t_8255();TMOD=0x01;/EA=1;/ET0=1;/TF0=0;/设定工作模式1开放中断允许T0中断定时器0溢出标志位while(1)a=0x26;/for(temp=25;temp>19;temp-) a=a-1;PA=0x69;/xia nshi(a);/delays(

20、);/a=0x1a;/变量a赋初值/绿灯倒计时25sfor(temp=19;temp>9;temp-)a=a-1;PA=0x69;/xia nshi(a);delays();a=0x0a;for(temp=9;temp>0;temp-) a=a-1;PA=0x69;xia nshi(a);delays();for(t=5;t>0;t-)/a=0;/xia nshi(a);PA=0xeb;东西绿灯亮调用数码管显示子程序延时1s变量a赋值/倒计时东西绿灯亮绿灯闪烁5s当计时值为0时闪烁/东西绿灯灭delay();/PA=0x69;/delay();/a=0x26;for(temp

21、=25;temp>19;temp-) /a=a-1;PA=0x96 ;/xia nshi(a);delays();a=0x1a;for(temp=19;temp>9;temp-)a=a-1;PA=0x96;xia nshi(a);delays();a=0x0a;for(temp=9;temp>0;temp-)a=a-1;PA=0x96;xia nshi(a);delays();for(t=5;t>0;t-)/延时0.5s东西绿灯亮延时0.5s绿灯倒计时25s南北绿灯亮绿灯闪烁5s*I复位指令左移指令译码方式1读键盘指令长延时子程序void ldelay()II25usa

22、=0;II当计时值为0时闪烁xia nshi(a);PA=0xbe;II南北绿灯灭delay();II延时 0.5sPA=0x96;II南北绿灯亮delay();II延时 0.5svoid xia nshi( uint a)SC0N=0x00;II显示子程序II工作模式0SBUF=a;II将变量a的值送给缓存寄存器while(!TI)II等彳寸发送疋否兀成TI=0;II中断标志位清零实验3#in clude<reg51.h> #i nclude<stdio.h>sbit CS=P1A0;II cs at P1.0sbit CLK=P1A1;II clk连接于P1.1sb

23、it DATA=P1A2;II dat连接于P1.2sbit KEY=P1A3;II key连接于P1.3II* HD7279A#defi ne RESET 0xa4II#defi ne RL 0xa1II#defi ne DEC0DE1 0xc8II#defi ne READ 0x15IIun sig ned char a,b;for(b=1;b>0;b-)for(a=20;a>0;a-);短延时子程序void sdelay()un sig ned char a; for(a=3;a>0;a-);void send(un sig ned char out)/un sig n

24、ed char i;CS=0;/ldelay();/for(i=0;i<8;i+)/if(out&0x80)/DATA=1;else DATA=0;CLK=1;sdelay();CLK=0;sdelay();out=out<<1;/DATA=0;发送一个字节芯片使能长延时分8次移入数据先传高位数据左移void write( un sig ned char comma nd,un sig ned char dat) sen d(comma nd);sen d(dat);un sig ned char receive()/un sig ned char i,i nbyte;ldelay();/for(i=0;i<8;i+)/CLK=1;sdelay();in byte=in byte<<1; if(DATA)in byte=i nbyte|0x01;/接收一个字节长延时分8次读入数据数据左移高位在前CL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论