找回密码
 立即注册

QQ登录

只需一步,快速开始

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

IIC初学所写的一些程序

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-23 00:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
溜达一圈,刚回来,昨晚弄IIC,搞得晚上都没睡好觉,难得昨天天气很好,室温20度,穿一件内衣都可以了;
IIC 协议用郭天祥书本上现成的,记得以前帮MM搞毕业设计时LCD上的串行协议也是用他的;
反正,这个协议完全应该可以当成标准品来用了,感觉一段时间没玩代码,又似乎回到了起点;
单字节读写没有问题;今天准备把多字节给
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<at24c04.c>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uint BTime_Count;
  7. uchar BSec,Sec,Min,Hour,Sec_Flag;
  8. sbit Rst = P1^5;sbit Lcd_Csb = P1^4;sbit Lcd_Csa = P1^3;
  9. sbit Rs = P1^2;sbit Rw = P1^1;sbit En = P1^0;
  10.   sbit BL = P2^1;sbit Led = P2^3;
  11. sbit Key_1=P2^5;sbit Key_2=P2^6;sbit Key_3=P2^7;

  12. uchar code display_number[]={0,1,2,3,4,5,6,7,8,9};
  13. uchar clock[6];
  14. uchar code zk3[][144]={
  15. // 0(0) 1(1) 2(2) 3(3) 4(4) 5(5) 6(6) 7(7) 8(8) 9(9)
  16. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  17. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,
  18. 0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,
  19. 0x00,0xF0,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x01,0x00,0x00,0x00,
  20. 0x00,0x01,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  21. 0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,
  22. 0x00,0x00,0x00,0x03,0x07,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  23. 0x7E,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  24. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"0",0*/
  25. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  26. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  27. 0x80,0x80,0xC0,0xC0,0xF0,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,
  28. 0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
  29. 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30. 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
  31. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x7F,
  32. 0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  33. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"1",1*/
  34. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  35. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF0,0xF8,
  36. 0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xF0,
  37. 0x00,0x3E,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x03,0x01,0x00,0x80,0xC0,
  38. 0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x80,0xC0,0xC0,0xE0,0xF0,
  39. 0xF0,0xF8,0xFC,0xFC,0xFE,0xFF,0x7F,0x7F,0x3F,0x1F,0x1F,0x0F,0x0F,0x07,0x03,0x03,
  40. 0x70,0x7C,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
  41. 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  42. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"2",2*/
  43. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  44. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xF0,0xF8,
  45. 0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xE0,
  46. 0x00,0x00,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xC1,0xC0,0xC0,0xE1,
  47. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
  48. 0xE0,0xE0,0xE0,0x80,0x07,0x07,0x07,0x07,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  49. 0x00,0x01,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  50. 0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  51. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"3",3*/
  52. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  53. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  54. 0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
  55. 0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8,0xFC,0xFE,0xFF,0xFF,0x7F,0x3F,0x1F,0x0F,0xFF,
  56. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  57. 0xFF,0xFD,0xFC,0xFC,0xFC,0xFC,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  58. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,
  59. 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"4",4*/
  61. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  62. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFC,0xFC,0xFC,
  63. 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
  64. 0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xF1,0xF1,0xF1,
  65. 0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xE1,0xE1,0x00,0x80,0x83,0x83,0x83,0x87,0x87,0x87,
  66. 0x87,0xC7,0xC7,0x87,0x03,0x01,0x01,0x01,0x03,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  67. 0x00,0x01,0x03,0x0F,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  68. 0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  69. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"5",5*/
  70. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  71. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF0,
  72. 0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF0,0xF0,
  73. 0x00,0xF0,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE1,0xF0,0xF0,0xF0,
  74. 0xF0,0xF1,0xF3,0xF3,0xF3,0xF3,0xE3,0xE3,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  75. 0xFF,0xFF,0xFF,0x87,0x03,0x01,0x01,0x01,0x03,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  76. 0x00,0x00,0x00,0x03,0x07,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  77. 0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  78. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"6",6*/
  79. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  80. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
  81. 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
  82. 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xC1,0xE1,0xF1,0xFD,
  83. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  84. 0x80,0xF0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x03,0x00,0x00,0x00,
  85. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
  86. 0x7F,0x7F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  87. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"7",7*/
  88. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  89. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xF8,
  90. 0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,
  91. 0x00,0x00,0x0F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF1,0xE0,0xE0,0xE0,
  92. 0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,
  93. 0xFF,0xFF,0xFF,0x8F,0x07,0x03,0x03,0x03,0x07,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  94. 0x00,0x01,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  95. 0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  96. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"8",8*/
  97. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  98. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xE0,0xF0,0xF8,0xF8,
  99. 0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xE0,
  100. 0x00,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0x81,0x00,0x00,0x00,
  101. 0x81,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x81,0x83,0x87,0x8F,0x8F,0x9F,
  102. 0x9F,0x9F,0x9F,0x1F,0x1F,0x1F,0x1F,0x1F,0x0F,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  103. 0x00,0x00,0x01,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,0x7E,
  104. 0x7F,0x7F,0x7F,0x3F,0x3F,0x1F,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  105. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"9",9*/
  106. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  107. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  108. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  109. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  110. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  111. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  112. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  113. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  114. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",11*/
  115. };
  116. /*------------------------------------?-------------------------------------*/
  117. void Delay_ms(uint ms)
  118. {
  119.   uint i,j;
  120.   for(i=ms;i>0;i--)
  121.   for(j=1222;j>0;j--)
  122.   {;}
  123. }
  124. void Delay_us(uint us)
  125. {
  126.   while(us--);
  127. }
  128. //----------------------------------------------------------------------------------------
  129. void Busy(void)
  130. {
  131.   Rs=0;
  132.   Rw=1;
  133.   P0=0xff;
  134.   En=1;
  135.   while((P0&0x80)!=0);
  136.   En=0;
  137. }
  138. //WR_DATA&CMd
  139. void wrdata(uchar a,uchar b,uchar c,uchar lcddata)
  140. {
  141.   
  142.   Lcd_Csa=a;
  143.   Lcd_Csb=b;
  144.   Busy();
  145.   Rs=c;
  146.   Rw=0;
  147.   En=1;
  148.   P0=lcddata;                                                   
  149.   En=0;
  150.   Lcd_Csa=1;
  151.   Lcd_Csb=1;
  152.   Rs=1;
  153.   Rw=1;
  154. }
  155. //LCM INITIAL
  156. void initallcd(void)
  157. {
  158.   Lcd_Csa=1;
  159.   Lcd_Csb=1;
  160.   Rst=0;
  161.   Delay_ms(50);
  162.   Rst=1;
  163.   Delay_ms(50);
  164.   wrdata(0,0,0,0x3E);
  165.   Delay_ms(5);
  166.   wrdata(0,1,0,0x3E);
  167.   Delay_ms(5);
  168.   wrdata(1,0,0,0x3E);
  169.   Delay_ms(5);
  170.   wrdata(0,0,0,0x3F);
  171.   Delay_ms(5);
  172.   wrdata(0,1,0,0x3F);
  173.   Delay_ms(5);
  174.   wrdata(1,0,0,0x3F);
  175.   Delay_ms(5);
  176. }
  177. void Clear(uchar dat)
  178. {
  179.   uchar i,j;
  180.   uchar page=0xb8;
  181.   for(i=0;i<8;i++)
  182.   {
  183.    wrdata(0,0,0,page|i);
  184.    wrdata(0,0,0,0x40);
  185.    wrdata(0,0,0,0xc0);
  186.    wrdata(0,1,0,page|i);
  187.    wrdata(0,1,0,0x40);
  188.    wrdata(0,1,0,0xc0);
  189.    wrdata(1,0,0,page|i);
  190.    wrdata(1,0,0,0x40);
  191.    wrdata(1,0,0,0xc0);
  192.    for(j=0;j<64;j++)
  193.    {
  194.     wrdata(0,0,1,dat);
  195.     wrdata(0,1,1,dat);
  196.     wrdata(1,0,1,dat);
  197.    }
  198.   }
  199. }
  200.   void disp4848(uchar a,uchar b,uchar c,uchar addr,uchar row,uchar *p)
  201. {
  202.   uchar i,ch;
  203.   addr=0xb8+addr;
  204.   wrdata(a,b,0,addr);
  205.   wrdata(a,b,0,row);
  206.   for(i=0;i<144;i++)
  207.   {
  208.    ch=*p;
  209.    wrdata(a,b,c,ch);
  210.    p++;
  211.    if((i==24)||(i==48)||(i==72)||(i==96)||(i==120))
  212.    {
  213.     wrdata(a,b,0,++addr);
  214.     wrdata(a,b,0,row+1);
  215.    }
  216.   }
  217. }
  218. void Time_ini(void)
  219. {
  220.    TMOD=0x02;
  221.    TH0=6;
  222.    TL0=6;
  223.    TR0=1;
  224.    ET0=1;
  225.    EA=1;
  226. }
  227. void Time0()interrupt 1
  228. {
  229.   TF0=0;
  230.   BTime_Count++;
  231.   if(BTime_Count==2000)
  232.   {
  233.    BTime_Count=0;
  234.    BSec++;
  235.    if(BSec==2)
  236.    {
  237.     BSec=0;Sec++;Sec_Flag=1;
  238.     if(Sec==60)
  239.     {
  240.      Sec=0;Min++;
  241.      if(Min==60)
  242.      {
  243.       Min=0;Hour++;
  244.       if(Hour==24)
  245.       {
  246.        Hour=0;
  247.       }
  248.      }
  249.     }
  250.    }
  251.   }
  252. }
  253. /*------------------------------------------
  254.    void Time_Pro(void)
  255.    {
  256.     disp4848(0,0,1,0,0x40,zk3[Hour/10]);
  257. disp4848(0,0,1,0,0x58,zk3[Hour%10]);
  258. disp4848(1,0,1,0,0x40,zk3[Min/10]);
  259. disp4848(1,0,1,0,0x58,zk3[Min%10]);
  260. disp4848(0,1,1,0,0x40,zk3[Sec/10]);
  261. disp4848(0,1,1,0,0x58,zk3[Sec%10]);
  262.    }
  263. *///-----------------------------------------
  264.     void Time_Pro(void)
  265.    {
  266.     disp4848(0,0,1,0,0x40,zk3[clock[0]]);
  267. disp4848(0,0,1,0,0x58,zk3[clock[1]]);
  268. disp4848(1,0,1,0,0x40,zk3[clock[2]]);
  269. disp4848(1,0,1,0,0x58,zk3[clock[3]]);
  270. disp4848(0,1,1,0,0x40,zk3[clock[4]]);
  271. disp4848(0,1,1,0,0x58,zk3[clock[5]]);
  272.    }
  273.    void Disp(void)
  274.    {
  275.     clock[0]=display_number[Hour/10];
  276. clock[1]=display_number[Hour%10];
  277.     clock[2]=display_number[Min/10];
  278. clock[3]=display_number[Min%10];
  279. clock[4]=display_number[Sec/10];
  280. clock[5]=display_number[Sec%10];
  281.    }
  282. void main()
  283. {
  284.      initallcd();
  285.   Clear(0x00);
  286.   init();
  287.   Sec=read_add(0);
  288.   //clock=Read_Flash();
  289.   Time_ini();
  290.   while(1)
  291.   {
  292.    Time_Pro();
  293.    if(Sec_Flag)
  294.    {
  295.      Sec_Flag=0;Led=~Led;
  296.     write_add(0,Sec);
  297.     write_add(1,Min);
  298.     write_add(2,Hour);
  299.    }        
  300.   }            
  301. }

  302.   #define uchar unsigned char
  303. #define uint unsigned int
  304. sbit IIC_Sda=P3^5;
  305. sbit IIC_Scl=P3^6;
  306. uchar a;
  307. void delay()
  308. { ;; }
  309. void start()  //开始信号
  310. {
  311. IIC_Sda=1;
  312. delay();
  313. IIC_Scl=1;
  314. delay();
  315. IIC_Sda=0;
  316. delay();
  317. }
  318. void stop()   //停止
  319. {
  320. IIC_Sda=0;
  321. delay();
  322. IIC_Scl=1;
  323. delay();
  324. IIC_Sda=1;
  325. delay();
  326. }
  327. void respons()  //应答
  328. {
  329. uchar i;
  330. IIC_Scl=1;
  331. delay();
  332. while((IIC_Sda==1)&&(i<250))i++;
  333. IIC_Scl=0;
  334. delay();
  335. }
  336. void init()    //初始化
  337. {
  338. IIC_Sda=1;
  339. delay();
  340. IIC_Scl=1;
  341. delay();
  342. }
  343. void write_byte(uchar date)
  344. {
  345. uchar i,temp;
  346. temp=date;
  347. for(i=0;i<8;i++)
  348. {
  349.    temp=temp<<1;
  350.    IIC_Scl=0;
  351.     delay();
  352.    IIC_Sda=CY;
  353.    delay();
  354.    IIC_Scl=1;
  355.    delay();
  356. }
  357. IIC_Scl=0;
  358. delay();
  359. IIC_Sda=1;
  360. delay();
  361. }
  362. uchar read_byte()
  363. {
  364. uchar i,k;
  365. IIC_Scl=0;
  366. delay();
  367. IIC_Sda=1;
  368. delay();
  369. for(i=0;i<8;i++)
  370. {
  371.    IIC_Scl=1;
  372.    delay();
  373.    k=(k<<1)|IIC_Sda;
  374.    IIC_Scl=0;
  375.    delay();
  376. }
  377. return k;
  378. }
  379. void delay1(uchar x)
  380. {
  381. uchar a,b;
  382. for(a=x;a>0;a--)
  383.    for(b=100;b>0;b--);
  384. }
  385. void write_add(uchar address,uchar date)
  386. {
  387. start();
  388. write_byte(0xa0);
  389. respons();
  390. write_byte(address);
  391. respons();
  392. write_byte(date);
  393. respons();
  394. stop();
  395. }
  396. uchar read_add(uchar address)
  397. {
  398. uchar date;
  399. start();
  400. write_byte(0xa0);
  401. respons();
  402. write_byte(address);
  403. respons();
  404. start();
  405. write_byte(0xa1);
  406. respons();
  407. date=read_byte();
  408. stop();
  409. return date;
  410. }
  411. void Read_Flash(uchar *Array,uchar nAdd,uchar nLen)
  412. {
  413.    start();
  414.   write_byte(0xa0);
  415.   respons();
  416.   write_byte(nAdd);
  417.   respons();
  418.   start();
  419.   write_byte(0xa1);
  420.   respons();
  421.   while(--nLen)
  422.   {
  423.    *Array=read_byte();
  424.    Array++;
  425.    respons();
  426.   }
  427.   *Array=read_byte();
  428.   stop();
  429. }
  430. void Write_Flash(uchar *Array,uchar nAdd,uchar nLen)
  431. {
  432.   uchar i;
  433.   start();
  434.   write_byte(0xa0);
  435.   respons();
  436.   write_byte(nAdd);
  437.   respons();
  438.   for(i=0;i<nLen;i++)
  439.   {
  440.    write_byte(*Array);
  441.    Array++;
  442.   }
  443.   respons();
  444.   stop();

  445. }
