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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2477|回復: 3
收起左側

帶字庫的12864顯示字母中間為什么會空一個再顯示?怎么解決呢?

[復制鏈接]
ID:429204 發表于 2020-3-18 20:36 | 顯示全部樓層 |閱讀模式
如圖,K和M之間會空格,這樣就不夠顯示了啊,導致后面都不能正常顯示了,請問這怎么解決呢?
IMG_20200318_191224.jpg


回復

使用道具 舉報

ID:429204 發表于 2020-3-18 22:48 | 顯示全部樓層
代碼:
#include <reg52.h>         
#include <intrins.h>typedef unsigned char u8;
typedef unsigned int u16;
sbit LCD_RS = P3^6;         //定義LCD12864使用的IO口
sbit LCD_RW = P3^7;
sbit LCD_EN = P3^4;
sbit hall = P1^5;u16 v;                                         //速度
u16 km;                                         //里程
u16 re;                                         //熱量
u16 k;                                 //霍爾電平
u8 cnt1;
u8 cnt2;
u8 time[3];
u8 s = 207;                          //車輪周長
void delayms(u16 ms)                //LCD12864延時函數
{
        u16 i;
        for(i = 0; i < ms; i++){; }
}

void Init_LCD(void)                           //初始化LCD控制端口函數
{
    LCD_RS=1;                                  //輸出數據LCD_RS和LCD_EN清零
    LCD_RW=0;
    LCD_EN=0;
}

void LCD_write_cmd(u8 cmd)          //LCD12864寫指令函數
{
        LCD_EN=0;
        LCD_RS=0;         //寫指令
        LCD_RW=0;         //寫入
        P2=cmd;//賦值給D0-D7對應的IO引腳
        delayms(50);
        LCD_EN=1;          //允許
        delayms(50);  
        LCD_EN=0;
}

void LCD_write_data(u8 dat)                        //LCD12864寫數據函數
{
        LCD_EN=0;
        LCD_RS=1;          //寫數據
        LCD_RW=0;          //寫入
        P2=dat;//賦值給D0-D7對應的IO引腳
        delayms(50);
        LCD_EN=1;           //允許
        delayms(50);
        LCD_EN=0;
}

void LCD_init(void)                                //初始化LCD12864顯示設置函數
{
        delayms(10000);
        LCD_write_cmd(0x30);
        delayms(20);
        LCD_write_cmd(0x30);//功能設置
        delayms(20);
        LCD_write_cmd(0x0c);//顯示開關控制
        delayms(20);
        LCD_write_cmd(0x01);//顯示清除
        delayms(1200);
        LCD_write_cmd(0x06);//顯示清除
        delayms(50);
}

void LCD_Display()                                  //LCD顯示函數
{
     Init_LCD();                              //初始化LCD控制端口
     LCD_init();                          //初始化LCD顯示設置
     LCD_write_cmd(0x80);        //第一行數據指針地址
//-------------第一行顯示內容-------------//
     LCD_write_data(0xCB); //速   
     LCD_write_data(0xD9);
     LCD_write_data(0xB6); //度          
     LCD_write_data(0xC8);
     LCD_write_data(0xA1); //:
     LCD_write_data(0xC3);
     LCD_write_data(v/10%10+'0'); //速度十位
     LCD_write_data(v%10+'0'); //速度個位
     LCD_write_data(0xA3);      //.
     LCD_write_data(0xAE);
     LCD_write_data(v*10%10+'0'); //速度十分位
     LCD_write_data(0xA3); //k
     LCD_write_data(0xEB);                                                                                                                                                
         LCD_write_data(0xA3); //m
     LCD_write_data(0xED);
         LCD_write_data(0xA3); ///
     LCD_write_data(0xAF);
         LCD_write_data(0xA3); //h
     LCD_write_data(0xA8);
         delayms(10);   
}

void main()                        //主函數
{
        TMOD = 0x01;                                                //設置定時器1工作方式2,定時器工作方式3
        TH0 = (65536-922)/256;                                //高8位設初值1ms
        TL0 = (65536-922)%256;                                //低8位設初值1ms
        EA = 1;                                                            //開總中斷
        ET0 = 1;                                                    //開T1定時器0中斷
        TR0 = 1;                                                       //開定時器0
    while(1)               
    {   
                v = (s/cnt1*10)*3600;                    //計算速度,單位km/h
                LCD_Display();                //LCD12864進行顯示
    }  
}
void EX0_INT(void) interrupt 1                    //計數中斷
{
        TL0 = (65536-922)%256;                                //重裝初值1ms
        TH0 = (65536-922)/256;
        cnt2++;
        if(hall == 0)
        {
                cnt1++;                                                        //記錄1ms的次數
        }
        else
        {
                cnt1 = 0;                                                //清空計數次數
        }                          
}
回復

使用道具 舉報

ID:452950 發表于 2020-3-18 23:41 | 顯示全部樓層
你這個k和m是用的帶字庫12864字符表里面的特殊字符吧,占用兩個字節。直接輸出字符串,漢字占用兩個字節,字母和數字只占用一個字節。
回復

使用道具 舉報

ID:452950 發表于 2020-3-19 11:01 | 顯示全部樓層
unsigned char code AC_TABLE[]={                                           //坐標編碼
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
};
/************************************************************************************
                      顯示字符串
************************************************************************************/
void PutStr(unsigned char row,unsigned char col,unsigned char *puts)
{   
         LCD_write_cmd(0x30);
         LCD_write_cmd(AC_TABLE[8*row+col]);
        while(*puts != '\0')
        {
                if(col==8)
                {
                        col=0;
                        row++;
                }
                if(row==4) row=0;
                 LCD_write_cmd(AC_TABLE[8*row+col]);
                LCD_write_data(*puts);
                puts++;
                if(*puts != '\0')
                {
                        LCD_write_data(*puts);
                        puts++;
                        col++;
                }  
        }
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人在线免费 | 久久亚洲一区二区 | 久久综合久色欧美综合狠狠 | 91视频在线 | 国产精品久久久久久久久久尿 | 久久亚洲国产精品日日av夜夜 | 亚洲一区中文字幕 | 国产精品久久久久久久久久久久 | 日本精品视频一区二区 | 国产精彩视频在线观看 | 亚洲成人一区 | 超黄毛片 | 亚洲色视频 | 亚洲一区电影 | 人人玩人人添人人澡欧美 | 三级av在线| 日韩在线免费观看视频 | av网址在线 | 日韩久久久久久久久久久 | 成人高清视频在线观看 | 色综久久 | 日韩一区二区在线播放 | 少妇一区二区三区 | 国产激情偷乱视频一区二区三区 | 韩日精品一区 | 成人国产精品久久 | 青青久久 | 欧美成人免费在线视频 | 亚洲精品乱码久久久久v最新版 | 亚洲国产成人av好男人在线观看 | 岛国午夜 | 国产成人99久久亚洲综合精品 | 99热在线播放 | 青青久久久 | 日韩一区二区在线免费观看 | 亚洲一区二区视频 | 精品综合久久久 | 日韩成人在线视频 | 国产三级一区二区 | 精品亚洲一区二区三区 | 久久国产婷婷国产香蕉 |