標(biāo)題:
“任性”寒假精彩過(guò)-系列之程序猿的新春祝福
[打印本頁(yè)]
作者:
51黑bing
時(shí)間:
2016-3-20 02:45
標(biāo)題:
“任性”寒假精彩過(guò)-系列之程序猿的新春祝福
今天,程序猿小馬突發(fā)奇想,以我們作為電子人的獨(dú)特方式預(yù)祝大家2015
新春快樂(lè)!以下的這些程序可都是本人自己編寫(xiě)調(diào)試的喲!怎么樣?這樣的新春祝福夠不夠任性!
小灰KT工作室
附源程序:
(1)匯編語(yǔ)言(基本顯示功能版 ):
;;-----------------------------------------------------------------
;; File:
;; Happy Spring Festival.asm
;; Brief:
;; The following information is displayed on LCD:
;; Happy Spring Festival!
;; Author:
;; Ma Yuhui
;; Date:
;; 2015/02/12
;;------------------------------------------------------------------
RS BIT P2.0
RW BIT P2.1
E BIT P2.2
DOUT EQU P0
ORG 0000H ;MCS-51復(fù)位入口
MAIN: MOV SP,#5FH ;初始化設(shè)置堆棧
ACALL LCD_INIT ;LCD初始化程序
MOV DOUT,#80H
ACALL READY
MOV DPTR,#TAB1
ACALL WRITE
MOV DOUT,#0C0H
ACALL READY
MOV DPTR,#TAB2
ACALL WRITE
SJMP $
WRITE: MOV A,#00H
MOVC A,@A+DPTR
CJNE A,#0FFH,S1
AJMP EXIT
S1: MOV DOUT,A
ACALL S2
INC DPTR
AJMP WRITE
EXIT: RET
S2: SETB RS ;發(fā)送數(shù)據(jù)
CLR RW
CLR E
ACALL DELAY
SETB E
RET
LCD_INIT: MOV DOUT,#38H ;設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
ACALL READY
MOV DOUT,#01H ;清屏,顯示清零,數(shù)據(jù)指針清零
ACALL READY
MOV DOUT,#06H ;設(shè)置輸入模式,寫(xiě)入一個(gè)字符后,地址指針加1,光標(biāo)加1
ACALL READY
MOV DOUT,#0CH ;設(shè)置顯示開(kāi)關(guān)控制,開(kāi)顯示,不顯示光標(biāo)
ACALL READY
RET
READY: CLR RS ;寫(xiě)LCD命令
CLR RW
CLR E
ACALL DELAY
SETB E
RET
DELAY: MOV DOUT,#0FFH
CLR RS
SETB RW
CLR E
NOP
NOP
SETB E
JB DOUT.7,DELAY
RET
TAB1: DB 20H,20H,20H,20H,20H,48H,61H,70H,70H,79H ;Happy
DB 20H,20H,20H,20H,20H,20H,0FFH
TAB2: DB 53H,70H,72H,69H,6EH,67H,20H,46H,65H,73H ;Spring Festival
DB 74H,69H,76H,61H,6CH,21H,0FFH
END
;;end of Happy Spring Festival.asm
復(fù)制代碼
(2)C語(yǔ)言(升級(jí)版):
/***************************************************************************/
/* File:
Happy Spring Festival.c
Brief:
The following information is displayed on LCD:
Happy Spring Festival!
Author:
Ma Yuhui
Date:
2015/02/12
*/
/***************************************************************************/
#include "reg51.h"
#define unit unsigned int
#define uchar unsigned char
sbit rs=P2^0;
sbit rw=P2^1;
sbit e=P2^2;
const tab1[]={0x20,0x20,0x20,0x20,0x20,0x48,0x61,0x70,0x70,0x79,0x20,0x20,0x20,0x20,0x20,0x20,};//Happy
const tab2[]={0x53,0x70,0x72,0x69,0x6e,0x67,0x20,0x46,0x65,0x73,0x74,0x69,0x76,0x61,0x6c,0x21,};//Spring Festival!
/***************************************************************************/
void delay(unit t)
{
unit i;
while(t--)
for(i=0;i<120;i++);
}
/***************************************************************************/
void write1()
{
uchar i;
for(i=0;i<16;i++)
{
P0=tab1[i];
rs=1;//發(fā)送數(shù)據(jù)
rw=0;
e=0;
delay(10);
e=1;
}
}
/***************************************************************************/
void write2()
{
uchar i;
for(i=0;i<16;i++)
{
P0=tab2[i];
rs=1;//發(fā)送數(shù)據(jù)
rw=0;
e=0;
delay(10);
e=1;
}
}
/***************************************************************************/
void ready()
{
rs=0;//寫(xiě)LCD命令
rw=0;
e=0;
delay(10);
e=1;
}
/***************************************************************************/
void lcd_init()
{
P0=0x38;//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
ready();
P0=0x01;//清屏,顯示清零,數(shù)據(jù)指針清零
ready();
P0=0x06;//設(shè)置輸入模式,寫(xiě)入一個(gè)字符后,地址指針加1,光標(biāo)加1
ready();
P0=0x0c;//設(shè)置顯示開(kāi)關(guān)控制,開(kāi)顯示,不顯示光標(biāo)
ready();
}
/***************************************************************************/
void main()
{
lcd_init();//LCD初始化程序
while(1)
{
P0=0x80;
ready();
write1();
P0=0xc0;
ready();
write2();
}
}
/*end of Happy Spring Festival.c*/
復(fù)制代碼
注:C語(yǔ)言(升級(jí)版)中字符的顯示具有打字機(jī)的效果。若將其中的 while(1){}注釋掉,可使其顯示具有流水燈的效果。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1