找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2237|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:109770 發(fā)表于 2016-3-20 02:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
今天,程序猿小馬突發(fā)奇想,以我們作為電子人的獨(dú)特方式預(yù)祝大家2015新春快樂!以下的這些程序可都是本人自己編寫調(diào)試的喲!怎么樣?這樣的新春祝福夠不夠任性!
                                                                                                                          小灰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復(fù)位入口

  17. MAIN:                              MOV SP,#5FH                                 ;初始化設(shè)置堆棧

  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                                     ;發(fā)送數(shù)據(jù)

  38.                                         CLR  RW

  39. CLR   E

  40. ACALL DELAY

  41. SETB  E

  42. RET

  43. LCD_INIT:                       MOV DOUT,#38H                               ;設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口

  44.                                         ACALL READY

  45. MOV DOUT,#01H                               ;清屏,顯示清零,數(shù)據(jù)指針清零

  46. ACALL READY

  47. MOV DOUT,#06H                               ;設(shè)置輸入模式,寫入一個(gè)字符后,地址指針加1,光標(biāo)加1

  48. ACALL READY

  49. MOV DOUT,#0CH                               ;設(shè)置顯示開關(guān)控制,開顯示,不顯示光標(biāo)

  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
復(fù)制代碼

(2)C語言(升級(jí)版):

  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;//發(fā)送數(shù)據(jù)

  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;//發(fā)送數(shù)據(jù)

  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;//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口

  69. ready();

  70. P0=0x01;//清屏,顯示清零,數(shù)據(jù)指針清零

  71. ready();

  72. P0=0x06;//設(shè)置輸入模式,寫入一個(gè)字符后,地址指針加1,光標(biāo)加1

  73. ready();

  74. P0=0x0c;//設(shè)置顯示開關(guān)控制,開顯示,不顯示光標(biāo)

  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*/
復(fù)制代碼


注:C語言(升級(jí)版)中字符的顯示具有打字機(jī)的效果。若將其中的 while(1){}注釋掉,可使其顯示具有流水燈的效果。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表