龙虾哥:视频3-6
1.硬件接口层:
2.接口时序层:
时序的开始条件:
一开始,时钟线和数据线都是高电平,延时两微秒后,数据线先变为低电平,再延时两位秒后,时钟线也变为低电平。刚好对应上面的时序图。
时序的停止条件:与开始条件同理。
数据的发送:
首先我们看数据书册,一共是八个字节,当时钟为低电平的时候,写个if语句,判断最低位为高电平还是低电平,如果为高,数据位写个1,否则写个0,当时钟为高电平的时候数据没有变化,此时是读取数据,延时是给时间让它读,然后传输下数据。最后data数据移位,让下一位变成最低位。
第二层是写入数据,把上面三个封装一下就算是写入成功。
3.通讯协议层,有三个,设置数据指令,设置地址,控制显示。
这个是写数码管的,地址应该是每个数码管地址不同,设置不同的地址,控制显示数码管不同的数据。
3.1设置数据指令
上图,这个跟第三步第一个图对应。一般我们只用第一个。初始地址为0x40
上图是亮度设置,一共有八种亮度。0x88是第一个。此时我们设置宏定义定义亮度
下面是数据发送:
首先定义数码管的地址:
一共16个数,是0到15
4.应用程序实现层,把数据放到数组中实现
上面那个图中指针*InputData是指向数组的,八个数码管数据是存放在此数组中的。所以需要将数据拆分为八位,分别存放到数组中,数组当然也是八位。
数码管的个数
然后定义一个联合体,有三部分,其中后面的“:1”或者“:7“是位域,代表这个数值占了几位:
上图就是存储数码管数据的数组什么的。
以下就是把数码管放入到数据中的代码。
在主函数中完成调用: