五、程序的编写
程序各模块功能说明:
INITIAL:初始化模块。设置串行口工作方式为SPI主动方式;RC3,RC5引脚为输出;SSPBUF寄存器在时钟上升沿送出数据;串行同步时钟为单片机内部时钟的四分频;清SSP中断标志;使能SSP模块。
I2C_OUT:串行口发送数据模块,要发送的数据存放在TXDATA寄存单元中。将TXDATA内容送入SSPBUF中后,检查SSPIF位。当此位被置1时,表示SSPBUF数据送完。SSPIF位需要手动清零,然后此模块返回。
SHOW:将表TABLE的段地址装入数据寄存器DATA1中。共有四个字符要显示,数据寄存器NUM中存放当前显示的是第几个字体符。
SHOW1:每送一次行选取数据后连续送四个列选数据,数据寄存器R1 中存放在送出的是每四个列选数据是的第几个,初始值为4。
SHOW2:初始化表地址段内偏移数据寄存器R0。由段地址和段内偏移相加得出要查表数据的页内地址,地址值存放W寄存器。查表得到地址W 内的数据内容放入TXDATA数据寄存器,即当前要送入的列选数据。
SHOW3:将行选数据寄存器R2中的内容送放D口,显示已经送出的四组列选数据。调用延迟模块。关闭D口,LED全灭。从新计算行选数据,然后存入行选数据寄存器R2中。通过R3寄存器判断是否一个字符是否全部显示完毕,如果没有完毕则回到SHOW1模块,送出下面四个列选数据;否则转到下一个模块。
NUMBER:将当前的段内偏移加上段地址作为新的段地址,这个新的段地址存放在DATA1数据寄存器中。判断是否所有字符都已经显示完毕。如果没有则转移到SHOW6模块准备显示下一个字符;如果所有字符都已经显示完毕,则回到主模块MAIN,循环显示四个字符。
DELAY:延迟模块。因为每次LED上只有一行是显示出来的,所以快速的刷新会在人的视觉系统中造成视觉暂留,人眼看到的就会是一幅完成的画面。延迟程序时间的长短应使人肉眼看到的画面连贯,无强烈闪烁。
本文出自
http://www.yzhygd.com/77.html如需转载请注明出处.