单片机读/写端口或引脚区别及具体1个用例(一种基于STC8G1K08A最小8脚嵌入式单片机LED安全夜灯方案)

这篇具有很好参考价值的文章主要介绍了单片机读/写端口或引脚区别及具体1个用例(一种基于STC8G1K08A最小8脚嵌入式单片机LED安全夜灯方案)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

51单片机读引脚和读端口测试总结_单片机怎么读取引脚电平_爱嘟嘟的小屁孩的博客-CSDN博客

近期看了几篇有关单片机读/写端口或引脚的区别的文章,其中上面引用本CSDN的这篇文章,总结的2点感觉还不错,先引用一下:

1. 51单片机里对某一个I/O口进行读--改--写(例如上面的取反后写回)操作时,读取的是与之对应的锁存器的输出,而不是实际物理引脚的电平;其他非读--改--写(例如上面的if XX== 0)指令读取的是引脚电平。

2. 读引脚电平时一定要先向该端口写1,然后再读取引脚电平!

其中:第2点说的可能是针对已设置I/O为双向的情况!  实际可能不用写1,只需临时改写端口为高阻态也行的,高阻态时不用管原来写的端口是1还是0,反正我只是读外部引脚状态,该办法的具体应用实例详见我下面的笔记内容:

现在,直接用C语言编程的的多,用汇编的越来越少了。就如我一个老射频电子工程师,几十年前啥都学过,真正要理解和说清楚单片机读/写端口还是引脚的区别,可能也得理论和实践相结合才能说的简单,通俗易懂。

我玩STC两年才2年,也是近期才比较深刻的体会,理论暂不多说,只分享一下本人近期在设计一种LED安全夜灯时涉及的其中有关笔记:时间关系,下面直接引用了一下我研究过程中的一些笔记,可能有点啰嗦了,后面必要时有空再精简(可能对有些人有用,暂保留)。

1、我近期在用STC8G1K08A(SOP8脚带ADC)代替之前的Tssop20脚封装的MCU,力求总体方案最为精简可靠,物尽其用,8脚能搞定的尽量不用16脚或20脚(16脚的一般SOP8封装体积很大,Tssop20封装的很薄很小其实也贵不了几毛钱,关键看自己需要,我选8脚主要是练习引脚复用,优化精简电路,自己岁数大了也好焊接,呵呵!);

2、8脚除去电源和地只剩6脚:控制1个微型三色LED(红蓝绿可组合7色常亮或7色常闪共二类14种模式,常亮可当小夜灯或氛围灯,常闪可当安全警示灯或充电电量指示灯)和1个大的白色LED(主要当夜灯用)用掉4个脚,剩下2个脚1个接按键1个接充电检测电路。这样8脚已满,且P30P31本身已复用串口收发及ISP代码下载口用了。 原用20脚有1脚分压检测电池电量的,这次改用内部15通道ADC测VCC再修正为电池电压Vbat了(选STC8G1K08A,8脚带A的才有ADC功能,外围有防反接二极管降压等,Vbat值修正可得),又省1个脚8脚足矣!

3、后来又加了一个早晚自动亮灭光控功能,究竟该复用哪个脚呢?期间研究分析计算测试验证了很久,才最终确定了某一种最简引脚复用方案。而引脚复用期间,往往势必首先就会碰到更多的读写引脚还是读写端口的问题!读引脚就得充分结合自己设计的外围电路!例如:复用充电检测、按键还是LED控制引脚,外围电路设计方案都大不相同。感兴趣的另行探讨...

4、前面只是引子,下面再具体实例说一下其中一种利用改变I/O口设置来解决具体问题的方法:

假设白色夜灯用了P55脚!白天怎么自动关闭它而晚上又能自动复原呢(不是主动开关那种)?其中一种方法就是:白天DN=0(晚上DN=1)把这个P55引脚I/O设置为高阻(电流不进不出不就关灯了么!)晚上设回双向夜灯自动复原(注意原状态可能关也可能开,反正不管,复原即可):if(DN==0)P5M1=0x20;else P5M1=0x00;这句中临时改变P55I/O口设置也是写端口(寄存器)的一种;若直接写端口/引脚P55=1/0呢:状态就变成人为主动的开或关灯了,性质不同,不属于早晚自动亮灭了!

