找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4244|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

跪求一個簡單程序 51單片機

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:60132 發(fā)表于 2014-3-29 08:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我是初學(xué)者 跪求一個8位數(shù)碼管掃描程序   
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:59960 發(fā)表于 2014-3-29 11:52 | 只看該作者
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit wela=P3^7;  //申明U2鎖存器的鎖存端
sbit dula=P3^6;  //申明U1鎖存器的鎖存端
sbit  wela2=P3^3;
sbit wela3=P3^2;  //申明U2鎖存器的鎖存端
sbit  wela4=P5^4;       
sbit wela1=P5^5;  //申明U2鎖存器的鎖存端

unsigned char code seg[]={
                                0xc0,0xf9,0xa4,0xb0,
                                                   0x99,0x92,0x82,0xf8,
                                                        0x80,0x90,0x88,0x83,
                                                        0xa7,0xa1,0x86,0x8e};

unsigned long fre;    //1S內(nèi)脈沖總個數(shù)
unsigned char led[6];   //LED顯示緩存

void main (void)
{


while(1)
{       
    led[0]=fre%10;  //        ge
P1=seg[led[0]];  //送個位段選數(shù)據(jù)
wela=0;
delayms(1);
  wela=1;
led[1]= fre/10%10;//        shi   
P1=seg[led[1]];    //送十位段選數(shù)據(jù)
  dula=0;
delayms(1); //延時
dula=1;
  led[2]= fre/100%10;//           bai
   P1=seg[led[2]];  //送個位段選數(shù)據(jù)
   wela1=0;
delayms(1);
   wela1=1;
    led[3]= fre/1000%10;//           bai
   P1=seg[led[3]];  //送個位段選數(shù)據(jù)
   wela2=0;
delayms(1);
   wela2=1;

  led[4]= fre/10000%10;//           bai
   P1=seg[led[4]];  //送個位段選數(shù)據(jù)
   wela3=0;
delayms(1);
   wela3=1;

    led[5]= fre/100000%10;//           bai
   P1=seg[led[5]];  //送個位段選數(shù)據(jù)
   wela4=0;
delayms(1);
   wela4=1;


}
}

這個是6位數(shù)碼管的。你按這個在加2位就好!


回復(fù)

使用道具 舉報

板凳
ID:59960 發(fā)表于 2014-3-29 11:53 | 只看該作者
void delayms(unsigned int a) //延時約1ms(12Mhz晶振)
{ unsigned char i;
while(a--!=0)
for(i=125;i>0;i--);
}
回復(fù)

使用道具 舉報

地板
ID:60228 發(fā)表于 2014-4-19 10:00 | 只看該作者
這首先還得看你的硬件電路,不然再好的程序也不適合你,沒什么作用。
回復(fù)

使用道具 舉報

5#
ID:61066 發(fā)表于 2014-4-24 20:19 | 只看該作者
#include <reg51.h> #include <intrins.h> #define  uchar unsigned char sbit Max7219LOAD=P2^1; sbit Max7219DIN=P2^0; sbit Max7219CLK=P2^2; unsigned char DisplayBuffer[8]={1,2,3,4,5,6,7,8};         //顯示緩沖區(qū)  void WriteMax7219(uchar Address,uchar Data) { uchar i; Max7219LOAD=0; for(i=0;i<8;i++)   {     Max7219CLK=0;  //發(fā)送地址           Max7219DIN=(Address&(0x80>>i));           _nop_();         _nop_();    Max7219CLK=1;            _nop_();         _nop_();   }   for(i=0;i<8;i++)   {     Max7219CLK=0;  //發(fā)送數(shù)據(jù)           Max7219DIN=(Data&(0x80>>i));           _nop_();         _nop_();    Max7219CLK=1;            _nop_();         _nop_();   }   Max7219LOAD=1;  }  void InitialMax7219(void)         //初始化 {    WriteMax7219(0x0A,0X07); //亮度7    WriteMax7219(0x0B,0X07); //掃描LED個數(shù)8    WriteMax7219(0x0C,0X01);//處于工作模式    WriteMax7219(0x09,0XFF);        //BCB編碼模式 }  void Max7219Display(uchar*buffer)  {   unsigned char i;   for(i=0;i<8;i++)   {    WriteMax7219(i+1,*(buffer+i));   }  }  void main(void) //主函數(shù)   {    InitialMax7219();   //初始化     Max7219Display(&DisplayBuffer[0]);//顯示           while(1);           //循環(huán)   }
回復(fù)

