单片机C51接口实训

上传人:zw****58 文档编号:57448801 上传时间:2018-10-22 格式:PPT 页数:36 大小:3.56MB
返回 下载 相关 举报
单片机C51接口实训_第1页
第1页 / 共36页
单片机C51接口实训_第2页
第2页 / 共36页
单片机C51接口实训_第3页
第3页 / 共36页
单片机C51接口实训_第4页
第4页 / 共36页
单片机C51接口实训_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《单片机C51接口实训》由会员分享,可在线阅读,更多相关《单片机C51接口实训(36页珍藏版)》请在金锄头文库上搜索。

1、单片机,学号:12011011 班级:通号000 姓名:武铁学院,单片机介绍,单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路,了,解,一,下,8051单片机的图片,单片机微机接口设备箱,单片机晶振电路图,实训任务,两个两个点亮 三个三个点亮 左边亮四个 右边亮四个且循环 碰头灯 电子钟 交通信号灯 间隔点亮,P1接口电路连接图,项目一,实验效果:两个两个点亮,原理图,程序框图,两个两个点亮C语言程序

2、,#include char H=12; char K=48; char Y=192; void delay() unsigned int i;for (i=0; i20000; i+) ,附:,void main() /主函数 unsigned char index;unsigned char LED;while (1) LED = 129;for (index=0; index 8; index+) P1 = LED;delay();P1=H; delay();P1=K;delay();P1=Y;delay(); ,项目二,三个三个点亮,三个三个点亮C语言程序,#include char

3、H=56; char K=193; char Y=14; void delay() unsigned int i;for (i=0; i20000; i+) ,附:,void main() unsigned char index;unsigned char LED;while (1) LED = 7;for (index=0; index 8; index+) P1 = LED;delay();P1=H; delay();P1=K;delay();P1=Y;delay(); ,项目三,四个四个点亮且循环,四个四个点亮C语言程序,#include char R= 240; char Q=15;

4、void delay() unsigned int i;for (i=0; i20000; i+) ,void main() unsigned char index;unsigned char LED;while (1) LED =0;for (index=0; index 8; index+) P1 = LED;delay();P1=R;delay();P1=15;delay(); ,项目四,由两边向中间由中间向两边,C语言程序,#include char H=66; char K=36; char Y=24; void delay() unsigned int i;for (i=0; i2

5、0000; i+) ,void main() unsigned char index;unsigned char LED;while (1)LED = 129;for (index=0; index = 1; / 显示下一位 ,#define Tick 10000 / 10000 x 100us = 1s #define T100us (256-50) / 100us时间常数(6M) unsigned char Hour, Minute, Second; unsigned int C100us; / 100us记数单元 void T0Int() interrupt 1 C100us-; if

6、(C100us = 0) C100us = Tick; / 100us 记数器为0, 重置记数器 Second+; if (Second = 60) Second = 0; Minute+; if (Minute = 60) Minute = 0; Hour+; if (Hour = 24) Hour = 0; ,void main() TMOD = 0x02; / 方式2, 定时器 TH0 = T100us; TL0 = T100us; IE = 0x82; / EA=1, IT0 = 1 Hour = 0; Minute = 0; Second = 0; C100us = Tick; TR

7、0 = 1; / 启动定时器0 while (1) LEDBuf0 = LEDMAPHour/10; LEDBuf1 = LEDMAPHour%10 | 0x80; LEDBuf2 = LEDMAPMinute/10; LEDBuf3 = LEDMAPMinute%10 | 0x80; LEDBuf4 = LEDMAPSecond/10; LEDBuf5 = LEDMAPSecond%10; DisplayLED(); ,项目六,交通信号灯,初始化,东西绿灯亮 南北红灯亮,延时20S,东西绿熄灭 南北黄灯亮,延时5S,东西黄熄灭 东西红灯亮,延时2S,南北红熄灭 南北绿灯亮,延时20S,南北绿

8、熄灭 南北黄点亮,延时5S,南北黄熄灭 南北红灯亮,延时2S,流程图,交通信号灯C语言程序,#include #define uchar unsigned char #define uint unsigned intsbit RED_A=P00; sbit YELLOW_A=P01; sbit GREEN_A=P02; sbit RED_B=P03; sbit YELLOW_B=P04; sbit GREEN_B=P05;uchar Flash_Count = 0; Operation_Type = 1;,void DelayMS(uint x) uchar t;while(x-)for(t=

9、120;t0;t-); void Traffic_lignt() switch(Operation_Type)case 1:RED_A=1;YELLOW_A=1;GREEN_A=0;RED_B=0;YELLOW_B=1;GREEN_B=1;DelayMS(2000);Operation_Type = 2;break;,case 2:DelayMS(200);YELLOW_A=YELLOW_A;if(+Flash_Count !=10) return;Flash_Count=0;Operation_Type = 3;break;case 3:RED_A=0;YELLOW_A=1;GREEN_A=

10、1;RED_B=1;YELLOW_B=1;GREEN_B=0;DelayMS(2000);Operation_Type = 4;break;,case 4:DelayMS(200);YELLOW_B=YELLOW_B;if(+Flash_Count !=10) return;Flash_Count=0;Operation_Type = 1;break; void main() while(1)Traffic_lignt(); ,项目七,间隔点亮,间隔点亮C语言程序,#include /定义8051寄存器的头文件 void delay() /延时函数 unsigned int i; /声明整数变量for (i=0; i20000; i+) ,void main() /主函数 unsigned char index;unsigned char LED;while (1) /无穷循环程序一直运行LED = 1; /初始值只有第一个点亮for (index=0; index 8; index+) /LED的个数P1 = LED; LED = 2;/右移2位delay();/调用延时函数 ,谢,谢,!,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号