• <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    技術(shù)熱線: 4007-888-234
    設(shè)計(jì)開發(fā)

    專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

    開發(fā)工具

    提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫分享

    技術(shù)支持

    從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

    新品推廣

    提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力

    新聞中心

    提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

    如何使用pic16f877單片機(jī)在16×2字符LCD上顯示ASCII字符?

    更新時(shí)間: 2019-11-07
    閱讀量:4617

    在單片機(jī)應(yīng)用方案中開發(fā)中,想要在LCD顯示ASCII字符并不難。下面英銳恩單片機(jī)開發(fā)工程師們分享了一個(gè)使用pic16f877單片機(jī)在16×2字符LCD上顯示ASCII字符的方法。

    QQ截圖20191107182807.png


    在本文中,將使用pic16f877單片機(jī)在16×2 LCD上打印/顯示ASCII字符。Lcd以8位模式與pic單片機(jī)接口。代碼是用C語言編寫的。高科技C編譯器用于編譯代碼,并且代碼是在Mp-lab ide中編寫的。將16×2 LCD與pic單片機(jī)接口并在LCD上顯示字符非常容易。只有一點(diǎn)點(diǎn)復(fù)雜的部分是如何在LCD上生成/顯示ASCII字符。好了,你無需生成16×2 LCD控制器(HD44780)Ram中已經(jīng)存在的ASCII字符,就像其他字符和數(shù)字一樣。你只需要知道如何調(diào)用將在LCD屏幕上顯示的ASCII字符。

    一、該方案所需材料

    (1)Microchip的pic16f877單片機(jī);
    (2)16×2字符LCD;
    (3)20MHz晶振;
    (4)電源供應(yīng);
    (5)面包板或設(shè)計(jì)PCB(印刷電路板);
    (6)電位器/可變電阻器(用于設(shè)置LCD對(duì)比度)。

    如果你是單片機(jī)和LCD領(lǐng)域的新手,并且不了解LCD引腳輸出,LCD的工作原理和內(nèi)部結(jié)構(gòu),那么請(qǐng)閱讀以下教程。他們會(huì)讓你了解16×2 LCD的工作原理。將學(xué)習(xí)如何在LCD上顯示字符?命令和發(fā)送到LCD的數(shù)據(jù)之間的區(qū)別?它還將說明如何在4位和8位模式下使用LCD。

    該項(xiàng)目的電路圖如下。pic16f877單片機(jī)的端口B與16×2 LCD的數(shù)據(jù)引腳連接。這意味著端口B用于將命令和數(shù)據(jù)發(fā)送到16×2 LCD。使用端口D的各個(gè)位提供LCD控制信號(hào)(讀/寫,使能,寄存器選擇)。所有其他連接均為對(duì)單片機(jī)和LCD施加+5伏特的正常連接。你可以看到下面給出的電路圖。Rs(寄存器選擇)連接到端口D的引腳6。En(啟用)連接到端口D的針腳#7。讀/寫引腳接地。由于我們將R/W引腳接地,因此Lcd始終保持寫狀態(tài)。

    ascii-characters-displayed.png


    在代碼部分,我首先包含頭文件htc.h。如果你使用的是高科技C編譯器,則始終包含此庫,則此庫必須包含在將要使用高科技c編譯器進(jìn)行編譯的每個(gè)項(xiàng)目中。它包含編譯器指令等。然后定義振蕩器的頻率為20 MHz。然后定義端口D的各個(gè)引腳。這些引腳用于向LCD提供控制信號(hào)。delay()函數(shù)用于在必要時(shí)生成一些任意延遲。lcdcmd()函數(shù)正在通過控制信號(hào)向lcd發(fā)送命令。display()函數(shù)正在使用控制信號(hào)將數(shù)據(jù)發(fā)送到LCD。lcdint()函數(shù)正在初始化我們的lcd(8位模式,顯示為開,光標(biāo)關(guān)閉等)。

    在主要功能中,有兩個(gè)指令正在調(diào)用ascii字符。指令i = j/10; 其中j是integer(int),而i是character(char)。現(xiàn)在,當(dāng)我們將兩個(gè)整數(shù)相除并將結(jié)果保存在character(char)變量中時(shí)。結(jié)果以ascii格式存儲(chǔ)。由于j為0并用0除以10得到0。所以i包含0,ASCII值為零。

    hd44780-ascii-characters-address.jpg

    ASCII字符0存在于地址0x30。要轉(zhuǎn)到地址0x00,請(qǐng)從0x30取反0x30。指令i = i-0x30; 在做同樣的工作。在執(zhí)行i = i-0x30之后,我首先包含0x30,而我包含0x00。因此,我們處于ASCII字符的起始地址。現(xiàn)在將地址一一遞增,并在LCD屏幕上顯示與該地址關(guān)聯(lián)的ascii字符。

    值得注意的是,HD44780控制器的ASCII字符與標(biāo)準(zhǔn)ASCII字符不同。HD44780控制器包含右側(cè)給出的格式的ASCII字符。一些地址也無效。因此,當(dāng)你在LCD屏幕上看到如下所示的字符時(shí),請(qǐng)不要感到困惑。
    RAM的16×2 LCD的總位數(shù)是256。所以我決定全部顯示。它包含ASCII、數(shù)字、字母和中文。如果地址無效,這些地址在LCD屏幕上將不會(huì)顯示任何內(nèi)容。  

    二、源代碼部分

    #include <htc.h>
    #define _XTAL_FREQ 20000000    //Oscillator frequency
    #define en RD7                 //Lcd Controlling Pins
    #define rs RD6
    #define rw RD5
    
    void delay(unsigned int time)  //Time delay function
    {
    unsigned int i,j;
    for(i=0;i< time;i++)
    for(j=0;j< 5;j++);
    }
    
                 //Function for sending values to the command register of LCD
    void lcdcmd(unsigned char value)  
    {
    PORTB=value;
    rs= 0;           //register select-rs 
    rw = 0;          //read-write-rd
    en = 1;          //enable-e
    delay(50);
    en=0;            //enable-e
    delay(50);
    
    }
                 //Function for sending values to the data register of LCD
    void display(unsigned char value)  
    {
    PORTB=value;
    rs= 1;       //register select-rs 
    rw= 0;       //read-write-rd
    en= 1;       //enable-e
    delay(500);
    en=0;        //enable-e
    delay(50);
    
    }
                 //function to initialize the registers and pins of LCD
                 //always use with every lcd of hitachi
    void lcdint(void)         
    {
    TRISB=0x00;    //Port 1 is used as output port             
    TRISD5=0;      //Lcd Controlling pins as output
    TRISD6=0;
    TRISD7=0; 
    delay(15000);
    display(0x30);
    delay(4500);
    display(0x30);
    delay(300);
    display(0x30);
    delay(650);
    lcdcmd(0x38);
    delay(50);
    lcdcmd(0x0C);
    delay(50);
    lcdcmd(0x01);
    delay(50);
    lcdcmd(0x06);
    delay(50);
    lcdcmd(0x80);
    delay(50);
    }
    
    void main()
    {
    char i;
    unsigned int j,k;
    j=0;k=0;
    i=j/10;
    i=i-0x30;
    lcdint();
    
    while(j!=255){
    display(i);
    j++;i++;k++;
    
    if(k==15){         //Displaying characters on first line of lcd
    lcdcmd(0xC0);
    }
    
    if(k==31){        //Displaying characters on second line of lcd
    lcdcmd(0x80);
    k=0;
    lcdcmd(0x01);     //Clear Lcd
    }
    
    delay(12000);
    }//End While
    
    }


    以上就是英銳恩單片機(jī)開發(fā)工程師分享的使用pic16f877單片機(jī)在16×2字符LCD上顯示ASCII字符的方法。英銳恩專注單片機(jī)應(yīng)用方案設(shè)計(jì)與開發(fā),提供8位單片機(jī)、16位單片機(jī)、32位單片機(jī)。

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频
  • <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>