高级会员
- 积分
- 680
- 金钱
- 680
- 注册时间
- 2019-5-18
- 在线时间
- 101 小时
|
发表于 2019-10-31 08:57:09
|
显示全部楼层
- uchar code time_counter[10][2]={{0xda,0x1c},{0xde,0xe4},{0xe1,0xec},{0xe5,0xd4},{0xe9,0xbc}, {0xed,0xa4},{0xf1,0x8c},{0xf5,0x74},{0xf9,0x5c},{0xfc,0x18}};
复制代码 这个数组是定时器0装载值,达成定时目的,在—》这段代码中装载- TH1 = time_counter[k-1][0];
- TL1 = time_counter[k-1][1];
- TR1 = 0; //为什么这里不用 TR1=1
复制代码 如:第一个数组{0xda,0x1c},合起来就是十六进制(da1c)H = (55836)D 若晶振是12MHZ那么这个定时器装载值9.7ms(65536-55836=9700)。第二个是约8.5ms,其他自己算。一开始TR1 = 0,应该是程序刚烧录后的状态是步进电机不转。
- uchar buf[4]={0,10,0,0}; // 数码管显示缓存 这样是如何设置的
复制代码 这个好比一个数组,它与这个数码管表配合使用- uchar code tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //共阳数码管驱动信号0-9
复制代码 如led = tab[buf[3]];这个其实就是实现led = tab[0];另外三个一样含义。- void display() //显示函数
- {
- wei3=1;wei2=1;wei1=1;wei0=0;led = tab[buf[3]];delay1m(1);led=0xff;
- wei3=1;wei2=1;wei1=0;wei0=1;led = tab[buf[2]];delay1m(1);led=0xff;
- wei3=1;wei2=0;wei1=1;wei0=1;led = tab[buf[1]];delay1m(1);led=0xff;
- wei3=0;wei2=1;wei1=1;wei0=1;led = tab[buf[0]];delay1m(1);led=0xff;
- }
复制代码 这个函数,wei3,wei2,wei1,wei0是控制数码管位选的吧,按理说8个数码管三个位就够用了。为啥有四个位呢? |
|