51单片机C语言程序设计源代码.docx

上传人:11****ws 文档编号:2122138 上传时间:2019-04-29 格式:DOCX 页数:281 大小:132.57KB
下载 相关 举报
51单片机C语言程序设计源代码.docx_第1页
第1页 / 共281页
51单片机C语言程序设计源代码.docx_第2页
第2页 / 共281页
51单片机C语言程序设计源代码.docx_第3页
第3页 / 共281页
51单片机C语言程序设计源代码.docx_第4页
第4页 / 共281页
51单片机C语言程序设计源代码.docx_第5页
第5页 / 共281页
点击查看更多>>
资源描述

1、2019-4-29- 1 -51 单片机 C 语言教程例 2.2.1 编写程序,点亮第一个发光二极管(part2_1.c P27)#include /52 系列单片机头文件sbit led1=P10; /声明单片机 P1 口的第一位void main() /主函数led1=0; /*点亮第一个发光二极管*/例 2.2.2 编写程序,点亮 P1 口的若干二极管(part2_2.c P39)#include /52 系列单片机头文件void main() /主函数P1=0xaa;/while(1);例 2.5.1 利用 for 语句延时特性,编写第一个发光二极管以间隔 1S亮灭闪动的程序(part

2、2_3.c P42 )#include /52 系列单片机头文件#define uint unsigned int /宏定义sbit led1=P10; /声明单片机 P1 口的第一位2019-4-29- 2 -uint i,j;void main() /主函数while(1) /大循环led1=0; /*点亮第一个发光二极管*/for(i=1;i0;i-) /延时for(j=110;j0;j-);led1=1; /*关闭第一个发光二极管*/for(i=1000;i0;i-) /延时for(j=110;j0;j-);例 2.6.1 编写程序使第一个发光二极管以间隔 500ms 亮灭闪动。(pa

3、rt2_4.c P48)#include /52 系列单片机头文件#define uint unsigned int /宏定义sbit led1=P10; /声明单片机 P1 口的第一位void delay1s(); /声明子函数2019-4-29- 3 -void main() /主函数while(1) /大循环led1=0; /*点亮第一个发光二极管*/delay1s(); /调用延时子函数led1=1; /*关闭第一个发光二极管*/delay1s(); /调用延时子函数void delay1s() /子函数体uint i,j;for(i=500;i0;i-)for(j=110;j0;j-

4、);例 2.7.1 编写程序使第一个二极管以亮 200ms、灭 800ms 的方式闪动。(part2_5.c P49)#include /52 系列单片机头文件#define uint unsigned int /宏定义sbit led1=P10; /声明单片机 P1 口的第一位2019-4-29- 4 -void delayms(uint); /声明子函数void main() /主函数while(1) /大循环led1=0; /*点亮第一个发光二极管*/delayms(200); /延时 200 毫秒led1=1; /*关闭第一个发光二极管*/delayms(800); /延时 800 毫

5、秒void delayms(uint xms)uint i,j;for(i=xms;i0;i-) /i=xms 即延时约 xms 毫秒for(j=110;j0;j-);例 2.8.3 利用 C51 自带库_crol_(),以间隔 500ms,实现流水灯程序(part2_6.c P53)#include /52 系列单片机头文件#include #define uint unsigned int /宏定义2019-4-29- 5 -#define uchar unsigned charvoid delayms(uint); /声明子函数uchar aa;void main() /主函数aa=0x

6、fe; /赋初值 11111110 while(1) /大循环P1=aa;delayms(500); /延时 500 毫秒aa=_crol_(aa,1); /将 aa 循环左移 1 位后再赋给 aavoid delayms(uint xms)uint i,j;for(i=xms;i0;i-) /i=xms 即延时约 xms 毫秒for(j=110;j0;j-);2019-4-29- 6 -例 3.2.1 编写程序使第一个数码管显示 8(part2.1_.1c P59)#include /52 系列单片机头文件sbit dula=P26; /申明 U1 锁存器的锁存端sbit wela=P27;

7、 /申明 U2 锁存器的锁存端void main()wela=1; /打开 U2 锁存器P0=0xFE; /送入位选信号wela=0; /关闭 U2 锁存器dula=1; /打开 U1 锁存器P0=0x7F; /送入段选信号dula=0; /关闭 U2 锁存器while(1); /程序停止到这里例 3.2.2 让实验板上 6 个数码管同时点亮,依次显示 0 到 F,时间间隔为 0.5ms,循环下去。 (part2.1_2.c P61)#include /52 系列单片机头文件#define uchar unsigned char#define uint unsigned int2019-4-2

8、9- 7 -sbit dula=P26; /申明 U1 锁存器的锁存端sbit wela=P27; /申明 U2 锁存器的锁存端uchar num;unchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delayms(uint);void main()wela=1; /打开 U2 锁存端P0=0xco;/送入位选信号wela=0; /关闭 U2 锁存端while(1)for(num=0;num0;i-) /i=xms 即延时约 xms 毫秒fo

9、r(j=110;j0;j-);例 3.3.1 第一个数码管显示 1,时间为 0.5s,然后关闭它,立即让第二个数码管显示 2,时间为 0.5s,在关闭它一直到最后一个数码管显示 6,时间同样为 0.5s,关闭它之后再回来显示第一个数码管,一直循环下去。 (part2.1_3.c P62)例 3.5.2 用定时器 0 的方式 1 实现第一个发光二极管以 200ms 间隔闪烁,用定时器 1 的方式 1 实现数码管前两位 59s 循环计时。(part2.1_5.c P75)2019-4-29- 9 -例 4.1.1 用数码管前两位显示一个十进制数,变化范围为 0059,开始时显示 00,每按下 S2

10、 键一次,数值加 1;每按下 S3 键一次,数值减 1;每按下 S4 键一次,数值归零;按下 S5 键一次,利用定时器功能使数值开始自动每秒加 1,再次按下 S5 键,数值停止加 1,保持显示原数。 (part2.2_1.c P82)#include /52 系列单片机头文件#define uchar unsigned char#define uint unsigned int sbit key1=P34;sbit key2=P35;sbit key3=P36;sbit key4=P37;sbit dula=P26; /申明 U1 锁存器的锁存端sbit wela=P27; /申明 U2 锁存

11、器的锁存端uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delayms(uint);2019-4-29- 10 -uchar numt0,num;void display(uchar numdis) /显示子函数uchar shi,ge; /分离两个分别要显示的数shi=numdis/10;ge=numdis%10;dula=1;P0=tableshi; /送十位段选数据dula=0;P0=0xff; /送位选数据前关闭所有显示,防止打开位选锁存时wela=1; /原来段选数据通过位选锁存器造成混乱P0=0xfe; /送位选数据wela=0;delayms(5); /延时dula=1;P0=tablege; /送个位段选数据dula=0;P0=0xff;wela=1;

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。