| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【51单片机】STC_B开发板项目《猜猜我是几》 -> 正文阅读 |
|
[嵌入式]【51单片机】STC_B开发板项目《猜猜我是几》 |
Github链接:https://github.com/Red-Pitaya/Guess-Please/ 一、 实现要求
二、 总体方案设计利用现有的STC_B学习板设备,结合数码管滚动显示功能,非易失存储器功能,导航按键功能和蜂鸣器功能,电子音乐功能,485通信功能,将猜测数字大小并给出反馈结果与猜测次数显示在数码管上,实现双人猜测数字小游戏功能。发送方负责给出正确数字(0~99),并存入非易失存储器中,并在收到猜测的数字后发送反馈结果。猜测方负责猜测数字并发给发送方。通过导航键上下左右可以调整数字每一位的大小。 三、 实验过程利用杜邦线连接好两块板子,两人通过485通信进行数据交互,实现实时猜测游戏。游戏最多猜测次数为7次,当已猜过七次未猜中或猜中,会自动结束游戏,分类显示滚动字样“SUCCESS”或“FAIL”。
猜测方:通过控制导航键上下左右调整猜测数字的大小,确认后按下K1发送(同时蜂鸣器发声)。当收到发送方的大小反馈时(第八位显示)为0或1则可继续调整发送(为0会发出降调的音乐,为1发出升调的音乐)。
当猜测次数大于七次后,数码管持续滚动显示“FAIL”。游戏失败,结束。 四、 硬件原理
数码管显示:由于全程没有用LED灯,所以P0口设为推挽模式,P2.3设为0。利用定时器0中断进行显示。将初始值TH0=(65535-1000)/256,TL0=(65535-1000)%256,即每隔1ms就会溢出,进而进入中断函数,所以每隔1ms会运行中断函数里的程序。 普通按键:主要设计硬件的功能为消抖。由于按下按键后电平的转换大致为: 因此用延时将按下后至稳定之间的抖动与抬起时的抖动用5ms的延时消除。 (此为写一个字节时序,其余皆可从《非易失存储器24C01、24C02、24C04、24C08、24C16数据手册》中查询) RS485通信:使用RXD线接收数据,用TXD发送数据。对应发送、接收数据完成(S2RI、S2TI硬件置1)触发串口中断Uart2_Routine(设置的串口2),并把管脚切换为P4.6,P4.7。所有数据通过S2BUF传输。串口初始化为S2CON = 0x10即串口2接收,AUXR |= 0x14即1T模式并启动定时器2。
普通按键:主要为按键1引脚对应触发外部中断0,通过设定寄存器设置按键1上升沿触发外部中断,当按键1被按下时启动数据发送。由于是使用按键中断实现数据发送的,因此串口中断的优先级高于按键中断。即IP2 |= 0x01。 导航按键:ADC口对来自导航按键不同方向的电压值进行采集,导航按键的每一个方向被按下,都会引起实际电压的改变,与A/D转换器配合,可以获得按下后A/D转换的值。将ADRJ设为0,则ADC_RES存放高八位,ADC_RESL存放低两位。ADC_CONTR = 0x8F,CLK_DIV = 0X00。 蜂鸣器:无源蜂鸣器只需改变Beep端口的电平,产生一个周期性的方波即可使蜂鸣器发生声音,不同的频率发出的声音不同。 五、 软件设计与实现数码管显示:借鉴八位数码管滚动显示案例,在定时器T0中断函数中,将位选每隔1ms加一,从而形成循环显示的数字。 非易失性存储器:利用写成的I2C开始和结束信号,应答信号,位传输信号,直接调用编写发送字节与接收字节函数。并在导航按键的K3中调用发送字节函数,即存储;K2的延时消抖程序中调用接收字节函数,即读取。 RS485通信:在串口中断中将S2RI与S2TI软件置0,由于S2CON不可位寻址,所以S2RI与S2TI不能像SI与RI一样直接软件置0,需要用位与或来置0。外部中断0中利用S2BUF将数据进行存储使用。 蜂鸣器与电子音乐:在K1的按键消抖中添加蜂鸣器发声函数,即可以减少按键电平的不稳定带来的多次发声。 六、 设计总结与心得
七、 参考资料https://mooc1.chaoxing.com/course/203998550.html(电子系统设计与创新基础训练课程平台) |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:21:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |