历史上的今天
今天是:2025年03月12日(星期三)
2020年03月12日 | 单片机8x8点阵让数字0从右到左依次显示循环
2020-03-12 来源:eefocus
用的单片机是普中的开发板,8x8点阵用的是74hc595进行段选,P0口位选
74hc595

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

这次我要实现的是让数字0从右到左依次显示
#include #include 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 } } }
下一篇:51单片机【五】LED点阵屏
史海拾趣
|
Buck变换器的数字模糊PID控制 摘要:由Buck电路的状态空间平均法,可得到其电压控制下的动态小信号模型,并应用PID实现其精确控制。为提高控制精度和抗干扰能力,用模糊控制器对PID参数进行实时整定,给出了仿真与实验结果及结论。关键词:Buck变 ...… 查看全部问答> |
|
按照2812开发板的一个混和编程调用子程序做个实验 主程序如下: int add(int a,int b); int x=0,y=0,z=0; main() { x=3; y=17; while ( 1 ) &n ...… 查看全部问答> |
|
呵呵 昨天接到面试通知 先前也有几个公司来电话 但我都放弃了 这次不知道什么原因我就跑去面试了 因为最近在学习STM32,本来没打算找工作的, 智联招聘系统给我投的简历,我就包着试试 ...… 查看全部问答> |




