这种问题呵呵。 1、有成品板,通常已有程序; 2、没有,要么是考,要么你懂的; 3、虽不复杂但别人未必有同样的成品板,仿真也要重搭; 4、程序也不复杂,但调试起来你懂的,何况可能要重写; 5、大家只好给思路,都是基本的从简单到复杂,不明白先画导图; 6、九楼的建议很好而且简单省钱易行,实用应该采用 考除外。 |
LLSSZS 发表于 2023-6-1 11:18 不是差不多点亮数码管和灯就算基本正常,看你的电路图和代码都有明显的瑕疵。先得把数码管和灯调试正常,再添加串口调试。 |
wulin 发表于 2023-6-1 09:43 数码管和灯我都差不多点亮了,现在想加一个串口就是电脑发送然后数码管显示,可是就是实现不了,求指教 |
wulin 发表于 2023-5-31 18:25 数码管和灯我都差不多点亮了,现在想加一个串口就是电脑发送然后数码管显示,可是就是实现不了,求指教 |
LLSSZS 发表于 2023-6-1 08:02 从你的原理图看这个电路除了驱动16位数码管+14个LED外也没有什么其它功能,换一个STC15W104或STC8G1K08的8脚芯片+TM1640数码管专用芯片,既简单可靠又省银子不好吗?多4个引脚还可以扩展其它功能。推荐电路图: ![]() |
虽然原理图看着很杂乱,但是硬件设计的人员已经都分配好了,跟普通数码管显示方式是一样的,这个硬件设计的人应该也一样会写代码 |
wulin 发表于 2023-5-31 18:25 是ic,LS145。有原理图的在附件 |
没仔细看,原来你是有原理图的, |
#include<reg51.h> #include "intrins.h" #define uchar unsigned char #define uint unsigned int uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code se[]={0xe0,0x0e,0xf9,0xa4,0xb0,0x92,0xf8,0x90}; void delayms(uint j); void main(void) { uint num,s,g,n; num=0; s=0; g=0; g=0; while(1) { num++; //试数,假若num = 3 if(num==10000) //不成立不执行 { num=0; } g=num%10; //试数,假若num = 3 g =3 s=num/10%10; //试数,假若num = 3 s =0 n=num/100%10; //试数,假若num = 3 n =0 P1=0xcf; //11001111 P2=0x90; //10010000 P3=se[g]; //试数,假若num = 3 g =3 P3=se[3]; P3 = 0xa4 ;0xa4 二进制 10100100 delayms(1000); } } void delayms(uint k) { uchar i; for(;k>0;k--); { i=250; while(--i); i=249; while(--i); } } /* 你没用动态刷新用了延时,delayms(1000)后再自加,再刷新显示。 按照你的程序,p3只能显示一位数码管,或一列(行)LED 不知道你的硬件连接情况,按照这个方法你自己试一下。 */ |
STC12C5204AD点亮16位数码管+14个LED本身没有难度,但这个代码肯定不行。U16~U19是啥玩意?竟然用2片MCU,还用了这么多三极管,倒不如用专用芯片TM1640。 |
kxcuser 发表于 2023-5-31 17:04 现在就差灯没有点亮了,有原理图,那四个IC是LS145 大神教我点灯 |
看起来有点像医疗控制的板 |