找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1942|回复: 25
收起左侧

刚开始用stc8g1k08,这个程序写的对不对啊,为啥单片机没反应

  [复制链接]
ID:1026082 发表于 2022-5-12 21:57 来自手机 | 显示全部楼层 |阅读模式
如题,这个D2灯照样亮,是我程序的问题吗
5a9743f6b34ee85d.jpg
-21cfc5bec82a8ef6.jpg
回复

使用道具 举报

ID:1026082 发表于 2022-5-12 22:17 来自手机 | 显示全部楼层
吐槽一下,这个芯片要是能在protues上仿真就好了,要不学习编程确实比较费劲
回复

使用道具 举报

ID:213173 发表于 2022-5-13 05:32 | 显示全部楼层
zzsxjzscx 发表于 2022-5-12 22:17
吐槽一下,这个芯片要是能在protues上仿真就好了,要不学习编程确实比较费劲

void main()
{
        port_mode();
        LED=0;
        beep=0;
        while(1);
}
回复

使用道具 举报

ID:584814 发表于 2022-5-13 08:23 | 显示全部楼层
程序写的只要编译能通过就对,但能不能实现你想要的功能两说;
单片机有没有反应不是肉眼凡胎直接可以看全的;
能仿真通过的未必实物也一样;
先学好基础再深入。
回复

使用道具 举报

ID:339654 发表于 2022-5-13 08:33 | 显示全部楼层
你这三极管给低电平才导通的,给1肯定是没反应的
回复

使用道具 举报

ID:1026082 发表于 2022-5-13 08:49 来自手机 | 显示全部楼层
weijoyer 发表于 2022-5-13 08:33
你这三极管给低电平才导通的,给1肯定是没反应的

很奇怪,这个LED只要上电就亮,我想让他灭,看看程序管不管用
回复

使用道具 举报

ID:136485 发表于 2022-5-13 09:30 | 显示全部楼层
PNP的三极管要给低电平才行,STC的芯片要配置成推挽输出,P1M0=0x03;P1M0=0x00;多看书,不要一点小问题就来问,高手是没空理你的
回复

使用道具 举报

ID:1026082 发表于 2022-5-13 09:40 来自手机 | 显示全部楼层
kxcuser 发表于 2022-5-13 09:30
PNP的三极管要给低电平才行,STC的芯片要配置成推挽输出,P1M0=0x03;P1M0=0x00;多看书,不要一点小问题就来 ...

感谢高手大哥的回复,但是问题是这样的,我的小灯上电就亮,我想让他关掉,所以这样写。推挽模式可能能帮助小灯灭吧
回复

使用道具 举报

ID:170318 发表于 2022-5-13 09:51 | 显示全部楼层
zzsxjzscx 发表于 2022-5-13 08:49
很奇怪,这个LED只要上电就亮,我想让他灭,看看程序管不管用

上电灭的话,端口要设置成双向或推挽,且端口输出为高电平,另电路图中R3、4改成1k,R5取值计算一下,51估计小了
回复

使用道具 举报

ID:170318 发表于 2022-5-13 09:57 | 显示全部楼层
zzsxjzscx 发表于 2022-5-13 09:40
感谢高手大哥的回复,但是问题是这样的,我的小灯上电就亮,我想让他关掉,所以这样写。推挽模式可能能帮 ...

R3、4改成1k的电阻,2k肯定不行。主程序:
void  main()
{
port_mode();
LED=1;
beep=1;
while(1)
{
...
}
}
回复

使用道具 举报

