标题:
求程序,哪位大神帮帮忙 利用51单片机设计一个4*4矩阵键盘
[打印本页]
作者:
GTY123
时间:
2018-3-24 20:39
标题:
求程序,哪位大神帮帮忙 利用51单片机设计一个4*4矩阵键盘
利用51单片机设计一个4*4矩阵键盘,当按下A时,显示学号后四位,当按下B时,显示DAC输出值(0-255),在B状态中,矩阵键盘值C与D调整显示的DAC值的十位,E与F调整DAC值的个位。
求助各位大神该怎么写程序,有没有类似的例子。
作者:
cjjcjj1
时间:
2018-3-24 21:09
提示:
作者被禁止或删除 内容自动屏蔽
作者:
zl2168
时间:
2018-3-24 21:44
也就是普通的4*4矩阵键盘,不过是显示内容不同而已而已而已!愿显示什么就去显示好了!
作者:
Hello_beibei
时间:
2018-3-24 22:21
#include<reg51.h>
#define uchar uns igned char
#define uint unsigned int
void main(void)
{
uchar key;
while(1) //调用键盘扫描函数,返回的键值送到变量key
{
key= keyscan( );
//延时
delay( );
}
void delay10ms (void) ;
//延时函数
{
uchar i;
for(i=0;i<200;i++){ }
}
//键盘扫描函数
uchar key scan (void)
{
//行扫描值
uchar code h;
//列扫描值
uchar code 1;
//P1.0~P1.3行线输出都为0,准备读列状态
P1=0xf0;
if((P1&f0) !=0xf0)
{
//如果P1.4~P1.7 不全为1,可能有键按下
//延时去抖动,延时函数参见例5-11
delay10ms (void) ;
//重读P1.4~P1.7,若还是不全为1,定有键按下
if( (P1&f0) !=0xf0)
// P1.0 行线置为0,开始行扫描
code h=0xfe;
while ((code_h&0x10) !=0xf0) ;//判断是否扫描到最后一行,若不是,继续扫描
{
//P1口输出行扫描值
P1= code h;
if( (P1&f0) !=0xf0) ;
{
//如果P1.4~P1.7 不全为1,该行有键按下
code_l=(P1&0xf010x0f) ;//保留P1口高4 位,低4 位变为1,作为列值
return( (~code_h )+ (~code_l) ); //键值=行扫描值+列扫描值,键值返主程序
/ /若该行无键按下,往下执行
}
else
code h= (code_h<<1) 10x01;
/行扫描值左移,准备扫描下一行
}}}
//无键按下,
return (0);}
返回0
作者:
GTY123
时间:
2018-3-24 23:06
cjjcjj1 发表于 2018-3-24 21:09
你好!这个程序要求比较奇怪。。。肯定没有现成的;
还有 DA 用的什么芯片?是实物还是仿真?
用的是DAC0832,是进行仿真的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1