1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 单片机8x8点阵让数字0从右到左依次显示循环

单片机8x8点阵让数字0从右到左依次显示循环

时间:2021-03-13 21:17:25

相关推荐

单片机8x8点阵让数字0从右到左依次显示循环

用的单片机是普中的开发板,8x8点阵用的是74hc595进行段选,P0口位选

74hc595资料点击打开链接

8x8点阵用的是共阴极(左边的)

这次我要实现的是让数字0从右到左依次显示

#include <reg52.h>#include <intrins.h>typedef unsigned int u16;typedef unsigned char u8;sbit SCLK=P3^6;sbit RCK=P3^5;sbit SER=P3^4;u8 code duan0[8][8]={{0x00,0x3C,0x42,0x42,0x42,0x3C,0x00,0x00},//数字0的段选{0x3C,0x42,0x42,0x42,0x3C,0x00,0x00,0x00},{0x42,0x42,0x42,0x3C,0x00,0x00,0x00,0x3C},{0x42,0x42,0x3C,0x00,0x00,0x00,0x3C,0x42},{0x42,0x3C,0x00,0x00,0x00,0x3C,0x42,0x42},{0x3C,0x00,0x00,0x00,0x3C,0x42,0x42,0x42},{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x3C},{0x00,0x00,0x3C,0x42,0x42,0x42,0x3C,0x00}};u8 code wei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位选void delay(u16 c)//延时函数{u8 a,b;for(;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);}void sandbyte(u8 dat)//给74hc595发送段选的数据{u8 i;SCLK=0;RCK=0;for(i=0;i<8;i++){SER=dat>>7;dat<<=1;SCLK=1;_nop_();_nop_();SCLK=0;}RCK=1;_nop_();_nop_();RCK=0;}void main(){u8 i,j;u8 num;while(1){for(i=0;i<8;i++){num=40;while (num--)//让下面的for函数持续运行40次,让数字0 能停留一段时间{for(j=0;j<8;j++){P0=wei[j];sandbyte(duan0[i][j]);delay(1);sandbyte(0x00);}}delay(100);//这里是扫描延时100ms}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。