找回密码
 立即注册

QQ登录

只需一步,快速开始

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

“任性”寒假精彩过-系列之程序猿的新春祝福

[复制链接]
跳转到指定楼层
楼主
ID:109770 发表于 2016-3-20 02:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
今天,程序猿小马突发奇想,以我们作为电子人的独特方式预祝大家2015新春快乐!以下的这些程序可都是本人自己编写调试的哟!怎么样?这样的新春祝福够不够任性!
                                                                                                                          小灰KT工作室



附源程序:
(1)汇编语言(基本显示功能版 ):

  1. ;;-----------------------------------------------------------------

  2. ;; File:

  3. ;;    Happy Spring Festival.asm

  4. ;; Brief:

  5. ;;    The following information is displayed on LCD:

  6. ;;        Happy Spring Festival!

  7. ;; Author:

  8. ;;    Ma Yuhui

  9. ;; Date:

  10. ;;    2015/02/12

  11. ;;------------------------------------------------------------------

  12.                                         RS    BIT P2.0

  13. RW   BIT P2.1

  14.    E    BIT P2.2

  15. DOUT EQU P0

  16. ORG 0000H                                   ;MCS-51复位入口

  17. MAIN:                              MOV SP,#5FH                                 ;初始化设置堆栈

  18.                                         ACALL LCD_INIT                              ;LCD初始化程序

  19. MOV DOUT,#80H

  20. ACALL READY

  21. MOV DPTR,#TAB1

  22. ACALL WRITE

  23. MOV DOUT,#0C0H

  24. ACALL READY

  25. MOV DPTR,#TAB2

  26. ACALL WRITE

  27. SJMP $

  28. WRITE:                            MOV A,#00H

  29.                                         MOVC A,@A+DPTR

  30. CJNE A,#0FFH,S1

  31. AJMP EXIT

  32. S1:                                   MOV DOUT,A

  33.                                         ACALL S2

  34. INC DPTR

  35. AJMP WRITE

  36. EXIT:                               RET

  37. S2:                                   SETB RS                                     ;发送数据

  38.                                         CLR  RW

  39. CLR   E

  40. ACALL DELAY

  41. SETB  E

  42. RET

  43. LCD_INIT:                       MOV DOUT,#38H                               ;设置16*2显示,5*7点阵,8位数据接口

  44.                                         ACALL READY

  45. MOV DOUT,#01H                               ;清屏,显示清零,数据指针清零

  46. ACALL READY

  47. MOV DOUT,#06H                               ;设置输入模式,写入一个字符后,地址指针加1,光标加1

  48. ACALL READY

  49. MOV DOUT,#0CH                               ;设置显示开关控制,开显示,不显示光标

  50. ACALL READY

  51. RET

  52. READY:                          CLR  RS                                     ;写LCD命令

  53.                                         CLR  RW

  54. CLR   E

  55. ACALL DELAY

  56. SETB  E

  57. RET

  58. DELAY:                           MOV DOUT,#0FFH

  59.                                         CLR  RS

  60. SETB RW

  61. CLR   E

  62. NOP

  63. NOP

  64. SETB  E

  65. JB DOUT.7,DELAY

  66. RET

  67. TAB1:                              DB 20H,20H,20H,20H,20H,48H,61H,70H,70H,79H  ;Happy

  68.                                         DB 20H,20H,20H,20H,20H,20H,0FFH

  69. TAB2:                              DB 53H,70H,72H,69H,6EH,67H,20H,46H,65H,73H  ;Spring Festival

  70.                                         DB 74H,69H,76H,61H,6CH,21H,0FFH

  71. END
  72. ;;end of Happy Spring Festival.asm
复制代码

(2)C语言(升级版):

  1. /***************************************************************************/

  2. /* File:

  3.      Happy Spring Festival.c

  4.   Brief:

  5.      The following information is displayed on LCD:

  6.          Happy Spring Festival!

  7.   Author:

  8.      Ma Yuhui

  9.   Date:

  10.      2015/02/12                                                   

  11. */

  12. /***************************************************************************/

  13. #include "reg51.h"

  14. #define unit  unsigned  int

  15. #define uchar unsigned char

  16. sbit rs=P2^0;

  17. sbit rw=P2^1;

  18. sbit  e=P2^2;

  19. const tab1[]={0x20,0x20,0x20,0x20,0x20,0x48,0x61,0x70,0x70,0x79,0x20,0x20,0x20,0x20,0x20,0x20,};//Happy

  20. const tab2[]={0x53,0x70,0x72,0x69,0x6e,0x67,0x20,0x46,0x65,0x73,0x74,0x69,0x76,0x61,0x6c,0x21,};//Spring Festival!
  21. /***************************************************************************/

  22. void delay(unit t)

  23. {

  24. unit i;

  25. while(t--)

  26. for(i=0;i<120;i++);

  27. }
  28. /***************************************************************************/

  29. void write1()

  30. {

  31. uchar i;

  32. for(i=0;i<16;i++)

  33. {

  34. P0=tab1[i];

  35. rs=1;//发送数据

  36. rw=0;

  37. e=0;

  38. delay(10);

  39. e=1;

  40. }

  41. }
  42. /***************************************************************************/

  43. void write2()

  44. {

  45. uchar i;

  46. for(i=0;i<16;i++)

  47. {

  48. P0=tab2[i];

  49. rs=1;//发送数据

  50. rw=0;

  51. e=0;

  52. delay(10);

  53. e=1;

  54. }

  55. }
  56. /***************************************************************************/

  57. void ready()

  58. {

  59. rs=0;//写LCD命令

  60. rw=0;

  61. e=0;

  62. delay(10);

  63. e=1;

  64. }
  65. /***************************************************************************/

  66. void lcd_init()

  67. {

  68. P0=0x38;//设置16*2显示,5*7点阵,8位数据接口

  69. ready();

  70. P0=0x01;//清屏,显示清零,数据指针清零

  71. ready();

  72. P0=0x06;//设置输入模式,写入一个字符后,地址指针加1,光标加1

  73. ready();

  74. P0=0x0c;//设置显示开关控制,开显示,不显示光标

  75. ready();

  76. }
  77. /***************************************************************************/

  78. void main()

  79. {

  80. lcd_init();//LCD初始化程序

  81. while(1)

  82. {

  83. P0=0x80;

  84. ready();

  85. write1();

  86. P0=0xc0;

  87. ready();

  88. write2();

  89. }

  90. }
  91. /*end of Happy Spring Festival.c*/
复制代码


注:C语言(升级版)中字符的显示具有打字机的效果。若将其中的 while(1){}注释掉,可使其显示具有流水灯的效果。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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