假设我想晚上P55白色夜灯亮时自动关闭/屏蔽3色彩灯(P30P31P54),夜灯灭时彩灯又能自动复原,早晚都能自动亮灭,可用:if(P55==0){P3M1=0x03,P5M1=0x30;};这句中if(P55==0)就是读外部夜灯P55引脚状态(0亮灯1灭灯),这时高阻和双向时都可正确读外部引脚状态(可不管原来是开0/关1)!若关闭彩灯直接写端口/引脚P30=P31=P54=1(注:可连写的,但是又变成人为的主动开关彩灯了,不属于早晚自动亮灭了);

以上2种情况涉及夜灯原来状态需要早晚自动亮灭问题的最简解决办法,当然,也可先记录一下原来开关状态(可能要结合EEPR记录和复原等办法,方法就相对复杂很多了)...

假设我光控检测电路复用按键脚P32或充电检测脚P33又或LED控制脚:因涉及具体LED等特性,外围电路设计大为不同,说起来确实有点复杂,我也搞了很久才最终定下一个最简方案,还请先自行思考,必要时再进一步补充或探讨...

总之,要真正理解读写引脚或端口的不同,灵活设置I/O口设置,才能得心应手。

注1:封面配图:为本人自学3dmax改进设计的其中一种某经典跑车模型外壳,可以直接放大或缩小并交付3D打印.壳底直插自己设计的很小的PCB(外壳约56*25*18mm,PCB约47*15mm);对3DMAX设计或外壳3D打印感兴趣的朋友再行探讨;

附1:就是本人近期利用最小的STC8G1K08A,8脚MCU设计的小玩意简介,可见8脚MCU功能的强大。其实8K代码我才用不到2K,小儿科了,但也涉及了最基本一键长短按、ADC电池监控、LED读写控制、早晚光控自动亮灭以及多脚复用或究竟是读写端口还是引脚、超级省电技术等等也不算很少的小而全的代码逻辑问题了,需要时还可略改外围电路复用更多引脚功能,如气压温湿度传感控制或泡水防火监控等等等等,仅供参考:代码略,需要时另行行探讨;

LED安全夜灯使用指南(V230530)

功能简介

基于STC8G1K08A最小8脚嵌入式单片机、光控及超级省电技术,一键操作、早晚自动亮灭、通用USB充电口、低电量告警或自动关机。小巧玲珑(总重约13克)、省电耐用,可当床头夜灯、室内外安全警示灯或小玩具使用。其中:(大)夜灯独立大LED;小彩灯为一颗微型RGB三色LED,单色或组合混色共14种模式:常亮7种(绿、红、蓝、白、青、黄、紫)可当小夜灯用,常闪7种(同前)可当安全警示灯。文章来源地址https://www.toymoban.com/news/detail-716790.html

使用指南

  1. 彩灯 短按开机,14种彩灯模式全天自动隔2秒顺序循环显示,中间灭4秒;再次短按循环显示即停,即选好想要的彩灯模式,后面也可手动短按选择彩灯模式,按1次换1种;早晚自动亮灭;白天短按可检查彩灯设置:亮4秒或闪2次后自动灭灯。
  2. 夜灯长按1秒开/关夜灯,夜灯开彩灯灭,早晚自动亮灭;夜灯关全灭自动待机。白天短按可检查大灯设置:若夜灯已开亮0.5秒自动灭,若夜灯已关自动转彩灯循环显示可选彩灯模式。
  3. 自动待机灯已全关或电量过低(xx%)自动待机;短按开机或充电解除。
  4. 一键关机长按3秒一键关机;短按开机或充电解除。
  5. 充电(电量指示)不足50%:红灯亮1秒闪1次;50%以上:红灯亮1秒绿灯闪1次;75%以上:绿灯亮1秒红灯闪1次; 90%以上:绿灯亮1秒闪1次;充满 绿灯常闪(快闪)。
  6. 告警电量低于xx%告警(红灯隔2秒快闪2次);电池充满绿灯快闪可当提醒。
  7. 基本性能(满电状态可连续使用时长)大夜灯模式约5天; 小彩灯常亮模式(小夜灯)约1个月;小彩灯常闪模式(安全警示)约2.5个月; 可连续待机约2年。
  8. 注意事项儿童使用须有大人看管!   室外使用谨防日晒雨淋!该外壳3D打印材料特性:负荷变形温度xx℃,不适宜放置高温及强太阳光环境;内置xxmAh聚合物锂电池:有过充过放及短路保护电路,但不宜经常过充/过放。

