久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3748|回復: 7
收起左側

關于電機測速系統程序新手有些地方看不懂

[復制鏈接]
ID:78327 發表于 2015-4-28 15:27 | 顯示全部樓層 |閱讀模式
系統是作為一個電機測速系統,這里只把程序部分弄出來
初始化部分
TMOD=0x51; //T0方式1 定時計數 T1方式1計數
TH0=0xb1; //裝入初值 20MS
TL0=0xe0;
TH1=0x00; // 計數
TL1=0x00;
TR0=1; //啟動 t0
TR1=1; //啟動t1
gw=sw=bw=qw=ww=0; //數碼管初始化

然后是數碼管顯示部分
gw=x%10; //求速度個位值,送到個位顯示緩沖區
sw=(x/10)%10; //求速度十位值,送到十位顯示緩沖區
bw=(x/100)%10; //求速度百位值,送到百位顯示緩沖區
qw=(x/1000)%10; //求速度千位值,送到千位顯示緩沖區
ww=(x/10000)%10;
然后是中斷子函數

/*********t0定時*中斷函數*************/
void t0() interrupt 1 using 2
{
TH0=0xb1; //重裝t0
TL0=0xe0;
f--;
if(k==0)
{
if(f<t)
P10=1;
else
P10=0;
P11=0;
}
else
{
if(f<t)
P11=1;
else
P11=0;
P10=0;
}
if(f==0)
{
f=5;
}
j++;
if(j==50)
{
j=0;
x=TH1*256+TL1; //t1方式1計數,讀入計數值
TH1=0x00;
TL1=0x00;
x++;
display();
}
}


問題有兩個 1,為什么在中斷子函數中
x=TH1*256+TL1; //t1方式1計數,讀入計數值
TH1=0x00;
TL1=0x00;
x++;
會出現一個X++


2 ,這個程序測出的單位是圈/秒還是圈/分鐘
回復

使用道具 舉報

ID:83083 發表于 2015-8-4 22:12 | 顯示全部樓層
有整個程序嗎。有的話可以發到這個郵箱嗎?1033560873@qq.com
回復

使用道具 舉報

ID:86938 發表于 2015-8-6 16:01 | 顯示全部樓層
有整個程序嗎。有的話可以發到這個郵箱嗎?1656100606@qq.com
回復

使用道具 舉報

ID:115486 發表于 2016-5-19 20:36 | 顯示全部樓層
h1314258 發表于 2015-8-6 16:01
有整個程序嗎。有的話可以發到這個郵箱嗎?

#include "D:\Keil安裝\C51\INC\reg51.h"
#include "D:\Keil安裝\C51\INC\intrins.h"


sbit LCM_RS=P3^0;
sbit LCM_RW=P3^1;
sbit LCM_EN=P3^7;

#define BUSY                  0x80              //常量定義
#define DATAPORT         P1
#define uchar                 unsigned char
#define uint                   unsigned int
#define L                        50

uchar str0[16],str1[16],count;
uint speed;
unsigned long time;

void ddelay(uint);
void lcd_wait(void);
void display();
void initLCM();
void WriteCommandLCM(uchar WCLCM,uchar BusyC);
void STR();
void account();


/*********延時K*1ms,12.000mhz**********/

void int0_isr(void) interrupt 0         /*遙控使用外部中斷0,接P3.2口*/
{
    unsigned int temp;
        time=count;
    TR0=0;
        temp=TH0;
        temp=((temp << 8) | TL0);
    TH0=0x3c;
    TL0=0xaf;
        count=0;
    TR0=1;
        time=time*50000+temp;
}

void time0_isr(void) interrupt 1        /*遙控使用定時計數器1 */
{
   TH0 =0x3c;
   TL0 =0xaf;
   count++;
}

void main(void)
{
           TMOD=0x01;                       /*TMOD T0選用方式1(16位定時) */
    IP|=0x01;                           /*INT0 中斷優先*/
    TCON|=0x11;                         /*TCON  EX0下降沿觸發,啟動T0*/
    IE|=0x83;  
    TH0=0x3c;
    TL0=0xaf;
  
        initLCM();
           WriteCommandLCM(0x01,1);                    //清顯示屏
        for(;;)
        {
                account();
                display();
        }
}

void account()
{
        unsigned long a;
        if (time!=0)
        {
                a=L*360000000/time;
        }
        speed=a;
}



