资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实验一:流水灯实验一、 实验目的:通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器。二、 实验原理图实验参考电路图如下:三、 参考实验程序/流水灯实验#include /包含单片机寄存器的头文件sfr x=0xb0; /P3口在存储器中的地址是b0H, 通过sfr可定义8051内核单片机 /的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作/*函数功能:延时一段时间*/void delay(void) unsigned char i,j; for(i=0;i250;i+) for(j=0;j250;j+) ; /利用循环等待若干机器周期,从而延时一段时间 /*函数功能:主函数 */void main(void) while(1) x=0xfe; /第一个灯亮 delay(); /调用延时函数 x=0xfd; /第二个灯亮 delay(); /调用延时函数 x=0xfb; /第三个灯亮 delay(); /调用延时函数 x=0xf7; /第四个灯亮 delay(); /调用延时函数x=0xef; /第五个灯亮 delay(); /调用延时函数x=0xdf; /第六个灯亮 delay(); /调用延时函数x=0xbf; /第七个灯亮 delay(); /调用延时函数x=0x7f; /第八个灯亮 delay(); /调用延时函数 四、 实验思考题:修改程序使LED灯为18灯亮27灯亮36灯亮45灯亮,再将LED灯亮的顺序倒过来既:45灯亮36灯亮27灯亮18灯亮,连续运行。调试后的程序代码:实验二:定时器中断实验一、 实验目的:通过使用定时器T0的中断来控制P2.0引脚的的LED的灯闪烁,要求闪烁时间2S,既亮1 S,灭1 S。二、 实验原理图实验参考电路图如下:三、 参考实验程序/用定时器T0的中断实现长时间定时#include / 包含51单片机寄存器定义的头文件sbit D1=P20; /将D1位定义为P2.0引脚unsigned char Countor; /设置全局变量,储存定时器T0中断次数/*函数功能:主函数*/void main(void) EA=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式2TH0=(65536-46083)/256; /定时器T0的高8位赋初值TL0=(65536-46083)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0Countor=0; /从0开始累计中断次数while(1)/无限循环等待中断 ; /*函数功能:定时器T0的中断服务程序*/void Time0(void) interrupt 1 using 0 /“interrupt”声明函数为中断服务函数 /其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器 Countor+; /中断次数自加1if(Countor=20) /若累计满20次,即计时满1s D1=D1; /按位取反操作,将P2.0引脚输出电平取反Countor=0; /将Countor清0,重新从0开始计数 TH0=(65536-46083)/256; /定时器T0的高8位重新赋初值TL0=(65536-46083)%256; /定时器T0的高8位重新赋初值 四、 实验思考题:修改程序使用定时器T1的中断方式来控制P2.0 、P2.1引脚的LED灯分别以200mshe 800ms的周期闪烁调试后的程序代码:实验三:串行口实验一、 实验目的:本实验要求单片机U1通过其串行口TXD向计算机发送一个数据“oxab”。利用集成电路MAX232将单片机的输出信号转化成计算机能够识别的信号。针对发送的实例,再设计一个单片机接受计算机送出数据的过程二、 实验原理图单片机发送数据实验参考电路图如图(1):图(1)单片机接受数据实验参考电路图如下:图(2)三、 参考实验程序/单片机向PC发送数据#include /包含单片机寄存器的头文件unsigned char code Tab =0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F;/流水灯控制码,该数组被定义为全局变量/*函数功能:向PC发送一个字节数据*/void Send(unsigned char dat) SBUF=dat; while(TI=0) ; TI=0;/*函数功能:延时约150ms*/ void delay(void) unsigned char m,n; for(m=0;m200;m+) for(n=0;n250;n+) ; /*函数功能:主函数*/void main(void) unsigned char i; TMOD=0x20; /TMOD=0010 0000B,定时器T1工作于方式2 SCON=0x40; /SCON=0100 0000B,串口工作方式1 PCON=0x00; /PCON=0000 0000B,波特率9600 TH1=0xfd; /根据规定给定时器T1赋初值 TL1=0xfd; /根据规定给定时器T1赋初值 TR1=1; /启动定时器T1 while(1) for(i=0;i8;i+) /模拟检测数据 Send(Tabi); /发送数据i delay(); /150ms发送一次数据 四、 实验思考题:根据参考原理图图(2)再设计一个单片机接受计算机送出数据的过程。调试后的程序代码: 实验四:数码秒表设计(LED)一、 实验目的:设计一个数码秒表,要求采用DS2和DS3两个数码管分别显示秒表的个位和十位。显示时间为059秒。满60秒时秒表自动清零,重新计时。二、 实验原理图实验参考电路图如下:三、 参考实验程序/数码秒表设计#include / 包含51单片机寄存器定义的头文件unsigned char code tab10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /数码管显示09的段码表unsigned char countor,second; /设置全局变量,储存定时器T0中断次数/*函数功能:主函数*/void delay(void) unsigned char i; for(i=0;i250;i+) ;/*函数功能:显示秒入口参数:k出口参数:无*/ void DisplaySecond(unsigned char k) P3=0x04; /00000100 P2=tabk/10; /显示十位 delay(); P3=0x08; /00001000 P2=tabk%10; /显示个位delay(); /关闭所有数码管void main(void) EA=1; /开总中断ET0=1; /定时器T0中断允许
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号