使用道具 舉報

6#
ID:61326 發(fā)表于 2014-5-1 19:43 | 只看該作者
給你一個匯編:
回復(fù)

使用道具 舉報

7#
ID:61326 發(fā)表于 2014-5-1 19:44 | 只看該作者
匯編源程序
DISPBUF EQU 30H
DISPCNT EQU 38H
DISPBIT EQU 39H
T1CNTA EQU 3AH
T1CNTB EQU 3BH
CNT EQU 3CH

ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV DISPCNT,#8
MOV A,#10
MOV R1,#DISPBUF
LP: MOV @R1,A
INC R1
DJNZ DISPCNT,LP
MOV DISPBIT,#00H
MOV T1CNTA,#00H
MOV T1CNTB,#00H
MOV CNT,#00H
MOV TMOD,#01H
MOV TH0,#(65536-1000) / 256
MOV TL0,#(65536-1000) MOD 256
SETB TR0
SETB ET0
SETB EA
SJMP $

INT_T0:
MOV TH0,#(65536-1000) / 256
MOV TL0,#(65536-1000) MOD 256
MOV A,DISPBIT
ADD A,#DISPBUF
MOV R0,A
MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,P1
ANL A,#0F8H
ADD A,DISPBIT
MOV P1,A
INC DISPBIT
MOV A,DISPBIT
CJNE A,#08H,NEXT
MOV DISPBIT,#00H
NEXT: INC T1CNTA
MOV A,T1CNTA
CJNE A,#50,LL1
MOV T1CNTA,#00H
INC T1CNTB
MOV A,T1CNTB
CJNE A,#8,LL1
MOV T1CNTB,#00H
INC CNT
MOV A,CNT
CJNE A,#9,LLX
MOV CNT,#00H
MOV A,CNT
LLX: CJNE A,#01H,NEX1
MOV 30H,#8
LL1: LJMP DONE
NEX1: CJNE A,#02H,NEX2
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX2: CJNE A,#03H,NEX3
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX3: CJNE A,#04H,NEX4
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX4: CJNE A,#05H,NEX5
MOV 34H,#8
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX5: CJNE A,#06H,NEX6
MOV 35H,#8
MOV 34H,#8
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX6: CJNE A,#07H,NEX7
MOV 36H,#8
MOV 35H,#8
MOV 34H,#8
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX7: CJNE A,#08H,NEX8
MOV 37H,#8
MOV 36H,#8
MOV 35H,#8
MOV 34H,#8
MOV 33H,#8
MOV 32H,#8
MOV 31H,#8
MOV 30H,#8
LJMP DONE
NEX8: CJNE A,#00H,DONE
MOV 37H,#10
MOV 36H,#10
MOV 35H,#10
MOV 34H,#10
MOV 33H,#10
MOV 32H,#10
MOV 31H,#10
MOV 30H,#10
LL: LJMP DONE
DONE: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H
END
回復(fù)

使用道具 舉報

8#
ID:61326 發(fā)表于 2014-5-1 19:47 | 只看該作者
C語言源程序
#include <AT89X51.H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
unsigned char dispbitcode[]={0xf8,0xf9,0xfa,0xfb,
0xfc,0xfd,0xfe,0xff};
unsigned char dispbuf[8]={16,16,16,16,16,16,16,16};
unsigned char dispbitcnt;
unsigned int t02scnt;
unsigned char t5mscnt;
unsigned char u;
unsigned char i;

void main(void)
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while(1);
}

void t0(void) interrupt 1 using 0
{
t5mscnt++;
if(t5mscnt==4)
{
t5mscnt=0;
P0=dispcode[dispbuf[dispbitcnt]];
P1=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==8)
{
dispbitcnt=0;
}
}
t02scnt++;
if(t02scnt==1600)
{
t02scnt=0;
u++;
if(u==9)
{
u=0;
}
for(i=0;i<8;i++)
{
dispbuf[i]=16;
}
for(i=0;i<u;i++)
{
dispbuf[i]=8;
}
}
}
回復(fù)

