热搜关键词: 电路基础ADC数字信号处理封装库PLC

rar

16 16点阵显示汉字原理及显示程序

  • 1星
  • 2014-03-05
  • 104.51KB
  • 需要1积分
  • 1次下载
标签: 16

16

16点阵显示汉字原理及显示程序

16

16  16点阵显示汉字原理及显示程序#include  "config.h"  #define                                DOTLED_LINE_PORT                PORTB  #define                                DOTLED_LINE_DDR                                DDRB  #define                                DOTLED_LINE_PIN                                PINB  #define                                DOTLED_LINE_SCKT                PB1  #define                                DOTLED_LINE_SCKH                PB5  #define                                DOTLED_LINE_SDA                                PB3  #define                                DOTLED_ROW_PORT                                PORTC  #define                                DOTLED_ROW_DDR                                DDRC  #define                                DOTLED_ROW_PIN                                PINC  #define                                DOTLED_ROW_A0                                PC0  #define                                DOTLED_ROW_A1                                PC1  #define                                DOTLED_ROW_A2                                PC2  #define                                DOTLED_ROW_A3                                PC3  #define                                DOTLED_ROW_E                                PC4  uint8  font[]  =  {  /*--    调入了一幅图像:这是您新建的图像    --*/  /*--    宽度x高度=16x16    --*/  0x00,0x00,0x00,0x00,0x08,0x38,0x18,0x44,0x08,0x44,0x08,0x04,0x08,0x08,0x08,0x10,  0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x40,0x3E,0x7C,0x00,0x00,0x00,0x00,0x00,0x00  };  static  void  TransmitByte(uint8  byte);  static  void  SelectRow(uint8  row);  static  void  FlipLatchLine(void);  static  void  TransmitByte(uint8  byte)  {                  uint8  i;                                    for(i  =  0  ;  i  <  8  ;  i  ++)                  {                                  if(byte  &  (1  <<  i))                                  {                                                  DOTLED_LINE_PORT  |=  _BV(DOTLED_LINE_SDA);                                  }                                  else                                  {                                                  DOTLED_LINE_PORT  &=  ~_BV(DOTLED_LINE_SDA);                                  }                                  //__delay_cycles(100);                                  DOTLED_LINE_PORT  |=  _BV(DOTLED_LINE_SCKH);                                  //__delay_cycles(100);                                  DOTLED_LINE_PORT  &=  ~_BV(DOTLED_LINE_SCKH);                                  //__delay_cycles(100);                  }  }  static  void  SelectRow(uint8  row)  {                      //row  -=  1;                  row  |=  DOTLED_ROW_PIN  &  0xe0;                  DOTLED_ROW_PORT  =  row;  }  static  void  FlipLatchLine(void)  {                  DOTLED_LINE_PORT  |=  _BV(DOTLED_LINE_SCKT);                  DOTLED_LINE_PORT  &=  ~_BV(DOTLED_LINE_SCKT);  }  void  InitDotLedPort(void)  {                  DOTLED_LINE_PORT  &=  ~(_BV(DOTLED_LINE_SCKT)  |  _BV(DOTLED_LINE_SCKH));                  DOTLED_LINE_PORT  |=  _BV(DOTLED_LINE_SDA);                  DOTLED_LINE_DDR  |=  _BV(DOTLED_LINE_SCKT)  |  _BV(DOTLED_LINE_SCKH)  |  _BV(DOTLED_LINE_SDA);                                    DOTLED_ROW_PORT  |=  0x1f;                  DOTLED_ROW_PORT  &=  0xf0;                  DOTLED_ROW_DDR  |=  0x1f;  }  void  EnableRow(boolean  IsEnable)  {                  if(IsEnable)                  {                                  DOTLED_ROW_PORT  &=  ~_BV(DOTLED_ROW_E);                  }                  else                  {                                  DOTLED_ROW_PORT  |=  _BV(DOTLED_ROW_E);                  }  }  void  PrintDotLed(uint8  *  buffer)  {                  uint8  i  ,  tmp;                                    for(i  =  0  ;  i  <  16  ;  i  ++)                  {                                  tmp  =  *buffer  ++;                                  TransmitByte(~tmp);                                  tmp  =  *buffer  ++;                                  TransmitByte(~tmp);                                  SelectRow(i);                                  FlipLatchLine();                  }  }  void  main(void)  {                  InitDotLedPort();                                    EnableRow(TRUE);                                    while(1)                  {                                  PrintDotLed(font);                                  __delay_cycles(5000);                  }                    }  //----------------------------------------------------  config.h文件  #ifndef                _CONFIG_H  #define                _CONFIG_H  //#define                                GCCAVR  #define                                CPU_CYCLES                7372800L  #ifndef                                GCCAVR  #define                                _BV(bit)                (1  <<  (bit))  #endif  #define                                MSB                                0x80  #define                                LSB                                0x01#define                                FALSE                                0  #define                                TRUE                                1  typedef                                unsigned  char                uint8;  typedef                                unsigned  int                uint16;  typedef                                unsigned  long                uint32;  typedef                                unsigned  char                boolean;  #include  <ioavr.h>  #include  <inavr.h>  #include  "dotled.h"  #endif  //-----

展开预览

猜您喜欢

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×