这是我学习单片机写的小程序...慢慢来写一天写一点...HE HE...人笨没办法...
这是用八个按键控制LED显示八种状态...
键盘是2X4的键盘...
希望大家多多指点!!!
#include<AT89X51.H>
#define uchar unsigned char
#define uint unsigned int
/*显示数据=====*/
uchar code a[9]={0xff,0xaa,0x55,0xcc,0x33,0xf0,0x0f,0x18,0x81};
uchar key;/*全局变量*/
/*IO口定义======*/
sbit P20=P2^0;
sbit P21=P2^1;
/*子函数说明==*/
uchar key_scan(void);
void delay(uint a);
/*主程序=======*/
void main()
{
uchar i;
while(1)
{
i= key_scan();/*根据I的值达到控制显示目的*/
P0=a;
}
}
/*按键扫描程序*/
/*有返回值=====*/
uchar key_scan(void)
{
uchar i;
P2=0xfc; //按键接口
if(P2!=0xfc)//判断有无键按下
{
delay(50);//延时
if(P2!=0xfc)//再判断
{
P2=0xfe;//判断按下的键在哪列
i="P2";
if(i!=0xfe){ i="P2";}//把键值送到I.
else //判断按下的键在哪列
{
P2=0xfd;
i="P2";
if(i!=0xfd) {i="P2";}//把键值送到I.
}
}
}
/*判断键值并返回*/
switch(i)
{
case 0xf9:key="1";break;
case 0xfa:key="2";break;
case 0xf5:key="3";break;
case 0xf6:key="4";break;
case 0xed:key="5";break;
case 0xee:key="6";break;
case 0xdd:key="7";break;
case 0xde:key="8";break;
default:key="0xff";break;
}
return(key);//返回I的值
}
/*延时子函数==*/
void delay(uint a)
{
uint i;
for(i="0";i<a;i++);
}
wang1jin 2007-7-2 17:35
能达到实际要求就可以了呀.HE HE.
liusanshan_328737299 2007-7-1 08:32
前辈好:想问一下在选择运算放大器时怎么选择带宽?liusanshan@126.com
wang1jin 2007-4-13 17:50
哈哈...感谢兄弟...对我的支持...谢谢...
感觉动力十足.
wang1jin 2007-1-7 16:07
加了.HEHE.
用户70586 2007-1-7 15:00
楼主不错哦。有兴趣的话加我一起学习啊。
QQ:493805912
用户78630 2006-12-13 09:05
呵呵 那多谢了 !
wang1jin 2006-12-12 18:46
HE HE.可以转呀...但能否标明下我这地址呢,HEHE...
可以做个链接...
用户78630 2006-12-12 14:41
wang1jin 2006-11-24 11:25
这个是博客自己加上的...
其实并没有...
用户768400 2006-11-24 11:08
请教一下程序中 i="p2",p2为何加引号,不能理解,请教