单片机基本程序.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机基本程序

目录 实验一 流水灯实验 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 实验十六 单片机播放音乐实验 60 实验一 流水灯实验 一、 实验目的与要求 认识AT89系列单片机的硬件电路; 学习延时子程序的编写和使用; 学习循环左移或右移指令的使用; 学习单片机程序烧录的基本过程和操作; 了解单片机的开发过程; 二、 实验设备 计算机 编程器 目标板 单片机AT89S51 三、 实验原理电路 由于P1口内部已有上拉电阻,在使用时不需要外接上拉电阻。如果用P1口控制发光二极管的阴极,则可以不需要驱动电路,直接由限流电阻控制发光二极管的亮度。 实验电路如下: 四、 实验内容与步骤 编写程序,使LED1——LED8顺序点亮; 编写源程序并下装到AT89S51单片机,观察发光二极管的点亮效果; 改变延时时间常数,重复上述步骤。 五、 实验报告要求 计算上图中单片机的振荡周期及机器周期; 列出程序清单; 实验板连接 将P1^0到P1^7分别与白色LED对应的8个排针相连接,JP8短接。 流程图 参考程序: #includereg51.h #includeintrins.h void 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; 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--); } 实验二 键盘处理程序的设计 一、 实验目的与要求 了解矩阵式键盘的结构及驱动程序的编写方法; 学习应用查询法和中断法实现键盘的处理; 二、 实验设备 计算机 编程器 目标板 单片机AT89S51 三、 实验原理电路 实验电路如下图所示。 目标板上仅有两个按键S1和S2,分别接到P3.6和P3.7引脚。在处理按键时,采用查询方式判断是否有键按下,并进行按键消抖处理。(若将S1、S2接在外部中断0和外部中断1引脚上,则可以采用中断方式) 四、 实验内容与步骤 按下S1键时,按LED1——LED8的顺序逐一点亮发光二极管; 按下S2键时,按LED8——LED1的顺序逐一点亮发光二极管; 五、 实验报告要求 画出程序流程图; 列出程序清单; 实验板连接 将我宏定义中P3.6和P3.7连接流水灯模块的按钮旁边排针,按钮是接地的。 流程图 参考程序: #includereg51.h #includeintrins.h sbit D0=P3^6; sbit D1=P3^7; 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=2; } else key=0; switch(key)

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档