找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4129|回复: 3
收起左侧

摇摇棒AT89S52单片机 电路图与制作资料 程序等

[复制链接]
ID:137113 发表于 2016-8-19 11:33 | 显示全部楼层 |阅读模式
摇摇棒
用AT89S52做
以下资料供参考
IMG_20160403_233909.jpg IMG_20160403_224329.jpg IMG_20160402_215920.jpg IMG_20160402_215914.jpg IMG_20160402_215535.jpg IMG_20160404_002623.jpg
  1. #include <AT89X52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int    //宏定义
  4. #define KEY P3_7      //定义画面切换按键
  5. uchar KY;    //KY作用在后面说明     
  6. uchar disp;     //显示汉字指针
  7. uchar pic=0,num=0;     //pic为按键次数;num为中断次数



  8. uchar code love[] = {
  9. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x20,0xC0,0x20,0x00,0x13,
  10. 0x00,0x0C,0x00,0x03,0xC0,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  11. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  12. 0x00,0x00,0x00,0x00,0x08,0x0C,0x08,0x0A,0x08,0x09,0x88,0x08,0x48,0x08,0x28,0x08,
  13. 0x18,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  14. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,
  15. 0x10,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0xF0,0x0F,0x10,0x00,0x08,0x00,0x08,0x00,
  16. 0x08,0x00,0xF0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"E:\摇摇棒资料\yzm.BMP",0*/
  17. /* (64 X 16 ) */
  18. };


  19. uchar code loveyou[] = {
  20. 0x00,0x00,0x00,0x00,0xF0,0x0F,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0xFF,0xFF,
  21. 0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0xF0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,/*"中",0*/
  22. /* (16 X 16 , 宋体 ) */
  23. 0x20,0x10,0x20,0x08,0x24,0x04,0x24,0x02,0x24,0x01,0x24,0x0D,0xBF,0x0B,0x64,0x09,
  24. 0x24,0x49,0x34,0x89,0x28,0x49,0x24,0x39,0x22,0x01,0x20,0x00,0x20,0x00,0x00,0x00,/*"考",1*/
  25. /* (16 X 16 , 宋体 ) */
  26. 0x10,0x80,0x10,0x40,0x10,0x30,0xFF,0x0F,0x10,0x40,0x10,0x80,0xF0,0x7F,0x00,0x00,
  27. 0x00,0x00,0xF8,0x7F,0x08,0x20,0x08,0x20,0x08,0x20,0xF8,0x7F,0x00,0x00,0x00,0x00,/*"加",2*/
  28. /* (16 X 16 , 宋体 ) */
  29. 0x10,0x04,0x60,0x04,0x02,0x7E,0x8C,0x01,0x00,0x00,0xF0,0xFF,0x10,0x42,0x10,0x42,
  30. 0x10,0x42,0xFF,0x7F,0x10,0x42,0x10,0x42,0x10,0x42,0xF0,0xFF,0x00,0x00,0x00,0x00,/*"油",3*/
  31. /* (16 X 16 , 宋体 ) */

  32. };

  33. uchar code hehe[] = {
  34. 0x80,0x40,0x40,0x40,0x30,0x42,0x1E,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0xFF,0x7F,
  35. 0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x40,0x00,0x40,0x00,0x00,/*"生",0*/
  36. /* (16 X 16 , 宋体 ) */
  37. 0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,
  38. 0x82,0x40,0x82,0x40,0x82,0x40,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"日",1*/
  39. /* (16 X 16 , 宋体 ) */
  40. 0x00,0x01,0xE0,0x00,0x00,0x00,0xFF,0xFF,0x10,0x00,0x20,0x81,0x08,0x41,0x08,0x31,
  41. 0x08,0x0D,0xFF,0x03,0x08,0x0D,0x08,0x31,0xF8,0x41,0x00,0x81,0x00,0x81,0x00,0x00,/*"快",2*/
  42. /* (16 X 16 , 宋体 ) */
  43. 0x00,0x00,0x00,0x20,0xE0,0x10,0x9C,0x08,0x84,0x06,0x84,0x40,0x84,0x80,0xF4,0x7F,
  44. 0x82,0x00,0x82,0x00,0x83,0x02,0x82,0x04,0x80,0x08,0x80,0x30,0x00,0x00,0x00,0x00,/*"乐",3*/
  45. /* (16 X 16 , 宋体 ) */
  46. };

  47. unsigned char code hanzi[] = {
  48. 0x00,0x08,0x00,0x08,0xE0,0x08,0x9F,0x08,
  49. 0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,
  50. 0x88,0x08,0x88,0x48,0x88,0x80,0x88,0x40,
  51. 0x88,0x3F,0x08,0x00,0x00,0x00,0x00,0x00,/*"与",0*/
  52. /* (16 X 16 , 宋体 ) */
  53. 0x00,0x01,0x80,0x00,0x60,0x00,0xF8,0xFF,
  54. 0x07,0x00,0x40,0x10,0x20,0x0C,0x18,0x03,
  55. 0x0F,0x40,0x08,0x80,0xC8,0x7F,0x08,0x00,
  56. 0x08,0x01,0x28,0x06,0x18,0x18,0x00,0x00,/*"你",1*/
  57. /* (16 X 16 , 宋体 ) */
  58. 0x10,0x08,0x10,0x04,0x10,0x03,0xD0,0x00,
  59. 0xFF,0xFF,0x90,0x00,0x10,0x03,0x00,0x00,
  60. 0xFE,0xFF,0x22,0x42,0x22,0x42,0x22,0x42,
  61. 0x22,0x42,0xFE,0xFF,0x00,0x00,0x00,0x00,/*"相",2*/
  62. /* (16 X 16 , 宋体 ) */
  63. 0x00,0x01,0x80,0x00,0x60,0x00,0xF8,0xFF,
  64. 0x07,0x02,0x20,0x02,0x22,0x02,0x2C,0x02,
  65. 0x20,0x02,0xFF,0xFF,0x20,0x02,0x28,0x02,
  66. 0x24,0x02,0x22,0x02,0x00,0x02,0x00,0x00,/*"伴",3*/
  67. /* (16 X 16 , 宋体 ) */


  68. 0x00,0x10,0x02,0x08,0x02,0x04,0x02,0x02,
  69. 0x02,0x01,0x82,0x00,0x42,0x00,0xF2,0xFF,
  70. 0x0E,0x00,0x42,0x00,0x82,0x00,0x02,0x01,
  71. 0x02,0x02,0x02,0x0C,0x00,0x00,0x00,0x00,/*"不",4*/
  72. /* (16 X 16 , 宋体 ) */
  73. 0x04,0x40,0x04,0x38,0x04,0x00,0xFC,0x00,
  74. 0x84,0x3C,0x84,0x40,0x85,0x40,0x86,0x42,
  75. 0x84,0x4C,0x84,0x40,0x84,0x40,0x84,0x70,
  76. 0x84,0x04,0x04,0x08,0x04,0x30,0x00,0x00,/*"忘",5*/
  77. /* (16 X 16 , 宋体 ) */
  78. 0x08,0x02,0x08,0x01,0x89,0x00,0xEA,0xFF,
  79. 0x18,0x01,0x88,0x86,0x00,0x40,0x04,0x20,
  80. 0x04,0x18,0xFC,0x07,0x04,0x40,0x04,0x80,
  81. 0x04,0x40,0xFC,0x3F,0x00,0x00,0x00,0x00,/*"初",6*/
  82. /* (16 X 16 , 宋体 ) */
  83. 0x04,0x20,0x04,0x20,0xF4,0x10,0x94,0x10,
  84. 0x94,0x08,0x94,0xFC,0x95,0x42,0xFE,0x21,
  85. 0x94,0x02,0x94,0x04,0x94,0x08,0x94,0x10,
  86. 0xF4,0x28,0x04,0x44,0x04,0x40,0x00,0x00,/*"衷",7*/
  87. /* (16 X 16 , 宋体 ) */


  88. 0x00,0x80,0xFE,0x47,0x02,0x30,0xFA,0x0F,
  89. 0x02,0x10,0xFE,0x67,0x00,0x00,0x00,0xFF,
  90. 0x00,0x41,0x00,0x41,0xFF,0x41,0x10,0x41,
  91. 0x10,0x41,0x10,0xFF,0x10,0x00,0x00,0x00,/*"贴",8*/
  92. /* (16 X 16 , 宋体 ) */
  93. 0x00,0x10,0x00,0x0C,0x80,0x03,0x00,0x00,
  94. 0x00,0x00,0xE0,0x3F,0x02,0x40,0x04,0x40,
  95. 0x18,0x40,0x00,0x40,0x00,0x40,0x00,0x78,
  96. 0x40,0x00,0x80,0x01,0x00,0x0E,0x00,0x00,/*"心",9*/
  97. /* (16 X 16 , 宋体 ) */
  98. 0x10,0x08,0x10,0x04,0x10,0x03,0xD0,0x00,
  99. 0xFF,0xFF,0x90,0x00,0x10,0x03,0x00,0x00,
  100. 0xFE,0xFF,0x22,0x42,0x22,0x42,0x22,0x42,
  101. 0x22,0x42,0xFE,0xFF,0x00,0x00,0x00,0x00,/*"相",10*/
  102. /* (16 X 16 , 宋体 ) */
  103. 0x00,0x00,0xFE,0xFF,0x22,0x04,0x5A,0x08,
  104. 0x86,0x87,0x08,0x41,0x10,0x3F,0x44,0x40,
  105. 0x24,0x80,0xF4,0xBF,0x2C,0x85,0x27,0x95,
  106. 0x24,0xA5,0xE4,0x9F,0x04,0x80,0x00,0x00,/*"随",11*/
  107. /* (16 X 16 , 宋体 ) */





  108. };


  109. /*****函数声明*****/
  110. void display1_ltor(void);
  111. void display2_ltor(void);
  112. void display2_rtol(void);
  113. void display3(void);
  114. void display4(void);






  115. /*****n(us)延时子程序*****/
  116. void DelayUs(uint N)
  117. {
  118. uint x;
  119. for(x=0; x<=N;x++);
  120. }

  121. /*****中断服务程序*****/
  122. void intersvr0(void) interrupt 0
  123. {
  124. ;
  125. KY=~KY;      //每个摇动来回水银开关会在摆幅两端分别产生下降沿中断,只提取其中一次(从左向右摇才显示)
  126. if(KY==0)
  127. {
  128.    num++;     //计算中断次数
  129.    switch(pic)      //选择画面
  130.    {
  131.     case 0:{display1_ltor();}break;
  132.     case 1:{display2_ltor();}break;
  133.     case 2:{display3();}break;
  134.     case 3:{display4();}break;
  135.     default:{display1_ltor();}  
  136.    }
  137. }

  138. }
  139. /*****显示子程序1*****/
  140. void display1_ltor(void)
  141. {
  142. uchar i;
  143. if(num>5){disp++;num=0;}     //每中断7次切换
  144. if(disp>2)disp=0;
  145.   DelayUs(5200);     //此处延时时间依各硬件差别而各不相同,试着调整使得显示内容居中即可
  146. for(i=0;i<64;i++)
  147. {
  148.      P0=~hanzi[disp*128+i*2];
  149.      P2=~hanzi[disp*128+i*2+1];
  150.      DelayUs(100);
  151. }
  152. }

  153. /*****显示子程序2*****/
  154. void display2_ltor(void)
  155. {
  156. uchar i;
  157. DelayUs(4000);
  158. for(i=0;i<64;i++)
  159. {
  160.      P0=~love[i*2];
  161.      P2=~love[i*2+1];
  162.      DelayUs(140);
  163. }
  164. }
  165. /*****显示子程序3*****/
  166. void display3(void)
  167. {
  168. uchar i;
  169.   DelayUs(4000);
  170. for(i=0;i<64;i++)
  171. {
  172.      P0=~loveyou[i*2];
  173.      P2=~loveyou[i*2+1];
  174.      DelayUs(120);
  175. }
  176. }

  177. /*****显示子程序4*****/
  178. void display4(void)
  179. {
  180. uchar i;
  181. DelayUs(4000);
  182. for(i=0;i<64;i++)
  183. {
  184.      P0=~hehe[i*2];
  185.      P2=~hehe[i*2+1];
  186.      DelayUs(120);
  187. }
  188. }

  189. /*****主函数*****/
  190. void main(void)
  191. {
  192. IT0=1;
  193. EX0=1;
  194. EA=1;      //开中断,下降沿中断
  195. KY=0;
  196. while(1)     //主程序中只检测按键
  197. {
  198.   if(KEY==0)     //画面切换键按下
  199.   {
  200.   DelayUs(10000);     //按键去抖
  201.   if(KEY==0);
  202.   pic++;}
  203.   if(pic>3)pic=0;
  204. }
  205. }
  206. /*****END*****/



复制代码


电路图与资料.rar

5.31 MB, 下载次数: 17, 下载积分: 黑币 -5

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:108152 发表于 2016-9-26 08:42 | 显示全部楼层
挺好 的
回复

使用道具 举报

ID:138322 发表于 2016-9-26 09:04 | 显示全部楼层
你的画面,显示在那里?,有原理图吗?分享下
回复

使用道具 举报

ID:92602 发表于 2016-9-30 08:49 | 显示全部楼层
多谢分享!!!在找这个呢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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