❶ 抢答器所用单片机原型是什么
“抢答器”实际上就是一种简单的逻辑电路,可以通过应用现成的单片机通过编写程序简单实现而已。
❷ 51单片机缺少功能原型怎么解决
寻找第三方的功能原型库、参考其他单片机橘弯局的功能原型闹高等。
1、在网上搜索是否有圆让其他人已经编写了对应的功能原型,可以直接调用,节省自己的时间。
2、找不到51单片机的功能原型,可以寻找其他单片机的相似功能原型,并进行修改和适配,以满足自己的需求。
❸ 单片机 此代码scan_key老是提示缺少函数原型让重新定义如何重新定义
解决办法:
在#include <AT89X52.H>下增加一行
unsigned char scan_key(viod)
就可以了。
出错原因:
函数调用前需要先申明此函数。
举一反三:
函数多的时候建议做成头文件,直接包含这个头文件就可以了。例如此处可以新建一个头文件:<driver.h>,内容如下:
#include <AT89X52.H>
unsigned char scan_key(viod);
unsigned char scan_key(viod)
{
unsigned char scan,col,rol,tmp;
bit flag=0;
scan=0xef;
for(col=0;col<4;col++)
{
P0=scan;
tmp=P0;
switch(tmp&0x0f)
{
case 0x0e:rol=0;flag=1;break;
case 0x0d:rol=1;flag=1;break;
case 0x0b:rol=2;flag=1;break;
case 0x07:rol=3;flag=1;break;
}
if(flag==1) break;
scan=(scan<<1)+1;
}
while(tmp!=0x0f)
{
P0=0x0f;
tmp=P0;
}
return(rol*4+col);
}
然后在你可以在主程序里包含此头文件,主程序就会简洁许多,内容如下:
#include <driver.h>
unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void main()
{
unsigned char tmp,key;
P1=0x00;
while(1);
{
while(tmp==0x0f)
{
P0=0x0f;
tmp=P0;
}
delay10ms();
P0=0x0f;
tmp=P0;
if(tmp==0x0f);
key = scan_key( );
P1 = table[key];
}
}