单片机基本程序.doc
《单片机基本程序.doc》由会员分享,可在线阅读,更多相关《单片机基本程序.doc(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流单片机基本程序.精品文档.目录实验一 流水灯实验3实验二 键盘处理程序的设计5实验三 数码管显示程序设计8实验四 脉冲计数实验11实验五 单片机串口通信程序设计14实验六 模拟交通灯实验19实验七 A/D转换实验23实验八 D/A转换实验26实验九 矩阵式键盘接口技术实验29实验十 开关量输出接口实验35实验十一 步进电机控制实验37实验十二 单片机与PC机的通信实验40实验十三 8255A并行I/O端口扩充键盘实验43实验十四 温度传感器DS18B20实验45实验十五 LCD12864液晶显示实验(KS0108)51实验十六 单片机播放音乐
2、实验60实验一 流水灯实验一、 实验目的与要求1 认识AT89系列单片机的硬件电路;2 学习延时子程序的编写和使用;3 学习循环左移或右移指令的使用;4 学习单片机程序烧录的基本过程和操作;5 了解单片机的开发过程;二、 实验设备计算机编程器目标板单片机AT89S51三、 实验原理电路由于P1口内部已有上拉电阻,在使用时不需要外接上拉电阻。如果用P1口控制发光二极管的阴极,则可以不需要驱动电路,直接由限流电阻控制发光二极管的亮度。实验电路如下:四、 实验内容与步骤1 编写程序,使LED1LED8顺序点亮;2 编写源程序并下装到AT89S51单片机,观察发光二极管的点亮效果;3 改变延时时间常数
3、,重复上述步骤。五、 实验报告要求1 计算上图中单片机的振荡周期及机器周期;2 列出程序清单;实验板连接将P10到P17分别与白色LED对应的8个排针相连接,JP8短接。流程图开始temp=0xfeP1=temp延时temp=_crol_(temp,1)参考程序:#include#includevoid delay(unsigned int time);/延时子程序void main()unsigned char i,temp;while(1)/*左移*/temp=0xfe;P1=temp;delay(100);for(i=7;i0;i-)temp=_crol_(temp,1);P1=temp
4、;delay(100);/*右移*/temp=0x7f;P1=temp;delay(100);for(i=7;i0;i-)temp=_cror_(temp,1);P1=temp;delay(100);void delay(unsigned int time)unsigned int m,n;for(m=time;time0;time-)for(n=100;n0;n-); 实验二 键盘处理程序的设计一、 实验目的与要求1. 了解矩阵式键盘的结构及驱动程序的编写方法;2. 学习应用查询法和中断法实现键盘的处理;二、 实验设备计算机编程器目标板单片机AT89S51三、 实验原理电路实验电路如下图所示
5、。目标板上仅有两个按键S1和S2,分别接到P3.6和P3.7引脚。在处理按键时,采用查询方式判断是否有键按下,并进行按键消抖处理。(若将S1、S2接在外部中断0和外部中断1引脚上,则可以采用中断方式)四、 实验内容与步骤1. 按下S1键时,按LED1LED8的顺序逐一点亮发光二极管;2. 按下S2键时,按LED8LED1的顺序逐一点亮发光二极管;五、 实验报告要求1. 画出程序流程图;2. 列出程序清单;实验板连接将我宏定义中P3.6和P3.7连接流水灯模块的按钮旁边排针,按钮是接地的。流程图开始temp=0xfeYP36=0?Nkey=1YP37=0?Nkey=2 key=0Ykey=1?N
6、P1=tempNkey=2?Ytemp=_crol_(temp,1)P1=temptemp=_cror_(temp,1)延时参考程序: #include#includesbit D0=P36;sbit D1=P37;unsigned char key,i,temp=0xfe;void delay(unsigned int time)unsigned int m,n;for(m=time;m0;m-)for(n=10;n0;n-);void main()while(1)if(D0=0)delay(1);if(D0=0)key=1;else if(D1=0)delay(1);if(D1=0)key
7、=2;elsekey=0;switch(key)case 1:P1=temp;delay(1000);break;case 2:P1=temp;delay(1000);break;实验三 数码管显示程序设计一、 实验目的与要求1. 认识单片机的数字显示电路结构原理及工作过程;2. 了解静态、动态显示的驱动方法;3. 学习静态、动态显示数字程序的编写及调用方法;二、 实验设备计算机编程器目标板单片机AT89S51三、 实验原理电路实验电路如下图所示。图中,P0.0P0.7分别送出LED的adp显示段码,即字形码;P2口的P2.7P2.2则输出字位码,用来控制在第几位显示。LED为共阳极。四、 实
8、验内容与步骤1. 编写一位数码显示程序(静态);2. 编写多位数码管动态扫描显示;3. 调整显示参数和模式,改变显示效果。五、 实验报告要求1. 列出程序清单。2. 简单说明静态显示与动态显示的特点。实验板连接 将P2口的第四位连接到LED模块中的J15口,将P0口连接到J16上,有时LED会显示乱码,不是程序问题,可能是你的P0接的方向反了。我们做实验时是,P0从低位开始依次在J16口从右向左连接。注意,要将LED显示模块中的JP3短连接上才有效。流程图(静态)开始定义共阳极字码数组tablei=0P1=tableii8?i+静态显示参考程序:#includeUnsigned char co
9、de table016 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共阴unsigned char code table116 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/共阳unsigned char i;void delay(unsigned int time);void main()P0=0x00;while(1)for(i=0;i0;m-)for
10、(n=100;n0;n-);流程图(动态)开始定义共阳极字码数组table定义段选字码数组table0i=0P1=0x00P0=table0iP1=tableii8?i+动态显示参考程序:#includeunsigned char i;unsigned char code table116 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/共阳unsigned char code table04 = 0xfe,0xfd,0xfb,0xf7;void delay(unsigned
11、int time);void main()while(1)for(i=0;i0;m-)for(n=10;n0;n-);实验四 脉冲计数实验一、 实验目的与要求1. 熟悉51单片机定时/计数功能;2. 掌握定时/计数器初始化编程方法。二、 实验设备计算机编程器目标板单片机AT89S51三、 实验原理电路实验电路如下图所示。四、 实验内容与步骤1. 计算定时/计数器定时1s的计数初值;2. 编程实现定时功能:定时1s改变一次led的状态,顺序点亮led1led8;3. 编程实现计数功能:计数器初值为0,并显示在其中一位显示器上,当led1led8循环点亮1遍后,计数器加1,并显示,依次计数到9后,
12、清零,进行下次计数。五、 实验报告要求1. 写出计算初值的过程;2. 列出程序清单;实验板连接将流水灯和动态显示的电路都连接上.参考程序:#include#include#define uint unsigned int#define uchar unsigned charuchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,/数码管显示编码(1-F) 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;uint a,a1,a2,num;void display(uchar a)P0=tablea;P2=0
13、xfe;void main()a=0;EA=1;ET1=1;TMOD=0x10;TH1=(65536-45872)/256;TL1=(65536-45872)%256;TR1=1;num=0;a1=0xfe;a2=1;while(1)display(a);if(num=10)P1=a1;a1=_crol_(a1,1);a2+;num=0; if(a2=9)a2=1;a=a+1;if(a=10)a=0;void time1() interrupt 3TH1=(65536-45872)/256; /50ms定时TL1=(65536-45872)%256;num+;实验五 单片机串口通信程序设计一、
14、 实验目的与要求1. 学习串口工作方式初始化编程;2. 学习单片机与单片机点对点的通信编程方法。二、 实验设备计算机编程器目标板(两块)单片机AT89S51三、 实验原理电路实验电路如下图所示。甲机的串口发送端TXD接到乙机的接收端RXD,而乙机的发送端又接到了甲机的接收端,两机的地线连在一起。四、 实验内容与步骤1. 首先按照图示连线;2. 甲机作为发送端,编写发送程序;3. 乙机作为接收端,编写接收程序;4. 要求用甲机控制乙机,顺序点亮乙机的LED1LED8:乙机LED初始状态为全灭,甲机按键S1按下时,点亮LED1,再按一下点亮LED2,依次类推。五、 实验报告要求1. 分别列出发送、
15、接收程序清单;实验板连接将主机的P3.1连接到从机的P3.0就可以,如果是双机通信,再将从机的P3.1连接到主机的P3.0。流程图(发送)开始串口配置P3.6=0?发送LP3.7=0?发送R发送参考程序:#includesbit S1=P20;sbit S2=P21;void init();void send(unsigned char temp);void delay(unsigned int time);void main()init();S1=1;S2=1;while(1)if(S1=0)delay(1);if(S1=0)send(L);while(S1=0);if(S2=0)delay
16、(1);if(S2=0)send(R);while(S2=0);void init()TMOD=0x20;TH1=0xfd;TL1=0xfd;SCON=0x40;TR1=1;void send(unsigned char temp)SBUF=temp;while(!TI);TI=0;void delay(unsigned int time)unsigned int m,n;for(m=time;m0;m-)for(n=50;n0;n-);流程图(接收)开始串口配置accept0接收数据accept0=Rled右移一位accept0=LLed左移一位接收参考程序:#includevoid ini
17、t();unsigned char accept0,i=8;unsigned char temp=0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff;sbit D0=P20;sbit D1=P21;void main()init();P1=tempi;D0=1;while(1)while(!RI);accept0=SBUF;RI=0;switch(accept0)case R:if(i0)i-;P1=tempi;break;case L:if(i8)i+;P1=tempi;break;void init()TMOD=0x20;SCON=0x50;TH1=0
18、xfd;TL1=0xfd;TR1=1;实验六 模拟交通灯实验一、 实验目的与要求1. 了解中断矢量地址在中断程序中的作用;2. 学习外部中断技术的基本使用方法;3. 学习中断处理程序的编程方法;二、 实验设备计算机、编程器、目标板、单片机AT89S51三、 实验原理电路实验电路如下图所示。本实验是交通灯控制实验,所以需要了解交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒
19、,南北仍然红灯。最后循环至状态1。所设计的交通灯管理系统还要求满足急救车优先通过的要求。若有急救车到达时,两向交通信号为全红,以便让急救车通过。假定急救车通过路口时间为10S,急救车通过后,交通灯恢复中断前状态。该实验中以S1为中断请求,表示有急救车通过。LED资源分配可参考下表,也可以自己定义(报告中程序要与定义的一致)。 灯LED 东西红灯LED1 东西黄灯LED2 东西绿灯LED3 南北红灯LED6 南北黄灯LED7 南北绿灯LED8P1.5P1.4P1.3P1.2P1.1P1.0 P1 端口 数据状态说明东西 红 灯东西黄 灯 东 西 绿 灯南 北红 灯南 北黄 灯南 北 绿 灯110
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 基本 程序
限制150内