void STR()
{
        str0[0]='S';
        str0[1]='p';
        str0[2]='e';
    str0[3]='e';
        str0[4]='d';
        str0[5]=' ';       
        str0[6]=(speed%100000)/10000+0x30;        // 0x30表示ASCII碼的0,+0x30即把數字轉換為字符
        str0[7]=(speed%10000)/1000+0x30;
        str0[8]=(speed%1000)/100+0x30;
        str0[9]='.';
        str0[10]=(speed%100)/10+0x30;
        str0[11]=speed%10+0x30;
        str0[12]='k';
        str0[13]='m';
        str0[14]='/';
        str0[15]='h';
}

void ddelay(uint k)
{
    uint i,j;
    for(i=0;i<k;i++)
    {
        for(j=0;j<60;j++)
                {;}
    }
}
/**********寫指令到LCD子函數************/

void WriteCommandLCM(uchar WCLCM,uchar BusyC)
{
    if(BusyC)lcd_wait();
        DATAPORT=WCLCM;
    LCM_RS=0;                   /* 選中指令寄存器*/
    LCM_RW=0;                       // 寫模式
    LCM_EN=1;
        _nop_();
        _nop_();
        _nop_();
    LCM_EN=0;

}

/**********寫數據到LCD子函數************/

void WriteDataLCM(uchar WDLCM)
{
    lcd_wait( );            //檢測忙信號
        DATAPORT=WDLCM;
    LCM_RS=1;               /* 選中數據寄存器  */
    LCM_RW=0;                   // 寫模式
    LCM_EN=1;
    _nop_();
        _nop_();
        _nop_();
    LCM_EN=0;
}

/***********lcd內部等待函數*************/

void lcd_wait(void)
{
    DATAPORT=0xff;             //讀LCD前若單片機輸出低電平,而讀出LCD為高電平,則沖突,Proteus仿真會有顯示邏輯黃色
        LCM_EN=1;
    LCM_RS=0;
    LCM_RW=1;
    _nop_();
    _nop_();
        _nop_();
    while(DATAPORT&BUSY)
        {  LCM_EN=0;
           _nop_();
           _nop_();
           LCM_EN=1;
           _nop_();
           _nop_();
        }
           LCM_EN=0;

}

/**********LCD初始化子函數***********/
void initLCM( )
{
        DATAPORT=0;
        ddelay(15);
        WriteCommandLCM(0x38,0);    //三次顯示模式設置,不檢測忙信號
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);

    WriteCommandLCM(0x38,1);    //8bit數據傳送,2行顯示,5*7字型,檢測忙信號
    WriteCommandLCM(0x08,1);    //關閉顯示,檢測忙信號
    WriteCommandLCM(0x01,1);    //清屏,檢測忙信號
    WriteCommandLCM(0x06,1);    //顯示光標右移設置,檢測忙信號
    WriteCommandLCM(0x0c,1);    //顯示屏打開,光標不顯示,不閃爍,檢測忙信號
}

/****顯示指定坐標的一個字符子函數****/

void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
    Y&=1;
    X&=15;
    if(Y)X|=0x40;               //若y為1(顯示第二行),地址碼+0X40
    X|=0x80;                    //指令碼為地址碼+0X80
    WriteCommandLCM(X,0);
    WriteDataLCM(DData);
}

/*******顯示指定坐標的一串字符子函數*****/

void DisplayListChar(uchar X,uchar Y,uchar *DData)
{
    uchar ListLength=0;
    Y&=0x01;
    X&=0x0f;
    while(X<16)
    {
        DisplayOneChar(X,Y,DData[ListLength]);
        ListLength++;
        X++;
    }
}


void display()
{

        STR();
        DisplayListChar(0,0,str0);
           DisplayListChar(0,1,str1);
}
回復

使用道具 舉報

ID:115486 發表于 2016-5-19 20:37 | 顯示全部樓層
邱育 發表于 2015-8-4 22:12
有整個程序嗎。有的話可以發到這個郵箱嗎?

#include "D:\Keil安裝\C51\INC\reg51.h"
#include "D:\Keil安裝\C51\INC\intrins.h"


sbit LCM_RS=P3^0;
sbit LCM_RW=P3^1;
sbit LCM_EN=P3^7;

#define BUSY                  0x80              //常量定義
#define DATAPORT         P1
#define uchar                 unsigned char
#define uint                   unsigned int
#define L                        50

uchar str0[16],str1[16],count;
uint speed;
unsigned long time;

void ddelay(uint);
void lcd_wait(void);
void display();
void initLCM();
void WriteCommandLCM(uchar WCLCM,uchar BusyC);
void STR();
void account();


