找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2620|回复: 9
打印 上一主题 下一主题
收起左侧

请问单片机C语言如何用键盘给变量赋值?

[复制链接]
跳转到指定楼层
楼主
ID:897410 发表于 2021-4-13 22:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
举个例子 我想用键盘 输入 4个十进制数 80 ,5 ,70 ,4,这四个数,应该如何去考虑,看了好多关于键盘的资料,还是不知道这个程序该如何去写
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:716656 发表于 2021-4-14 01:32 来自手机 | 只看该作者
检测到第一个数字把数赋值给shu【1】,i++,这样一直测就行。如果按下确定键或计时超过多少未操作,把之前测的数,组合成1个几位数字,不知道我说清了没有

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:592807 发表于 2021-4-14 08:58 | 只看该作者
压着我头发啦 发表于 2021-4-14 01:32
检测到第一个数字把数赋值给shu【1】,i++,这样一直测就行。如果按下确定键或计时超过多少未操作,把之前 ...

最简单就是 080  005  070  004
再进一步 80+确认按键  5+确认按键  70+确认按键   4+确认按键
再再进一步  使用定时器,2秒内无其他数字输入则将数字合成输入

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:429003 发表于 2021-4-14 15:00 | 只看该作者
你首先的建立一条硬件链路,单片机与PC机串口相互连接,PC机端用串口工具发送格式化的数据串给单片机,单片机收到后按约定格式提取需要的数据后赋值给相关的变量!

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:844772 发表于 2021-4-14 15:14 | 只看该作者
就四个数,不如就用四个按键分别代表这四个数,按哪个就是输入哪个了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:897410 发表于 2021-4-14 21:56 | 只看该作者
xstong 发表于 2021-4-14 15:00
你首先的建立一条硬件链路,单片机与PC机串口相互连接,PC机端用串口工具发送格式化的数据串给单片机,单片 ...

只用仿真就行了,而且我不会太用虚拟串口。
回复

使用道具 举报

7#
ID:905961 发表于 2021-4-14 22:25 | 只看该作者
#i nclude<reg52.h>#define uint unsigned int#define uchar unsigned char#define duank P1               //键盘到单片机的端口//DB 50H,1CH,39H,16H,38H,78H,70H,0FEH,0EFH,0FFH;A  B, C,    D,  E, ,F   ,P, -,  ,.  ,COLSE//DB 01H,0C7H,22H,82H,0C4H,88H,08H,0C3H,00H,80H;带小数点的字形码0.,1.,-----9.uchar code table[]={     //键盘编码"1~F~0"0xD7,0x32,0x92,0xD4,0x98,0x18,0xD1,0x10,0x90,0x50,0x1C,0x39,0x16,0x38,0x78,0x11};uchar num,temp,num1;void delay(uint z)      //延时子程序 Zms  { uint x,y; for(x=z;x>0;x--)  for(y=110;y>0;y--);}uchar keyscan();       //键盘函数声明void display(uchar aa);//显示函数声明void main()            //主函数{  while(1)  {   display(keyscan());  }}void display(uchar aa)    //显示子程序{   //dula=1;   //P0=table[aa-1];   //dula=0;            SBUF=table[aa-1];}uchar keyscan()   //键盘扫描程序,取回一个键盘号{   duank=0xfe;   temp=duank;   temp=temp&0xf0;   while(temp!=0xf0)    {     delay(5);     temp=duank;     temp=temp&0xf0;     while(temp!=0xf0)     {      temp=duank;     switch(temp)      {       case 0xee:num=1;        break;   
回复

使用道具 举报

8#
ID:905967 发表于 2021-4-14 22:51 | 只看该作者
键盘编码"1~F~0"0xD7,0x32,0x92,0xD4,0x98,0x18,0xD1,0x10,0x90,0x50,0x1C,0x39,0x16,0x38,0x78,0x11};

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:429003 发表于 2021-4-15 08:59 | 只看该作者
YYC7491 发表于 2021-4-14 21:56
只用仿真就行了,而且我不会太用虚拟串口。

仿真调试,打开变量监视窗口,可监控、修改任何一个变量,有什么困哪? 没太理解你的问题!
回复

使用道具 举报

10#
ID:897410 发表于 2021-4-15 18:10 | 只看该作者
xstong 发表于 2021-4-15 08:59
仿真调试,打开变量监视窗口,可监控、修改任何一个变量,有什么困哪? 没太理解你的问题!

Proteus仿真的时候 可以直接修改变量吗? 对这些软件 只会基本的功能,用的不是很熟练
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表