51单片机驱动TM1638芯片+Proteus仿真
51单片机驱动TM1638芯片+Proteus仿真
- 今天研究了一天,如何在驱动8位数码的同时,控制LED灯,就是出来不来效果,但是单步执行,可以看到LED灯能来,感觉是刷新太快了看不出效果。没有实际硬件光靠仿真有时候真的很难调试出效果,也许是软件bug的存在。

本案例只是修正了资料中的写显示数码管地址位显示不对应的bug。注释掉的代码比较多,主要是用来调试LED的效果时使用的测试代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #include <REGX51.H> #include <tm1638.h> #include <intrins.h> unsigned char num[8]; //各个数码管显示的值
int main(void) { unsigned char i; init\_TM1638(); //初始化TM1638 for(i=0;i<8;i++) Write\_DATA(2\*i,tab[16]);//初始化寄存器,显示"--- ----" Delay1000ms(); for(i=0;i<8;i++){ Write\_DATA(2\*i,tab[i]); // Write\_DATA(2\*i,tab[17]);//初始化寄存器,熄灭 //Write\_oneLED(4,1); // for(i=0;i<8;i++){ // Write\_allLED(1<<i); Delay1000ms();} for(i=0;i<8;i++){ TM1638\_display\_Fix(i,12+i); Delay1000ms();} while(1) { // Write\_oneLED(4,1); // Write\_allLED(1); // for(i=8;i<16;i++) // Write\_DATA(2\*i,0xc0);//初始化寄存器,显示"--- ----" // Write\_DATA(16,0x80); // for(i=0;i<8;i++){ // TM1638\_display\_Fix(i,18-i); // Delay1000ms(); // } // for(i=0;i<8;i++){ // Write\_DATA(2\*i,tab[i]);
// for(i=0;i<8;i++) // Write\_DATA(2\*i,tab[17]);//初始化寄存器,熄灭 } }
|
1 2 3
| 链接:https://pan.baidu.com/s/1Pb5C99b7e\_umWCNdMlxeig 提取码:dq99
|
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!