/*********延時K*1ms,12.000mhz**********/

void int0_isr(void) interrupt 0         /*遙控使用外部中斷0,接P3.2口*/
{
    unsigned int temp;
        time=count;
    TR0=0;
        temp=TH0;
        temp=((temp << 8) | TL0);
    TH0=0x3c;
    TL0=0xaf;
        count=0;
    TR0=1;
        time=time*50000+temp;
}

void time0_isr(void) interrupt 1        /*遙控使用定時計數器1 */
{
   TH0 =0x3c;
   TL0 =0xaf;
   count++;
}

void main(void)
{
           TMOD=0x01;                       /*TMOD T0選用方式1(16位定時) */
    IP|=0x01;                           /*INT0 中斷優先*/
    TCON|=0x11;                         /*TCON  EX0下降沿觸發,啟動T0*/
    IE|=0x83;  
    TH0=0x3c;
    TL0=0xaf;
  
        initLCM();
           WriteCommandLCM(0x01,1);                    //清顯示屏
        for(;;)
        {
                account();
                display();
        }
}

void account()
{
        unsigned long a;
        if (time!=0)
        {
                a=L*360000000/time;
        }
        speed=a;
}



void STR()
{
        str0[0]='S';
        str0[1]='p';
        str0[2]='e';
    str0[3]='e';
        str0[4]='d';
        str0[5]=' ';       
        str0[6]=(speed%100000)/10000+0x30;        // 0x30表示ASCII碼的0,+0x30即把數字轉換為字符
        str0[7]=(speed%10000)/1000+0x30;
        str0[8]=(speed%1000)/100+0x30;
        str0[9]='.';
        str0[10]=(speed%100)/10+0x30;
        str0[11]=speed%10+0x30;
        str0[12]='k';
        str0[13]='m';
        str0[14]='/';
        str0[15]='h';
}

void ddelay(uint k)
{
    uint i,j;
    for(i=0;i<k;i++)
    {
        for(j=0;j<60;j++)
                {;}
    }
}
/**********寫指令到LCD子函數************/

void WriteCommandLCM(uchar WCLCM,uchar BusyC)
{
    if(BusyC)lcd_wait();
        DATAPORT=WCLCM;
    LCM_RS=0;                   /* 選中指令寄存器*/
    LCM_RW=0;                       // 寫模式
    LCM_EN=1;
        _nop_();
        _nop_();
        _nop_();
    LCM_EN=0;

}

/**********寫數據到LCD子函數************/

void WriteDataLCM(uchar WDLCM)
{
    lcd_wait( );            //檢測忙信號
        DATAPORT=WDLCM;
    LCM_RS=1;               /* 選中數據寄存器  */
    LCM_RW=0;                   // 寫模式
    LCM_EN=1;
    _nop_();
        _nop_();
        _nop_();
    LCM_EN=0;
}

/***********lcd內部等待函數*************/

void lcd_wait(void)
{
    DATAPORT=0xff;             //讀LCD前若單片機輸出低電平,而讀出LCD為高電平,則沖突,Proteus仿真會有顯示邏輯黃色
        LCM_EN=1;
    LCM_RS=0;
    LCM_RW=1;
    _nop_();
    _nop_();
        _nop_();
    while(DATAPORT&BUSY)
        {  LCM_EN=0;
           _nop_();
           _nop_();
           LCM_EN=1;
           _nop_();
           _nop_();
        }
           LCM_EN=0;

}

/**********LCD初始化子函數***********/
void initLCM( )
{
        DATAPORT=0;
        ddelay(15);
        WriteCommandLCM(0x38,0);    //三次顯示模式設置,不檢測忙信號
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);

    WriteCommandLCM(0x38,1);    //8bit數據傳送,2行顯示,5*7字型,檢測忙信號
    WriteCommandLCM(0x08,1);    //關閉顯示,檢測忙信號
    WriteCommandLCM(0x01,1);    //清屏,檢測忙信號
    WriteCommandLCM(0x06,1);    //顯示光標右移設置,檢測忙信號
    WriteCommandLCM(0x0c,1);    //顯示屏打開,光標不顯示,不閃爍,檢測忙信號
}

/****顯示指定坐標的一個字符子函數****/

void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
    Y&=1;
    X&=15;
    if(Y)X|=0x40;               //若y為1(顯示第二行),地址碼+0X40
    X|=0x80;                    //指令碼為地址碼+0X80
    WriteCommandLCM(X,0);
    WriteDataLCM(DData);
}

/*******顯示指定坐標的一串字符子函數*****/