使用道具 舉報

9#
ID:61415 發(fā)表于 2014-5-7 15:59 | 只看該作者
/*用P1口控制數(shù)碼管的段,P2口控制數(shù)碼管位*/
回復(fù)

使用道具 舉報

10#
ID:61415 發(fā)表于 2014-5-7 15:59 | 只看該作者
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dis_code[]={0xc0,0xf9,0xa4,0xb0,        // 0, 1, 2, 3
                                0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off  數(shù)碼管的段選數(shù)組
void delayms(uchar ms)
{
        uchar i;
        while(ms--)
        {
                for(i=0;i<120;i++);
        }
}
void xianshi()                                                                       
{
        P1=dis_code[1];                                                                //數(shù)碼管段選
        P2=0xfe;                                                                        //數(shù)碼管位選
        delayms(3);                                                               
        P1=dis_code[2];
        P2=0xfd;
        delayms(3);
        P1=dis_code[3];
        P2=0xfb;
        delayms(3);
        P1=dis_code[4];
        P2=0xf7;
        P1=dis_code[5];                                                               
        P2=0xef;                                                               
        delayms(3);                                                               
        P1=dis_code[6];
        P2=0xdf;
        delayms(3);
        P1=dis_code[7];
        P2=0xbf;
        delayms(3);
        P1=dis_code[8];
        P2=0x7f;
        delayms(3);
        P2=0xff;
}
void main()
{
         while(1)
         {
                 xianshi();                                                          
         }
}
回復(fù)

使用道具 舉報

11#
ID:63918 發(fā)表于 2014-7-12 22:40 | 只看該作者
#include<reg51.h>
typedef unsigned char uint8;
typedef unsigned int  uint16;
int  b=0;//有符號標(biāo)志位
uint8  gewei;//個位
uint8  shiwei;//十位
uint8  a[6];  //用來存儲時,分,秒的個位和十位的"動態(tài)數(shù)組"
uint8 code number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint8  keyNum=0;//按鍵掃描后得到的鍵值從1到16
static uint8 miao=0;//秒
static uint8 fen=30;//分
static uint8 shi=12;//時
uint16 counter;
sbit ADDR0=P2^2;
sbit ADDR1=P2^3;
sbit ADDR2=P2^4;
void delay()/***********************延時函數(shù)*****************************/
{
        uint16 i=800;

        while (i--);
}
void timer1_init()/*****************定時器1初始化***********************/
{
        TMOD|=0X10 ;
        TMOD&=0XDF;
        TH1=0XFC;
        TL1=0X67;
        TR1=1;
}                          
void int_init()/*********************定時器1溢出中斷初始化**************/
{
        ET1=1;
        EA=1;
}
void key_deal()/*********************每個按鍵對應(yīng)的單擊事件(共4*4=16個按鍵)********/
{
        switch(keyNum)
        {
                case 1 :switch(b)//數(shù)字0
                                {
                                        case 1:miao=miao/10*10+0;break;
                                        case 2:miao=miao%10+0*10;break;
                                        case 3:fen=fen/10*10+0; break;
                                        case 4:fen=fen%10+10*0; break;
                                        case 5:shi=shi/10*10+0; break;
                                        case 6:shi=shi%10+10*0; break;
                                        default:break;
                                }       
                                break;
                case 2 : switch(b)//+加號鍵
                                 {
                                         case 0:break;
                                        case 1:shiwei=miao/10;gewei=miao%10;if(gewei==9)  gewei=0; else gewei++; miao=shiwei*10+gewei;keyNum=0;break;
                                        case 2:shiwei=miao/10;gewei=miao%10;if(shiwei==5) shiwei=0;else shiwei++;miao=shiwei*10+gewei;keyNum=0;break;
                                        case 3:shiwei=fen/10; gewei=fen%10; if(gewei==9)  gewei=0; else gewei++; fen=shiwei*10+gewei;keyNum=0; break;
                                        case 4:shiwei=fen/10; gewei=fen%10; if(shiwei==5) shiwei=0;else shiwei++;fen=shiwei*10+gewei;keyNum=0; break;
                                        case 5:shiwei=shi/10; gewei=shi%10;
                                                                                                                if(shiwei<2&&gewei<9)  {gewei++; goto zz1;}
                                                                                                                if(shiwei<2&&gewei==9) {gewei=0; goto zz1;}
                                                                                                                if(shiwei>1&&gewei==3) {gewei=0; goto zz1;}
                                                                                                                if(shiwei>1&&gewei<3)  {gewei++; goto zz1;}
                                                                                                                zz1:
                                                                                 shi=shiwei*10+gewei;keyNum=0;                                      break;
                                        case 6:shiwei=shi/10; gewei=shi%10; if(gewei<4&&shiwei==2) {shiwei=0; goto zz2;}
                                                                                                                if(gewei<4&&shiwei<2)  {shiwei++; goto zz2;}
                                                                                                                if(gewei>3&&shiwei==1) {shiwei=0; goto zz2;}
                                                                                                                if(gewei>3&&shiwei<1)  {shiwei++; goto zz2;}
                                                                                                                zz2:                                       
                                                                                                shi=shiwei*10+gewei;keyNum=0;                                                                        break;
                                        default :break;
                                 }
                                 break;
               
                case 3 :switch(b)//-減號鍵
                                 {
                                         case 0:break;
                                        case 1:shiwei=miao/10;gewei=miao%10;if(gewei==0)  gewei=9; else gewei--; miao=shiwei*10+gewei;keyNum=0;break;
                                        case 2:shiwei=miao/10;gewei=miao%10;if(shiwei==0) shiwei=5;else shiwei--;miao=shiwei*10+gewei;keyNum=0;break;
                                        case 3:shiwei=fen/10; gewei=fen%10; if(gewei==0)  gewei=9; else gewei--; fen=shiwei*10+gewei;keyNum=0; break;
                                        case 4:shiwei=fen/10; gewei=fen%10; if(shiwei==0) shiwei=5;else shiwei--;fen=shiwei*10+gewei;keyNum=0; break;
                                        case 5:shiwei=shi/10; gewei=shi%10; if(shiwei<2&&gewei==0) {gewei=9; goto xx1;}
                                                                                                                if(shiwei<2&&gewei>0)  {gewei--; goto xx1;}
                                                                                                                if(shiwei>1&&gewei==0) {gewei=3; goto xx1;}
                                                                                                                if(shiwei>1&&gewei>0)  {gewei--; goto xx1;}
                                                                                                                xx1:
                                                                                shi=shiwei*10+gewei;keyNum=0;                                                                    break;
                                        case 6:shiwei=shi/10; gewei=shi%10; if(gewei<4&&shiwei==0) {shiwei=2; goto xx2;}
                                                                                                                if(gewei<4&&shiwei>0)  {shiwei--; goto xx2;}
                                                                                                                if(gewei>3&&shiwei==0) {shiwei=1; goto xx2;}
                                                                                                                if(gewei>3&&shiwei>0)  {shiwei--; goto xx2;}
                                                                                                                xx2:
                                                                                                                shi=shiwei*10+gewei;keyNum=0;                                                                            break;
                                        default :break;
                                 }
                                 break;
                case 5 :switch(b)//數(shù)字3
                                {
                                        case 1:miao=miao/10*10+3;break;
                                        case 2:miao=miao%10+3*10;break;
                                        case 3:fen=fen/10*10+3; break;
                                        case 4:fen=fen%10+10*3; break;
                                        case 5:shi=shi/10*10+3; break;
                                       
                                        default:break;
                                }               
                                break;
                case 6 :switch(b)//數(shù)字6
                                {
                                        case 1:miao=miao/10*10+6;break;
                                       
                                        case 3:fen=fen/10*10+6; break;
                                       
                                        case 5:if(shi/10<2) shi=shi/10*10+6; break;
                                       
                                        default:break;
                                }                       
                                break;
                case 7:switch(b)//數(shù)字9
                                {
                                        case 1:miao=miao/10*10+9;break;
                                       
                                        case 3:fen=fen/10*10+9; break;
                                       
                                        case 5:if(shi/10<2) shi=shi/10*10+9; break;
                                       
                                        default:break;
                                }                               
                                break;
                case 9 :switch(b)//數(shù)字2
                                {
                                        case 1:miao=miao/10*10+2;break;
                                        case 2:miao=miao%10+2*10;break;
                                        case 3:fen=fen/10*10+2; break;
                                        case 4:fen=fen%10+10*2; break;
                                        case 5:shi=shi/10*10+2; break;
                                        case 6:if(shi%10<4) shi=shi%10+10*2; break;
                                        default:break;
                                }               
                                break;
                case 10 :switch(b)//數(shù)字5
                                {
                                        case 1:miao=miao/10*10+5;break;
                                        case 2:miao=miao%10+5*10;break;
                                        case 3:fen=fen/10*10+5; break;
                                        case 4:fen=fen%10+10*5; break;
                                        case 5:if(shi/10<2) shi=shi/10*10+5; break;
                                       
                                        default:break;
                                }               
                                break;
                case 11:switch(b)//數(shù)字8
                                {
                                        case 1:miao=miao/10*10+8;break;
                                       
                                        case 3:fen=fen/10*10+8; break;
                                       
                                        case 5:if(shi/10<2) shi=shi/10*10+8; break;
                                       
                                        default:break;
                                }                               
                                break;
                case 12: --b;if(b<0) b=6; keyNum=0;break;//移位鍵,向右移一位
                case 13 :switch(b)//數(shù)字1
                                {
                                        case 1:miao=miao/10*10+1;break;
                                        case 2:miao=miao%10+1*10;break;
                                        case 3:fen=fen/10*10+1; break;
                                        case 4:fen=fen%10+10*1; break;
                                        case 5:shi=shi/10*10+1; break;
                                        case 6:shi=shi%10+10*1; break;
                                        default:break;
                                }               
                                break;
                case 14 :switch(b)//數(shù)字4
                                {
                                        case 1:miao=miao/10*10+4;break;
                                        case 2:miao=miao%10+4*10;break;
                                        case 3:fen=fen/10*10+4; break;
                                        case 4:fen=fen%10+10*4; break;
                                        case 5:if(shi/10<2) shi=shi/10*10+4; break;
                                       
                                        default:break;
                                }               
                                break;
                case 15:switch(b)//數(shù)字7
                                {
                                        case 1:miao=miao/10*10+7;break;
                                       
                                        case 3:fen=fen/10*10+7; break;
                                       
                                        case 5:if(shi/10<2) shi=shi/10*10+7; break;
                                       
                                        default:break;
                                }                               
                                break;
                case 16: ++b;if(b>6) b=0; keyNum=0;break;//移位鍵,向左移一位
                default:break;
        }
}
void refresh_led()/***************************數(shù)碼管刷新函數(shù)************************/
{
        static uint8 j=0;
        switch(j)
        {
                case 0:if(b==1){ADDR0=0;ADDR1=0;ADDR2=0;j++;if(counter<500) P0=number[a[0]]; else P0=0x00;}
               else{ADDR0=0;ADDR1=0;ADDR2=0;j++;P0=number[a[0]];}break;
                case 1:if(b==2){ADDR0=1;ADDR1=0;ADDR2=0;j++;if(counter<500) P0=number[a[1]]; else P0=0x00;}
                           else{ADDR0=1;ADDR1=0;ADDR2=0;j++;P0=number[a[1]];}break;

                case 2:ADDR0=0;ADDR1=1;ADDR2=0;j++;P0=0x40;break;

                case 3:if(b==3){ADDR0=1;ADDR1=1;ADDR2=0;j++;if(counter<500) P0=number[a[2]]; else P0=0x00;}
                           else{ADDR0=1;ADDR1=1;ADDR2=0;j++;P0=number[a[2]];}break;
                case 4:if(b==4){ADDR0=0;ADDR1=0;ADDR2=1;j++;if(counter<500) P0=number[a[3]]; else P0=0x00;}
                           else{ADDR0=0;ADDR1=0;ADDR2=1;j++;P0=number[a[3]];}break;
               
                case 5:ADDR0=1;ADDR1=0;ADDR2=1;j++;P0=0x40;break;
               
                case 6:if(b==5){ADDR0=0;ADDR1=1;ADDR2=1;j++;if(counter<500) P0=number[a[4]];else P0=0x00;}
               else{ADDR0=0;ADDR1=1;ADDR2=1;j++;P0=number[a[4]];}break;
                case 7:if(b==6){ADDR0=1;ADDR1=1;ADDR2=1;j=0;if(counter<500) P0=number[a[5]]; else P0=0x00;}
               else{ADDR0=1;ADDR1=1;ADDR2=1;j=0;P0=number[a[5]];}break;
                default:break;
        }       
}
void key_scan()/*********************矩陣鍵盤掃描函數(shù)***********************************************/
{
        uint8 hang,lie,tmp1,tmp2;
        tmp1=0x01;//0000   0001
        for(lie=0;lie<4;lie++)
        {
                P1=0xf0;
                P1=~tmp1;
                tmp1*=2;
                if((P1&0xf0)<0xf0)
                delay();
                if((P1&0xf0)<0xf0)
                {
                        tmp2=0x10;
                        for(hang=0;hang<4;hang++)
                        {
                                if((P1&tmp2)==0x00)
                                {
                                        keyNum=lie*4+hang+1;
                                        return;
                                }
                                tmp2*=2;
                        }
                }
        }
       
        key_deal();               
}
void interrupt_timer1() interrupt 3/*******************定時器1溢出中斷*****************/
{
          
       
        TH1=0XFC;
        TL1=0X67;
        counter++;
        if(counter==1000)
        {
                counter=0;
                if(b!=0) goto cc;
                miao++;
                cc:
                if(miao==60)
                {
                        miao=0;
                        fen++;
                }
                if(fen==60)
                {
                         fen=0;
                        shi++;
                }
                if(shi>23)
                {
                        shi=0;
                }
                a[0]=miao%10;
                a[1]=miao/10;
                a[2]=fen%10;
                a[3]=fen/10;
                a[4]=shi%10;
                a[5]=shi/10;

        }
       
    refresh_led();
}
//////////////////LCD1602顯示

sbit RS = P2^6 ;
sbit RW = P2^5 ;
sbit EN = P2^7 ;
sbit BUSY = P0^7;


unsigned char code word1[]={"Hi,teacher wan!"};
unsigned char code word2[]={"made by Mr GUO"};


/**
* 等待繁忙標(biāo)志
*/
void wait(void)
{
        P0 = 0xFF;

       
        do
        {
                RS = 0;
                RW = 1;
                EN = 0;
                EN = 1;
        }while (BUSY == 1);
        EN = 0;
}

/**
* 寫數(shù)據(jù)
*/
void w_dat(uint8 dat)
{
        wait();
        EN = 0;
        P0 = dat;
        RS = 1;
        RW = 0;
        EN = 1;
        EN = 0;
}

/**
* 寫命令
*/
void w_cmd(uint8 cmd)
{
        wait();
        EN = 0;
        P0 = cmd;
        RS = 0;
        RW = 0;
        EN = 1;
        EN = 0;
}

/**
* 發(fā)送字符串到LCD
*/
void w_string(uint8 addr_start, uint8 *p)
{
        w_cmd(addr_start);
        while (*p != '\0')
        {
                w_dat(*p++);
        }
}


/**
* 初始化1602
*/
void Init_LCD1602(void)
{
        w_cmd(0x38);  // 16*2顯示,5*7點陣,8位數(shù)據(jù)接口
        w_cmd(0x0C);  // 顯示器開、光標(biāo)開、光標(biāo)允許閃爍
        w_cmd(0x06);  // 文字不動,光標(biāo)自動右移
        w_cmd(0x01);  // 清屏
}
void main()/*****************************主函數(shù)******************/
{       
        Init_LCD1602();
        w_string(0x80,word1);
        w_string(0xC0,word2);
        timer1_init();
        int_init();
        while(1)
        {       
                key_scan();
        }       
}
回復(fù)

使用道具 舉報

12#
ID:153199 發(fā)表于 2016-12-31 11:32 | 只看該作者
這一個簡單
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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