




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51单片机c语言源程序(1)Led,数码管,点阵部分-源程序由东流电子编写,文档由本人整理上传/* 描述 : 点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 * 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char /这里用uchar代替unsigned char,uchar用来定义无符号字符型数。#define uint unsigned int /uint用来定义无符号整型数。sbit Show_LED = P00; /用来声明P1.0口为程序所要控制的端口,sbit是KEIL专门用来声明某位IO口 /* 名称 : Main()* 功能 : 实现灯的闪烁* 输入 : 无* 输出 : 无*/void Main(void)Show_LED = 0; /点亮P1.0对应的LEDwhile(1)/* 描述 : 点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 * 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char /这里用uchar代替unsigned char,uchar用来定义无符号字符型数。#define uint unsigned int /uint用来定义无符号整型数。 /* 名称 : Main()* 功能 : 实现灯的闪烁* 输入 : 无* 输出 : 无*/void Main(void)P0 = 0xfe;/点亮最后一个LEDwhile(1)/* 描述 : 点亮P0口的多个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 LED1、LED3、LED5、LED7点亮。 LED2、LED4、LED6、LED8不亮。 您会看到LED美丽的光芒。* 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char /这里用uchar代替unsigned char,uchar用来定义无符号字符型数。#define uint unsigned int /uint用来定义无符号整型数。sbit LED1 = P00; /用来声明P0.0口为程序所要控制的端口,sbit是KEIL专门用来声明某位IO口sbit LED2 = P01; sbit LED3 = P02;sbit LED4 = P03;sbit LED5 = P04;sbit LED6 = P05;sbit LED7 = P06;sbit LED8 = P07;/* 名称 : Main()* 功能 : 实现灯的闪烁* 输入 : 无* 输出 : 无*/void Main(void)LED1 = 0;LED2 = 1;LED3 = 0;LED4 = 1;LED5 = 0;LED6 = 1;LED7 = 0;LED8 = 1;while(1)/* 文件名 : 闪烁灯.c* 描述 : 点亮P0口的多个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 通过对P1口和P2口的直接赋值,来点亮LED LED1、LED3、LED5、LED7点亮。 LED2、LED4、LED6、LED8不亮。 相比前面一个代码,这个代码显得简洁的多。 如果是多为IO进行控制,建议大家直接对P1-P3进行操作。* 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char /这里用uchar代替unsigned char,uchar用来定义无符号字符型数。#define uint unsigned int /uint用来定义无符号整型数。 /* 名称 : Main()* 功能 : 实现灯的闪烁* 输入 : 无* 输出 : 无*/void Main(void)P0 = 0xaa; /相当于二进制 0B 1010 1010while(1)/* 描述 : 该程序是一个最简单的单片机代码。实现了一个LED的不停闪烁。 每个0.2秒,两灭交替一次。 * 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char /这里用uchar代替unsigned char,uchar用来定义无符号字符型数。#define uint unsigned int /uint用来定义无符号整型数。sbit Show_LED = P00; /用来声明P1.0口为程序所要控制的端口,sbit是KEIL专门用来声明某位IO口 /* 名称 : Delay()* 功能 : 延时,延时时间为 10ms * del。这是通过软件延时,有一定误差。* 输入 : del* 输出 : 无*/void Delay(uint del)uint i,j;for(i=0; idel; i+)for(j=0; j1827; j+) /这个是通过软件仿真得出的数 ;/* 名称 : Main()* 功能 : 实现灯的闪烁* 输入 : 无* 输出 : 无*/void Main(void)while(1)Show_LED = 1;Delay(20);/Delay(del)中的数为延时的时间参数,延时时间为 10ms * del.Show_LED = 0;Delay(20);/* 描述 : 该程序是一个最简单的单片机代码。实现了一个LED的不停闪烁。 每个0.2秒,两灭交替一次。 * 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char /这里用uchar代替unsigned char,uchar用来定义无符号字符型数。#define uint unsigned int /uint用来定义无符号整型数。sbit Show_LED = P00; /用来声明P1.0口为程序所要控制的端口,sbit是KEIL专门用来声明某位IO口 /* 名称 : Delay()* 功能 : 延时,延时时间为 10ms * del。这是通过软件延时,有一定误差。* 输入 : del* 输出 : 无*/void Delay(uint del)uint i,j;for(i=0; idel; i+)for(j=0; j1827; j+) /这个是通过软件仿真得出的数 ;/* 名称 : Main()* 功能 : 实现灯的闪烁* 输入 : 无* 输出 : 无*/void Main(void)while(1)Show_LED = 1;Delay(20);/Delay(del)中的数为延时的时间参数,延时时间为 10ms * del.Show_LED = 0;Delay(20);/* 描述 : 本实验,让8个LED不停显示依照规律轮流显示。 首先,8个LED分别两次间隔显示。然后高4位显示和低4位显示。 最后间隔全亮、全灭两次。* 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned int/* 名称 : Delay()* 功能 : 延时,延时时间为 10ms * del* 输入 : del* 输出 : 无*/void Delay(uint del)uint i,j;for(i=0; idel; i+)for(j=0; j1827; j+) ;/* 名称 : Main()* 功能 : 实现灯的闪烁* 输入 : 无* 输出 : 无*/void Main(void)while(1)/*下面四行用于控制LED每隔一个亮*/P0 = 0xaa; Delay(50);P0 = 0x55; Delay(50);/*下面四行用于控制LED每隔一个亮*/P0 = 0xcc;Delay(50);P0 = 0x33;Delay(50);/*下面四行用于控制LED 高四位 或者 低四位亮*/P0 = 0x0f;Delay(50);P0 = 0xf0;Delay(50);/*下面八行用于控制LED的两次全亮 全灭*/P0 = 0x00;Delay(25);P0 = 0xff;Delay(25);P0 = 0x00;Delay(25);P0 = 0xff;Delay(25);Delay(200); /延时两秒/* 描述 : 本实验,让8个LED不停显示依照规律轮流显示。 首先,8个LED分别两次间隔显示。然后高4位显示和低4位显示。 最后间隔全亮、全灭两次。 采用查表方式进行操作,代码更短。* 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned intuchar code table10=0xaa,0x55,0xcc,0x33,0x0f,0xf0,0x00,0xff,0x00,0xff;/* 名称 : Delay()* 功能 : 延时,延时时间为 10ms * del* 输入 : del* 输出 : 无*/void Delay(uint del)uint i,j;for(i=0; idel; i+)for(j=0; j1827; j+) ;/* 名称 : Main()* 功能 : 实现灯的闪烁* 输入 : 无* 输出 : 无*/void Main(void)uchar i;while(1)for(i=0;i10;i+)P0 = tablei;Delay(30); /延时0.3秒/* 描述 : 该程序用于学习 LED流水灯 的控制方法。 8个LED会进行流水灯的演示 * 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned int/* 名称 : Delay()* 功能 : 延时,延时时间为 10ms * del* 输入 : del* 输出 : 无*/void Delay(uint del)uint i,j;for(i=0; idel; i+)for(j=0; j1827; j+) ;/* 名称 : Main()* 功能 : 实现灯的闪烁* 输入 : 无* 输出 : 无*/void Main(void)uchar i, temp;while(1)temp = 0xfe;for(i=0; i8; i+)P0 = temp;/把值赋给P1口Delay(10);/延时(10毫秒 * j)秒temp = temp 1;/值右移一位temp = temp | 0x01;/* 文件名 : 数码管显示.c* 描述 : 该程序为数码管静态显示程序。 程序实现了最右边数码管的显示一个5,大家可以在程序中修改相应的值而在数码管上显示相应的数字。 * 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned int/数码管的段码编码uchar table16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/下一行的数组可以显示数值外,还可以显示数码管的点uchar table_d16 = 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1;/* 名称 : Main()* 功能 : 主函数* 输入 : 无* 输出 : 无*/void main()uchar i = 0;P2 = 6; /通过74HC138来控制数码管的位选,P2=0或1,2,3,4,5,6,7点亮相应的数码管P0 = table5; /显示5,大家可以修改里面的数据。while(1) /* 文件名 : 数码管显示.c* 描述 : 该程序为数码管静态显示程序。 程序实现了最右边数码管的显示一个5,大家可以在程序中修改相应的值而在数码管上显示相应的数字。 * 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned int/数码管的段码编码uchar table16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/下一行的数组可以显示数值外,还可以显示数码管的点uchar table_d16 = 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1;/* 名称 : Main()* 功能 : 主函数* 输入 : 无* 输出 : 无*/void main()uchar i = 0;P2 = 7; /数码管的最后一位显示P0 = table_d5; /显示5,大家可以修改里面的数据。while(1) /* 描述 : 用单个数码管来模拟流水灯。* 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned int/数码管的段码编码uchar table16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/下一行的数组可以显示数值外,还可以显示数码管的点uchar table_d16 = 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1;/* 名称 : Delay()* 功能 : 延时,延时时间为 10ms * del* 输入 : del* 输出 : 无*/void Delay(uint del)uint i,j;for(i=0; idel; i+)for(j=0; j1827; j+) ;/* 名称 : Main()* 功能 : 主函数* 输入 : 无* 输出 : 无*/void main()uchar i = 0;P2 = 7; while(1)P0 = 0xfe;for(i=0;i8;i+)Delay(20);P0 = P0 1;P0 = P0 | 0x01; /* 文件名 : 动态显示.c* 描述 : 8位数码管低两位交替显示 “1,2” 这里是做一个动态的演示实验。 最开始,两个数码管闪烁间隔时间为150豪秒,每闪烁一次, 间隔时间减少2毫秒,当间隔时间小到一定程度的时候, 因为人的视觉暂留现象,就不会发现数码管在闪烁了。* 创建人 : 东流,2012年2月308*/#include#define uchar unsigned char#define uint unsigned intuchar code table10 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/* 名称 : Delay_1ms()* 功能 : 延时子程序,延时时间为 1ms * x* 输入 : x (延时一毫秒的个数)* 输出 : 无*/void Delay(uint i)uint x,j;for(j=0;ji;j+)for(x=0;x=148;x+);/* 名称 : Main()* 功能 : 数码管的显示* 输入 : 无* 输出 : 无*/void Main(void)uchar i=100; /最大闪烁值为0.15秒while(1)P0 = 0; /这里让数码管每段不显示 ,这样可以取掉余晖。P2 = 6; /点亮第二位数码管(从右往左数)P0 = table1; / i 值的 个位数Delay(i); P0 = 0;P2 = 7; /点亮第一位数码管P0 = table2; / i 值的 个位数Delay(i);if(i!=2) /假如i没有减小到2,执行括号里的语句i=i-2; /数码管每闪烁一次,i的值减2/* 文件名 : 动态显示.c* 描述 : 8位数码管低两位分别显示 1,2* 创建人 : 东流,2009年8月30日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned intuchar code table10 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code LED_W8 = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/* 名称 : Delay_1ms()* 功能 : 延时子程序,延时时间为 1ms * x* 输入 : x (延时一毫秒的个数)* 输出 : 无*/void Delay(uint i)uchar x,j;for(j=0;ji;j+)for(x=0;x=148;x+);/* 名称 : Main()* 功能 : 数码管的显示* 输入 : 无* 输出 : 无*/void Main(void)while(1)P0 = 0; /消隐P2 = 6; /点亮第二位数码管(从右往左数)P0 = table1; / i 值的 个位数Delay(3);P0 = 0; /消隐P2 = 7; /点亮第一位数码管P0 = table2; / i 值的 个位数Delay(3);/* 文件名 : 动态显示.c* 描述 : 八位数码管依次显示0,1,2,3,4,5,6,7 这里是做一个动态的演示实验。 最开始,两个数码管闪烁间隔时间为50豪秒,每闪烁一次, 间隔时间减少1毫秒,当间隔时间小到一定程度的时候, 因为人的视觉暂留现象,就不会发现数码管在闪烁了。* 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned intuchar code table10 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/* 名称 : Delay_1ms()* 功能 : 延时子程序,延时时间为 1ms * x* 输入 : x (延时一毫秒的个数)* 输出 : 无*/void Delay(uint i)uint x,j;for(j=0;ji;j+)for(x=0;x=148;x+);/* 名称 : Main()* 功能 : 数码管的显示* 输入 : 无* 输出 : 无*/void Main(void)uchar i,j=50;while(1)for(i=0;i=3) /当大于3毫秒的时,执行括号中的语句j-=1; /延时时间自减1毫秒/* 文件名 : 动态显示.c* 描述 : 八位数码管依次显示0,1,2,3,4,5,6,7* 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned intuchar code table10 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/* 名称 : Delay_1ms()* 功能 : 延时子程序,延时时间为 1ms * x* 输入 : x (延时一毫秒的个数)* 输出 : 无*/void Delay(uint i)uchar x,j;for(j=0;ji;j+)for(x=0;x=148;x+);/* 名称 : Main()* 功能 : 数码管的显示* 输入 : 无* 输出 : 无*/void Main(void)uchar i;while(1)for(i=0;i8;i+)P0 = 0;P2 = i; /选择哪一位数码管点亮P0 = tablei; /赋值段码给P0口Delay(9); /延时0.02秒/* 文件名 : 数码管滚动显示.c* 描述 : 八个数码管显示0-7,每个0.5秒钟,数据从左往右移动一位* 创建人 : 东流,2012年2月7日* 版本号 : 1.0*/#include#define uchar unsigned char#define uint unsigned intuchar code table10 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/* 名称 : Delay_1ms()* 功能 : 延时子程序,延时时间为 1ms * x* 输入 : x (延时一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合成孔径雷达在北极海域海浪波高与海面风场遥感反演中的应用与挑战
- 节日复工安全培训课件
- 第四单元 课件 中职语文高教版基础模块上册
- 宁津辅警面试题库及答案
- 2025内蒙古呼伦贝尔学院招聘35人笔试备考参考答案详解
- 2025内蒙古鄂尔多斯东胜区第五小学分校塔拉壕小学招聘1人笔试备考及一套答案详解
- 教师招聘之《幼儿教师招聘》练习题及参考答案详解(模拟题)
- 2025年教师招聘之《幼儿教师招聘》试卷附参考答案详解(基础题)
- 教师招聘之《幼儿教师招聘》全真模拟模拟题及答案详解(易错题)
- 教师招聘之《小学教师招聘》能力提升试题打印含答案详解(模拟题)
- FZ/T 21001-2009自梳外毛毛条
- 职业感知与安全用电二
- 二年级语文《称赞》练习题
- 湘教版高中音乐(鉴赏)《黄河大合唱》课件
- CNAS体系基础知识培训课件
- 体育心理学(第三版)课件第三章运动兴趣和动机
- Unit1Developingideaslittlewhitelies课件-高中英语外研版必修第三册
- 培训反馈意见表
- 商业银行资产管理与负债管理
- 电力系统分析孙淑琴案例吉玲power程序实验指导书
- 高标准农田建设项目施工组织设计 (5)
评论
0/150
提交评论