void DisplayListChar(uchar X,uchar Y,uchar *DData)
{
    uchar ListLength=0;
    Y&=0x01;
    X&=0x0f;
    while(X<16)
    {
        DisplayOneChar(X,Y,DData[ListLength]);
        ListLength++;
        X++;
    }
}


void display()
{

        STR();
        DisplayListChar(0,0,str0);
           DisplayListChar(0,1,str1);
}
回復

使用道具 舉報

ID:115486 發表于 2016-5-19 20:37 | 顯示全部樓層
邱育 發表于 2015-8-4 22:12
有整個程序嗎。有的話可以發到這個郵箱嗎?

#include "D:\Keil安裝\C51\INC\reg51.h"
#include "D:\Keil安裝\C51\INC\intrins.h"


sbit LCM_RS=P3^0;
sbit LCM_RW=P3^1;
sbit LCM_EN=P3^7;

#define BUSY                  0x80              //常量定義
#define DATAPORT         P1
#define uchar                 unsigned char
#define uint                   unsigned int
#define L                        50

uchar str0[16],str1[16],count;
uint speed;
unsigned long time;

void ddelay(uint);
void lcd_wait(void);
void display();
void initLCM();
void WriteCommandLCM(uchar WCLCM,uchar BusyC);
void STR();
void account();


/*********延時K*1ms,12.000mhz**********/

void int0_isr(void) interrupt 0         /*遙控使用外部中斷0,接P3.2口*/
{
    unsigned int temp;
        time=count;
    TR0=0;
        temp=TH0;
        temp=((temp << 8) | TL0);
    TH0=0x3c;
    TL0=0xaf;
        count=0;
    TR0=1;
        time=time*50000+temp;
}

void time0_isr(void) interrupt 1        /*遙控使用定時計數器1 */
{
   TH0 =0x3c;
   TL0 =0xaf;
   count++;
}

void main(void)
{
           TMOD=0x01;                       /*TMOD T0選用方式1(16位定時) */
    IP|=0x01;                           /*INT0 中斷優先*/
    TCON|=0x11;                         /*TCON  EX0下降沿觸發,啟動T0*/
    IE|=0x83;  
    TH0=0x3c;
    TL0=0xaf;
  
        initLCM();
           WriteCommandLCM(0x01,1);                    //清顯示屏
        for(;;)
        {
                account();
                display();
        }
}

void account()
{
        unsigned long a;
        if (time!=0)
        {
                a=L*360000000/time;
        }
        speed=a;
}



void STR()
{
        str0[0]='S';
        str0[1]='p';
        str0[2]='e';
    str0[3]='e';
        str0[4]='d';
        str0[5]=' ';       
        str0[6]=(speed%100000)/10000+0x30;        // 0x30表示ASCII碼的0,+0x30即把數字轉換為字符
        str0[7]=(speed%10000)/1000+0x30;
        str0[8]=(speed%1000)/100+0x30;
        str0[9]='.';
        str0[10]=(speed%100)/10+0x30;
        str0[11]=speed%10+0x30;
        str0[12]='k';
        str0[13]='m';
        str0[14]='/';
        str0[15]='h';
}

void ddelay(uint k)
{
    uint i,j;
    for(i=0;i<k;i++)
    {
        for(j=0;j<60;j++)
                {;}
    }
}
/**********寫指令到LCD子函數************/

void WriteCommandLCM(uchar WCLCM,uchar BusyC)
{
    if(BusyC)lcd_wait();
        DATAPORT=WCLCM;
    LCM_RS=0;                   /* 選中指令寄存器*/
    LCM_RW=0;                       // 寫模式
    LCM_EN=1;
        _nop_();
        _nop_();
        _nop_();
    LCM_EN=0;

}

/**********寫數據到LCD子函數************/

void WriteDataLCM(uchar WDLCM)
{
    lcd_wait( );            //檢測忙信號
        DATAPORT=WDLCM;
    LCM_RS=1;               /* 選中數據寄存器  */
    LCM_RW=0;                   // 寫模式
    LCM_EN=1;
    _nop_();
        _nop_();
        _nop_();
    LCM_EN=0;
}

/***********lcd內部等待函數*************/

void lcd_wait(void)
{
    DATAPORT=0xff;             //讀LCD前若單片機輸出低電平,而讀出LCD為高電平,則沖突,Proteus仿真會有顯示邏輯黃色
        LCM_EN=1;
    LCM_RS=0;
    LCM_RW=1;
    _nop_();
    _nop_();
        _nop_();
    while(DATAPORT&BUSY)
        {  LCM_EN=0;
           _nop_();
           _nop_();
           LCM_EN=1;
           _nop_();
           _nop_();
        }
           LCM_EN=0;

}

