- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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(;;) //无限
您可能关注的文档
- 第2章自然环境的物质运动和能量交换(复习).doc
- 第2节 细胞多样性和统一性修改稿.doc
- 第2节 二力平教案.doc
- 第2节 生活中透镜.doc
- 第2节 细胞的化教学设计.doc
- 第2讲 拉第电磁感应定律 自感.doc
- 第2讲 拉杆的内力和应力.doc
- 第2讲 热力第一定律.doc
- 第2讲 二力平的条件.doc
- 第2讲牛顿第二律及应用.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)