就是现在只知道光敏电阻没有光照的时候,npn三极管导通,同时4角接地,3角输出低电平,但仿真结果是输出方波,是怎么回事呢?
请问这个电路的原理是怎么运行的呢
就是现在只知道光敏电阻没有光照的时候,npn三极管导通,同时4角接地,3角输出低电平,但仿真结果是输出方波,是怎么回事呢?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 - 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7735117
- 这篇博客也不错, 你可以看下外部中断实验 编写程序学习外部中断的电平触发方式。无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。
- 除此之外, 这篇博客: 备战蓝桥杯单片机倒数第四天 小蜜蜂老师公众号更新内容中的 【进阶01】灯光闪烁与数码管计数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
这个主要是解决LED和数码管冲突问题,对锁存器初始化的写法加上了所有锁存器都不选择的代码,更好的可以避免不同操作之间的影响,并且先将要赋的值送到端口然后在打开锁存器
特训案例【进阶02】长按与短按控制数码管显示
#include "reg52.h" sbit L1 = P0^0; sbit L2 = P0^1; sbit L8 = P0^7; unsigned char led_stat = 0xff; unsigned char num1 = 0,num2 = 0; unsigned char code smg_data[] = {0xc0,0xf9,0xA4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void SMG_Display_Data(void);//1.简单延时 void delay(unsigned int t) { while(t--); } void Delay_s(unsigned int t) { while(t--) { SMG_Display_Data(); //在延时期间保持数码管刷新 } } void Init_74HC138(unsigned char channel)//主要是在使用之后确定把锁存器关掉了 { switch(channel) { case 4:P2 = (P2 & 0x1f) | 0x80;break;//LED case 5:P2 = (P2 & 0x1f) | 0xa0;break;//蜂鸣器和继电器 case 6:P2 = (P2 & 0x1f) | 0xc0;break; //数码管位选 case 7:P2 = (P2 & 0x1f) | 0xe0;break;//数码管段码 case 0:P2 = (P2 & 0x1f) | 0x00;break;//所有锁存器不选择 } P2 = (P2 & 0x1f) | 0x00;//所有锁存器不选择 } void SMG_DisplayBit(unsigned char pos,unsigned char dat)//先输送内容,再打开响应的端口 { P0 = (0x01 << pos); Init_74HC138(6); P0 = dat; Init_74HC138(7); } void SMG_All(unsigned char dat) { P0 = 0xff; Init_74HC138(6); P0 = dat; Init_74HC138(7); } void Init_System() { P0 = 0xff; Init_74HC138(4); P0 = 0x00; Init_74HC138(5); SMG_All(0xff); } void SMG_Display_Data(void) { SMG_DisplayBit(0,smg_data[num1]); delay(200); SMG_DisplayBit(1,0xff); delay(200); SMG_DisplayBit(2,0xff); delay(200); SMG_DisplayBit(3,0xff); delay(200); SMG_DisplayBit(4,0xff); delay(200); SMG_DisplayBit(5,0xff); delay(200); SMG_DisplayBit(6,smg_data[num2/10]); delay(200); SMG_DisplayBit(7,smg_data[num2%10]); delay(200); SMG_All(0xff); delay(200); } void Led() { led_stat &= ~0x80; //L8电亮 P0 = led_stat; Init_74HC138(4); Delay_s(200); //在进行LED操作的时候也对数码管进行刷新 led_stat |= 0x80; //熄灭 P0 = led_stat; Init_74HC138(4); Delay_s(200); value2++; if(value2 == 100) { value2 = 0; } //L1 和L2 灯同时翻转 if((led_stat & 0x03) == 0x03) { led_stat &= ~0x03; } else { led_stat |= 0x03; } P0 = led_stat; Init_74HC138(4); value1++; if(value1 > 9) { value1 = 0; } } void main(void) { Init_System(); while(1) { Led(); SMG_Display_Data(); } }
解决 无用评论 打赏 举报
悬赏问题
- ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
- ¥15 虚拟机检测,可以是封装好的DLL,可付费
- ¥15 kafka无法正常启动(只启动了一瞬间会然后挂了)
- ¥30 使用matlab将观测点聚合成多条目标轨迹
- ¥15 Workbench中材料库无法更新,如何解决?
- ¥20 如何推断此服务器配置
- ¥15 关于github的项目怎么在pycharm上面运行
- ¥15 内存地址视频流转RTMP
- ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
- ¥15 有没有整苹果智能分拣线上图像数据