主函数里最简化,只写 P0=0x00; 烧进单片机通电,用万用表测试P0八个管脚电平和对应排针的电平,正常情况应该都是低电平。如果有异常,就要自己跑电路了 还有要注意就是,把除了P30和P31之外的无用连接拔掉。我看到是红圈圈里的跳线,红外接收器,温度IC,或者还有其他,自己检查。 ![]() |
你说的,在别的“单片机”上,是指别的单片机装在这块板子上,还是这个代码,写到另一块同样板子的单片机上? |
一天多了。还没搞定? 如果只是LED乱显示,这个故障其实用很简单的方法就能找出问题所在了: 代码先所有段不亮,再一段一段地点亮,看实际效果, 所有段不点亮,但“DP”还是亮了,说明硬件肯定坏了。重点就在锁存器; 一段一段地点,只有某段亮时,“DP”亮了,说明该段与“DP”存在短路,可能是PCB、也可能是锁存器; 如果都是正常的,说明是之前的代码有问题。 |
茴香打卤面 发表于 2021-11-10 16:07 楼主什么看不懂?电路看不懂还是代码看不懂?在8楼回复的文字总该能看懂吧。你这个程序可以在天祥实验板上运行,不可以在普中实验板上运行。因为两者单片机虽然相同但其它外围电路差异很大。这是用你的原程序按天祥的相关电路做的仿真,只改了按键端口定义和添加beep=1复位,其它未做任何改动。你探讨其它细枝末叶都是隔靴瘙痒。 ![]()
|
188610329 发表于 2021-11-10 17:48 你这里的 <= 加上后目标未创建,去掉后才可以运行。但是还是没有把.去掉。可是这个代码在别的单片机上也是有.的 |
茴香打卤面 发表于 2021-11-10 17:34 我怀疑…… 锁存器这里可能有问题,当拉高多的引脚电平时会把 7 脚位一起拉高。 DU = 1;//打开段选锁存器 P0 = tabel[num];// _nop_(); _nop_(); <= 你在这里 加两个nop 看看能不能有效果, 如果有效就凑活着用,如果无效,只能联系卖家看能不能换了,这个属于硬件问题了。 DU = 0;//锁存段选数据 |
188610329 发表于 2021-11-10 16:34 是的,只有点亮了 |
警告不用管,没有调用那个数组,只要恢复那个 P0 = tabel[num]; 警告就没了,你照着这样写进单片机,看看除了 . 还有什么段是亮的, 好分析是什么位子出了问题, 基本可以确定,你程序没有问题,是板子的硬件问题。就看看有没有可能自己排除。 |
wulin 发表于 2021-11-10 14:00 很厉害,虽然我看不懂 |
茴香打卤面 发表于 2021-11-10 12:34 这是按普中的相关电路做的仿真 ![]() |
wulin 发表于 2021-11-10 06:55 感谢回复,但是问题没有解决。8还是会有点,每个8都有,且独立按键3虽然有反应,但是只是对数字闪烁了一下,按键4还是没有反应 |
茴香打卤面 发表于 2021-11-9 21:53 楼主没有按照实验板实际电路写程序,出现奇怪现象是必然的。建议楼主先用此板配套示例程序测试,熟悉后再按自己意图修改。随便把别人的程序加自己意图胡乱修改不会取得成功。给楼主按普中实验板电路修改代码,基本符合楼主意图。
|
茴香打卤面 发表于 2021-11-9 21:49 我知道不对,我只是看看是电路问题,还是数码管问题,现在基本可以认为是电路问题了, 你把这句: P0 = tabel[num];// 变成 P0= 0x80; 看看除了 点, 还有哪个段会亮?(正常的话,应该只有点会亮) |
Hephaestus 发表于 2021-11-9 20:35 大哥认为错在哪里?可以指点一下吗 |
188610329 发表于 2021-11-9 20:00 还是不对,0到8有点,8到0也有点,每个8都有 |
gongnn 发表于 2021-11-9 20:10 0x7f没错,问题肯定不在这里。 |
uchar code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,}; 修改这里的第9个 |
WE = 1;//打开位选锁存器 P0 = 0XFE; //1111 1110 WE = 0;//锁存位选数据 这里的 P0 = 0; 8个灯都开看看情况,是每个8都多点,还是只有第一个 8 多点。 |