单片机编程培训_第1页
单片机编程培训_第2页
单片机编程培训_第3页
单片机编程培训_第4页
单片机编程培训_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机编编程培训训(可用CC语言/汇编语语言)要求:每每周做一一个实验验(共六六周),做完后要写好实验总结(侧重于对实验内容的认识与心得)并提交。实验有用编程软件(如KEIL)做,然后用仿真软件(如proteus)或单片机(如情况允许)调试仿真;实验要自己独立完成,可参考一些例程。I/0口口控制:P1口口接八个个独立按按键,PP3口接接八个LLED灯灯。当PP1口有有按键按按下时,PP3口对对应的灯灯亮。流水灯:循环控控制八个个LEDD灯。数码管动动态扫描描:八个个数码管管,每位位显示不不同的数数字。独立按键键与数码码管显示示:对若若干个独独立按键键赋予不不同的数数值,当当键盘按按下时,数数码

2、管显显示数字字。矩阵键盘盘:掌握握行列扫扫描方法法,和去去抖方法法;定时器/中断:主程序:自己设设计(如如点亮LLED11灯);定时器00中断程程序:自自己设计计(如主主程序的的LEDD1灯熄灭灭,点亮亮另外一一盏LEED2灯灯。);要求中断断过后(LLED22灯灭),主主程序正正常执行行(LEED1灯灯亮);02.点点亮P11口的一一个灯03. IO口口信号输输入whille (1) P11=P33; 04.IIO读写写操作程程序按下P33口的按按键,PP1显示示相应的的位置#inccluddesbitt KEEY = P330;/定定义按键键的接口口sbitt LEED = P110;/定

3、定义灯的的接口voidd maain (vooid)P1 = 0 xxFF; /所有有的灯灭灭whille (1) LEED = KEEY; /灯灯的状态态由按键键的状态态决定 05.流流水灯#inccludde voidd deelayy(unnsiggnedd innt ccnt) whiile(-ccnt);mainn() P1=0 xffe; /给初始始化值 换算成成二进制制是11111 11110 whiile(1) dellay(30000);/延延时程序序 P1=11; /左移一一位 该该语句等等效于 P1=P11 P1|=0 xx01; /最后一一位补11,该语语句等效效于 P

4、P1=PP1|00 x011 符号号|表示或 if(P1=0 xx7f) /检检测是否否移到最最左端?=表示示检测符符号2端端的值是是否相等等 deelayy(3000000); P11=0 xxfe; /重新赋赋值 06./按下下P3口口的按键键,P11显示相相应的位位置,IIO读写写操作程程序sfr P1 = 00 x900; /* SSFR deffiniitioon ffor Porrt 11 */sfr P3 = 00 xB00; /* SSFR deffiniitioon ffor Porrt 33 */voidd maain (vooid)unsiigneed ccharr pv

5、val; P1 = 0 xxFF; whille (1) pvval = PP3; /* RReadd P11 innto pvaal */ P11 = pvaal; /* WWritte ppvall too P33 */ 08.数数码管动动态扫描描#inccluddeUnsiigneed ccharr coonstt dooflyy=0 xx3f,00 x066,0 xx5b,0 x44f,00 x666,0 xx6d,0 x77d,00 x077,0 xx7f,00 x6ff;/ 显显示段码码值01123445677unsiigneed ccharr coode segg=0,1,22,

6、3,4,55,6,7;/分分别对应应相应的的数码管管点亮,即位码码voidd deelayy(unnsiggnedd innt ccnt) whiile(-ccnt);mainn() unssignned chaar ii; whiile(1) P0=dofflyi;/取取显示数数据,段段码 P2=seggi; /取取位码 dellay(2000); /扫扫描间隙隙延时,时时间太长长会闪烁烁,太短短会造成成重影 i+; if(8=i) /检检测8位位扫描完完全? ii=0; 11.独独立按键键 内容容:切换换到独立立按键模模式,通通过按键键在数码码管显示示对应的的数字#inccluddesbi

7、tt keey1=P30; /定义义按键位位置sbitt keey2=P31;sbitt keey3=P32;sbitt keey4=P33;voidd deelayy(unnsiggnedd innt ccnt) whiile(-ccnt);mainn() P2=0 x000; whiile(1) iif(!keyy1) /按下相相应的按按键,数数码管显显示相应应的码值值 PP0=00 x066;/数码管管显示1 iif(!keyy2) PP0=00 x5BB;/2 iif(!keyy3) PP0=00 x4FF;/3 iif(!keyy4) PP0=00 x666;/4 /如果果有干扰扰请

8、加去去抖程序序/红外外接收头头部分用用黑色物物质遮光光,防止止干扰按按键,因因为红外外接收和和按键使使用同一一个端口口15.去去抖独立按键键#inccluddesbbit keyy1=PP300; /定义按按键位置置sbitt keey2=P31;sbitt keey3=P32;sbitt keey4=P33;voidd deelayy(unnsiggnedd innt ccnt) whiile(-ccnt);mainn() P2=0 x000; whiile(1) iif(!keyy1) /按下下相应的的按键,数数码管显显示相应应的码值值 ddelaay(110000); iif(!keyy

9、1) P00=0 xx06;/数数码管显显示11 iif(!keyy2) /按下下相应的的按键,数数码管显显示相应应的码值值 ddelaay(110000);/去抖抖动 iif(!keyy2) /检测测按键确确实按下下,进行行按键处处理 P00=0 xx5B;/数数码管显显示22 /这里可可以添加加按键按按下所需需要的操操作,如如数据加加减乘除除,蜂鸣鸣器等设设备开关关 iif(!keyy3) /按下下相应的的按键,数数码管显显示相应应的码值值 ddelaay(110000); iif(!keyy3) P00=0 xx4F;/数码码管显示示3 iif(!keyy4) /按下下相应的的按键,数数

