查看: 6650|回复: 17

自己焊的51小板板

  [复制链接]
  • TA的每日心情

    2013-5-1 22:09
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2012-10-4 16:02:10 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 幻灵 于 2012-10-4 16:11 编辑

          开始转学51咯,木钱买板子,就自己抽空焊了一个最小系统,怎么样,很酷吧!!!感觉很有成就感哦,呵呵!!!
    IMG_20121004_152935.jpg    IMG_20121004_153032.jpg
    IMG_20121004_153148.jpg   

    12864液晶显示

    12864液晶显示
       
      

    STC程序下载器

    STC程序下载器
    STC下载器

    手机充电器做的电源

    手机充电器做的电源

    手机充电器提供5V电压
    IMG_20121004_155540.jpg
    1. /*******************************************************************************
    2. * 描述: *
    3. * 12864标准字库液晶演示 数据p0,控制p2 *
    4. ********************************************************************************/
    5. #include <reg51.h>
    6. #include <intrins.h>
    7. #define uchar unsigned char
    8. #define uint unsigned int
    9. /************* 12864LCD引脚定义 *************/
    10. #define LCD_data P0 //数据口
    11. sbit LCD_RS = P2^6; //寄存器选择输入
    12. sbit LCD_RW = P2^5; //液晶读/写控制
    13. sbit LCD_EN = P2^7; //液晶使能控制
    14. sbit LCD_PSB = P3^2; //串/并方式控制
    15. sbit LCD_RST = P3^7; //液晶复位端口


    16. #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
    17. /*********************************************************/
    18. uchar code DIS1[] = {" 爱板乐园 "};
    19. uchar code DIS2[] = {"自学单片机第一站"};
    20. uchar code DIS3[] = {"www.eeboard.com "};
    21. uchar code DIS4[] = {" 幻灵 "};
    22. /*******************************************************************/
    23. /* */
    24. /* 延时函数 */
    25. /* */
    26. /*******************************************************************/
    27. void delay(int ms)
    28. {
    29. while(ms--)
    30. {
    31. uchar i;
    32. for(i=0;i<150;i++)
    33. {
    34. _nop_();
    35. _nop_();
    36. _nop_();
    37. _nop_();
    38. }
    39. }
    40. }
    41. /*******************************************************************/
    42. /* */
    43. /* 延时函数 */
    44. /* */
    45. /*******************************************************************/
    46. void delay1(int ms)
    47. {
    48. while(ms--)
    49. {
    50. uchar y;
    51. for(y=0;y<100;y++) ;
    52. }
    53. }
    54. /*******************************************************************/
    55. /* */
    56. /*检查LCD忙状态 */
    57. /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */
    58. /* */
    59. /*******************************************************************/
    60. bit lcd_busy()
    61. {
    62. bit result;
    63. LCD_RS = 0;
    64. LCD_RW = 1;
    65. LCD_EN = 1;
    66. delayNOP();
    67. result = (bit)(P0&0x80);
    68. LCD_EN = 0;
    69. return(result);
    70. }
    71. /*******************************************************************/
    72. /* */
    73. /*写指令数据到LCD */
    74. /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
    75. /* */
    76. /*******************************************************************/
    77. void lcd_wcmd(uchar cmd)
    78. {
    79. while(lcd_busy());
    80. LCD_RS = 0;
    81. LCD_RW = 0;
    82. LCD_EN = 0;
    83. _nop_();
    84. _nop_();
    85. P0 = cmd;
    86. delayNOP();
    87. LCD_EN = 1;
    88. delayNOP();
    89. LCD_EN = 0;
    90. }
    91. /*******************************************************************/
    92. /* */
    93. /*写显示数据到LCD */
    94. /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
    95. /* */
    96. /*******************************************************************/
    97. void lcd_wdat(uchar dat)
    98. {
    99. while(lcd_busy());
    100. LCD_RS = 1;
    101. LCD_RW = 0;
    102. LCD_EN = 0;
    103. P0 = dat;
    104. delayNOP();
    105. LCD_EN = 1;
    106. delayNOP();
    107. LCD_EN = 0;
    108. }
    109. /*******************************************************************/
    110. /* */
    111. /* LCD初始化设定 */
    112. /* */
    113. /*******************************************************************/
    114. void lcd_init()
    115. {
    116. LCD_PSB = 1; //并口方式

    117. LCD_RST = 0; //液晶复位
    118. delay(3);
    119. LCD_RST = 1;
    120. delay(3);

    121. lcd_wcmd(0x34); //扩充指令操作
    122. delay(5);
    123. lcd_wcmd(0x30); //基本指令操作
    124. delay(5);
    125. lcd_wcmd(0x0C); //显示开,关光标
    126. delay(5);
    127. lcd_wcmd(0x01); //清除LCD的显示内容
    128. delay(5);
    129. }
    130. /*********************************************************/
    131. /* */
    132. /* 设定显示位置 */
    133. /* */
    134. /*********************************************************/
    135. void lcd_pos(uchar X,uchar Y)
    136. {
    137. uchar pos;
    138. if (X==1)
    139. {X=0x80;}
    140. else if (X==2)
    141. {X=0x90;}
    142. else if (X==3)
    143. {X=0x88;}
    144. else if (X==4)
    145. {X=0x98;}
    146. pos = X+Y ;

    147. lcd_wcmd(pos); //显示地址
    148. }
    149. /*********************************************************
    150. * *
    151. * 闪烁函数 *
    152. * *
    153. *********************************************************/
    154. void lcdflag()
    155. {
    156. lcd_wcmd(0x08);
    157. delay(400);
    158. lcd_wcmd(0x0c);
    159. delay(400);
    160. lcd_wcmd(0x08);
    161. delay(400);
    162. lcd_wcmd(0x0c);
    163. delay(400);
    164. lcd_wcmd(0x08);
    165. delay(200);
    166. lcd_wcmd(0x0c);
    167. delay(5);
    168. lcd_wcmd(0x01);
    169. delay(5);
    170. }
    171. /*********************************************************
    172. * *
    173. * 图形显示 *
    174. * *
    175. *********************************************************/
    176. void photodisplay(uchar *bmp)
    177. {
    178. uchar i,j;

    179. lcd_wcmd(0x34); //写数据时,关闭图形显示

    180. for(i=0;i<32;i++)
    181. {
    182. lcd_wcmd(0x80+i); //先写入水平坐标值
    183. lcd_wcmd(0x80); //写入垂直坐标值
    184. for(j=0;j<16;j++) //再写入两个8位元的数据
    185. lcd_wdat(*bmp++);
    186. delay1(1);
    187. }

    188. for(i=0;i<32;i++)
    189. {
    190. lcd_wcmd(0x80+i);
    191. lcd_wcmd(0x88);
    192. for(j=0;j<16;j++)
    193. lcd_wdat(*bmp++);
    194. delay1(1);
    195. }
    196. lcd_wcmd(0x36); //写完数据,开图形显示
    197. }
    198. /*********************************************************
    199. * *
    200. * 清屏函数 *
    201. * *
    202. *********************************************************/
    203. void clr_screen()
    204. {
    205. lcd_wcmd(0x34); //扩充指令操作
    206. delay(5);
    207. lcd_wcmd(0x30); //基本指令操作
    208. delay(5);
    209. lcd_wcmd(0x01); //清屏
    210. delay(5);
    211. }
    212. /**********************************************************
    213. ; 显示字符表代码
    214. **********************************************************/
    215. void bytecode()
    216. {
    217. uchar s;
    218. clr_screen(); //清屏
    219. lcd_wcmd(0x80); //设置显示位置为第一行
    220. for(s=0;s<16;s++)
    221. {
    222. lcd_wdat(0x30+s);
    223. }
    224. lcd_wcmd(0x90); //设置显示位置为第二行
    225. for(s=0;s<16;s++)
    226. {
    227. lcd_wdat(0x40+s);
    228. }
    229. lcd_wcmd(0x88); //设置显示位置为第三行
    230. for(s=0;s<16;s++)
    231. {
    232. lcd_wdat(0x50+s);
    233. }
    234. lcd_wcmd(0x98); //设置显示位置为第四行
    235. for(s=0;s<16;s++)
    236. {
    237. lcd_wdat(0x60+s);
    238. }
    239. }
    240. /*********************************************************
    241. * *
    242. * 主函数 *
    243. * *
    244. *********************************************************/
    245. void main()
    246. {
    247. uchar i;
    248. delay(100); //上电,等待稳定
    249. lcd_init(); //初始化LCD
    250. while(1)
    251. {
    252. lcd_pos(1,0); //设置显示位置为第一行
    253. for(i=0;i<16;i++)
    254. {
    255. lcd_wdat(DIS1[i]);
    256. delay(30);
    257. }

    258. lcd_pos(2,0); //设置显示位置为第二行
    259. for(i=0;i<16;i++)
    260. {
    261. lcd_wdat(DIS2[i]);
    262. delay(30);
    263. }
    264. lcd_pos(3,0); //设置显示位置为第三行
    265. for(i=0;i<16;i++)
    266. {
    267. lcd_wdat(DIS3[i]);
    268. delay(30);
    269. }
    270. lcd_pos(4,0); //设置显示位置为第四行
    271. for(i=0;i<16;i++)
    272. {
    273. lcd_wdat(DIS4[i]);
    274. delay(30);
    275. }
    276. delay(1000);
    277. lcdflag();
    278. }
    279. }
    复制代码

    回复

    使用道具 举报

  • TA的每日心情

    2013-5-1 22:09
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2012-10-4 16:22:10 | 显示全部楼层
    wyzamazon 发表于 2012-10-4 16:15
    帖子好长   怎么没秀秀板子背面呢

    背面惨不忍睹啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-5-1 22:09
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2012-10-4 16:29:33 | 显示全部楼层
    wyzamazon 发表于 2012-10-4 16:15
    帖子好长   怎么没秀秀板子背面呢

    IMG_20121004_162504.jpg     IMG_20121004_162531.jpg
    背面很烂其实不是我的错,都是烙铁惹的祸,它不热我也没办法
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-5-28 19:02
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2012-10-4 22:32:12 | 显示全部楼层
    嘿嘿~ 不错~!继续努力!

    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-5-1 22:09
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2012-10-5 16:14:16 | 显示全部楼层
    E08610225 发表于 2012-10-4 22:32
    嘿嘿~ 不错~!继续努力!

                                             
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-4-25 10:29
  • 签到天数: 724 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-10-5 19:59:26 | 显示全部楼层
    幻灵 发表于 2012-10-4 16:29
    背面很烂其实不是我的错,都是烙铁惹的祸,它不热我也没办法

    嗯,其实挺不错的了,如果加上流水灯、蜂鸣器、数码管等器件可能会更好些。做东西要使其能够循环利用,自己用完之后,让它的价值继续体现、延续下去。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-5-1 22:09
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2012-10-7 20:39:38 | 显示全部楼层
    翔宇 发表于 2012-10-5 19:59
    嗯,其实挺不错的了,如果加上流水灯、蜂鸣器、数码管等器件可能会更好些。做东西要使其能够循环利用,自 ...

    正在不断扩充中······
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-4-25 10:29
  • 签到天数: 724 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-10-8 16:08:04 | 显示全部楼层
    幻灵 发表于 2012-10-7 20:39
    正在不断扩充中······

    嗯嗯,加油哦~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-9-28 10:10
  • 签到天数: 1018 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2012-10-9 10:28:42 | 显示全部楼层
    楼主给力啊!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-1-1 01:21
  • 签到天数: 354 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2012-10-13 16:28:00 | 显示全部楼层
    介个太强最!LZ拿苹果的东东给他供电吗?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-15 09:02 , Processed in 0.197981 second(s), 33 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.