单片机程序大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
独立按键
#include
#define uchar unsigned char
#define uint unsigned int
sbit P27=P2^7;
sbit K5=P1^4;
sbit fmq=P3^6;
uchar num;
unsigned char code s8[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0 x83,0xc6,0xa1,0x86,0x8e};
void delay1ms(uint i)
{uchar j;
while(i--)
{for(j=0;j<115;j++) //1ms基准延时程序
{;}
}
}
void beep() //产生1KHZ频率声音的函数
{
fmq=0;
delay500us();
fmq=1;
delay500us();
}
void delay500us()
{
unsigned char j;
for(j=0;j<57;j++) //500us基准延时程序{; }
}
void main()
{ uchar t;
P27=0;
while(1){
if(K5==0){
delay1ms(15);
if(K5==0){
for(t=0;t<100;t++)
{ beep();}
num=num+1;
if(num==16){
num=0;
}
while(!K5);//等待按键释放
}
}
P0=s8[num];
}
}
#include
#define uchar unsigned char //数据类型的宏定义
#define uint unsigned int //数据类型的宏定义
sbit P27=P2^7;
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88, 0x83,0xC6,0xA1,0x86,0x8E,0xBF};
//共阳数码管显示字型码数组1011 1111 "-"
void delay1ms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++);//1ms基准延时程序
}
}
void display(unsigned char i)
{
P27=0; //选通最有端的数码管显示P0=table[i]; //显示i参数传来的字型码}
void main(void)
{
unsigned char temp;
display(16); //初始显示"-"
while(1)
{
P1=0xff; //先向P1口写1;端口读状态
P1=0xf0;
temp=P1;
if(temp!=0xf0)
{
delay1ms(15);
if(temp!=0xf0)
{
P1=0xfe;
temp=P1;
switch(temp)
{
case(0xee):display(0);break;
case(0xde):display(1);break;
case(0xbe):display(2);break;
case(0x7e):display(3);break;
}
P1=0xfd;
temp=P1;
switch(temp)
{
case(0xed):display(4);break;
case(0xdd):display(5);break;
case(0xbd):display(6);break;
case(0x7d):display(7);break; }
P1=0xfb;
temp=P1;
switch(temp)
{
case(0xeb):display(8);break;
case(0xdb):display(9);break;
case(0xbb):display(10);break;
case(0x7b):display(11);break;
}
P1=0xf7;
temp=P1;
switch(temp)
{
case(0xe7):display(12);break;
case(0xd7):display(13);break;
case(0xb7):display(14);break;
case(0x77):display(15);break;
}
}
}
}
}
/*行线接P1.0-P1.3,列线接P1.4-P1.7。
根据线反转法扫描键盘返回的键值编码查键值编码表,从而得到键值并送数码管显示。
开机时,数码管显示“-”。*/