切换到宽版
  • 7218阅读
  • 80回复

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

上一主题 下一主题
 

发帖
6922
M币
658
专家
65
粉丝
366
— 本帖被 青柠 设置为精华,作者+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
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共17条打赏M币+230专家+1
阿甲 M币 +5 学习了,看起来好简洁 07-25
铁木珍 专家 +1 優秀文章 07-25
铁木珍 M币 +20 優秀文章 07-25
411183343 M币 +9 - 07-25
mxlkf M币 +20 歡迎探討 07-24
cushion M币 +20 謝謝分享 07-24
eros8269 M币 +13 謝謝分享 07-23
tntzpq M币 +16 謝謝分享,会编程好,应用多。 07-23
lozy3 M币 +1 好文章,加分。 07-23
心灵摩鬼 M币 +20 優秀文章 07-23
12

发帖
6922
M币
658
专家
65
粉丝
366
只看该作者 1楼 发表于: 07-23
程序与仿真搞定,那就开始做实物吧
最小系统版搭个模型出来




为了实物制作画的草图



数码管选择,我宝贝堆里最大的了,哈哈







洞洞板出个模型






上电测试,复位正常



按键检测正常




找个盒子,我手里只有这种比较大的盒子了
去掉耳朵







装盒子




再做个内部供电系统,tp4056充电+4块锂电池
先做充电电路



充电电流限制在580ma,编程电阻为1.5k



宝贝堆里的电池



电路测试正常



安装开关



制作8条抢答器线接口



内部图,有点空哈





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

发帖
6922
M币
658
专家
65
粉丝
366
只看该作者 2楼 发表于: 07-23


内部再继续凌乱的接线




用汽车太阳膜做滤光膜,效果还可以吧



复位接口






抢答按键



用小盒子做抢答手柄














防止被轻易扯坏,用扎带+胶水固定哈



完成



没文化太可怕,有线的太啰嗦。。。。无线的又不会。



测试,1---8抢答正常
复位正常
工作电流16ma
里面电池是:1800mAh*4=7200mAh,够用好长时间哈



最后整体图



本帖完
欢迎大家用M币砸我吧,第一次发单片机相关制作,哈哈
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共13条打赏M币+147专家+1
469332798 M币 +15 優秀文章 07-25
q版虎斑猫 M币 +13 - 07-25
girlstorm M币 +13 謝謝分享 07-25
csjsone M币 +13 謝謝分享 07-25
304167981 M币 +8 優秀文章 07-24
mxlkf M币 +20 謝謝分享 07-24
ch104517745 专家 +1 謝謝分享 07-24
ch104517745 M币 +20 謝謝分享 07-24
msi12 M币 +13 简单粗暴 07-23
2545889167 M币 +5 - 07-23
12
离线acer2017

发帖
1341
M币
503
专家
3
粉丝
9
只看该作者 3楼 发表于: 07-23
等楼主下一步增加语音报数功能
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 07-23

发帖
1747
M币
1638
专家
0
粉丝
354
只看该作者 4楼 发表于: 07-23
case分支后边的 break; 去掉吧。
那句没有机会执行到的。
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 07-23

发帖
1747
M币
1638
专家
0
粉丝
354
只看该作者 5楼 发表于: 07-23
我是数码小透明,
R1...R8是不是一个排阻?
它们是下拉电阻对不对?
我在看杜洋的视频学电子制作。
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 上拉,提供高电平。按键通电位为低,值有效 07-23
离线xx6210xx

发帖
707
M币
1022
专家
2
粉丝
14
只看该作者 6楼 发表于: 07-23
我 擦,感觉没有蛋哥玩不了的~~~膜拜·~
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 07-23
离线asus21

发帖
2084
M币
4575
专家
1
粉丝
49
只看该作者 7楼 发表于: 07-23
楼主这都叫没文化,那我是文盲了。
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 07-23

发帖
6922
M币
658
专家
65
粉丝
366
只看该作者 8楼 发表于: 07-23
上拉,提供高电平。按键通电位为低,值有效

发帖
1747
M币
1638
专家
0
粉丝
354
只看该作者 9楼 发表于: 07-23
回 亲爱的混蛋 的帖子
亲爱的混蛋:上拉,提供高电平。按键通电位为低,值有效 (2018-07-23 09:05) 回 亲爱的混蛋 的帖子

又学到了,感谢楼主解答。
本帖最近打赏记录:共1条打赏M币+5
亲爱的混蛋 M币 +5 - 07-24
快速回复
限80 字节
“新手上路”发帖需审核后才能显示(请认真发帖),达到数码9级后取消此限制
 
上一个 下一个