找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1363|回复: 6
打印 上一主题 下一主题
收起左侧

51单片机模拟时钟程序怎么加文字?

[复制链接]
跳转到指定楼层
楼主
ID:698481 发表于 2020-3-4 21:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10黑币
我是个初学者,之前打了一个12846显示汉字的,我按照那个来有错误,寻求一下各位大佬,
下面是时钟的代码,我知道是在 WriteClkBmp(clkbmp);和Line(CLK_X,31,secondpointerx[Sec],secondpointery[Sec]);之间加东西
就是不知道是缺了些啥

单片机源程序如下:
  1. #include <AT89X52.H>
  2. #include<intrins.h>
  3. #include<math.h>
  4. #ifndef BIT
  5. #define BIT(x)                (1 << (x))
  6. #endif
  7. #define DBPort                P0
  8. #define DISP_OFF        0x3e            
  9. #define DISP_ON                0x3f               
  10. #define DISP_Y                0xc0               
  11. #define DISP_PAGE        0xb8            
  12. #define DISP_X                0x40         

  13. unsigned char code AsciiDot[] =           
  14. {
  15.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - -

  16.         0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, // -!-

  17.         0x00,0x0E,0x02,0x00,0x0E,0x02,0x00,0x00,0x00,0x00,0x00,0x00, // -"-

  18.         0x00,0x50,0xF8,0x56,0xF8,0x56,0x00,0x03,0x00,0x03,0x00,0x00, // -#-

  19.         0x00,0xD8,0xA4,0xA6,0x64,0x00,0x00,0x00,0x00,0x03,0x00,0x00, // -$-

  20.         0x00,0x24,0x2A,0xA4,0x50,0x90,0x00,0x00,0x00,0x00,0x01,0x00, // -%-

  21.         0x00,0xC0,0x30,0x48,0x88,0x40,0x00,0x00,0x01,0x01,0x00,0x01, // -&-

  22.         0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -'-

  23.         0x00,0x00,0x00,0xF8,0x06,0x00,0x00,0x00,0x00,0x01,0x06,0x00, // -(-

  24.         0x00,0x00,0x06,0xF8,0x00,0x00,0x00,0x00,0x06,0x01,0x00,0x00, // -)-

  25.         0x00,0x04,0x34,0x0E,0x34,0x04,0x00,0x00,0x00,0x00,0x00,0x00, // -*-

  26.         0x20,0x20,0x20,0xFC,0x20,0x20,0x00,0x00,0x00,0x01,0x00,0x00, // -+-

  27.         0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x06,0x03,0x00,0x00, // -,-

  28.         0x00,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00, // ---

  29.         0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00, // -.-

  30.         0x00,0x00,0x80,0x60,0x18,0x06,0x00,0x02,0x01,0x00,0x00,0x00, // -/-

  31.     0x00,0xFC,0x0A,0x32,0x42,0xFC,0x00,0x00,0x01,0x01,0x01,0x00, // -0-

  32.         0x00,0x00,0x04,0xFE,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00, // -1-

  33.         0x00,0x04,0x82,0x42,0x22,0x9C,0x00,0x01,0x01,0x01,0x01,0x01, // -2-

  34.         0x00,0x84,0x02,0x12,0x12,0xEC,0x00,0x00,0x01,0x01,0x01,0x00, // -3-

  35.         0x00,0x60,0x58,0x44,0xFE,0x40,0x00,0x00,0x00,0x00,0x01,0x00, // -4-

  36.         0x00,0x9E,0x12,0x12,0x12,0xE2,0x00,0x00,0x01,0x01,0x01,0x00, // -5-

  37.         0x00,0xF8,0x14,0x12,0x12,0xE2,0x00,0x00,0x01,0x01,0x01,0x00, // -6-

  38.         0x00,0x06,0x02,0xC2,0x32,0x0E,0x00,0x00,0x00,0x01,0x00,0x00, // -7-

  39.         0x00,0xEC,0x12,0x12,0x12,0xEC,0x00,0x00,0x01,0x01,0x01,0x00, // -8-

  40.         0x00,0x1C,0x22,0x22,0xA2,0x7C,0x00,0x01,0x01,0x01,0x00,0x00, // -9-

  41.         0x00,0x00,0x98,0x98,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00, // -:-

  42.         0x00,0x00,0x00,0x98,0x98,0x00,0x00,0x00,0x03,0x01,0x00,0x00, // -;-

  43.         0x20,0x50,0x50,0x88,0x04,0x04,0x00,0x00,0x00,0x00,0x01,0x01, // -<-

  44.         0x00,0x50,0x50,0x50,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00, // -=-

  45.         0x04,0x04,0x88,0x50,0x50,0x20,0x01,0x01,0x00,0x00,0x00,0x00, // ->-

  46.         0x00,0x00,0x08,0x44,0x24,0x18,0x00,0x00,0x01,0x01,0x00,0x00, // -?-

  47.         0x00,0xFE,0x01,0x31,0x49,0x7E,0x00,0x01,0x02,0x02,0x02,0x01, // -@-

  48.         0xC0,0x78,0x46,0x78,0xC0,0x00,0x01,0x01,0x00,0x01,0x01,0x01, // -A-

  49.         0x02,0xFE,0x12,0x12,0x12,0xEC,0x01,0x01,0x01,0x01,0x01,0x00, // -B-

  50.         0x78,0x84,0x02,0x02,0x02,0x86,0x00,0x00,0x01,0x01,0x01,0x00, // -C-

  51.         0x02,0xFE,0x02,0x02,0x84,0x78,0x01,0x01,0x01,0x01,0x00,0x00, // -D-

  52.         0x02,0xFE,0x12,0x3A,0x02,0x86,0x01,0x01,0x01,0x01,0x01,0x01, // -LCDEN-

  53.         0x02,0xFE,0x12,0x3A,0x02,0x06,0x01,0x01,0x01,0x00,0x00,0x00, // -F-

  54.         0x78,0x84,0x02,0x02,0x22,0xE6,0x00,0x00,0x01,0x01,0x01,0x00, // -G-

  55.         0x02,0xFE,0x12,0x10,0x12,0xFE,0x01,0x01,0x01,0x00,0x01,0x01, // -H-

  56.         0x00,0x02,0xFE,0x02,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00, // -I-

  57.         0x00,0x02,0xFE,0x02,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00, // -J-

  58.         0x02,0xFE,0x12,0x28,0x46,0x82,0x01,0x01,0x01,0x00,0x01,0x01, // -K-

  59.         0x02,0xFE,0x02,0x00,0x00,0x80,0x01,0x01,0x01,0x01,0x01,0x01, // -L-

  60.         0x02,0xFE,0x04,0x18,0x04,0xFE,0x01,0x01,0x01,0x00,0x01,0x01, // -M-

  61.         0x02,0xFE,0x08,0x30,0x42,0xFE,0x01,0x01,0x01,0x00,0x00,0x01, // -N-

  62.         0x00,0xFC,0x02,0x02,0x02,0xFC,0x00,0x00,0x01,0x01,0x01,0x00, // -O-

  63.         0x02,0xFE,0x22,0x22,0x22,0x1C,0x01,0x01,0x01,0x00,0x00,0x00, // -P-

  64.         0x00,0xFC,0x02,0x02,0x02,0xFC,0x00,0x00,0x01,0x03,0x05,0x04, // -Q-

  65.         0x02,0xFE,0x12,0x32,0xD2,0x0C,0x01,0x01,0x01,0x00,0x01,0x01, // -R-

  66.         0x00,0x8C,0x12,0x22,0xC6,0x00,0x00,0x01,0x01,0x01,0x00,0x00, // -S-

  67.         0x06,0x02,0xFE,0x02,0x06,0x00,0x00,0x01,0x01,0x01,0x00,0x00, // -T-

  68.         0x02,0xFE,0x02,0x00,0x02,0xFE,0x00,0x00,0x01,0x01,0x01,0x00, // -U-

  69.         0x02,0x0E,0x72,0x80,0x72,0x0E,0x00,0x00,0x00,0x01,0x00,0x00, // -V-

  70.         0x02,0xFE,0x02,0xF0,0x02,0xFE,0x00,0x00,0x01,0x00,0x01,0x00, // -W-

  71.         0x02,0x86,0x48,0x30,0x48,0x86,0x01,0x01,0x00,0x00,0x00,0x01, // -X-

  72.         0x02,0x06,0x1A,0xE0,0x1A,0x06,0x00,0x00,0x01,0x01,0x01,0x00, // -Y-

  73.         0x86,0x42,0x32,0x0A,0x06,0x82,0x01,0x01,0x01,0x01,0x01,0x01, // -Z-

  74.         0x00,0x00,0xFE,0x02,0x02,0x00,0x00,0x00,0x07,0x04,0x04,0x00, // -[-

  75.         0x00,0x02,0x1C,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x03,0x00, // -\-

  76.         0x00,0x00,0x02,0x02,0xFE,0x00,0x00,0x00,0x04,0x04,0x07,0x00, // -]-

  77.         0x00,0x10,0x08,0x06,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00, // -^-

  78.         0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08, // -_-

  79.         0x00,0x00,0x00,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -`-

  80.         0x80,0x50,0x50,0xE0,0x00,0x00,0x00,0x01,0x01,0x00,0x01,0x00, // -a-

  81.         0x02,0xFE,0x10,0x10,0xE0,0x00,0x01,0x01,0x01,0x01,0x00,0x00, // -b-

  82.         0x00,0xE0,0x10,0x10,0x30,0x00,0x00,0x00,0x01,0x01,0x01,0x00, // -c-

  83.         0x00,0xE0,0x10,0x12,0xFE,0x00,0x00,0x00,0x01,0x01,0x00,0x01, // -d-

  84.         0x00,0xE0,0x50,0x50,0x60,0x00,0x00,0x00,0x01,0x01,0x01,0x00, // -LCDEN-

  85.         0x00,0x10,0xFC,0x12,0x02,0x06,0x00,0x01,0x01,0x01,0x00,0x00, // -f-

  86.         0xA0,0x50,0x50,0x30,0x10,0x00,0x03,0x05,0x05,0x05,0x02,0x00, // -g-

  87.         0x02,0xFE,0x20,0x10,0xF0,0x00,0x01,0x01,0x01,0x00,0x01,0x01, // -h-

  88.         0x00,0x10,0xF2,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00, // -i-

  89.         0x00,0x10,0xF2,0x00,0x00,0x00,0x04,0x04,0x03,0x00,0x00,0x00, // -j-

  90.         0x02,0xFE,0x40,0xB0,0x10,0x00,0x01,0x01,0x00,0x01,0x01,0x00, // -k-

  91.         0x00,0x02,0xFE,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00, // -l-

  92.         0x10,0xE0,0x10,0xE0,0x10,0xE0,0x01,0x01,0x00,0x01,0x00,0x01, // -m-

  93.         0x10,0xF0,0x20,0x10,0xF0,0x00,0x01,0x01,0x01,0x00,0x01,0x01, // -n-

  94.         0xE0,0x10,0x10,0x10,0xE0,0x00,0x00,0x01,0x01,0x01,0x00,0x00, // -o-

  95.         0x10,0xF0,0x10,0x10,0xE0,0x00,0x04,0x07,0x05,0x01,0x00,0x00, // -p-

  96.         0x00,0xE0,0x10,0x10,0xF0,0x00,0x00,0x00,0x01,0x05,0x07,0x04, // -q-

  97.         0x00,0x10,0xF0,0x20,0x10,0x00,0x00,0x01,0x01,0x01,0x00,0x00, // -r-

  98.         0x00,0x20,0x50,0xD0,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00, // -s-

  99.         0x00,0x10,0xFC,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, // -t-

  100.         0x10,0xF0,0x00,0x10,0xF0,0x00,0x00,0x00,0x01,0x01,0x00,0x01, // -u-

  101.         0x10,0x70,0x80,0x50,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00, // -v-

  102.         0xF0,0x00,0xE0,0x00,0xF0,0x00,0x00,0x01,0x00,0x01,0x00,0x00, // -w-

  103.         0x10,0xB0,0x40,0xB0,0x10,0x00,0x01,0x01,0x00,0x01,0x01,0x00, // -x-

  104.         0x10,0x70,0x80,0xD0,0x30,0x10,0x00,0x04,0x03,0x00,0x00,0x00, // -y-

  105.         0x30,0x90,0x50,0x30,0x90,0x00,0x01,0x01,0x01,0x01,0x01,0x00, // -z-

  106.         0x00,0x00,0x40,0xBC,0x02,0x00,0x00,0x00,0x00,0x03,0x04,0x00, // -{-

  107.         0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00, // -|-

  108.         0x00,0x00,0x02,0xBC,0x40,0x00,0x00,0x00,0x04,0x03,0x00,0x00, // -}-

  109.         0x00,0x40,0x20,0x40,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00, // -~-

  110.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // --
  111. };

  112. typedef struct typFNT_GB12                 
  113. {
  114.        unsigned char Index[2];           
  115.        unsigned char Msk[24];               
  116. };

  117. struct typFNT_GB12 code GB_12[] =      
  118. {
  119. "?", 0xC4,0x34,0xFF,0x24,0x02,0x7A,0x5F,0xDA,0x6F,0x7A,0x02,0x00,
  120.       0x00,0x00,0x07,0x00,0x05,0x05,0x03,0x01,0x03,0x05,0x05,0x00,

  121. "?", 0x44,0x24,0xFF,0x14,0x00,0xFE,0x81,0x46,0x00,0xFF,0x00,0x00,
  122.       0x04,0x04,0x07,0x00,0x04,0x05,0x04,0x02,0x01,0x01,0x06,0x00,

  123. "?", 0xFE,0x22,0x22,0xFE,0x04,0x14,0x64,0x04,0xFF,0x04,0x04,0x00,
  124.       0x03,0x01,0x01,0x03,0x00,0x00,0x04,0x04,0x07,0x00,0x00,0x00,

  125. "?", 0x58,0x4F,0xFA,0x4A,0x42,0x7C,0x44,0x44,0xFF,0x44,0x7C,0x00,
  126.       0x00,0x00,0x07,0x02,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,

  127. "?", 0x09,0xD2,0x40,0x29,0xDB,0x4D,0xFF,0x4D,0x5B,0xE9,0x48,0x00,
  128.       0x01,0x07,0x00,0x00,0x07,0x05,0x07,0x05,0x05,0x07,0x00,0x00,

  129. "?", 0x00,0x1E,0x12,0x92,0x52,0xBF,0x12,0x12,0x12,0x9E,0x00,0x00,
  130.       0x04,0x03,0x00,0x07,0x04,0x04,0x05,0x04,0x07,0x00,0x03,0x00,

  131. "?", 0x10,0x08,0xFF,0x22,0x2A,0x2A,0xFF,0x2A,0x2A,0x2A,0xE2,0x00,
  132.       0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x02,0x02,0x01,0x00,

  133. "?", 0x18,0xD6,0x54,0xFF,0x54,0x56,0xD4,0x00,0xFC,0x00,0xFF,0x00,
  134.       0x00,0x03,0x00,0x07,0x00,0x02,0x03,0x00,0x04,0x04,0x07,0x00,

  135. "?", 0x10,0x08,0xFC,0x13,0x08,0x04,0xFF,0x24,0x24,0x24,0x04,0x00,
  136.       0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x01,0x01,0x01,0x01,0x00,

  137. };
  138. unsigned char code nBitmapDot[] =                  
  139. {
  140.       0x44,0x24,0xFF,0x14,0x00,0xFE,0x81,0x46,0x00,0xFF,0x00,0x00,
  141.       0xFE,0x22,0x22,0xFE,0x04,0x14,0x64,0x04,0xFF,0x04,0x04,0x00,
  142.       0x58,0x4F,0xFA,0x4A,0x42,0x7C,0x44,0x44,0xFF,0x44,0x7C,0x00,
  143.       0x09,0xD2,0x40,0x29,0xDB,0x4D,0xFF,0x4D,0x5B,0xE9,0x48,0x00,
  144.       0x00,0x1E,0x12,0x92,0x52,0xBF,0x12,0x12,0x12,0x9E,0x00,0x00,
  145.       0x10,0x08,0xFF,0x22,0x2A,0x2A,0xFF,0x2A,0x2A,0x2A,0xE2,0x00,
  146.       0x18,0xD6,0x54,0xFF,0x54,0x56,0xD4,0x00,0xFC,0x00,0xFF,0x00,
  147.       0x10,0x08,0xFC,0x13,0x08,0x04,0xFF,0x24,0x24,0x24,0x04,0x00,
  148.       0x0A,0x92,0x62,0x9E,0x02,0x18,0x87,0x74,0x84,0x14,0x0C,0x00,
  149.       0x08,0xF9,0x02,0x00,0xFE,0x42,0x41,0xFE,0x02,0x82,0xFE,0x00,
  150.       0x04,0x04,0x07,0x00,0x04,0x05,0x04,0x02,0x01,0x01,0x06,0x00,
  151.       0x03,0x01,0x01,0x03,0x00,0x00,0x04,0x04,0x07,0x00,0x00,0x00,
  152.       0x00,0x00,0x07,0x02,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,
  153.       0x01,0x07,0x00,0x00,0x07,0x05,0x07,0x05,0x05,0x07,0x00,0x00,
  154.       0x04,0x03,0x00,0x07,0x04,0x04,0x05,0x04,0x07,0x00,0x03,0x00,
  155.       0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x02,0x02,0x01,0x00,
  156.       0x00,0x03,0x00,0x07,0x00,0x02,0x03,0x00,0x04,0x04,0x07,0x00,
  157.       0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x01,0x01,0x01,0x01,0x00,
  158.       0x02,0x01,0x00,0x04,0x05,0x02,0x01,0x00,0x01,0x02,0x04,0x00,
  159.       0x06,0x01,0x02,0x02,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x00
  160. };
  161. #define CLK_X        95
  162. #define CLK_Y        31

  163. unsigned char code secondpointerx[]=
  164. {
  165. CLK_X+ 0,CLK_X+ 2,CLK_X+ 4,CLK_X+ 7,CLK_X+ 9,CLK_X+11,CLK_X+13,CLK_X+14,CLK_X+16,CLK_X+18,
  166. CLK_X+19,CLK_X+20,CLK_X+21,CLK_X+21,CLK_X+21,CLK_X+22,
  167. CLK_X+22,CLK_X+21,CLK_X+21,CLK_X+20,CLK_X+19,CLK_X+18,CLK_X+16,CLK_X+14,CLK_X+13,CLK_X+11,
  168. CLK_X+ 9,CLK_X+ 7,CLK_X+ 4,CLK_X+ 2,CLK_X+ 0,
  169. CLK_X- 2,CLK_X- 4,CLK_X- 7,CLK_X- 9,CLK_X-11,CLK_X-13,CLK_X-14,CLK_X-16,CLK_X-18,CLK_X-19,
  170. CLK_X-20,CLK_X-21,CLK_X-21,CLK_X-21,CLK_X-22,
  171. CLK_X-22,CLK_X-21,CLK_X-21,CLK_X-20,CLK_X-19,CLK_X-18,CLK_X-16,CLK_X-14,CLK_X-13,CLK_X-11,
  172. CLK_X- 9,CLK_X- 7,CLK_X- 4,CLK_X- 2,

  173. };
  174. unsigned char code secondpointery[]=
  175. {
  176. CLK_Y-22,CLK_Y-22,CLK_Y-21,CLK_Y-21,CLK_Y-20,CLK_Y-19,CLK_Y-18,CLK_Y-16,CLK_Y-14,CLK_Y-13,
  177. CLK_Y-11,CLK_Y- 9,CLK_Y- 7,CLK_Y- 4,CLK_Y- 2,CLK_Y- 0,
  178. CLK_Y+ 2,CLK_Y+ 4,CLK_Y+ 7,CLK_Y+ 9,CLK_Y+11,CLK_Y+13,CLK_Y+14,CLK_Y+16,CLK_Y+18,CLK_Y+19,
  179. CLK_Y+20,CLK_Y+21,CLK_Y+21,CLK_Y+22,CLK_Y+22,
  180. CLK_Y+22,CLK_Y+21,CLK_Y+21,CLK_Y+20,CLK_Y+19,CLK_Y+18,CLK_Y+16,CLK_Y+14,CLK_Y+13,CLK_Y+11,
  181. CLK_Y+ 9,CLK_Y+ 7,CLK_Y+ 4,CLK_Y+ 2,CLK_Y+ 0,
  182. CLK_Y- 2,CLK_Y- 4,CLK_Y- 7,CLK_Y- 9,CLK_Y-11,CLK_Y-13,CLK_Y-14,CLK_Y-16,CLK_Y-18,CLK_Y-19,
  183. CLK_Y-20,CLK_Y-21,CLK_Y-21,CLK_Y-22,

  184. };

  185. unsigned char code minpointerx[]=
  186. {
  187. CLK_X+ 0,CLK_X+ 2,CLK_X+ 4,CLK_X+ 6,CLK_X+ 8,CLK_X+ 9,CLK_X+11,CLK_X+12,CLK_X+14,CLK_X+15,
  188. CLK_X+16,CLK_X+17,CLK_X+18,CLK_X+19,CLK_X+20,CLK_X+20,
  189. CLK_X+20,CLK_X+19,CLK_X+18,CLK_X+17,CLK_X+16,CLK_X+15,CLK_X+14,CLK_X+12,CLK_X+11,CLK_X+ 9,
  190. CLK_X+ 8,CLK_X+ 6,CLK_X+ 4,CLK_X+ 2,CLK_X+ 0,
  191. CLK_X- 2,CLK_X- 4,CLK_X- 6,CLK_X- 8,CLK_X- 9,CLK_X-11,CLK_X-12,CLK_X-14,CLK_X-15,CLK_X-16,
  192. CLK_X-17,CLK_X-18,CLK_X-19,CLK_X-20,CLK_X-20,
  193. CLK_X-20,CLK_X-19,CLK_X-18,CLK_X-17,CLK_X-16,CLK_X-15,CLK_X-14,CLK_X-12,CLK_X-11,CLK_X- 9,
  194. CLK_X- 8,CLK_X- 6,CLK_X- 4,CLK_X- 2,
  195. };
  196. unsigned char code minpointery[]=
  197. {
  198. CLK_Y-20,CLK_Y-20,CLK_Y-19,CLK_Y-18,CLK_Y-17,CLK_Y-16,CLK_Y-15,CLK_Y-14,CLK_Y-12,CLK_Y-11,
  199. CLK_Y- 9,CLK_Y- 8,CLK_Y- 6,CLK_Y- 4,CLK_Y- 2,CLK_Y- 0,
  200. CLK_Y+ 2,CLK_Y+ 4,CLK_Y+ 6,CLK_Y+ 8,CLK_Y+ 9,CLK_Y+11,CLK_Y+12,CLK_Y+14,CLK_Y+15,CLK_Y+16,
  201. CLK_Y+17,CLK_Y+18,CLK_Y+19,CLK_Y+20,CLK_Y+20,
  202. CLK_Y+20,CLK_Y+19,CLK_Y+18,CLK_Y+17,CLK_Y+16,CLK_Y+15,CLK_Y+14,CLK_Y+12,CLK_Y+11,CLK_Y+ 9,
  203. CLK_Y+ 8,CLK_Y+ 6,CLK_Y+ 4,CLK_Y+ 2,CLK_Y+ 0,
  204. CLK_Y- 2,CLK_Y- 4,CLK_Y- 6,CLK_Y- 8,CLK_Y- 9,CLK_Y-11,CLK_Y-12,CLK_Y-14,CLK_Y-15,CLK_Y-16,
  205. CLK_Y-17,CLK_Y-18,CLK_Y-19,CLK_Y-20,
  206. };

  207. unsigned char code hourpointerx[]=
  208. {
  209. CLK_X+ 0,CLK_X+ 1,CLK_X+ 3,CLK_X+ 5,CLK_X+ 6,CLK_X+ 8,CLK_X+ 9,CLK_X+11,CLK_X+12,CLK_X+13,
  210. CLK_X+14,CLK_X+14,CLK_X+15,CLK_X+16,CLK_X+16,CLK_X+16,

  211. CLK_X+16,CLK_X+16,CLK_X+15,CLK_X+14,CLK_X+14,CLK_X+13,CLK_X+12,CLK_X+11,CLK_X+ 9,CLK_X+ 8,
  212. CLK_X+ 6,CLK_X+ 5,CLK_X+ 3,CLK_X+ 1,CLK_X+ 0,

  213. CLK_X- 1,CLK_X- 3,CLK_X- 5,CLK_X- 6,CLK_X- 8,CLK_X- 9,CLK_X-11,CLK_X-12,CLK_X-13,CLK_X-14,
  214. CLK_X-14,CLK_X-15,CLK_X-16,CLK_X-16,CLK_X-16,

  215. CLK_X-16,CLK_X-16,CLK_X-15,CLK_X-14,CLK_X-14,CLK_X-13,CLK_X-12,CLK_X-11,CLK_X- 9,CLK_X- 8,
  216. CLK_X- 6,CLK_X- 5,CLK_X- 3,CLK_X- 1,

  217. };
  218. unsigned char code hourpointery[]=
  219. {
  220. CLK_Y-16,CLK_Y-16,CLK_Y-16,CLK_Y-15,CLK_Y-14,CLK_Y-14,CLK_Y-13,CLK_Y-12,CLK_Y-11,CLK_Y- 9,
  221. CLK_Y- 8,CLK_Y- 6,CLK_Y- 5,CLK_Y- 3,CLK_Y- 1,CLK_Y- 0,

  222. CLK_Y+1,CLK_Y+ 3,CLK_Y+ 5,CLK_Y+ 6,CLK_Y+ 8,CLK_Y+ 9,CLK_Y+11,CLK_Y+12,CLK_Y+13,CLK_Y+14,
  223. CLK_Y+14,CLK_Y+15,CLK_Y+16,CLK_Y+16,CLK_Y+16,

  224. CLK_Y+16,CLK_Y+16,CLK_Y+15,CLK_Y+14,CLK_Y+14,CLK_Y+13,CLK_Y+12,CLK_Y+11,CLK_Y+ 9,
  225. CLK_Y+ 8,CLK_Y+ 6,CLK_Y+ 5,CLK_Y+ 3,CLK_Y+ 1,CLK_Y+ 0,

  226. CLK_Y-1,CLK_Y- 3,CLK_Y- 5,CLK_Y- 6,CLK_Y- 8,CLK_Y- 9,CLK_Y-11,CLK_Y-12,CLK_Y-13,CLK_Y-14,
  227. CLK_Y-14,CLK_Y-15,CLK_Y-16,CLK_Y-16,
  228. };
  229. unsigned char code clkbmp[]=
  230. {
  231.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0x60,0x20,0x30,
  232.       0x38,0xC8,0x0C,0x04,0x04,0x06,0x02,0x02,0x02,0x03,0x01,0x01,0x21,0xF1,0x01,0x07,
  233.       0x21,0x91,0x51,0x21,0x01,0x03,0x02,0x02,0x02,0x06,0x04,0x04,0x0C,0xC8,0x38,0x30,
  234.       0x20,0x60,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  235.       0x00,0x00,0x00,0x00,0x80,0xE0,0x30,0x1C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
  236.       0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,
  237.       0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
  238.       0x00,0x00,0x00,0x00,0x01,0x03,0x06,0x1C,0x30,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,
  239.       0x00,0xE0,0x3C,0x07,0x01,0x01,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  240.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  241.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  242.       0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x02,0x01,0x01,0x07,0x3C,0xE0,0x00,0x00,
  243.       0xFE,0x83,0x80,0x00,0x40,0xA0,0xA0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  244.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0,
  245.       0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  246.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x40,0x00,0x80,0x83,0xFE,0x00,
  247.       0x3F,0xE0,0x00,0x00,0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  248.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,
  249.       0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  250.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0x00,0x00,0xE0,0x3F,0x00,
  251.       0x00,0x03,0x1E,0x70,0xC0,0xC0,0x20,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  252.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  253.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  254.       0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x20,0xC0,0xC0,0x70,0x1E,0x03,0x00,0x00,
  255.       0x00,0x00,0x00,0x00,0x00,0x03,0x06,0x1C,0x30,0x60,0xC0,0x80,0x80,0x00,0x00,0x00,
  256.       0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,
  257.       0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,
  258.       0x00,0x00,0x80,0x80,0xC0,0x60,0x30,0x1C,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
  259.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x02,0x06,
  260.       0x0E,0x09,0x18,0x10,0x10,0x30,0x20,0x20,0x20,0x60,0x40,0x40,0x40,0x40,0x43,0x75,
  261.       0x45,0x42,0x40,0x40,0x40,0x60,0x20,0x20,0x20,0x30,0x10,0x10,0x18,0x09,0x0E,0x06,
  262.       0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  263. };

  264. sbit LCDRW                = P1^3;
  265. sbit LCDEN                = P1^4;
  266. sbit LCDRS                = P1^5;

  267. sbit LCDCS1        = P1^7;
  268. sbit LCDCS2        = P1^6;



  269. unsigned char Hour = 9;
  270. unsigned char Min = 9;
  271. unsigned char Sec = 30;
  272. unsigned char xdata dispbuf[8][128];

  273. bit refreshflag = 1;

  274. unsigned char getState(void)
  275. {
  276.         unsigned char temp;
  277.         DBPort = 0xFF;
  278.         LCDEN=0;
  279.         LCDRS=0;
  280.         LCDRW=1;
  281.         LCDEN=1;
  282.         _nop_();
  283.         LCDEN=0;
  284.         temp = DBPort;
  285.         return temp;
  286. }
  287. void WaiteBusy()
  288. {
  289.         unsigned char temp;
  290.         while(1)
  291.         {
  292.                 temp = getState();
  293.                 temp &= 0x80;
  294.                 if(temp == 0)
  295.                         break;
  296.         }
  297. }

  298. void WriteCmd(unsigned char cmd)           
  299. {
  300.         WaiteBusy();
  301.         LCDEN=0;
  302.         LCDRW = 0;
  303.         LCDRS = 0;
  304.         DBPort = cmd;
  305.         LCDEN = 1;
  306.         _nop_();
  307.         _nop_();
  308.         LCDEN = 0;
  309. }

  310. void WriteData(unsigned char wdata)     
  311. {
  312.         WaiteBusy();
  313.         LCDRS = 1;
  314.         LCDRW = 0;
  315.         DBPort = wdata;
  316.         LCDEN = 1;
  317.         _nop_();
  318.         _nop_();
  319.         LCDEN = 0;
  320. }
  321. void LcdInit()                       
  322. {
  323.         LCDCS1 = 1;
  324.         LCDCS2 = 1;
  325.         WriteCmd(DISP_OFF);
  326.         WriteCmd(DISP_Y);
  327.         WriteCmd(DISP_ON);
  328. }
  329. void Show()
  330. {
  331.         unsigned char i,j;
  332.         LcdInit();
  333.         for(j=0;j<8;j++)
  334.         {
  335.                 LCDCS1=1;
  336.                 LCDCS2=0;
  337.                 WriteCmd(DISP_PAGE+j);
  338.                 WriteCmd(DISP_X);
  339.                 for(i=0;i<64;i++)
  340.                         WriteData(dispbuf[j][i]);               
  341.                 LCDCS1=0;
  342.                 LCDCS2=1;
  343.                 WriteCmd(DISP_PAGE+j);
  344.                 WriteCmd(DISP_X);
  345.                 for(i=64;i<128;i++)
  346.                         WriteData(dispbuf[j][i]);        
  347.         }
  348. }

  349. void ClearBuff()
  350. {
  351.         unsigned char i,j;
  352.         for(j=0;j<8;j++)
  353.         {
  354.                 for(i=0;i<128;i++)
  355.                         dispbuf[j][i] = 0x00;
  356.         }               
  357. }
  358. void ClearScreen()               
  359. {
  360.         ClearBuff();
  361.         Show();
  362. }
  363. void DrawPixel(unsigned char x,unsigned char y,bit drawflag)
  364. {
  365.         unsigned char a,b;
  366.         a = y/0x08;
  367.         b = y&0x07;
  368.         if(drawflag)
  369.                 dispbuf[a][x] |= BIT(b);
  370.         else
  371.                 dispbuf[a][x] &= ~BIT(b);               
  372. }

  373. void Line(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1)
  374. {

  375.         char dx,dy,x_increase,y_increase;
  376.         int error;
  377.         unsigned char x,y;
  378.         unsigned char i;
  379.         dx = x1-x0;
  380.         dy = y1-y0;
  381.         if(dx>=0)
  382.                 x_increase = 1;
  383.         else
  384.                 x_increase = -1;
  385.         if(dy>=0)
  386.                 y_increase = 1;
  387.         else
  388.                 y_increase = -1;

  389.          x = x0;
  390.         y = y0;
  391.         dx = cabs(dx);
  392.         dy = cabs(dy);
  393.         if(dx > dy)
  394.         {
  395.                 error = -dx;
  396.                 for(i=0;i<dx+1;i++)
  397.                 {
  398.                         DrawPixel(x,y,1);
  399.                         x += x_increase;
  400.                         error += 2*dy;
  401.                         if(error >= 0)
  402.                         {
  403.                                 y += y_increase;
  404.                                 error -= 2*dx;
  405.                         }
  406.                 }
  407.         }
  408.         else
  409.         {
  410.                 error = -dy;
  411.                 for(i=0;i<dy+1;i++)
  412.                 {
  413.                         DrawPixel(x,y,1);
  414.                         y += y_increase;
  415.                         error += 2*dx;
  416.                         if(error >= 0)
  417.                         {
  418.                                 x += x_increase;
  419.                                 error -= 2*dy;
  420.                         }
  421.                 }
  422.         }
  423. }

  424. void DrawVerticalLine(unsigned char x,unsigned char y,unsigned char len,unsigned char d)
  425. {
  426.         unsigned char i;
  427.         for(i=0;i<len;i++)
  428.         {
  429.                 if(d&0x01)
  430.                         DrawPixel(x,y+i,1);
  431.                 d >>= 1;
  432.         }
  433. }


  434. void Print12_12CHN(unsigned char x,unsigned char y,bit cpl,struct typFNT_GB12 a)
  435. {
  436.         unsigned char i;
  437.         for(i=0;i<12;i++)
  438.         {
  439.                 if(cpl)
  440.                         DrawVerticalLine(x+i,y,8,~a.Msk[i]);
  441.                 else
  442.                         DrawVerticalLine(x+i,y,8,a.Msk[i]);                                
  443.         }

  444.         for(i=0;i<12;i++)
  445.         {
  446.                 if(cpl)
  447.                         DrawVerticalLine(x+i,y+8,4,~a.Msk[i+12]);
  448.                 else
  449.                         DrawVerticalLine(x+i,y+8,4,a.Msk[i+12]);
  450.         }
  451. }
  452. void Print12_6En(unsigned char x,unsigned char y,bit cpl,unsigned char asc)
  453. {
  454.         unsigned char i,j;
  455.         for(j=0;j<2;j++)
  456.         {
  457.                 for(i=0;i<6;i++)
  458.                 {
  459.                         if(cpl)
  460.                                 DrawVerticalLine(x+i,y+8*j,8-4*j,~AsciiDot[(asc-0x20)*12+i+6*j]);
  461.                         else
  462.                                 DrawVerticalLine(x+i,y+8*j,8-4*j,AsciiDot[(asc-0x20)*12+i+6*j]);
  463.                 }
  464.         }
  465. }

  466. void BufferPrint12(unsigned char x,unsigned char y,unsigned char *ptr)
  467. {
  468.         unsigned char c1,c2,i,j;
  469.         bit cpl = 0;
  470.         for(i=0;ptr[i] != '\0';i++)
  471.         {
  472.                 c1 = ptr[i];
  473.                 c2 = ptr[i+1];
  474.                 if(c1 == '\n')//???
  475.                 {
  476.                         x = 0;
  477.                         y += 2;
  478.                         continue;
  479.                 }
  480.                 if(c1 == '~')//??
  481.                 {
  482.                         cpl = !cpl;
  483.                         continue;
  484.                 }
  485.                 if(c1<128)                                                     
  486.                 {
  487.                         Print12_6En(6*x+4,6*y+2,cpl,c1);
  488.                         x++;
  489.                 }
  490.                 else                                                                     
  491.                 {
  492.                         for(j=0;j<sizeof(GB_12)/sizeof(GB_12[0]);j++)                  
  493.                         {
  494.                                 if(c1 == GB_12[j].Index[0] && c2 == GB_12[j].Index[1])
  495.                                         break;
  496.                         }
  497.                         Print12_12CHN(6*x+4,6*y+2,cpl,GB_12[j]);                                                
  498.                         x += 2;
  499.                         i++;
  500.                 }
  501.         }
  502. }




  503. void WriteClkBmp(unsigned char  code *image)         
  504. {
  505.         unsigned char i,j;
  506.         for(j=0;j<8;j++)
  507.         {
  508.                 for(i=64;i<128;i++)
  509.                         dispbuf[j][i] = image[j*64+i-64];
  510.         }
  511. }
  512. void TimeDisp(unsigned char Hour,unsigned char Min,unsigned char Sec)
  513. {
  514.         unsigned char hp;
  515.         hp = Hour*5+Min/12;
  516.         WriteClkBmp(clkbmp);
  517.         Line(CLK_X,31,secondpointerx[Sec],secondpointery[Sec]);
  518.         Line(CLK_X,31,minpointerx[Min],minpointery[Min]);
  519.         Line(CLK_X,31,hourpointerx[hp],hourpointery[hp]);
  520. }




  521. void TimerInit()
  522. {
  523.         EA = 1;
  524.         ET0 = 1;
  525.         TMOD = 0x01;
  526.         TH0 = (65536-50000)/256;
  527.         TL0 = (65536-50000)%256;
  528.         TR0 = 1;
  529. }

  530. void main()
  531. {
  532.         TimerInit();
  533.         ClearScreen();
  534.         while(1)
  535.         {
  536.                 TimeDisp(Hour,Min,Sec);
  537.                 if(refreshflag)
  538.                 {
  539.                         Show();
  540.                         refreshflag = 0;
  541.                 }
  542.         }
  543. }

  544. void Timer0() interrupt 1
  545. {
  546.         unsigned char n;
  547.         TH0 = (65536-49990)/256;
  548.         TL0 = (65536-49990)%256;
  549.         n++;
  550.         if(n == 40)//24Mhz
  551.         {
  552.                 n = 0;
  553.                 Sec++;
  554.                 refreshflag = 1;
  555.                 if(Sec == 60)
  556.                 {
  557.                         Sec = 0;
  558.                         Min++;
  559.                         if(Min == 60)
  560.                         {
  561.                                 Min = 0;
  562.                                 Hour++;
  563.                                 if(Hour == 12)
  564.                                         Hour = 0;
  565.                         }
  566.                 }
  567.         }
  568. }
复制代码



最佳答案

查看完整内容

你这个程序有点小问题,每次调用Show();都会初始化lcd,建议将lcd初始化函数放在主函数main()里面的while(1)前面,每次刷新使用清屏函数即可。这个代码中带了几个汉字字库,但是数组定义有点小不懂,取字位第一个字是1,第二个字是26,第三个是51,依次类推,字体是12*16的。你看下你的显示屏带汉字输出函数,将此函数添加在Show()函数中执行应该就可以了.注:调用typFNT_GB12 code GB_12[]数组的函数应该就是汉字显示函数了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:687694 发表于 2020-3-4 21:26 | 只看该作者
你这个程序有点小问题,每次调用Show();都会初始化lcd,建议将lcd初始化函数放在主函数main()里面的while(1)前面,每次刷新使用清屏函数即可。这个代码中带了几个汉字字库,但是数组定义有点小不懂,取字位第一个字是1,第二个字是26,第三个是51,依次类推,字体是12*16的。你看下你的显示屏带汉字输出函数,将此函数添加在Show()函数中执行应该就可以了.注:调用typFNT_GB12 code GB_12[]数组的函数应该就是汉字显示函数了。
回复

使用道具 举报

板凳
ID:584814 发表于 2020-3-5 11:17 | 只看该作者
汉字先取模放在程序里调用,具体参考网上无字库12864相关文章(不要硬抄,主控不对会不显)。
回复

使用道具 举报

地板
ID:452950 发表于 2020-3-5 12:29 | 只看该作者
以前搜集的文字取模软件,或许用得上

文字取模软件.rar

256.24 KB, 下载次数: 4

回复

使用道具 举报

5#
ID:316880 发表于 2020-3-5 12:34 | 只看该作者
12864?不带字库的用起来太难了,建议用带字裤的,想显示什么字只要“”这样就可以了“”
回复

使用道具 举报

6#
ID:550840 发表于 2020-3-5 13:52 | 只看该作者
有字模软件生成
回复

使用道具 举报

7#
ID:698481 发表于 2020-3-5 14:31 | 只看该作者
xxpp2011 发表于 2020-3-5 12:29
以前搜集的文字取模软件,或许用得上

我用的pctolcd2002,我想问的是缺少的代码缺了那些,但还是谢谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表