ID:1026082 发表于 2022-5-13 10:02 来自手机 | 显示全部楼层
jhczy 发表于 2022-5-13 09:57
R3、4改成1k的电阻,2k肯定不行。主程序:
void  main()
{

十分感谢解答。小灯的电阻应该不是问题,之前也是用的一样的电路,只不过用的是C52RC控制,能实现功能。我把while加上试试吧。
回复

使用道具 举报

ID:401564 发表于 2022-5-13 10:44 | 显示全部楼层
如果你有电脑又有学习板或者其它的硬件电路板,别用protues,那玩意没有用,只会浪费时间
1,D2是由P1.1控制的,低电平亮
2,P1.1输出要设定成强推挽模式,而不是传统的8051模式
3,如果还亮的话,启用内置的上拉电阻看一下
正常来说,一般是不用这种驱动电路的,不知道你VCC是不是单片机的电源,如果VCC是5V的,单片机是3.3V的,你是控制不了的,而且还有可能损坏单片机
回复

使用道具 举报

ID:136485 发表于 2022-5-13 11:13 | 显示全部楼层
zzsxjzscx 发表于 2022-5-13 09:40
感谢高手大哥的回复,但是问题是这样的,我的小灯上电就亮,我想让他关掉,所以这样写。推挽模式可能能帮 ...

用PNP的三极管比较麻烦,如果供电电压不一样,是关不了的(就比如说你的单片机是5V,但是三极的VCC是12V),除非前面在用一个NPN的三极管控制PNP,当然单片机供电电压和VCC一样就可以
回复

使用道具 举报

ID:1026082 发表于 2022-5-13 12:00 来自手机 | 显示全部楼层
Y_G_G 发表于 2022-5-13 10:44
如果你有电脑又有学习板或者其它的硬件电路板,别用protues,那玩意没有用,只会浪费时间
1,D2是由P1.1控制的 ...

大哥真厉害。vcc供电是和单片机一样的,都是3.3V。我觉得proteus好主要是因为他可以按照电路图构建电路,仿真比较有说服力。这个硬件不是我设计的,之前准备用89C52RC的芯片,临时换到这个STC8G,所以没准备开发版。如果有仿真的话可以更好的分辨是硬件还是软件的问题,方便排查。再次感谢
回复

使用道具 举报

ID:1026082 发表于 2022-5-13 12:00 来自手机 | 显示全部楼层
kxcuser 发表于 2022-5-13 11:13
用PNP的三极管比较麻烦,如果供电电压不一样,是关不了的(就比如说你的单片机是5V,但是三极的VCC是12V ...

供电电压相同,费心了。
回复

使用道具 举报

ID:138119 发表于 2022-5-14 15:39 | 显示全部楼层
电路最好是:     +VCC------>负载(LED)------>三极管(NPN或PNP)或MOS管------> GND,具体原因这里就不说了,楼主要好好补补基础知识!
回复

使用道具 举报

ID:1026496 发表于 2022-5-14 16:27 | 显示全部楼层
建议你使用pmos管,如果使用三极管的电路有问题,比如ao3401  
回复

使用道具 举报

ID:624769 发表于 2022-5-19 11:36 来自手机 | 显示全部楼层
你既然用stc8h了,直接ice不好么?不比protuse好玩么?
回复

使用道具 举报

ID:230742 发表于 2022-5-19 12:19 | 显示全部楼层
建议还是别仿真了。不是说仿真不好,只是就算仿真通过了。做实物也不一定能成功。不如一步到位自己做实物。有问题了直接查,然后就学会了。
就像KEIL 一样,编译通过了,不表示程序没有问题。逻辑通过了不表示单片机能跑出想要的结果。
回复

使用道具 举报

ID:1033105 发表于 2022-6-24 15:23 | 显示全部楼层
新手刚学51,这个程序大部分都可以理解,就是中间的一段
void port _mode()
{
P0M0=0x00;
P0M1=0x00;
P1M0=0x00;
P2M0=0x00;
P2M1=0x00;
P3M0=0x00;
P3M1=0x00;
}
这一段不知道干嘛用的,看图中mcu没有P0M0、P0M1啊。而且程序中也没有用到这些东西。刚学51,有很多东西都不懂,请各位大佬别笑话。
回复

使用道具 举报

ID:908826 发表于 2022-6-24 15:34 | 显示全部楼层
51老鹰 发表于 2022-6-24 15:23
新手刚学51,这个程序大部分都可以理解,就是中间的一段
void port _mode()
{

对每组IO口进行配置,你可以搜一搜就行了
回复

使用道具 举报

ID:99525 发表于 2022-6-24 17:38 | 显示全部楼层
51老鹰 发表于 2022-6-24 15:23
新手刚学51,这个程序大部分都可以理解,就是中间的一段
void port _mode()
{

STC官网下个STC8G的手册学学!
回复

使用道具 举报

ID:491577 发表于 2022-6-24 20:39 | 显示全部楼层
STC8G单片机IO口可以直接控制LED,不需要三极管。
回复

使用道具 举报

ID:1033105 发表于 2022-6-25 09:29 | 显示全部楼层
感谢高手,刚学单片机,有很多的常识不是很理解,请见谅。
是不是可以这么理解:给定端口输出置1,相当于I/O端口输出高位。
如果外部通过10K电阻拉高端口电平的话是不是就不需要在程序中申明了。另外在弱弱的问一下,P0M0和P0M1这两个端口在stc8g1k08中是没有的,为什么要这么申明?
回复

使用道具 举报

ID:161164 发表于 2022-6-25 16:26 | 显示全部楼层
51老鹰 发表于 2022-6-25 09:29
感谢高手,刚学单片机,有很多的常识不是很理解,请见谅。
是不是可以这么理解:给定端口输出置1,相当于I ...

有啊?怎么没有?
2022-06-25_162315.png

2022-06-25_162423.png

回复

使用道具 举报

ID:1033105 发表于 2022-6-25 17:03 | 显示全部楼层
lkc8210 发表于 2022-6-25 16:26
有啊?怎么没有?

非常感谢,原来这个就是I/O口的设置,我们需要哪种情况就在程序中先设定好,双向口、推挽输出、高阻状态、开漏输出原来是这么设定的,这下子是算有点明白了。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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