切换到宽版
爱科技/爱创意/爱折腾/爱极致;技术知识分享平台,点击进入新版数码之家网站
  • 12840阅读
  • 80回复

[外设]程序小白一步一步做个8路抢答器(附C语言讲解与电路仿真) [复制链接]

上一主题 下一主题
 

发帖
7078
M币
2386
专家
97
粉丝
469
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2018-07-23
— 本帖被 青柠 设置为精华,作者+3000M币+5专家(2018-07-23) —
本帖详细记录了程序小白一步一步制作八路抢答器的过程,一楼为c语言讲解与仿真,二楼为实物制作。楼主为单片机小白,大神轻喷


前几日,领导下命令,给她做个抢答器,为了不跪搓衣板,硬着头皮答应了。
具体沟通细节,领导要求,最少4路,能显示并锁住抢答信息,并有叮咚提示音。
我靠,我的能力能给你做个导弹模型,但单片机早都还给大学老师了啊。
那就先上万能的淘宝吧,一查更是吓一跳,满足领导要求的最低都要1000多。。。
于是再与领导沟通,我给你做个八路的,但是没有叮咚声音可好?领导说保证能用就行吧。。。。
哈哈,其实做四路与八路是一样的,但是叮咚声音的确搞不定。用蜂鸣器声音太差,买门铃芯片做那个要叫好几声。
先做个能显示的,再慢慢研究语音芯片吧,也许下一个会做个无线的出来呢

首先,做这东西,单片机永远比数字电路简单,而且成本更低。但是C语言都忘光了,又找出郭天祥的书啃了一天。

那就开始做吧
其实逻辑很简单,AT89C51单片机检测io口,有信号,显示并锁存。复位重新开始。

要显示信号,就驱动数码管最简单,八路抢答器,需要8个io口,数码管需要7个io,那单片机选择最简单的stc89c52
要想显示数码管数字,先定义数码管字符
语句:unsigned char code disp[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0xbf}
其中0xf9----0xbf为16进制机器懂得语言
单片机检测io语句:P0=0xff
有按键动作,要识别是人为抢答按下还是干扰,所以要加一个消抖
语句:
button=P0
delay(1200)
判断是抢答按键,那就开始io动作
语句:
button=P0
switch(button)
再判断io是p几,也就是按键值跳转
语句:    
case 0xfe: P1=disp[0];delay(10000);while(1);break;  //0按下,显示1,待机
case 0xfd: P1=disp[1];delay(10000);while(1);break;  //1按下,显示2,待机
case 0xfb: P1=disp[2];delay(10000);while(1);break;  //2按下,显示3,待机
case 0xf7: P1=disp[3];delay(10000);while(1);break;  //3按下,显示4,待机
case 0xef: P1=disp[4];delay(10000);while(1);break;  //4按下,显示5,待机
case 0xdf: P1=disp[5];delay(10000);while(1);break;  //5按下,显示6,待机
case 0xbf: P1=disp[6];delay(10000);while(1);break;  //6按下,显示7,待机
case 0x7f: P1=disp[7];delay(10000);while(1);break;  //7按下,显示8,待机
default: break;

程序就这些,然后把头文件等组装起来,搞定





下面开始仿真

模型电路



上电复位



按键检测



本文需要的程序16进制下载;:

next
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共18条打赏M币+260专家+1
榴莲 M币 +30 優秀文章 2018-10-09
阿甲 M币 +5 学习了,看起来好简洁 2018-07-25
铁木珍 专家 +1 優秀文章 2018-07-25
铁木珍 M币 +20 優秀文章 2018-07-25
411183343 M币 +9 - 2018-07-25
mxlkf M币 +20 歡迎探討 2018-07-24
cushion M币 +20 謝謝分享 2018-07-24
eros8269 M币 +13 謝謝分享 2018-07-23
tntzpq M币 +16 謝謝分享,会编程好,应用多。 2018-07-23
lozy3 M币 +1 好文章,加分。 2018-07-23
12

发帖
7078
M币
2386
专家
97
粉丝
469
只看该作者 1楼 发表于: 2018-07-23
请登录后查看
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共3条打赏M币+41
owenql M币 +8 程序有点小BUG,实际抢答的时候如果几个按钮时间查比较小,程序检测不出来,也不会有显示。 2018-07-25
mxlkf M币 +20 謝謝分享 2018-07-24
佳维 M币 +13 謝謝分享 2018-07-23

发帖
7078
M币
2386
专家
97
粉丝
469
只看该作者 2楼 发表于: 2018-07-23
请登录后查看
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共13条打赏M币+147专家+1
469332798 M币 +15 優秀文章 2018-07-25
q版虎斑猫 M币 +13 - 2018-07-25
girlstorm M币 +13 謝謝分享 2018-07-25
csjsone M币 +13 謝謝分享 2018-07-25
304167981 M币 +8 優秀文章 2018-07-24
mxlkf M币 +20 謝謝分享 2018-07-24
ch104517745 专家 +1 謝謝分享 2018-07-24
ch104517745 M币 +20 謝謝分享 2018-07-24
msi12 M币 +13 简单粗暴 2018-07-23
2545889167 M币 +5 - 2018-07-23
12
离线acer2017

发帖
1518
M币
542
专家
4
粉丝
14
只看该作者 3楼 发表于: 2018-07-23
请登录后查看
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 2018-07-23

发帖
17440
M币
31
专家
9
粉丝
8249
只看该作者 4楼 发表于: 2018-07-23
请登录后查看
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 2018-07-23

发帖
17440
M币
31
专家
9
粉丝
8249
只看该作者 5楼 发表于: 2018-07-23
请登录后查看
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 上拉,提供高电平。按键通电位为低,值有效 2018-07-23
离线xx6210xx

发帖
888
M币
1327
专家
2
粉丝
18
只看该作者 6楼 发表于: 2018-07-23
请登录后查看
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 2018-07-23
离线asus21

发帖
2120
M币
4481
专家
1
粉丝
53
只看该作者 7楼 发表于: 2018-07-23
请登录后查看
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 2018-07-23

发帖
7078
M币
2386
专家
97
粉丝
469
只看该作者 8楼 发表于: 2018-07-23
请登录后查看

发帖
17440
M币
31
专家
9
粉丝
8249
只看该作者 9楼 发表于: 2018-07-23
回 亲爱的混蛋 的帖子
请登录后查看
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 2018-07-24
快速回复
限80 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个