【机智云Gokit套件试用体验】+驱动7219

  • qq1328512480
  • LV5工程师
  • |      2016-12-14 17:44:58
  • 浏览量 809
  • 回复:9
练习过它的功能也想用机智云扩展一下端口 近期也是看了一下网络之中,看觉得这个7219很有意思 一起学习嘻嘻嘻 首先介绍一下MAX7219 MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。 只有一个外部寄存器用来设置各个LED的段电流。 MAX7221与SPI™、 QSPI™以及 MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。 一个方便的四线串行接口可以联接所有通用的微处理器。 每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。 整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。 在应用时要求3V的操作电压或segment blinking,可以查阅MAX6951数据资料。 制造商零件编号: MAX7219ENG+ 制造商: Maxim IC 应用领域:条线图显示, 仪表面板, 工业控制,LED矩阵显示 #define reg_decode 0x09 #define reg_intensity 0x0a #define reg_scan_limit 0x0b #define reg_shutdown 0x0c #define reg_display_test 0x0f #define dataa_h GPIO_SetBits(GPIOB,GPIO_Pin_7) #define dataa_l GPIO_ResetBits(GPIOB,GPIO_Pin_7) #define load_h GPIO_SetBits(GPIOB,GPIO_Pin_6) #define load_l GPIO_ResetBits(GPIOB,GPIO_Pin_6) #define clk_h GPIO_SetBits(GPIOB,GPIO_Pin_11) #define clk_l GPIO_ResetBits(GPIOB,GPIO_Pin_11) #define uchar unsigned char /*************定义显示常数表格************/ static const struct{ char asci; char segs; }font= {{\' \',0x00},{\'0\',0x7e},{\'1\',0x30},{\'2\',0x6d},{\'3\',0x79},{\'4\',0x33},{\'5\',0x5b},{\'6\',0x5f},{\'7\',0x70},{\'8\',0x7f},{\'9\',0x7b}, {\'A\',0x77},{\'b\',0x1f},{\'C\',0x4e},{\'d\',0x3d},{\'E\',0x4f},{\'F\',0x47},{\'H\',0x37},{\'L\',0x0e},{\'r\',0x46},{\'P\',0x67} };//5 long int k; void GPIO_Init1(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_Init(GPIOB, &GPIO_InitStructure); } /*****************发送一字节串行数据******************/ static void Sendbyte(uchar dataout) {char i; load_l; for(k=0;k<10;k++); for(i=8;i>0;i--) { uchar mask=1<<(i-1); clk_l; for(k=0;k<10;k++); if(dataout&mask) dataa_h; else dataa_l; for(k=0;k<10;k++); clk_h; for(k=0;k<10;k++); } } /*********写入数据**********/ static void Write(uchar reg_number,uchar dataout) { load_l; for(k=0;k<10;k++); Sendbyte(reg_number); Sendbyte(dataout); load_h; for(k=0;k<10;k++); } /***********查段码表将显示字符转换为显示段码************/ static uchar Lookupcode(char character) {char i; for(i=0;i<21;i++) {if(character==font.asci) {return font.segs;} } return (0); } void display(char digit,char character) { Write(digit,Lookupcode(character)); } /**********初始化************/ void init(void) {char i; dataa_h; load_h; clk_h; Write(reg_scan_limit,3); Write(reg_decode,0x00); Write(reg_shutdown,1); /*结束停机测试,正常工作*/ Write(reg_display_test,0); /*结束显示测试,正常工作*/ for(i=1;i<=8;i++) {Write(i,0x00); } /*关闭全部显示器*/ } int main(void) { long int i; unsigned char k=0; char brightness; SystemInit(); // UARTx_Init(); // Printf_SystemRccClocks(); // RTC_Init(); //Hal_Init(); // McuStatusInit(); GPIO_Init1(); init(); Write(reg_shutdown,1); Write(reg_display_test,0); brightness=bright&0x0f; Write(reg_intensity,brightness); while(1) { init(); Write(reg_shutdown,1); Write(reg_display_test,0); brightness=bright&0x0f; Write(reg_intensity,brightness); display(0x01,\'H\'); display(0x02,\'0\'); display(0x03,\'P\'); display(0x04,\'E\'); for(i=0;i<100000;i++); } }
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:1
小天 2016-12-14
顶起来啊,楼主给力
1   回复
举报
发布
qq1328512480 回复 2016-12-14
谢谢天儿嘻嘻嘻- -~
0   回复
举报
她二姨 回复 2016-12-15
顶起了,顶起了
1   回复
举报
清凉一夏 回复 2016-12-15
7219是有多有意思啊?
1   回复
举报
电子大拿 回复 2016-12-15
手动点赞表示对楼主的尊敬
1   回复
举报
x
收藏成功!点击 我的收藏 查看收藏的全部帖子