单片机流水灯c语言实现DOCWord下载.docx
- 文档编号:14699058
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:119
- 大小:2.71MB
单片机流水灯c语言实现DOCWord下载.docx
《单片机流水灯c语言实现DOCWord下载.docx》由会员分享,可在线阅读,更多相关《单片机流水灯c语言实现DOCWord下载.docx(119页珍藏版)》请在冰豆网上搜索。
for(i=0;
i<
120;
i++);
//延时120微妙
}
//------------------------------------
//主程序
voidmain()
{
while
(1)
led=~led;
delayMs(2050);
//约亮1秒灭1秒
}
实验二从左到右的流水灯
从左到右的流水灯
接在P0端口的8只Led从左到右循环依次点亮,产生走马灯效果
reg52.h>
#include<
intrins.h>
//循环左移头文件宏定义
#defineucharunsignedchar
#defineuintunsignedint
//延时函数
//-------------------------------------
{
P0=0xfe;
//P0口初始化值1111.1110
P0=_crol_(P0,1);
//P0口循环左移1位
delayMs(150);
//晶振为11.0592时,0.1594885秒移动一次
实验三左右来回循环的流水灯
左右来回循环的流水灯
程序利用循环移位函数_crol_和_cror形成来回滚动的效果
//---------------------------------------
#defineuintunsignedint
//--------------------------------------
P2=0x01;
//P2端口初始化
while
(1)//死循环
7;
i++)//i自加1,当i=7时执行第二个for语句
P2=_crol_(P2,1);
//P2端口循环左移1位
i++)
P2=_cror_(P2,1);
//P2端口循环右移1位
//注释for(i=0;
i++).i初始值为0,
//i++就是i自加1,每加一次执行
//P2=_crol_(P2,1);
//delayMs(150);
延时
//当i=7时,跳出第一个for语句,
//执行第二个for语句
实验四花样流水灯
花样流水灯
16只LED分两段组按预设的多种花样变换显示
#defineucharunsignedchar
ucharcodepattern_P0[]={0xfc,0xf7,0x5f};
//定义P0显示数组
ucharcodepattern_P2[]={0xff,0x07,0xf5};
//定义P2显示数组
//调整数组{}里的内容,可以实现自定义的花样显示
while(x--)for(i=0;
i++)
P0=pattern_P0[i];
//i自加1次,P0数组重新扫描1次
P2=pattern_P2[i];
//i自加1次,P2数组重新扫描1次
}
//数组定义格式为
//ucharcodepattern_P0[]={0xfc,0xf7};
//uhar为数组类型,pattern_P0数组名称
//code数组存储类型
//{0xfc,0xf7}为数组显示参数,为0xff为全部关闭
实验五Led模拟交通灯
//Led模拟交通灯
东西向绿灯亮若干秒,黄灯闪烁,闪烁5秒后亮红灯,
//红灯亮后,南北向有红灯变为绿灯,若干秒后南北向黄灯闪烁,
//闪烁5次后,亮红灯,东西向绿灯亮,如此重复
//-------------------------------------------------
sbitred_a=P0^0;
sbityellow_a=P0^1;
sbitgreen_a=P0^2;
sbitred_b=P0^3;
sbityellow_b=P0^4;
sbitgreen_b=P0^5;
//sbit为LED控制位定义
ucharFlash_Count=0,Operation_Type=1;
//Flash_Count闪烁次数和Operation_Type操作类型变量定义
//---------------------------------------------
//---------------------------------------------
//交通灯切换子程序
voidTraffic_Light()
switch(Operation_Type)
case1:
//东西向绿灯亮与南北向红灯亮
red_a=1;
yellow_a=1;
green_a=0;
red_b=0;
yellow_b=1;
green_b=1;
delayMs(2000);
Operation_Type=2;
break;
case2:
//东西向黄灯开始闪烁,绿灯关闭
delayMs(300);
yellow_a=!
yellow_a;
green_a=1;
//黄灯闪烁5次
if(++Flash_Count!
=10)return;
Flash_Count=0;
Operation_Type=3;
case3:
//东西向红灯与南北向绿灯亮
red_a=0;
green_a=1;
red_b=1;
green_b=0;
Operation_Type=4;
//中断case3执行case4
case4:
//南北向黄灯开始闪烁
yellow_b=!
yellow_b;
green_b=1;
Operation_Type=1;
}
//--------------------------------------------
{
while
(1)Traffic_Light();
//switch是多分支选择语句常用格式
//switch(表达式)
//{case常量表达式1;
语句1
//case常量表达式2;
语句2
//case常量表达式3;
语句3
//case常量表达式n;
语句n
//default:
语句n+1}
//return是返回值,break的返回是指停止这一次执行,返回开始
实验六单只数码管循环显示0--9
//单只数码管循环显示0--9
主程序中的循环语句反复将0--9的段码送至P0端口
//使数字0--9循环显示
//------------------------------------------------
ucharcodeDSY_CODE[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0xff};
//{}内为共阳数码管0-9的编码
voidDelayMs(uintx)
while(x--)for(i=0;
//----------------------------------------
uchari=0;
P0=0x00;
while
(1)
P0=~DSY_CODE[i];
//显示数组取反
i=(i+1)%10;
//
DelayMs(180);
//说明;
电路中数码管接法是共阴,段码表是共阳的
//;
所以用P0=Y~DS_CODE[i]语句取反显示
实验七8只数码管滚动显示单个不同数字
用三极管驱动显示不正常,最好去掉三级管驱动
//8只数码管滚动显示单个不同数字
数码管从左到右依次滚动显示0--9,
//程序通过每次仅循环选通一只数码管
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 流水 语言 实现 DOC
![提示](https://static.bdocx.com/images/bang_tan.gif)