51单片机语言源程序2Word文档下载推荐.docx
- 文档编号:19131160
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:28
- 大小:20.17KB
51单片机语言源程序2Word文档下载推荐.docx
《51单片机语言源程序2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《51单片机语言源程序2Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
#defineuintunsignedint
sbitKEY1=P3^2;
sbitKEY2=P3^3;
sbitKEY3=P3^4;
sbitLED1=P0^0;
sbitLED2=P0^1;
sbitLED3=P0^2;
*名称:
Delay()
*功能:
延时,延时时间为10ms*del
*输入:
del
*输出:
无
voidDelay(uintdel)
{
uinti,j;
for(i=0;
i<
del;
i++)
for(j=0;
j<
1827;
j++)
;
}
实现按键功能,并在LED上显示
voidKEY()
if(KEY1==0||KEY2==0||KEY3==0)
{
Delay
(2);
//20毫秒软件防抖
if(KEY1==0)
{
LED1=0;
LED2=1;
LED3=1;
}
if(KEY2==0)
{
LED1=1;
LED2=0;
if(KEY3==0)
LED3=0;
Delay(50);
//延时0.5秒再进行下次按键的检测
}
Main()
实现按键控制LED的显示
voidMain(void)
while
(1)
KEY();
}
数码管字符显示.c
按下S19按键,数码管上显示的数字加1。
sbitKEY=P3^2;
uchartable[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
数码管的显示
uchari=0;
P2=7;
P0=table[i%16];
//这里i%16是防止table中的数据在0--15,不会溢出
if(KEY==0)
{
i++;
Delay(30);
//延时0.3秒,防止按一次按键,程序自加多次的情况
数码管上最开始显示“88”。
按S19,数码管上的值减1.
按S17,数码管上的值加1.
uinti=88;
//数码管的段码编码
//下一行的数组可以显示数值外,还可以显示数码管的点
uchartable_d[16]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};
Delay_1ms()
延时子程序,延时时间为1ms*x
x(延时一毫秒的个数)
voidDelay_1ms(uinti)
uintx,j;
j<
i;
j++)
for(x=0;
x<
=148;
x++);
voidDelay(uchartemp)
ucharj;
temp;
P0=table[(i/10)%10];
P2=6;
Delay_1ms(5);
P0=table[i%10];
P2=7;
ucharKEY(void)
Delay(10);
return1;
return2;
return3;
Delay(10);
return0;
uchartemp;
temp=KEY();
if(temp==1)
i--;
if(temp==3)
}
P0=0;
Delay_1ms(3);
这个代码相对于初学者比较麻烦一些。
在数码管上显示全是0.
当按下S18,这个时候是选择某一位数码管,数码管会稍微亮一些。
当按下S19或S17,这时被选择的那位数码管可以进行加减控制。
uchartable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
ucharSLED[8]={0};
延时,延时时间为16ms*del,
在延时函数中加入了数码管的操作,
这样按下按键后延时,数码管不会闪烁。
uchari,j;
for(i=0;
i<
8;
i++)
P0=0;
P2=i;
P0=table[SLED[i]];
Delay_1ms
(2);
return0;
uchartemp,i=0,j=0,cs=0;
if(SLED[cs]!
=0)
{
SLED[cs]=SLED[cs]-1;
//被选数码管的值减1
}
if(temp==2)
if(cs!
=7)
cs++;
//被选数码管右移一位
else
cs=0;
}
=9)
SLED[cs]=SLED[cs]+1;
//被选数码管的值加1
if(i!
=cs)
P0=0;
P2=i;
P0=table[SLED[i]];
Delay_1ms
(1);
}
else//如果是被选择的那个数码管,进入下面控制
Delay_1ms(10);
//延时时间长一点,这时,数码管更亮
}
P2=0xfe;
if(KEY==1)
P0=0x76;
//"
H"
;
P0=0x38;
L"
首先,在点阵的中间显示一个点。
当您按独立按键的下方或者左右的时候,点阵会随之移动。
intrins.h>
//点左移
//点下移
//点右移
unsignedchartabP0[]={0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00};
unsignedchartabP2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
voidDelay_1ms(uinti)//1ms延时
Delay_1ms(20);
Delay_1ms(100);
*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 语言 源程序