10、码管显显示相应应的码值值 ddelaay(110000); iif(!keyy4) P00=0 xx66;/数数码管显显示44 矩阵键盘盘/行列列扫描程程序,可可以自己己定义端端口和扫扫描方式式,这里里做简单单介绍#inccludde /包含含头文件件#deffinee uccharr unnsiggnedd chhar#deffinee uiint unnsiggnedd inntunsiigneed ccharr coonstt dooflyy=0 xx3f,00 x066,0 xx5b,0 x44f,00 x666,0 xx6d,0 x77d,00 x077,0 xx7f,00 x6ff

11、, 0 xx77,0 x77c,00 x399,0 xx5e,0 x779,00 x711;/0-Fuchaar kkeysscann(vooid);voidd deelayy(uiint i);voidd maain() uchhar keyy; P2=0 x000;/1数数码管亮亮 按相相应的按按键,会会显示按按键上的的字符 whiile(1) keyy=keeysccan();/调用用键盘扫扫描, swiitchh(keey) caase 0 x77e:PP0=ddoflly00;bbreaak;/0 按下相相应的键键显示相相对应的的码值 caase 0 x77d:PP0=ddoflly

12、11;bbreaak;/1 caase 0 x77b:PP0=ddoflly22;bbreaak;/2 caase 0 x777:PP0=ddoflly33;bbreaak;/3 caase 0 xbbe:PP0=ddoflly44;bbreaak;/4 caase 0 xbbd:PP0=ddoflly55;bbreaak;/5 caase 0 xbbb:PP0=ddoflly66;bbreaak;/6 caase 0 xbb7:PP0=ddoflly77;bbreaak;/7 caase 0 xdde:PP0=ddoflly88;bbreaak;/8 caase 0 xddd:PP0=ddo

13、flly99;bbreaak;/9 caase 0 xddb:PP0=ddoflly110;breeak;/aa caase 0 xdd7:PP0=ddoflly111;breeak;/bb caase 0 xeee:PP0=ddoflly112;breeak;/cc caase 0 xeed:PP0=ddoflly113;breeak;/dd caase 0 xeeb:PP0=ddoflly114;breeak;/ee caase 0 xee7:PP0=ddoflly115;breeak;/ff uchaar kkeysscann(vooid)/键键盘扫描描函数,使使用行列列反转扫扫描法 u

14、chhar corrd_hh,coord_l;/行列列值 P3=0 x00f; /行线线输出全全为0 corrd_hh=P33&0 xx0f; /读入列列线值 if(corrd_hh!=00 x0ff) /先检检测有无无按键按按下 deelayy(1000); /去抖抖 iff(coord_h!=0 x00f) corrd_hh=P33&0 xx0f; /读入列列线值 P3=corrd_hh|0 xxf0; /输出出当前列列线值 corrd_ll=P33&0 xxf0; /读入入行线值值 retturnn(coord_h+ccordd_l);/键盘最最后组合合码值 rretuurn(0 xff

15、f); /返回回该值voidd deelayy(uiint i)/延时时函数whille(ii-);16.定定时器00*Thiis ssampple is useed ffor Timmer00 166bitt tiimerr moode.#inccluddesbitt LEED=PP122;voidd Innit_Timmer00(vooid) TMOOD |= 00 x011; TH00=0 xx00; /* Innit vallue */ TL00=0 xx00; EA=1; /* intteruupt enaablee */ET0=1; /* enaablee tiimerr0 iin

16、teerruupt */ TR00=1; mainn() Iniit_TTimeer0(); whiile(1);voidd Tiimerr0_iisr(voiid) intterrruptt 1 usiing 1 TH00=0 xx00;/* Iniit vvaluue */ TL00=0 xx00; LEDD=LLED;/指指示灯反反相17.定定时器11 *Thhis sammplee iss ussed forr Tiimerr1 116biit ttimeer mmodee.#inccluddesbitt LEED=PP122;voidd Innit_Timmer11(vooid) T

17、MOOD |= 00 x100; TH11=0 xx00; /* Iniit vvaluue */ TL11=0 xx00; EA=1; /* innterruptt ennablle */ET1=1; /* enaablee tiimerr1 iinteerruupt */ TR11=1; mainn() Iniit_TTimeer1(); whiile(1);voidd Tiimerr1_iisr(voiid) intterrruptt 3 usiing 1 TH11=0 xx00;/* Iniit vvaluue */ TL11=0 xx00; LEDD=LLED;20.外部中断断0电平

18、平触发 内容容:通过过中断接接口P33.2连连接的独独立按键键测试,按按一次PP1口的的LEDD灯反向向, 这里里使用电电平触发发,所以以一直按按键不松松开和一一次按键键效果不不相同,按按下会看看到灯全全部亮,说明中中断一直直在作用用#inccludde mainn() P11=0 xx55; /P1口口初始值值 EAA=1; /全局中中断开 EXX0=11; /外部中中断0开开 ITT0=00; /电平触触发 whhilee(1) /在此添添加其他他程序 外部部中断程程序voidd ISSR_KKey(voiid) intterrruptt 0 usiing 1 P1=P11; 23.外外部中断断0边沿沿触发 内容容:通过过中断接接口P33.2连连接的独独立按键键测试

温馨提示

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

最新文档

评论

0/150

提交评论