到了这里,关于单片机读/写端口或引脚区别及具体1个用例(一种基于STC8G1K08A最小8脚嵌入式单片机LED安全夜灯方案)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C51单片机各引脚功能

    51单片机常见双列直插式40引脚 Vcc(40脚):接5V电源(单片机正常工作电压范围在3.8V~5.5V,可用电脑的usb5V供电) Vss(20脚):接GND 片内振荡 XTAL1(19脚):外接石英晶体和微调电容 XTAL2(18脚):外接石英晶体和微调电容 片外振荡 XTAL1(19脚):外部时钟振荡信号输入 XTAL

    2024年02月08日
    浏览(42)
  • 学习51单片机引脚及功能说明

    1.输出/输入引脚 (1)P0口:不接外部存储器和不扩展I/O口时,作为双向输入/输出口,在接有外部存储器和扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。 (2)P1口:作为双向I/O口使用。 (3)P2口:作为双向I/O口使用,在扩展片外寄存器时,作为高8位地址总线

    2024年02月05日
    浏览(39)
  • 【单片机】74系列芯片引脚图资料大全

    反相器 驱动器   LS04 LS05 LS06 LS07 LS125 LS240 LS244 LS245 与门 与非门   LS00 LS08 LS10 LS11 LS20 LS21 LS27 LS30 LS38 或门 或非门 与或非门   LS02 LS32 LS51 LS64 LS65 异或门 比较器   LS86 译码器   LS138 LS139 寄存器   LS74 LS175 LS373 反相器:           Vcc  6A  6Y  5A  5Y  4A  4Y    六非

    2024年04月27日
    浏览(38)
  • 51单片机(At89C51)组成,引脚介绍

    一,单片机的发展史 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/0口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路

    2023年04月13日
    浏览(56)
  • S32K3系列单片机开发笔记(SIUL是什么/配置引脚复用的功能·)

    今天花时间看了一下,SIUL2模块的相关内容,并参照文档,以及例程作了一些小记录,知道该如何使用这个外设,包括引脚的配置,中断配置,以及常用函数的使用等,但对其中的一些细节还需要跟深入的学习和了解。 系统集成单元:System Integration Unit Lite2 (SIUL2) 提供外部设

    2023年04月25日
    浏览(42)
  • 51单片机和32单片机有什么区别?该从哪个开始入门学习?

    单片机 (microcontroller)是一种能够完成特定功能的微型电脑。它包含了中央处理器(CPU)、存储器(ROM、RAM)以及输入/输出接口(I/O)。单片机被广泛应用于各种电子设备中,如电子手表、电子计算器、家用电器、汽车电子、机器人等等。 目前市面上最常见的单片机有 51单

    2024年02月08日
    浏览(43)
  • FPGA和单片机什么区别

    写给初学者的小blog(描述不对的,请评论区指出谢谢):   单片机应该是大家最开始接触的小soc,通过编写c/汇编,可以实现简单的逻辑控制功能; fpga,通过编写verilog 描述相关的逻辑,或者利用软件中自带的库,搭建简单的逻辑电路,实现简单的控制;   在这里简单

    2024年01月16日
    浏览(46)
  • FPGA与单片机有什么区别?

    1.开发语言                 学过 单片机 的小伙伴肯定都知道,不管是51,还是32单片机使用的开发语言都是C语言,不同的单片机只是使用的开发环境不同,但代码编程都是c语言实现的。         FPGA使用的是HDL语言,就是硬件描述的语言,目前应用最广泛的应该是

    2024年02月08日
    浏览(38)
  • 单片机和Linux嵌入式区别

    单片机是一种集成电路,它能够在一个芯片上完成各种计算、控制和管理任务。单片机没有明确的分层,这是因为它通常被用来设计嵌入式系统,其程序结构和功能要根据具体的应用需求来设计。 在单片机的程序设计中,可以通过一些方法将程序分为不同的层次,比如可以将

    2024年01月17日
    浏览(64)
  • 为什么MCS-51 单片机总线和端口要有匹配的驱动电路?

            MCS-51系列单片机是一种广泛使用的8位微控制器,它通常用在嵌入式系统中。单片机的总线和端口可能需要额外的驱动电路,这取决于外部设备的电气特性和所需的电流能力。下面将从以下几个方面分析为什么驱动电路这么重要:          电流驱动能力: MCS-51单片机

    2024年02月20日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包