已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51单片机50个例程代码 程序里有中断,串口等驱动,直接复制即可使用1-IO输出-点亮1个LED灯方法1/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平-*/#include /包含头文件,一般情况不需要改动, /头文件包含特殊功能寄存器的定义sbit LED=P10;/ 用sbit 关键字 定义 LED到P1.0端口, /LED是自己任意定义且容易记忆的符号/*- 主函数-*/void main (void) /此方法使用bit位对单个端口赋值LED=1; /将P1.0口赋值 1,对外输出高电平LED=0; /将P1.0口赋值 0,对外输出低电平while (1) /主循环 /主循环中添加其他需要一直工作的程序 2-IO输出-点亮1个LED灯方法2/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平-*/#include /包含头文件,一般情况不需要改动, /头文件包含特殊功能寄存器的定义/*- 主函数-*/void main (void) /此方法使用1个字节对单个端口赋值P1 = 0xFF; /P1口全部为高电平,对应的LED灯全灭掉, /ff换算成二进制是 1111 1111P1 = 0xfe; /P1口的最低位点亮,可以更改数值是其他的灯点亮 /0xfe是16进制,0x开头表示16进制数, /fe换算成二进制是 1111 1110 while (1) /主循环 /主循环中添加其他需要一直工作的程序 3-IO输出-点亮多个LED灯方法1/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的多个LED灯 该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平-*/#include /包含头文件,一般情况不需要改动, /头文件包含特殊功能寄存器的定义sbit LED0=P10;/ 用sbit 关键字 定义 LED到P1.0端口,sbit LED1=P11;/LED是自己任意定义且容易记忆的符号sbit LED2=P12;sbit LED3=P13;sbit LED4=P14;sbit LED5=P15;sbit LED6=P16;sbit LED7=P17;/*- 主函数-*/void main (void) /此方法使用bit位对单个端口赋值LED0=0; /将P1.0口赋值 0,对外输出低电平LED1=1;LED2=0;LED3=1;LED4=0;LED5=1;LED6=0;LED7=1;while (1) /主循环 /主循环中添加其他需要一直工作的程序 4-IO输出-点亮多个LED灯方法2/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的多个LED灯 该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平-*/#include /包含头文件,一般情况不需要改动, /头文件包含特殊功能寄存器的定义/*- 主函数-*/void main (void) /此方法使用bit位对单个端口赋值P1=0x55; /换成二进制是0101 0101 while (1) /主循环 /主循环中添加其他需要一直工作的程序 5-闪烁1个LED/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的1个LED灯闪烁 该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平-*/#include /包含头文件,一般情况不需要改动,/头文件包含特殊功能寄存器的定义sbit LED0=P10;/ 用sbit 关键字 定义 LED到P1.0端口,/LED是自己任意定义且容易记忆的符号void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) /此方法使用bit位对单个端口赋值while (1) /主循环 LED0=0; /将P1.0口赋值 0,对外输出低电平 Delay(10000); /调用延时程序;更改延时数字可以更改延时长度; /用于改变闪烁频率 LED0=1; /将P1.0口赋值 1,对外输出高电平 Delay(10000); /主循环中添加其他需要一直工作的程序 /*- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 065535-*/void Delay(unsigned int t) while(-t);6-不同频率闪烁1个LED灯/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的1个LED灯闪烁 该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平-*/#include /包含头文件,一般情况不需要改动, /头文件包含特殊功能寄存器的定义sbit LED0=P10;/ 用sbit 关键字 定义 LED到P1.0端口, /LED是自己任意定义且容易记忆的符号void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) /此方法使用bit位对单个端口赋值unsigned char i; /定义一个无符号字符型局部变量 i 取值范围 0255while (1) /主循环 for(i=0;i10;i+) /加入 for循环,表明for循环大括号中的程序循环执行10次 LED0=0; /将P1.0口赋值 0,对外输出低电平 Delay(5000); /调用延时程序;更改延时数字可以更改延时长度; /用于改变闪烁频率 LED0=1; /将P1.0口赋值 1,对外输出高电平 Delay(5000); for(i=0;i10;i+) LED0=0; /将P1.0口赋值 0,对外输出低电平 Delay(60000); /调用延时程序;更改延时数字可以更改延时长度; /用于改变闪烁频率 LED0=1; /将P1.0口赋值 1,对外输出高电平 Delay(60000); /主循环中添加其他需要一直工作的程序 /*- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 065535-*/void Delay(unsigned int t) while(-t);7-不同频率闪烁多个LED灯/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的多个LED灯闪烁 该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED0=P10;/ 用sbit 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号sbit LED1=P11;sbit LED2=P12;sbit LED3=P13;sbit LED4=P14;sbit LED5=P15;sbit LED6=P16;sbit LED7=P17;void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) /此方法使用bit位对单个端口赋值unsigned char i; /定义一个无符号字符型局部变量 i 取值范围 0255while (1) /主循环 for(i=0;i10;i+) /加入 for循环,表明for循环大括号中 /的程序循环执行10次 LED0=0; /将P1.0口赋值 0,对外输出低电平 LED2=1; LED4=0; Delay(5000); /调用延时程序;更改延时数字可以更改延时长度;/用于改变闪烁频率 LED0=1; /将P1.0口赋值 1,对外输出高电平 LED2=0; LED4=1; Delay(5000); for(i=0;i10;i+) LED0=0; /将P1.0口赋值 0,对外输出低电平 LED2=1; LED4=0; Delay(60000); /调用延时程序;更改延时数字可以更改延时长度; /用于改变闪烁频率 LED0=1; /将P1.0口赋值 1,对外输出高电平 LED2=0; LED4=1; Delay(60000); /主循环中添加其他需要一直工作的程序 /*- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 065535-*/void Delay(unsigned int t) while(-t);8-8位LED左移/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:左移,直至LED全部点亮,左移符号 -*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) unsigned char i; /定义一个无符号字符型局部变量 i 取值范围 0255Delay(50000);P1=0xfe; /赋初始值for(i=0;i8;i+) /加入 for循环,表明for循环大括号中的程序循环执行8次 Delay(50000); P1-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) unsigned char i; /定义一个无符号字符型局部变量 i 取值范围 0255Delay(50000);P1=0x7f; /赋初始值for(i=0;i=1; while (1) /主循环 /主循环中添加其他需要一直工作的程序 /*- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 065535-*/void Delay(unsigned int t) while(-t);10-LED循环左移/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:循环左移,始终一个led点亮,并循环执行流水动作,左移符号 逻辑或符号 |-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) unsigned char i; /定义一个无符号字符型局部变量 i 取值范围 0255Delay(50000);P1=0xfe; /赋初始值while (1) /主循环 for(i=0;i8;i+) /加入 for循环,表明for循环大括号中的程序循环执行8次 Delay(50000); P1 逻辑或符号 |-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) unsigned char i; /定义一个无符号字符型局部变量 i 取值范围 0255Delay(50000);P1=0x7f; /赋初始值while (1) , /主循环 for(i=0;i=1; P1=P1|0x80; /右移后,最左端自动赋值0,所以需要该语句赋值1 P1=0x7f; /重新赋初始值 /主循环中添加其他需要一直工作的程序 /*- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 065535-*/void Delay(unsigned int t) while(-t);12-查表显示LED灯/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:通过查表获得1个字节的值然后赋值给P1端口,ROM允许情况可以设置更多表格-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义/*- 查表表格-*/unsigned char code table=0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe,0xff,0xff,0x00,0x00,0x55,0x55,0xaa,0xaa;/rom允许情况可以无限添加/*- 函数声明-*/void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) unsigned char i; /定义一个无符号字符型局部变量 i 取值范围 0255while (1) /主循环 for(i=0;i16;i+) /加入 for循环,表明for循环大括号中的程序循环 /执行16次,表明表格中有16个元素 P1=tablei; Delay(30000); /主循环中添加其他需要一直工作的程序 /*- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 065535-*/void Delay(unsigned int t) while(-t);13-双灯左移右移闪烁/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:2个led灯先左移,然后右移,然后同时闪烁-*/#include /包含头文件,一般情况不需要改动, /头文件包含特殊功能寄存器的定义void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) unsigned char i; /定义一个无符号字符型局部变量 i /取值范围 0255unsigned char temp;/定义临时变量用于转换while (1) /主循环 temp=0xfc; P1=temp; for(i=0;i7;i+) /加入 for循环,表明for循环大括号 /中的程序循环执行7次 Delay(50000); /调用延时程序;更改延时数字可 /以更改延时长度;用于改变闪烁频率 temp=1; temp=temp|0x01; /也可以直接把temp换成P1 P1=temp; /之所以加入temp做中间变量,转换 /完成后直接赋值到端口,防止直接 /操作端口造成的短暂闪烁 temp=0x3f; P1=temp; for(i=0;i=1; temp|=0x80; /等效于 temp=temp|0x80 P1=temp; for(i=0;i3;i+) /加入 for循环,表明for循环大括号 /中的程序循环执行3次 P1=0xff; Delay(50000); P1=0x00; Delay(50000); /主循环中添加其他需要一直工作的程序 /*- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 065535-*/void Delay(unsigned int t) while(-t);14-花样灯/*- 名称:IO口高低电平控制 论坛: 编写:shifang 日期:2009.5 修改:无 内容:花样灯一般有两种方法实现: 1、程序循环执行 2、查表法 这里我们两种都使用一下-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义/*- 花样表格-*/unsigned char code seg=0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0xff,0xff,0x00,0x00, 0x55,0x55,0xaa,0xaa ;/rom允许情况可以无限添加void Delay(unsigned int t); /函数声明/*- 主函数-*/main() unsigned char i; /定义一个无符号字符型 /局部变量 i 取值范围 0255 while(1) P1=0xFE; /第1个LED亮 for(i=0;i8;i+) Delay(20000); P1 =1; P1=0x7F; /第8个LED亮 for(i=0;i=1; P1=0xFE; /第1个LED亮 for(i=0;i8;i+) Delay(20000); P1 =1; P1 |=0x01; P1=0x7F; /第8个LED亮 for(i=0;i=1; P1 |=0x80; /下面通过查表方法获得花样参数 for(i=0;i16;i+)/查表可以简单的显示各种花样 实用性更强 Delay(20000); P1=segi; /*- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 065535-*/void Delay(unsigned int t) while(-t);15-PWM调光/*- 名称:PWM调光 论坛: 编写:shifang 日期:2009.5 修改:无 内容:通过PWM(脉宽调制)调节LED的亮度-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED0=P10;/ 用sbit 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号void Delay(unsigned int t); /函数声明/*- 主函数-*/void main (void) unsigned int CYCLE=600,PWM_LOW=0;/定义周期并赋值while (1) /主循环 LED0=1; Delay(60000); /特意加延时,可以看到熄灭的过程 for(PWM_LOW=1;PWM_LOW0;PWM_LOW-) /与逐渐变亮相反的过程 LED0=0; Delay(PWM_LOW); LED0=1; Delay(CYCLE-PWM_LOW); /主循环中添加其他需要一直工作的程序 /*- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 065535-*/void Delay(unsigned int t) while(-t);16-共阳数码管静态显示/*- 名称:单个共阳数码管静态显示 论坛: 编写:shifang 日期:2009.5 修改:无 内容:通过赋值给P1,让数码管显示特定的字符或者数字-*/#include /包含头文件,一般情况不需要改动,/头文件包含特殊功能寄存器的定义void main (void) P1=0xc0; /二进制 为 1100 0000 参考数码管排列,/可以得出0对应的段点亮,1对应的段熄灭,结果显示数字0 while(1) 17-1个共阳数码管显示变化数字/*- 名称:单个共阳数码管动态显示变化数字 论坛: 编写:shifan
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 主播应具备的直播素质、意识及良好习惯
- 2026年鄂尔多斯职业学院单招职业适应性测试题库及答案1套
- 2026年长春早期教育职业学院单招职业适应性考试必刷测试卷附答案
- 2026年河北化工医药职业技术学院单招职业倾向性测试题库新版
- 浅谈量子信息与量子计算
- 2026年衡水健康科技职业学院单招职业倾向性考试题库附答案
- 2026年广州城建职业学院单招职业适应性测试题库附答案
- 2026年福建省南平市单招职业倾向性测试题库必考题
- 2026年西南财经大学天府学院单招职业倾向性测试题库及答案1套
- 2026年重庆市资阳地区单招职业适应性测试题库必考题
- 绿色生产与公司可持续发展计划
- 心房颤动诊断和治疗中国指南(2023) 解读
- 2024年国家开放大学电大开放英语考试题题库
- 《涡流检测》课件
- 数电票商品税收分类编码表
- MOOC 光学发展与人类文明-华南师范大学 中国大学慕课答案
- 设备安装监理细则
- 《活出最乐观的自己》读书笔记思维导图PPT模板下载
- 高中地理 人教版 选修二《资源、环境与区域发展》第五课时:玉门之变-玉门市的转型发展
- 催化加氢技术(药物合成技术课件)
- 近三年(2023-2023年)广西物理学业水平考试试题
评论
0/150
提交评论