ImageVerifierCode 换一换
格式:DOCX , 页数:3 ,大小:16.48KB ,
资源ID:7199746      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7199746.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机实验.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机实验.docx

1、单片机实验单片机实验实验一 如图1-1所示,利用AT89C51单片机的P1口外接8个发光二极管,实现流水灯效果。 图1-1 实验一仿真电路图 #include unsigned char LEDTAB= 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F ; void Delay(void) unsigned char i,j,k; for(i=10;i0;i-)for(j=100;j0;j-)for(k=200;k0;k-); void main(void) unsigned char i; while(1) for(i=0;i P1=LEDTABi;Delay(

2、); 实验二 1、 如图2-1所示,利用AT89C51单片机的P2端口外接一位共阴LED数码管,实现在LED数码管上轮流显示09。 图2-1 数码管显示实验内容1仿真电路图 #include unsigned char SEGTAB= 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F ; void Delay(void) unsigned char i,j,k; for(i=10;i0;i-)for(j=100;j0;j-)for(k=200;k0;k-); void main(void) unsigned char i;while (1) f

3、or(i=0;iDelay(); 2、 如图2-2所示,利用AT89C51单片机的P2和P0端口分别驱动2位共阴LED数码管的笔段和位选段,利用动态显示原理实现LED数码管上显示0099的自动计数加1数值。 图2-2数码管显示实验内容2仿真电路图 #include unsigned char SEGTAB= 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F ; unsigned char DIGTAB= 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F ; unsigned char LEDBuffer2; uns

4、igned char LEDPointer; void Delay(void) unsigned char i,j;for(i=10;i0;i-) for(j=100;j0;j-); void main(void) unsigned char Cnt=0; unsigned char msCnt=0; while(1) P2=SEGTABLEDBufferLEDPointer;P0=DIGTABLEDPointer; if (+LEDPointer=sizeof(LEDBuffer)LEDPointer=0;Delay(); if (+msCnt=200) msCnt=0;if(+Cnt=10

5、0)Cnt=0;LEDBuffer0=Cnt_;LEDBuffer1=Cnt/10; 实验三 如图3-1所示,利用AT89C51单片机的P3口外接一个4X4矩阵键盘,矩阵键盘的4根行线分别连接在引脚上,4根列线分别连接在引脚上。AT89C51单片机的P2驱动一个8位共阴LED数码管,实现在矩阵键盘的16个按键识别,并将对应的按键编号显示在LED数码管上。 图3-1 矩阵键盘实验内容1仿真原理图 #include unsigned char SEGTAB = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E

6、,0x79,0x71, ; unsigned char KEYTAB = 0xEE,0xED,0xEB,0xE7, 0xDE,0xDD,0xDB,0xD7, 0xBE,0xBD,0xBB,0xB7, 0x7E,0x7D,0x7B,0x77, ; void Delay10mS(void) unsigned char i,j; for(i=10;i0;i-)for(j=100;j0;j-); void main(void) unsigned char KeyValue; unsigned char i,temp; while (1) P3=0xF0; if(0xF0!=(P3&0xF0) Dela

7、y10mS();if(0xF0!=(P3&0xF0)temp=P3&0xF0;P3=0x0F;temp|=(P3&0x0F);for (i=0;i实验四 1、 如图4-1所示,利用AT89C51单片机的引脚外接一个轻触按钮“BUTTON”,用中断方式实现按键计数加1,并通过P2和P0端口驱动的两个共阴LED数码管显示0099的计数值。其中P2端口驱动显示数字的十位数,P0端口驱动显示数字的个位数。 图4-1 #include unsigned char SEGTAB = 0x3F,0x06,0x5B,0x4F, 0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,

8、 0x39,0x5E,0x79,0x71, ; unsigned char KeyCnt=0; void main(void) P2=SEGTABKeyCnt/10; P0=SEGTABKeyCnt_; IT0=1; EX0=1; EA=1; while(1) ; void INT0_ISR(void) interrupt 0 if(0=P3_2) 实验内容1仿真电路图 if(+KeyCnt=100)KeyCnt=0; P2=SEGTABKeyCnt/10; P0=SEGTABKeyCnt_; 2、 如图4-2所示,利用AT89C51单片机的P1端口外接8个LED发光二极管,实现流水灯,流水灯

9、的速度为1秒之间可调,步进为,外接在和引脚上的两个轻触开关实现调慢和调快功能,速度的档位通过P2端口外接的一个8位共阴LED数码管显示。 #include unsigned char LEDTAB = 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, ; unsigned char SEGTAB = 0x3F,0x06,0x5B,0x4F,0x66,0X6D,0x7D,0x07,0x7F,0x6F, ; void Delay10mS(unsigned char t) unsigned char i,j;do for(i=100;i0;i-) for(j=100;

10、j0;j-); while(-t); unsigned char Speed = 20; void main(void) unsigned char i; P2=SEGTABSpeed/20; IT0=1; EX0=1; IT1=1; EX1=1; EA=1; while(1) for(i=0;ivoid INT0_ISR(void) interrupt 0 if(0=P3_2) Speed+=20; if(Speed100)Speed=100; P2=SEGTABSpeed/20; void INT1_ISR(void) interrupt 2 if(0=P3_3) Speed-=20; i

11、f(Speed实验五 1、 如图5-1所示,利用AT89C51单片机的定时器T0产生1KHz的方波信号引脚输出,通过连接到“OSCILLOSCOPE”虚拟示波器上查看显示的波形图。 #include void main(void) TMOD |= 0x01; TH0=(65536-500)/256; TL0=(65536-500)%6; TR0=1; while(1) if(1=TF0) TF0=0;TH0=(65536-500)/256;TL0=(65536-500)%6;P3_7=P3_7; 2、 如图5-2所示,利用AT89C51单片机的定时器T0产生1ms的动态数码管显示扫描时间,驱动

12、接在P2和P0端口上的4位共阴LED数码管,其中P2用于驱动共阴LED数码管的笔段AH,P0用于驱动共阴LED数码管的位选端;采用定时器T0的溢出中断实现1ms定时。数码上显示自己的班号和学号的后2位数字,显示方式为“X-YY”,X为班号,YY为学号。并且显示的“-”闪烁频率为秒。 #include unsigned char SEGTAB = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, ; unsigned char DIGTAB = 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, ; unsigne

13、d char LEDBuffer2; unsigned char LEDPointer; void Delay(void) unsigned char i,j;for(i=10;i0;i-) for(j=100;j0;j-); void INT0_ISR(void) interrupt 0 if(0=P3_2) P2=SEGTABLEDBufferLEDPointer;P0=DIGTABLEDPointer; void main(void) unsigned char Cnt=99; unsigned char msCnt=0; LEDBuffer0=Cnt_; LEDBuffer1=Cnt/

14、10; IT0=1; EX0=1; EA=1; while(1) P2=SEGTABLEDBufferLEDPointer;P0=DIGTABLEDPointer;if (+LEDPointer=sizeof(LEDBuffer)LEDPointer=0;Delay();if (+msCnt=200) msCnt=0; if(-Cnt=(-1)Cnt=99; LEDBuffer0=Cnt_; LEDBuffer1=Cnt/10; 实验六 1、实验内容1 如图6-1,利用AT89C51单片机的和外接一个74HC164驱动1个8位共阴LED数码管,实现09的轮流显示, #include unsig

15、ned char SEGTAB = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, ; void Delay(void) unsigned char i,j,k; for(i=10;i0;i-)for(j=100;j0;j-)for(k=100;k0;k-); void main (void) unsigned char i; SCON=0x00; while(1)for(i=0;i2、实验内容2 如图6-2,在U1和U2的P1端口分别接一个8位共阴LED数码管,引脚上分别接有一个轻触开关。U1的连接到U2的,U1的连接到U2的,通过串行口

16、进行双机通信,实现在U1上按下按键实现计数加1,通过U2的LED数码管显示,同样U2上按下按键实现计数加1,通过U1的LED数码管显示,双机通信的波特率为9600。 #include unsigned char SEGTAB = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, ; void main(void) unsigned char KeyCnt = 0; PCON |= 0x80; SCON = 0x50; TH1 = 0xFD; TL1 = 0xFD; TR1 = 1; ES = 1; EA = 1; while(1) if(0 = P3_2)if(+KeyCnt = 10)KeyCnt = 0;SBUF = KeyCnt;while(0 = TI);TI = 0;while(0 = P3_2); void Serial_ISR(void) interrupt 4 unsigned char temp; if(1 = RI) RI = 0;temp = SBUF;P1 = SEGTABtemp;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1