/**********LCD初始化子函數***********/
void initLCM( )
{
        DATAPORT=0;
        ddelay(15);
        WriteCommandLCM(0x38,0);    //三次顯示模式設置,不檢測忙信號
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);

    WriteCommandLCM(0x38,1);    //8bit數據傳送,2行顯示,5*7字型,檢測忙信號
    WriteCommandLCM(0x08,1);    //關閉顯示,檢測忙信號
    WriteCommandLCM(0x01,1);    //清屏,檢測忙信號
    WriteCommandLCM(0x06,1);    //顯示光標右移設置,檢測忙信號
    WriteCommandLCM(0x0c,1);    //顯示屏打開,光標不顯示,不閃爍,檢測忙信號
}

/****顯示指定坐標的一個字符子函數****/

void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
    Y&=1;
    X&=15;
    if(Y)X|=0x40;               //若y為1(顯示第二行),地址碼+0X40
    X|=0x80;                    //指令碼為地址碼+0X80
    WriteCommandLCM(X,0);
    WriteDataLCM(DData);
}

/*******顯示指定坐標的一串字符子函數*****/

void DisplayListChar(uchar X,uchar Y,uchar *DData)
{
    uchar ListLength=0;
    Y&=0x01;
    X&=0x0f;
    while(X<16)
    {
        DisplayOneChar(X,Y,DData[ListLength]);
        ListLength++;
        X++;
    }
}


void display()
{

        STR();
        DisplayListChar(0,0,str0);
           DisplayListChar(0,1,str1);
}
回復

使用道具 舉報

ID:115486 發表于 2016-5-19 20:38 | 顯示全部樓層
h1314258 發表于 2015-8-6 16:01
有整個程序嗎。有的話可以發到這個郵箱嗎?

#include "D:\Keil安裝\C51\INC\reg51.h"
#include "D:\Keil安裝\C51\INC\intrins.h"


sbit LCM_RS=P3^0;
sbit LCM_RW=P3^1;
sbit LCM_EN=P3^7;

#define BUSY                  0x80              //常量定義
#define DATAPORT         P1
#define uchar                 unsigned char
#define uint                   unsigned int
#define L                        50

uchar str0[16],str1[16],count;
uint speed;
unsigned long time;

void ddelay(uint);
void lcd_wait(void);
void display();
void initLCM();
void WriteCommandLCM(uchar WCLCM,uchar BusyC);
void STR();
void account();


/*********延時K*1ms,12.000mhz**********/

void int0_isr(void) interrupt 0         /*遙控使用外部中斷0,接P3.2口*/
{
    unsigned int temp;
        time=count;
    TR0=0;
        temp=TH0;
        temp=((temp << 8) | TL0);
    TH0=0x3c;
    TL0=0xaf;
        count=0;
    TR0=1;
        time=time*50000+temp;
}

void time0_isr(void) interrupt 1        /*遙控使用定時計數器1 */
{
   TH0 =0x3c;
   TL0 =0xaf;
   count++;
}

void main(void)
{
           TMOD=0x01;                       /*TMOD T0選用方式1(16位定時) */
    IP|=0x01;                           /*INT0 中斷優先*/
    TCON|=0x11;                         /*TCON  EX0下降沿觸發,啟動T0*/
    IE|=0x83;  
    TH0=0x3c;
    TL0=0xaf;
  
        initLCM();
           WriteCommandLCM(0x01,1);                    //清顯示屏
        for(;;)
        {
                account();
                display();
        }
}

void account()
{
        unsigned long a;
        if (time!=0)
        {
                a=L*360000000/time;
        }
        speed=a;
}



void STR()
{
        str0[0]='S';
        str0[1]='p';
        str0[2]='e';
    str0[3]='e';
        str0[4]='d';
        str0[5]=' ';       
        str0[6]=(speed%100000)/10000+0x30;        // 0x30表示ASCII碼的0,+0x30即把數字轉換為字符
        str0[7]=(speed%10000)/1000+0x30;
        str0[8]=(speed%1000)/100+0x30;
        str0[9]='.';
        str0[10]=(speed%100)/10+0x30;
        str0[11]=speed%10+0x30;
        str0[12]='k';
        str0[13]='m';
        str0[14]='/';
        str0[15]='h';
}

