找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6327|回复: 2
收起左侧

单片机可调时间继电器制作 三个按键 LCD12864显示附程序

[复制链接]
ID:99624 发表于 2015-12-23 01:47 | 显示全部楼层 |阅读模式
本帖最后由 51黑ren 于 2015-12-23 15:06 编辑

液晶12864(KS0108主控)做动作显示,74hc573 做扩展,三个按键,功能键,+ ,-。可调节组和各单元时间间隔。









     下面是可调时控继电器的51单片机程序源码:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include<string.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. #define lcd_bus P0
  7. #define date_bus P3

  8. /*************LCD接口定义*************/
  9. sbit rs=P2^0;
  10. sbit rw=P2^1;
  11. sbit e=P2^2;
  12. sbit cs1=P2^3;
  13. sbit cs2=P2^4;
  14. sbit rst=P2^5;
  15. /***************外扩输出*************/
  16. sbit a573a=P1^0;
  17. sbit a573b=P1^1;
  18. sbit a573c=P1^2;

  19. /*********按键*****************/
  20. sbit gn=P1^4;
  21. sbit jia=P1^5;
  22. sbit jian=P1^6;
  23. /***************初始屏(工作)时显示************/
  24. uchar code table1[][32]={
  25. //"第",
  26.      0x10,0x08,0x94,0x97,0x9C,0x96,0x94,0xF8,
  27.       0x97,0x94,0x9C,0x94,0xF6,0x04,0x00,0x00,
  28.       0x00,0x40,0x47,0x24,0x24,0x14,0x0C,0xFF,
  29.       0x04,0x04,0x24,0x44,0x44,0x3E,0x04,0x00,

  30. //"一",
  31.       0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  32.       0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,
  33.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  34.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  35. //"组",
  36.       0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
  37.       0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
  38.       0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
  39.       0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,

  40. /*******框周围亮中间黑**********/
  41.      0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  42.      0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
  43.         0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  44.      0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
  45.      
  46. /****************圆灭**********************************/
  47.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  48.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  49.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  50.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  51.      
  52. /****************圆灭**********************************/
  53.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  54.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  55.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  56.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,

  57. /****************圆灭**********************************/
  58.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  59.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  60.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  61.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  62. /****************圆灭**********************************/
  63.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  64.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  65.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  66.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,

  67. //"第",
  68.       0x10,0x08,0x94,0x97,0x9C,0x96,0x94,0xF8,
  69.       0x97,0x94,0x9C,0x94,0xF6,0x04,0x00,0x00,
  70.       0x00,0x40,0x47,0x24,0x24,0x14,0x0C,0xFF,
  71.       0x04,0x04,0x24,0x44,0x44,0x3E,0x04,0x00,


  72. //"二",
  73.       0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,
  74.       0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x00,
  75.       0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
  76.       0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00,

  77. //"组",
  78.       0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
  79.       0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
  80.       0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
  81.       0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,
  82. /*******框周围亮中间黑**********/
  83.      0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  84.      0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
  85.         0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  86.      0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,

  87.      
  88. /****************圆灭**********************************/
  89.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  90.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  91.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  92.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  93.      
  94. /****************圆灭**********************************/
  95.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  96.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  97.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  98.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,

  99. /****************圆灭**********************************/
  100.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  101.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  102.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  103.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  104. /****************圆灭**********************************/
  105.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  106.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  107.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  108.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  109.             
  110. //"第",
  111.       0x10,0x08,0x94,0x97,0x9C,0x96,0x94,0xF8,
  112.       0x97,0x94,0x9C,0x94,0xF6,0x04,0x00,0x00,
  113.       0x00,0x40,0x47,0x24,0x24,0x14,0x0C,0xFF,
  114.       0x04,0x04,0x24,0x44,0x44,0x3E,0x04,0x00,

  115. //"三",
  116.       0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,
  117.       0x84,0x84,0x84,0xC4,0x86,0x04,0x00,0x00,
  118.       0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  119.       0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,


  120. //"组",
  121.       0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
  122.       0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
  123.       0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
  124.       0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,
  125. /*******框周围亮中间黑**********/
  126.      0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  127.      0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
  128.         0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  129.      0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,

  130.    
  131. /****************圆灭**********************************/
  132.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  133.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  134.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  135.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  136.      
  137. /****************圆灭**********************************/
  138.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  139.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  140.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  141.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,

  142. /****************圆灭**********************************/
  143.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  144.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  145.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  146.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  147. /****************圆灭**********************************/
  148.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  149.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  150.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  151.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  152.                       
  153. //"第",
  154.       0x10,0x08,0x94,0x97,0x9C,0x96,0x94,0xF8,
  155.       0x97,0x94,0x9C,0x94,0xF6,0x04,0x00,0x00,
  156.       0x00,0x40,0x47,0x24,0x24,0x14,0x0C,0xFF,
  157.       0x04,0x04,0x24,0x44,0x44,0x3E,0x04,0x00,

  158. //"四",
  159.       0x00,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,
  160.       0x04,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,
  161.       0x00,0x7F,0x20,0x28,0x24,0x23,0x20,0x20,
  162.       0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00,

  163. //"组",
  164.       0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
  165.       0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
  166.       0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
  167.       0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,

  168. /*******框周围亮中间黑**********/
  169.      0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  170.      0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
  171.         0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  172.      0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,

  173.    
  174. /****************圆灭**********************************/
  175.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  176.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  177.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  178.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  179.      
  180. /****************圆灭**********************************/
  181.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  182.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  183.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  184.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,

  185. /****************圆灭**********************************/
  186.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  187.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  188.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  189.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  190. /****************圆灭**********************************/
  191.         0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
  192.         0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
  193.      0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
  194.         0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
  195. /******框中间亮******/
  196.         0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
  197.         0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,
  198.     0x00,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
  199.         0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,
  200. /****************圆亮****************************/
  201.     0xC0,0xF0,0xF8,0xFC,0xFC,0xFE,0xFE,0xFE,
  202.     0xFE,0xFE,0xFE,0xFC,0xFC,0xF8,0xF0,0xC0,
  203.         0x03,0x0F,0x1F,0x3F,0x3F,0x7F,0x7F,0x7F,
  204.         0x7F,0x7F,0x7F,0x3F,0x3F,0x1F,0x0F,0x03,
  205.                                                         
  206. /***************调整时显示***********************/

  207. //
  208.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  209.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  210.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  211.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  212. //-- 圆 --
  213.       0x00,0xFE,0x02,0x82,0xBA,0xAA,0xAA,0xAA,
  214.       0xAA,0xAA,0xBA,0x82,0x02,0xFF,0x02,0x00,
  215.       0x00,0xFF,0x40,0x4F,0x60,0x50,0x48,0x46,
  216.       0x48,0x50,0x60,0x4F,0x40,0xFF,0x00,0x00,
  217. //-- 间 --
  218.       0x00,0xF8,0x01,0x02,0xF6,0x10,0x12,0x12,
  219.       0x12,0x12,0xFA,0x12,0x02,0xFF,0x02,0x00,
  220.       0x00,0xFF,0x00,0x00,0x3F,0x11,0x11,0x11,
  221.       0x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00,
  222. //-- 隔 --
  223.       0x00,0xFE,0x22,0x5A,0x86,0x02,0x7A,0x4A,
  224.       0x4A,0x4A,0x4A,0x4A,0x7B,0x82,0x00,0x00,
  225.       0x00,0xFF,0x04,0x08,0x07,0xFF,0x09,0x0B,
  226.       0x0D,0x79,0x0D,0x4B,0x89,0x7F,0x01,0x00,
  227. //-- 调 --
  228.       0x20,0x21,0xE6,0x00,0x00,0xFE,0x82,0x92,
  229.       0x92,0xFE,0x92,0xD2,0x82,0xFF,0x02,0x00,
  230.       0x00,0x00,0x3F,0x90,0x48,0x3F,0x00,0x3E,
  231.       0x12,0x12,0x12,0x5E,0x80,0x7F,0x00,0x00,
  232. //-- 整 --
  233.       0x00,0x3A,0xAA,0x6A,0xFF,0x6A,0xAA,0x3A,
  234.       0x08,0xB7,0x44,0xA4,0x1C,0x06,0x04,0x00,
  235.       0x41,0x41,0x42,0x42,0x7B,0x42,0x42,0x7E,
  236.       0x4B,0x4A,0x4A,0x4A,0x43,0x61,0x41,0x00,
  237. //      
  238.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  239.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  240.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  241.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  242. //
  243.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  244.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  245.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  246.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  247. //      
  248.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  249.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  250.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  251.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  252. //-- 组 --
  253.       0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
  254.       0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
  255.       0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
  256.       0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,
  257. //-- 间 --
  258.       0x00,0xF8,0x01,0x02,0xF6,0x10,0x12,0x12,
  259.       0x12,0x12,0xFA,0x12,0x02,0xFF,0x02,0x00,
  260.       0x00,0xFF,0x00,0x00,0x3F,0x11,0x11,0x11,
  261.       0x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00,
  262. //-- 隔 --
  263.       0x00,0xFE,0x22,0x5A,0x86,0x02,0x7A,0x4A,
  264.       0x4A,0x4A,0x4A,0x4A,0x7B,0x82,0x00,0x00,
  265.       0x00,0xFF,0x04,0x08,0x07,0xFF,0x09,0x0B,
  266.       0x0D,0x79,0x0D,0x4B,0x89,0x7F,0x01,0x00,
  267. //-- 调 --
  268.       0x20,0x21,0xE6,0x00,0x00,0xFE,0x82,0x92,
  269.       0x92,0xFE,0x92,0xD2,0x82,0xFF,0x02,0x00,
  270.       0x00,0x00,0x3F,0x90,0x48,0x3F,0x00,0x3E,
  271.       0x12,0x12,0x12,0x5E,0x80,0x7F,0x00,0x00,
  272. //-- 整 --
  273.       0x00,0x3A,0xAA,0x6A,0xFF,0x6A,0xAA,0x3A,
  274.       0x08,0xB7,0x44,0xA4,0x1C,0x06,0x04,0x00,
  275.       0x41,0x41,0x42,0x42,0x7B,0x42,0x42,0x7E,
  276.       0x4B,0x4A,0x4A,0x4A,0x43,0x61,0x41,0x00,
  277. //      
  278.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  279.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  280.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  281.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  282. //
  283.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  284.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  285.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  286.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  287. //      
  288.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  289.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  290.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  291.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  292. //
  293.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  294.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  295.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  296.          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,         };
  297. /************定义变量******************/
  298. uchar sj,sk=1,on,gnb;
  299. uint mm,miao,zuj=40,yuanj=20;
  300. uint fzg,zjg=0;
  301. uint yjiab=3,zjiab=3;
  302. uchar ja=0,tt,ti;
  303. /*******毫秒延时************/
  304. void delay(uint a)
  305. {
  306.         uint x,y;
  307.         for(x=0;x<a;x++)
  308.          for(y=0;y<110;y++);
  309. }
  310. /***********延时*************/
  311. void delayy()
  312. {
  313.         _nop_();
  314.         _nop_();
  315.            _nop_();
  316.         _nop_();
  317.            _nop_();
  318.         _nop_();
  319.     _nop_();
  320.         _nop_();
  321.            _nop_();
  322.         _nop_();
  323.            _nop_();
  324.         _nop_();
  325. }
  326. /************测忙**************/
  327. void lcd_busm()
  328. {
  329.         uchar temp;
  330.     do
  331.         {
  332.                 temp=0x80;
  333.                 rs=0;
  334.             _nop_();
  335.            _nop_();
  336.               _nop_();
  337.                 rw=1;
  338.                 e=1;
  339.                 temp=lcd_bus;
  340.                 _nop_();
  341.             _nop_();
  342.                _nop_();
  343.             e=0;
  344.         } while((temp&0x80)==0x80);
  345. }
  346. /***********写指令********************/
  347. void send_comm(uchar comm)
  348. {
  349.     lcd_busm();
  350.         rs=0;
  351.         delayy();
  352.         rw=0;
  353.         lcd_bus=comm;
  354.         delayy();
  355.         e=1;
  356.         delayy();
  357.         e=0;
  358. }
  359. /************写数据********************/
  360. void send_data(uchar date)
  361. {
  362.         lcd_busm();
  363.         rs=1;
  364.         delayy();
  365.         rw=0;
  366.         delayy();
  367.         lcd_bus=date;
  368.         delayy();
  369.         e=1;
  370.         delayy();
  371.         e=0;
  372. }
  373. /*************选屏****************/
  374. void csp(uchar a)
  375. {
  376.         switch(a)
  377.         {
  378.                 case 0:
  379.                       {
  380.                             cs1=1;
  381.                             cs2=1;
  382.                                 break;
  383.                           }
  384.                 case 1:
  385.                           {
  386.                         cs1=1;
  387.                                 cs2=0;
  388.                                 break;
  389.                                 }
  390.                 case 2:
  391.                           {
  392.                         cs1=0;        delayy();
  393.                                 cs2=1;
  394.                                 break;
  395.                           }
  396.                   default: break;
  397.         }
  398. }
  399. /**********初始化*****************/
  400. void init()
  401. {
  402.         rst=0;
  403.         delay(150);
  404.         rst=1;
  405.         delay(100);
  406.     csp(0);
  407.         send_comm(0x3f);
  408.         delayy();
  409.         send_comm(0xc0);
  410.         a573a=0;
  411.         a573b=0;
  412.         a573c=0;
  413. }
  414. /**************定时器初始化**************/
  415. void time()
  416. {
  417.         TMOD=0x11;
  418.         TH0=0x3c;
  419.         TL0=0xb0;
  420.         TH1=0X3C;
  421.         TL1=0XB0;
  422.         EA=1;
  423.         ET0=1;
  424.         ET1=1;
  425.         TR0=1;
  426.         TR1=1;
  427. }
  428. /***********设置页地址*************/
  429. void x_page(uchar x)
  430. {
  431.         send_comm(0xb8+x);
  432.         delayy();               
  433. }
  434. /************设置列地址***********/
  435. void y_line(uchar y)
  436. {
  437.         send_comm(0x40+y);
  438.         delayy();
  439. }
  440. /************设置行地址***********/
  441. void z_hang(uchar z)
  442. {
  443.         send_comm(0xc0+z);
  444.         delayy();
  445. }

  446. /*************清空显示内存***********/
  447. void clean()
  448. {
  449.         uchar i,j,k;
  450.         for(i=0;i<8;i++)
  451.         {
  452.            csp(0);
  453.                 y_line(0);
  454.                 delayy();
  455.                 x_page(i);
  456.                 delayy();
  457.           
  458.                 csp(1);
  459.                 for(j=0;j<64;j++)
  460.          {
  461.                         send_data(0x00);
  462.                 }
  463.                 delayy();
  464.                 csp(2);
  465.                 for(k=64;k<128;k++)
  466.                 {
  467.                         send_data(0x00);
  468.                 }
  469.         }
  470. }

  471. /****************页和列地址*****************/
  472. void write_x_y(uchar x,y)
  473. {
  474.         x_page(x);
  475.         y_line(y);
  476. }

  477. /**************指定位置写汉字****************/
  478. void write_zf(uchar a,b,c )
  479. {
  480.         uchar k,m;

  481.                 write_x_y(a,b);                    //写页和列地址是字的上半
  482.                 for(k=0;k<16;k++)
  483.                 {
  484.                         send_data(table1[c][k]);
  485.                 }
  486.                 delayy();
  487.                 write_x_y(a+1,b);                        //写页和列地址是字的下半
  488.                 for(m=16;m<32;m++)
  489.                 {
  490.                         send_data(table1[c][m]);
  491.                 }
  492. }       

  493. /*****************指定位置写字ASCII*************/
  494. void write_ascii(uchar a,b,c )
  495. {
  496.         uchar k,m;

  497.                 write_x_y(a,b);
  498.                 for(k=0;k<8;k++)
  499.                 {
  500.                         send_data(table1[c][k]);
  501.                 }
  502.                 delayy();
  503.                 write_x_y(a+1,b);
  504.                 for(m=8;m<16;m++)
  505.                 {
  506.                         send_data(table1[c][m]);
  507.                 }
  508. }       
  509. /***************满行写字***************/
  510. void write_mh(uchar a,b,c)                        //(页,列 ,字)
  511. {
  512.         uchar i,d;
  513.         csp(1);
  514.         for(i=0;i<4;i++)
  515.         {
  516.                 write_zf(a,b+i*16,c++);       
  517.         }       
  518.         csp(2);        delayy();
  519.         for(d=0;d<4;d++)
  520.     {
  521.                 write_zf(a,b+d*16,c++);       
  522.         }
  523.        
  524. }
  525. /*************满屏写字***************/
  526. void write_mp(uchar zi)
  527. {       
  528.     uchar i;
  529.         for(i=0;i<4;i++)
  530.     {
  531.                 write_mh(i+1*i,0,i*8+zi);                 //(页,列,字)
  532.                
  533.         }
  534. }
  535. /***********间隔输出口动作,液晶指示状态变化***************/
  536. void yx()
  537. {
  538.         switch(zjg)
  539.         {
  540.                 case 0:                    a573a=1;
  541.                                                 a573b=1;
  542.                                                 a573c=1;
  543.                                                 date_bus=0x00;
  544.                                                 a573a=0;
  545.                                                 a573b=0;
  546.                                                 a573c=0;

  547.                           a573a=1; date_bus=0x01;
  548.                           csp(1);
  549.                                   write_zf(6,48,27);
  550.                           write_zf(0,48,32);
  551.                                   on=1;
  552.                                  if(fzg==1)
  553.                                   {
  554.                                           date_bus=date_bus|0x02;
  555.                                         csp(2);  
  556.                                         write_zf(0,0,33);
  557.                                         delay(100);
  558.                                         date_bus=0x01;
  559.                                         write_zf(0,0,31);
  560.                                   }
  561.                                  if(fzg==2)
  562.                                   {
  563.                                           date_bus=date_bus|0x04;
  564.                                         csp(2);  
  565.                                         write_zf(0,16,33);
  566.                                         delay(100);
  567.                                         date_bus=0x01;
  568.                                         write_zf(0,16,31);
  569.                                   }
  570.                                  if(fzg==3)
  571.                                   {
  572.                                           date_bus=date_bus|0x08;
  573.                                         csp(2);  
  574.                                         write_zf(0,32,33);
  575.                                         delay(100);
  576.                                         date_bus=0x01;
  577.                                         write_zf(0,32,31);
  578.                                   }
  579.                                  if(fzg==4)
  580.                                   {
  581.                                           date_bus=date_bus|0x10;
  582.                                         csp(2);  
  583.                                         write_zf(0,48,33);
  584.                                         delay(100);
  585.                                         date_bus=0x01;
  586.                                         write_zf(0,48,31);
  587.                                         if(fzg>4)
  588.                                         {
  589.                                                 on=0;
  590.                                                 fzg=0;
  591.                                                 while(zjg==0);
  592.                                         }
  593.                                   }
  594.                                   break;

  595.                 case 1:    on=1;
  596.                           if(fzg<3)
  597.                                   {
  598.                                             a573a=1; date_bus=0x20;
  599.                                   }
  600.                           csp(1);
  601.                                   write_zf(0,48,27);
  602.                           write_zf(2,48,32);
  603.                                  if(fzg==1)
  604.                                   {
  605.                                           date_bus=date_bus|0x40;
  606.                                         csp(2);  
  607.                                         write_zf(2,0,33);
  608.                                         delay(100);
  609.                                         date_bus=0x20;
  610.                                         write_zf(2,0,31);
  611.                                   }
  612.                                  if(fzg==2)
  613.                                   {
  614.                                           date_bus=date_bus|0x80;
  615.                                         csp(2);  
  616.                                         write_zf(2,16,33);
  617.                                         delay(100);
  618.                                         date_bus=0x20;
  619.                                         write_zf(2,16,31);
  620.                                   }
  621.                                  if(fzg==3)
  622.                                   {
  623.                                         a573a=0;
  624.                                         date_bus=0x00;
  625.                                         a573b=1;  delay(5);
  626.                                           date_bus=0x01;
  627.                                         csp(2);  
  628.                                         write_zf(2,32,33);
  629.                                         delay(100);
  630.                                         date_bus=0x00;
  631.                                         write_zf(2,32,31);
  632.                                   }
  633.                                  if(fzg==4)
  634.                                   { a573c=0;
  635.                                     a573a=0;delay(2);
  636.                                         a573b=1;
  637.                                           date_bus=0x02;
  638.                                         csp(2);  
  639.                                         write_zf(2,48,33);
  640.                                         delay(100);
  641.                                         date_bus=0x00;
  642.                                         write_zf(2,48,31);
  643.                                   }
  644.                                    if(fzg>4)
  645.                                         {
  646.                                                 on=0;
  647.                                                 fzg=0;
  648.                                                 while(zjg==1);
  649.                                         }
  650.                                   break;
  651.                 case 2:     on=1;
  652.                            a573b=0; delay(5); date_bus=0x00;
  653.                            a573a=1;        delay(5);
  654.                                         a573a=0; a573b=1;        csp(1);
  655.                                         date_bus=0x04;
  656.                                         write_zf(2,48,27);
  657.                                         write_zf(4,48,32);
  658.                                         csp(2);
  659.                                   if(fzg==1)
  660.                                         {
  661.                                                 date_bus=0x04|0x08;
  662.                                                 write_zf(4,0,33);
  663.                                                 delay(100);
  664.                                                 date_bus=0x04;
  665.                                                 write_zf(4,0,31);
  666.                                         }
  667.                                   if(fzg==2)
  668.                                         {
  669.                                                 date_bus=0x04|0x10;
  670.                                                 write_zf(4,16,33);
  671.                                                 delay(100);
  672.                                                 date_bus=0x04;
  673.                                                 write_zf(4,16,31);
  674.                                         }
  675.                                   if(fzg==3)
  676.                                         {
  677.                                                 date_bus=0x04|0x20;
  678.                                                 write_zf(4,32,33);
  679.                                                 delay(10);
  680.                                                 date_bus=0x04;
  681.                                                 write_zf(4,32,31);
  682.                                         }
  683.                                   if(fzg==4)
  684.                                         {
  685.                                                 date_bus=0x04|0x40;
  686.                                                 write_zf(4,48,33);
  687.                                                 delay(100);
  688.                                                 date_bus=0x04;
  689.                                                 write_zf(4,48,31);
  690.                                         }
  691.                                         if(fzg>4)
  692.                                         {
  693.                                                 on=0;
  694.                                                 fzg=0;
  695.                                                 while(zjg==2);
  696.                                         }
  697.                                         break;
  698.           case 3 :         on=1;
  699.                            date_bus=0x80;
  700.                                                 a573b=0;
  701.                                                 a573c=1;
  702.                            csp(1);
  703.                                                 write_zf(4,48,27);
  704.                                                 write_zf(6,48,32);
  705.                                                 csp(2);
  706.                                         if(fzg==1)
  707.                                         {
  708.                                                 date_bus=0x01;
  709.                                                 write_zf(6,0,33);
  710.                                                 delay(100);
  711.                                                 date_bus=0x00;
  712.                                                 write_zf(6,0,31);
  713.                                         }

  714.                                         if(fzg==2)
  715.                                         {
  716.                                                 date_bus=0x02;
  717.                                            write_zf(6,16,33);
  718.                                                 delay(100);
  719.                                                 date_bus=0x00;
  720.                                                 write_zf(6,16,31);
  721.                                         }
  722.                                         if(fzg==3)
  723.                                         {
  724.                                                 date_bus=0x04;
  725.                                                 write_zf(6,32,33);
  726.                                                 delay(100);
  727.                                                 date_bus=0x00;
  728.                                                 write_zf(6,32,31);
  729.                                         }
  730.                                         if(fzg==4)
  731.                                         {
  732.                                                 date_bus=0x08;
  733.                                                 write_zf(6,48,33);
  734.                                                 delay(100);
  735.                                                 date_bus=0x00;
  736.                                                 write_zf(6,48,31);
  737.                                        
  738.                                         }
  739.                                          if(fzg>4)
  740.                                         {
  741.                                                 on=0;
  742.                                                 fzg=0;
  743.                                        
  744.                                                 while(zjg==3);
  745.                                         }
  746.                                         break;
  747.         }
  748. }

  749. /****************按键检测****************/
  750. void keyscan()
  751. {
  752.         if(gn==0)
  753.         {
  754.           delay(5);
  755.           if(gn==0)
  756.           {
  757.                     gnb++;
  758.                   while(!gn);
  759.                   if(gnb>3)gnb=0;
  760.           }       
  761.         }
  762.         if(jia==0)
  763.         {
  764.                 delay(5);
  765.                 if(jia==0)
  766.                 {        if(gnb==1)
  767.                     {
  768.                            yjiab++;
  769.                                 if(yjiab>=7)
  770.                           yjiab=7;
  771.                            while(!jia);
  772.                         }
  773.                         if(gnb==2)
  774.                         {
  775.                                 zjiab++;
  776.                                 if(zjiab>=7)
  777.                           zjiab=7;
  778.                                 while(!jia);       
  779.                         }
  780.                 }
  781.         }
  782.         if(jian==0)
  783.         {
  784.                 delay(10);
  785.                 if(jian==0)
  786.                 {
  787.                         if(gnb==1)
  788.                     {
  789.                            yjiab--;
  790.                        if(yjiab<0)
  791.                                 {
  792.                          yjiab=0;
  793.                                 }
  794.                            while(!jian);
  795.                         }
  796.                         if(gnb==2)
  797.                         {
  798.                                 zjiab--;
  799.                        if(zjiab<0)
  800.                          {
  801.                                   zjiab=0;
  802.                                  }
  803.                                 while(!jian);
  804.                         }                         
  805.                 }
  806.         }
  807. }
  808. /**************时间调整****************/
  809. void tiaozhen()
  810. {
  811.    
  812.         if(gnb==1&ti)
  813.         {
  814.                
  815.                 clean();
  816.                 write_mh(0,0,34);
  817.        
  818.                 switch(yjiab)
  819.                 {
  820.                         case 0:                csp(1);
  821.                                   write_zf(4,0,33);
  822.                                                 yuanj=2;
  823.                                                 break;
  824.                         case 1:     csp(1);
  825.                                    write_zf(4,0,33);
  826.                                    write_zf(4,16,33);
  827.                                                 yuanj=5;
  828.                                            break;
  829.                         case 2:     csp(1);
  830.                                                 write_zf(4,0,33);
  831.                                    write_zf(4,16,33);
  832.                                    write_zf(4,32,33);
  833.                                                 yuanj=10;
  834.                                                 break;
  835.                    case 3:     csp(1);
  836.                                                 write_zf(4,0,33);
  837.                                    write_zf(4,16,33);
  838.                                    write_zf(4,32,33);
  839.                                                 write_zf(4,48,33);
  840.                                                 yuanj=20;
  841.                                                 break;
  842.                         case 4:     csp(1);
  843.                                                 write_zf(4,0,33);
  844.                                    write_zf(4,16,33);
  845.                                    write_zf(4,32,33);
  846.                                                 write_zf(4,48,33);
  847.                                                 csp(2);
  848.                                                 write_zf(4,0,33);
  849.                                                 yuanj=30;
  850.                                                 break;
  851.                    case 5:     csp(1);
  852.                                                 write_zf(4,0,33);
  853.                                    write_zf(4,16,33);
  854.                                    write_zf(4,32,33);
  855.                                                 write_zf(4,48,33);
  856.                                                 csp(2);
  857.                                                 write_zf(4,0,33);
  858.                                                 write_zf(4,16,33);
  859.                                                 yuanj=40;
  860.                                                 break;
  861.                    case 6:     csp(1);
  862.                                                 write_zf(4,0,33);
  863.                                    write_zf(4,16,33);
  864.                                    write_zf(4,32,33);
  865.                                                 write_zf(4,48,33);
  866.                                                 csp(2);
  867.                                                 write_zf(4,0,33);
  868.                                                 write_zf(4,16,33);
  869.                                                 write_zf(4,32,33);
  870.                                                 yuanj=50;
  871.                                                 break;
  872.                         case 7:     csp(1);
  873.                                                 write_zf(4,0,33);
  874.                                    write_zf(4,16,33);
  875.                                    write_zf(4,32,33);
  876.                                                 write_zf(4,48,33);
  877.                                                 csp(2);
  878.                                                 write_zf(4,0,33);
  879.                                                 write_zf(4,16,33);
  880.                                                 write_zf(4,32,33);
  881.                                                 write_zf(4,48,33);
  882.                                                 yuanj=60;
  883.                                                

  884.                                                   break;
  885.                  }
  886.                  
  887.           }

  888.         if(gnb==2&ti)
  889.      {

  890.                 clean();
  891.                 write_mh(0,0,42);
  892.                
  893.                 switch(zjiab)
  894.                 {
  895.                         case 0:                csp(1);
  896.                                   write_zf(4,0,32);
  897.                                                 zuj=2;
  898.                                                 break;
  899.                         case 1:     csp(1);
  900.                                    write_zf(4,0,32);
  901.                                    write_zf(4,16,32);
  902.                                                 zuj=5;
  903.                                            break;
  904.                         case 2:     csp(1);
  905.                                                 write_zf(4,0,32);
  906.                                    write_zf(4,16,32);
  907.                                    write_zf(4,32,32);
  908.                                                 zuj=10;
  909.                                                 break;
  910.                    case 3:     csp(1);
  911.                                                 write_zf(4,0,32);
  912.                                    write_zf(4,16,32);
  913.                                    write_zf(4,32,32);
  914.                                                 write_zf(4,48,32);
  915.                                                 zuj=20;
  916.                                                 break;
  917.                         case 4:     csp(1);
  918.                                                 write_zf(4,0,32);
  919.                                    write_zf(4,16,32);
  920.                                    write_zf(4,32,32);
  921.                                                 write_zf(4,48,32);
  922.                                                 csp(2);
  923.                                                 write_zf(4,0,32);
  924.                                                 zuj=30;
  925.                                                 break;
  926.                    case 5:     csp(1);
  927.                                                 write_zf(4,0,32);
  928.                                    write_zf(4,16,32);
  929.                                    write_zf(4,32,32);
  930.                                                 write_zf(4,48,32);
  931.                                                 csp(2);
  932.                                                 write_zf(4,0,32);
  933.                                                 write_zf(4,16,32);
  934.                                                 zuj=40;
  935.                                                 break;
  936.                    case 6:     csp(1);
  937.                                                 write_zf(4,0,32);
  938.                                    write_zf(4,16,32);
  939.                                    write_zf(4,32,32);
  940.                                                 write_zf(4,48,32);
  941.                                                 csp(2);
  942.                                                 write_zf(4,0,32);
  943.                                                 write_zf(4,16,32);
  944.                                                 write_zf(4,32,32);
  945.                                                 zuj=50;
  946.                                                 break;
  947.                         case 7:     csp(1);
  948.                                                 write_zf(4,0,32);
  949.                                    write_zf(4,16,32);
  950.                                    write_zf(4,32,32);
  951.                                                 write_zf(4,48,32);
  952.                                                 csp(2);
  953.                                                 write_zf(4,0,32);
  954.                                                 write_zf(4,16,32);
  955.                                                 write_zf(4,32,32);
  956.                                                 write_zf(4,48,32);
  957.                                                 zuj=60;
  958.                                            break;
  959.                  }
  960.         }
  961.      if(gnb==3)
  962.      {
  963.         gnb=0;
  964.         sk=1;
  965.      }                         
  966. }

  967. /***********主程序*********************/
  968.        
  969. void main()
  970. {
  971.        
  972.         time();
  973.         while(1)
  974.         {
  975.        keyscan();
  976.           tiaozhen();
  977.           if(gnb==0)
  978.           {
  979.                   while(sk)
  980.               {
  981.                 init();
  982.                 clean();
  983.              write_mp(ja);
  984.                   }
  985.              yx();
  986.            }
  987.     }
  988. }
  989. /****************时间中断***********/
  990. void time0()interrupt 1
  991. {
  992.         TH0=0x3c;
  993.         TL0=0xb0;
  994.         sj++;
  995.         if(sj>=5)
  996.         {
  997.                 sj=0;
  998.                 sk=0;
  999.         }
  1000.    mm++;
  1001.    if((yuanj*5+zuj)<=mm)
  1002.    {
  1003.               zjg++;
  1004.                 if(zjg>3)
  1005.                 zjg=0;
  1006.                 mm=0;
  1007.    }
  1008.            
  1009. }

  1010. void time1()interrupt 3
  1011. {
  1012.         TH1=0X3C;
  1013.         TL1=0XB0;
  1014.         if(on==1)
  1015.         miao++;
  1016.         if(yuanj<=miao)
  1017.         {
  1018.            fzg++;
  1019.                 if(fzg>5)
  1020.                 fzg=0;
  1021.                 miao=0;       
  1022.         }
  1023.         tt++;
  1024.    if(tt>=1)
  1025.    {
  1026.             tt=0;
  1027.          ti=!ti;
  1028.    }
  1029. }                                       
复制代码






回复

使用道具 举报

ID:185268 发表于 2017-4-1 08:13 | 显示全部楼层
PCB文件呢
回复

使用道具 举报

ID:61140 发表于 2018-6-15 19:48 | 显示全部楼层
我也需要这个,但我控制一路输出,而且我想用LCD19264显示
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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