网站大量收购独家精品文档,联系QQ:2885784924

第3章 C51门例题.doc

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

第3章 51单片机入门实验 本章的实验都是简单C语言程序,实验中没有复杂的C语言语法与难以理解的数据结构,因此特别适合入门学习C语言。 本章所有实验都在实验板上实验过,实验用51单片机电路板的接线图如图3-1所示。 图3-1 实验电路接线图 图中单片机为AT89S51或是STC89C51RC,其P0、P1口连接共阳极数码管,P2口连接8个低电平有效的LED灯(发光二极管),P3口连接8个低电平有效的按钮。若是采用STC89C51RC单片机,由于ISP需要占用串行口,若是不切换引脚,则与P3.0和P3.1相连的按钮不能使用。若是采用AT89S51,由于SPI编程需要P1.5、P1.6和P1.7引脚通信,所以编程后,需要切换引脚,才能使P1口连接的数码管正常显示。 3.1 简单C51实验 [实验3-1] 如下程序实现流水灯的方法是,依次灭掉前一个灯,然后点亮后一个灯,再延时一会,不断循环,就可以看到流水灯的效果了。本实验使用P2.0~P2.3引脚。 源程序如下: #include AT89X51.H //头文件 void main(void) // 主程序 { unsigned int n; while(1) { P2_3=1;P2_0=0; //灭掉P2_3,点亮P2_0=0 for(n=0;n20000;n++); //循环延时 P2_0=1;P2_1=0; //灭掉P2_0,点亮P2_1=0 for(n=0;n20000;n++); //循环延时 P2_1=1;P2_2=0; //灭掉P2_1,点亮P2_2=0 for(n=0;n20000;n++); //循环延时 P2_2=1;P2_3=0; //灭掉P2_2,点亮P2_3=0 for(n=0;n20000;n++); //循环延时 }} [实验3-2] 花样LED灯闪烁。 在表格中预先存入LED灯的各种闪烁组合,然后利用查表读出表格中的数据,并输出到P2口,这种方法经常用于霓虹灯的控制。 源程序如下: #include AT89X51.H void main(void) { const unsigned char design[32]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF, 0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0, 0xE7,0xDB,0xBD,0x7E,0xFF}; //定义花样数据 unsigned int a; //定义循环用的变量 unsigned char b; //因内存有限,在C51编程中要注意变量类型的使用 do{ //do while型循环 for (b=0; b32; b++) { for(a=0; a30000; a++); //延时一段时间 P2 = design[b]; //读已经定义的花样数据并写花样数据到P2口 } } while(1); } [实验3-3] 调用延时函数的流水灯程序。 如下程序中将延时循环语句单独编写成延时函数,并利用循环移位指令实现P2口的流水灯的流动。 源程序如下: #include reg51.h //通用51头文件 #include intrins.h //C51函数库,具有移位函数 #define uchar unsigned char //重新定义unsigned char类型名为uchar #define uint unsigned int //重新定义unsigned int类型名为uint void mDelay(unsigned int Delay) //具有延时参数的延时函数 {unsigned int i; for(;Delay0;Delay--) {for(i=0;i124;i++);} } void main() //主函数 { unsigned char OutData=0xfe; //定义输出数据与初值 for(;;) //无限

文档评论(0)

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

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

1亿VIP精品文档

相关文档