数码之家

 找回密码
 立即注册
搜索
查看: 1404|回复: 22

[C51] 小白自学C51单片机,红外遥控器LCD1602显示码值

[复制链接]
发表于 2024-1-21 22:47:28 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个程序花的时间比较多,主要是去理解红外协议及解码的过程
最终验证的时候感觉还是挺有成就感的,

这个简单的试验板没有配遥控器,在家里翻箱倒柜只找到一个灯的遥控器,就它了,
先上红外协议
01.png

效果图
02.jpg

03.jpg

04.jpg

05.jpg
所有按键前面都是80和7F后面不一样,
这4个16进制转换成二进制就是4组8位的码,

12组是用户码,34是数据码
而且互为反码
80   10000000
7F   01111111
01   00000001
FE  11111110


打赏

参与人数 2家元 +72 收起 理由
jf201006 + 12 謝謝分享
家睦 + 60

查看全部打赏

 楼主| 发表于 2024-1-21 22:55:11 | 显示全部楼层
还是采用模块化的思路
模块化确实方便,像这个程序的LCD1602部分,直接把之前的模块复制过来就能用
头痛的事情就是变量太多了,明天尝试把所有全局变量放到一个模块中看看

1.png

程序参考上网上的示例和自己的理解,
注释全是自己的理解,有不对的地方,请批评指正,谢谢

2.png

3.png

4.png

5.png

6.png

7.png

8.png

9.png

10.png

11.png

12.png

13.png

14.png

15.png




打赏

参与人数 1家元 +15 收起 理由
亚历山大 + 15

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-1-21 23:01:06 | 显示全部楼层
厉害,你这进步神速。。。接下来学一下立创EDA画板吧,打样是免费包邮的,再用红包撸一些STC单片机,然后就可以做一些有意思的东东了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-21 23:20:08 | 显示全部楼层
猪小呆 发表于 2024-1-21 23:01
厉害,你这进步神速。。。接下来学一下立创EDA画板吧,打样是免费包邮的,再用红包撸一些STC单片机,然后就 ...

画板早就会了,我就是学电子的,就是因为画的板上有单片机,才想着学一学,也不知道能做些什么
回复 支持 反对

使用道具 举报

发表于 2024-1-21 23:32:29 | 显示全部楼层
hellozwt 发表于 2024-1-21 23:20
画板早就会了,我就是学电子的,就是因为画的板上有单片机,才想着学一学,也不知道能做些什么 ...

那就先来一个小目标,做一个示波器?
回复 支持 反对

使用道具 举报

发表于 2024-1-22 04:38:57 | 显示全部楼层
手推车啥时候能接入 Arduino,我就有动力折腾回来了。

以红外为例,arduino 上随便一个开源的三方库,就支持这么多品牌的直接编解码。
相当于各式各样造好的轮子,你可以用也可以改,而不是天天在纠结怎么自己造轮子。

而且这些代码是 CPU 中性的,AVR、8266、stm32、esp32 都可以运行:

2024-01-22_043505.png
回复 支持 反对

使用道具 举报

发表于 2024-1-22 08:51:59 | 显示全部楼层
反码 在 许多英文资料中,叫对 1 的补码 ---- 1‘s complement
回复 支持 1 反对 0

使用道具 举报

发表于 2024-1-22 08:57:31 | 显示全部楼层
谢谢分享~以前学的都忘了
回复 支持 反对

使用道具 举报

发表于 2024-1-22 09:14:48 | 显示全部楼层
感谢分享,红外遥控解码可以学到很多编程知识和技巧
回复 支持 反对

使用道具 举报

发表于 2024-1-22 09:18:08 | 显示全部楼层
强人,膜拜了!!
回复 支持 反对

使用道具 举报

发表于 2024-1-22 10:00:23 | 显示全部楼层
厉害厉害,老哥进步神速,很快就炉火纯青了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-22 10:09:46 | 显示全部楼层
还早着呢,手上这个STC89C52没有AD功能,准备换个IC再学一下AD转换 PWM驱动
回复 支持 反对

使用道具 举报

发表于 2024-1-22 10:37:19 | 显示全部楼层
hellozwt 发表于 2024-1-21 22:55
还是采用模块化的思路
模块化确实方便,像这个程序的LCD1602部分,直接把之前的模块复制过来就能用
头痛的 ...

你这用的什么编辑器,风格挺好的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-22 10:50:56 | 显示全部楼层
wangxiangtan2 发表于 2024-1-22 10:37
你这用的什么编辑器,风格挺好的

写程序是在那台ACER的小本本,我用U盘把程序带回家,晚上用家里的电脑发的,家里这台装的是debian 系统,IDE是geany
回复 支持 1 反对 0

使用道具 举报

发表于 2024-1-22 11:28:58 | 显示全部楼层
对,努力实现下一个小目标,相信自己!
回复 支持 反对

使用道具 举报

发表于 2024-1-22 12:09:17 | 显示全部楼层
俺这阵在改华为大炮,于是想学习STM32,始终搞不懂,摸不到门,看来是老了

打赏

参与人数 1家元 +30 收起 理由
hideaway + 30 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-1-22 12:45:23 | 显示全部楼层
本帖最后由 firn 于 2024-1-22 12:55 编辑

全局变量不用放在一个文件里.
变量加上extern, 放定义它的.h 文件里  使用这个变量的.c文件 在头上直接引用其.h就可以了

还有些工程师不喜欢用extern这种方法:
定义两个set() 和get()函数. 里边就给变量赋值或return取值一句,   分别对这个变量进行包裹封装并在h里声明,
这样在其他C里调用它时, 直接set_A(8);  a = get_A(); 这样即可.  
一般大工程多人合作开发喜欢这么搞, 避免使用extern引用来引用去.
回复 支持 1 反对 0

使用道具 举报

发表于 2024-1-22 14:23:36 | 显示全部楼层
c51现在玩的人不如原来多
回复 支持 反对

使用道具 举报

发表于 2024-1-22 14:43:19 | 显示全部楼层
楼主是理科生还是文科?
回复 支持 反对

使用道具 举报

发表于 2024-1-22 17:22:04 | 显示全部楼层
CPU 中性的,AVR、8266、stm32、esp32 都可以运行
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-27 22:22 , Processed in 0.202801 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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