复制代码

弄上去(书上没有),写着写着,发现有点麻烦,哎,先上单字节的程序了;

评分

参与人数 1黑币 +5 收起 理由
ssfc + 5 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:72519 发表于 2015-1-23 00:59 | 只看该作者
昨天,晚上也难眠;
上午起得比较晚,坐在床上弹了一个上午的吉他,只是自已从来没有认真练过弹与唱,有点感觉了的时候就投入了;
今天,终于调通了IIC—AT24C04,写了一个时钟程序,每隔一秒钟把时分秒往AT24C04里写一次;
这样上电后就记录了断电时的数据;
下午,一个员工一边玩我的电脑,和我扯谈了一个下午,扯得我嗓子都痛了;
呵呵,我真不知我这么菜的,还能不能接上外单业务,这个我还真没把握,没想过要赚得多少钱;
只是想玩玩,可是发现如果没投入进去,又老是觉得不过隐;
好了,到这基本可以上路了,天马行空,自由发挥啊!
上程序了:且看,往IIC里面写数据,要延时啊,不然数据老是不对;1T的芯片啊!

  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<at24c04.c>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uint BTime_Count;
  7. uchar BSec,Sec,Min,Hour,Sec_Flag;
  8. sbit Rst = P1^5;sbit Lcd_Csb = P1^4;sbit Lcd_Csa = P1^3;
  9. sbit Rs = P1^2;sbit Rw = P1^1;sbit En = P1^0;
  10.   sbit BL = P2^1;sbit Led = P2^3;
  11. sbit Key_1=P2^5;sbit Key_2=P2^6;sbit Key_3=P2^7;
  12. uchar clock[3];
  13. uchar rclock[3];
  14.   uchar code zk3[][144]={
  15. // 0(0) 1(1) 2(2) 3(3) 4(4) 5(5) 6(6) 7(7) 8(8) 9(9)
  16. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  17. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,
  18. 0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,
  19. 0x00,0xF0,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x01,0x00,0x00,0x00,
  20. 0x00,0x01,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  21. 0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,
  22. 0x00,0x00,0x00,0x03,0x07,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  23. 0x7E,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  24. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"0",0*/
  25. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  26. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  27. 0x80,0x80,0xC0,0xC0,0xF0,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,
  28. 0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
  29. 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  30. 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
  31. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x7F,
  32. 0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  33. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"1",1*/
  34. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  35. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF0,0xF8,
  36. 0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xF0,
  37. 0x00,0x3E,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x03,0x01,0x00,0x80,0xC0,
  38. 0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x80,0xC0,0xC0,0xE0,0xF0,
  39. 0xF0,0xF8,0xFC,0xFC,0xFE,0xFF,0x7F,0x7F,0x3F,0x1F,0x1F,0x0F,0x0F,0x07,0x03,0x03,
  40. 0x70,0x7C,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
  41. 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  42. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"2",2*/
  43. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  44. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xF0,0xF8,
  45. 0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xE0,
  46. 0x00,0x00,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xC1,0xC0,0xC0,0xE1,
  47. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
  48. 0xE0,0xE0,0xE0,0x80,0x07,0x07,0x07,0x07,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  49. 0x00,0x01,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  50. 0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  51. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"3",3*/
  52. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  53. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  54. 0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
  55. 0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8,0xFC,0xFE,0xFF,0xFF,0x7F,0x3F,0x1F,0x0F,0xFF,
  56. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  57. 0xFF,0xFD,0xFC,0xFC,0xFC,0xFC,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  58. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,
  59. 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"4",4*/
  61. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  62. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFC,0xFC,0xFC,
  63. 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
  64. 0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xF1,0xF1,0xF1,
  65. 0xF1,0xF1,0xF1,0xF1,0xF1,0xF1,0xE1,0xE1,0x00,0x80,0x83,0x83,0x83,0x87,0x87,0x87,
  66. 0x87,0xC7,0xC7,0x87,0x03,0x01,0x01,0x01,0x03,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  67. 0x00,0x01,0x03,0x0F,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  68. 0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  69. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"5",5*/
  70. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  71. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF0,
  72. 0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF0,0xF0,
  73. 0x00,0xF0,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE1,0xF0,0xF0,0xF0,
  74. 0xF0,0xF1,0xF3,0xF3,0xF3,0xF3,0xE3,0xE3,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  75. 0xFF,0xFF,0xFF,0x87,0x03,0x01,0x01,0x01,0x03,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  76. 0x00,0x00,0x00,0x03,0x07,0x0F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  77. 0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  78. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"6",6*/
  79. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  80. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
  81. 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,
  82. 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xC1,0xE1,0xF1,0xFD,
  83. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  84. 0x80,0xF0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x03,0x00,0x00,0x00,
  85. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
  86. 0x7F,0x7F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  87. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"7",7*/
  88. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  89. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xF8,
  90. 0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,
  91. 0x00,0x00,0x0F,0x3F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF1,0xE0,0xE0,0xE0,
  92. 0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,
  93. 0xFF,0xFF,0xFF,0x8F,0x07,0x03,0x03,0x03,0x07,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  94. 0x00,0x01,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,
  95. 0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  96. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"8",8*/
  97. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  98. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xE0,0xF0,0xF8,0xF8,
  99. 0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF0,0xE0,
  100. 0x00,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0x81,0x00,0x00,0x00,
  101. 0x81,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x81,0x83,0x87,0x8F,0x8F,0x9F,
  102. 0x9F,0x9F,0x9F,0x1F,0x1F,0x1F,0x1F,0x1F,0x0F,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  103. 0x00,0x00,0x01,0x07,0x0F,0x1F,0x1F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,0x7E,
  104. 0x7F,0x7F,0x7F,0x3F,0x3F,0x1F,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  105. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"9",9*/
  106. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  107. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  108. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  109. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  110. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  111. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  112. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  113. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  114. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",11*/
  115. };
  116. /*------------------------------------?-------------------------------------*/
  117. void Delay_ms(uint ms)
  118. {
  119.   uint i,j;
  120.   for(i=ms;i>0;i--)
  121.   for(j=1222;j>0;j--)
  122.   {;}
  123. }
  124. void Delay_us(uint us)
  125. {
  126.   while(us--);
  127. }
  128. //----------------------------------------------------------------------------------------
  129. void Busy(void)
  130. {
  131.   Rs=0;
  132.   Rw=1;
  133.   P0=0xff;
  134.   En=1;
  135.   while((P0&0x80)!=0);
  136.   En=0;
  137. }
  138. //WR_DATA&CMd
  139. void wrdata(uchar a,uchar b,uchar c,uchar lcddata)
  140. {   
  141.   Lcd_Csa=a;
  142.   Lcd_Csb=b;
  143.   Busy();
  144.   Rs=c;
  145.   Rw=0;
  146.   En=1;
  147.   P0=lcddata;                                                   
  148.   En=0;
  149.   Lcd_Csa=1;
  150.   Lcd_Csb=1;
  151.   Rs=1;
  152.   Rw=1;
  153. }
  154. //LCM INITIAL
  155. void initallcd(void)
  156. {
  157.   Lcd_Csa=1;
  158.   Lcd_Csb=1;
  159.   Rst=0;
  160.   Delay_ms(50);
  161.   Rst=1;
  162.   Delay_ms(50);
  163.   wrdata(0,0,0,0x3E);
  164.   Delay_ms(5);
  165.   wrdata(0,1,0,0x3E);
  166.   Delay_ms(5);
  167.   wrdata(1,0,0,0x3E);
  168.   Delay_ms(5);
  169.   wrdata(0,0,0,0x3F);
  170.   Delay_ms(5);
  171.   wrdata(0,1,0,0x3F);
  172.   Delay_ms(5);
  173.   wrdata(1,0,0,0x3F);
  174.   Delay_ms(5);
  175. }
  176. void Clear(uchar dat)
  177. {
  178.   uchar i,j;
  179.   uchar page=0xb8;
  180.   for(i=0;i<8;i++)
  181.   {
  182.    wrdata(0,0,0,page|i);
  183.    wrdata(0,0,0,0x40);
  184.    wrdata(0,0,0,0xc0);
  185.    wrdata(0,1,0,page|i);
  186.    wrdata(0,1,0,0x40);
  187.    wrdata(0,1,0,0xc0);
  188.    wrdata(1,0,0,page|i);
  189.    wrdata(1,0,0,0x40);
  190.    wrdata(1,0,0,0xc0);
  191.    for(j=0;j<64;j++)
  192.    {
  193.     wrdata(0,0,1,dat);
  194.     wrdata(0,1,1,dat);
  195.     wrdata(1,0,1,dat);
  196.    }
  197.   }
  198. }
  199.   void disp4848(uchar a,uchar b,uchar c,uchar addr,uchar row,uchar *p)
  200. {
  201.   uchar i,ch;
  202.   addr=0xb8+addr;
  203.   wrdata(a,b,0,addr);
  204.   wrdata(a,b,0,row);
  205.   for(i=0;i<144;i++)
  206.   {
  207.    ch=*p;
  208.    wrdata(a,b,c,ch);
  209.    p++;
  210.    if((i==24)||(i==48)||(i==72)||(i==96)||(i==120))
  211.    {
  212.     wrdata(a,b,0,++addr);
  213.     wrdata(a,b,0,row+1);
  214.    }
  215.   }
  216. }
  217. void Time_ini(void)
  218. {
  219.    TMOD=0x02;
  220.    TH0=6;
  221.    TL0=6;
  222.    TR0=1;
  223.    ET0=1;
  224.    EA=1;
  225. }
  226. void Time0()interrupt 1
  227. {
  228.   TF0=0;
  229.   BTime_Count++;
  230.   if(BTime_Count==2000)
  231.   {
  232.    BTime_Count=0;
  233.    BSec++;
  234.    if(BSec==2)
  235.    {
  236.     BSec=0;Sec++;Sec_Flag=1;
  237.     if(Sec==60)
  238.     {
  239.      Sec=0;Min++;
  240.      if(Min==60)
  241.      {
  242.       Min=0;Hour++;
  243.       if(Hour==24)
  244.       {
  245.        Hour=0;
  246.       }
  247.      }
  248.     }
  249.    }
  250.   }
  251. }
  252.    void Time_Pro(void)
  253.    {
  254.     disp4848(0,0,1,0,0x40,zk3[clock[2]/10]);
  255. disp4848(0,0,1,0,0x58,zk3[clock[2]%10]);
  256. disp4848(1,0,1,0,0x40,zk3[clock[1]/10]);
  257. disp4848(1,0,1,0,0x58,zk3[clock[1]%10]);
  258. disp4848(0,1,1,0,0x40,zk3[clock[0]/10]);
  259. disp4848(0,1,1,0,0x58,zk3[clock[0]%10]);
  260.    }
  261.    void WDisp(void)
  262.    {
  263.     clock[2]=Hour;
  264.     clock[1]=Min;
  265. clock[0]=Sec;
  266.    }
  267.    void RDisp(void)
  268.    {
  269.      Hour=clock[2];
  270.   Min=clock[1];
  271.   Sec=clock[0];
  272.    }
  273.    void main(void)
  274. {
  275.   uchar i;
  276.   initallcd();
  277.   Clear(0x00);
  278.   init();
  279.   for(i=0;i<3;i++)
  280.   {clock[i]=read_add(i);Delay_ms(10);}
  281.   RDisp();
  282.   Time_ini();
  283.   while(1)
  284.   {
  285.    Time_Pro();
  286.    if(Sec_Flag)
  287.    {
  288.      Sec_Flag=0;Led=~Led;WDisp();
  289.     for(i=0;i<3;i++)
  290.     {write_add(i,clock[i]);Delay_ms(10);}
  291.    }        
  292.   }            
  293. }
复制代码



回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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