void ddelay(uint k)
{
    uint i,j;
    for(i=0;i<k;i++)
    {
        for(j=0;j<60;j++)
                {;}
    }
}
/**********寫指令到LCD子函數************/

void WriteCommandLCM(uchar WCLCM,uchar BusyC)
{
    if(BusyC)lcd_wait();
        DATAPORT=WCLCM;
    LCM_RS=0;                   /* 選中指令寄存器*/
    LCM_RW=0;                       // 寫模式
    LCM_EN=1;
        _nop_();
        _nop_();
        _nop_();
    LCM_EN=0;

}

/**********寫數據到LCD子函數************/

void WriteDataLCM(uchar WDLCM)
{
    lcd_wait( );            //檢測忙信號
        DATAPORT=WDLCM;
    LCM_RS=1;               /* 選中數據寄存器  */
    LCM_RW=0;                   // 寫模式
    LCM_EN=1;
    _nop_();
        _nop_();
        _nop_();
    LCM_EN=0;
}

/***********lcd內部等待函數*************/

void lcd_wait(void)
{
    DATAPORT=0xff;             //讀LCD前若單片機輸出低電平,而讀出LCD為高電平,則沖突,Proteus仿真會有顯示邏輯黃色
        LCM_EN=1;
    LCM_RS=0;
    LCM_RW=1;
    _nop_();
    _nop_();
        _nop_();
    while(DATAPORT&BUSY)
        {  LCM_EN=0;
           _nop_();
           _nop_();
           LCM_EN=1;
           _nop_();
           _nop_();
        }
           LCM_EN=0;

}

/**********LCD初始化子函數***********/
void initLCM( )
{
        DATAPORT=0;
        ddelay(15);
        WriteCommandLCM(0x38,0);    //三次顯示模式設置,不檢測忙信號
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);
    WriteCommandLCM(0x38,0);
    ddelay(5);

    WriteCommandLCM(0x38,1);    //8bit數據傳送,2行顯示,5*7字型,檢測忙信號
    WriteCommandLCM(0x08,1);    //關閉顯示,檢測忙信號
    WriteCommandLCM(0x01,1);    //清屏,檢測忙信號
    WriteCommandLCM(0x06,1);    //顯示光標右移設置,檢測忙信號
    WriteCommandLCM(0x0c,1);    //顯示屏打開,光標不顯示,不閃爍,檢測忙信號
}

/****顯示指定坐標的一個字符子函數****/

void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
    Y&=1;
    X&=15;
    if(Y)X|=0x40;               //若y為1(顯示第二行),地址碼+0X40
    X|=0x80;                    //指令碼為地址碼+0X80
    WriteCommandLCM(X,0);
    WriteDataLCM(DData);
}

/*******顯示指定坐標的一串字符子函數*****/

void DisplayListChar(uchar X,uchar Y,uchar *DData)
{
    uchar ListLength=0;
    Y&=0x01;
    X&=0x0f;
    while(X<16)
    {
        DisplayOneChar(X,Y,DData[ListLength]);
        ListLength++;
        X++;
    }
}


void display()
{

        STR();
        DisplayListChar(0,0,str0);
           DisplayListChar(0,1,str1);
}
回復

使用道具 舉報

ID:657190 發表于 2019-12-5 23:03 來自手機 | 顯示全部樓層
能把整個程序發給我看看嗎?3036550944@qq.com
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久亚洲成人 | 在线不卡视频 | 欧美一区视频 | 夜夜爽99久久国产综合精品女不卡 | 亚洲最大的成人网 | 久久久久久精 | 久久久久久久久久久爱 | 中文字幕成人网 | 激情六月丁香婷婷 | 一级高清视频 | 日本久草视频 | 成人黄色av网址 | 久久久一区二区三区四区 | 欧美在线视频一区 | 一区二区三区欧美大片 | 五月槐花香 | 九九精品在线 | 国产激情一区二区三区 | 欧美影院 | 免费在线成人 | 亚洲国产日韩欧美 | 欧美久| 亚洲人久久 | 亚洲精品一区二区三区中文字幕 | 在线亚州 | 99综合| 久久草在线视频 | 国产视频一区在线 | 国产婷婷精品av在线 | 精品久久中文字幕 | 亚洲男人天堂网 | 2018天天干天天操 | 欧美精品一区二区三区在线播放 | 日本在线视 | 1204国产成人精品视频 | 午夜精品久久久久久久久久久久 | 婷婷综合| 精品亚洲一区二区 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 午夜精 | 亚洲人成人网 |