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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4059|回復: 5
打印 上一主題 下一主題
收起左側

單片機光敏程序1602上面顯示不了(幾條橫杠)

[復制鏈接]
跳轉到指定樓層
樓主
ID:479896 發表于 2019-3-10 23:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面的是我的程序   我用的是普中開發板
      做的是光敏  在1602上顯示
   但是我在數碼管上面能正常顯示 但是在  1602上面顯示不了(顯示的是幾條橫杠)     我是個新手    我也不知道怎么辦了   求大佬幫助
       我是用的ad芯片是xpt2046                  求大佬幫助           


#include <REGX51.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcd_rw=P2^5;
sbit lcd_rs=P2^6;
sbit lcd_en=P2^7;
sbit DOUT = P3^7;          //輸出
sbit CLK  = P3^6;          //時鐘
sbit DIN  = P3^4;          //輸入
sbit CS   = P3^5;          //片選
uint wan,qian,bai,shi,ge;
uint temp;
uchar data disdata[5];
uint k;        //對讀取數據加限制  讓他有時間的讀取
//uchar code table[]={0,1,2,3,4,5,6,7,8,9};


    void delay1ms(uint ms)//延時1毫秒(不夠精確的)
{
uint i,j;
    for(i=0;i<ms;i++)
    for(j=0;j<100;j++);
}                                


void write_com(unsigned char com)//寫指令//
{  delay1ms(1);
   lcd_rs=0;
   lcd_rw=0;
   lcd_en=0;
   P0=com;
   delay1ms(1);
   lcd_en=1;
   delay1ms(1);
   lcd_en=0;
  }
void write_dat(unsigned char dat)//寫數據//
{  delay1ms(1);;
   lcd_rs=1;
   lcd_rw=0;
   lcd_en=0;
   P0=dat;
   delay1ms(1);
   lcd_en=1;
   delay1ms(1);
   lcd_en=0;
}
void lcd_init()//初始化設置//
{
  write_com(0x38);delay1ms(5);
  write_com(0x08);delay1ms(5);
  write_com(0x01);delay1ms(5);
  write_com(0x06);delay1ms(5);
  write_com(0x0c);delay1ms(5);
}
   /****************************************************************************
*函數名:TSPI_Start
*輸  入:無
*輸  出:無
*功  能:初始化觸摸SPI
***************************************************************************/

void init()
{
        CLK = 0;
        CS  = 1;
        DIN = 1;
        CLK = 1;
        CS  = 0;               
}        /*************************lcd1602程序**************************/
/****************************************************************************
*函數名:SPI_Write
*輸  入:dat:寫入數據
*輸  出:無
*功  能:使用SPI寫入數據
****************************************************************************/

void SPI_Write(uchar dat)
{
        uchar i;
        CLK = 0;
        for(i=0; i<8; i++)
        {
                DIN = dat >> 7;          //放置最高位
                dat <<= 1;
                CLK = 0;                        //上升沿放置數據

                CLK = 1;

        }
}
/****************************************************************************
*函數名:SPI_Read
*輸  入:無
*輸  出:dat:讀取 到的數據
*功  能:使用SPI讀取數據
****************************************************************************/

uint SPI_Read(void)
{
        uint i, dat=0;
        CLK = 0;
        for(i=0; i<12; i++)                //接收12位數據
        {
                dat <<= 1;

                CLK = 1;
                CLK = 0;

                dat |= DOUT;

        }
        return dat;        
}

/****************************************************************************
*函數名:Read_AD_Data
*輸  入:cmd:讀取的X或者Y
*輸  出:endValue:最終信號處理后返回的值
*功  能:讀取觸摸數據
****************************************************************************/
uint Read_AD_Data(uchar cmd)
{
        uchar i;
        uint AD_Value;
        CLK = 0;
        CS  = 0;
        SPI_Write(cmd);
        for(i=6; i>0; i--);         //延時等待轉換結果
        CLK = 1;          //發送一個時鐘周期,清除BUSY
        _nop_();
        _nop_();
        CLK = 0;
        _nop_();
        _nop_();
        AD_Value=SPI_Read();
        CS = 1;
        return AD_Value;        
}
/*******************************************************************************
* 函數名         :datapros()
* 函數功能                 :數據處理函數
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
void datapros()
{                      if(k==15)
        {   k=0;
                temp = Read_AD_Data(0xa4);                //   AIN2 光敏電阻        
                }
                k++;
        
}
/*******************************************************************************
* 函數名         :DigDisplay()
* 函數功能                 :數碼管顯示函數
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************

void DigDisplay()
{
      P2=0xf3;
   P0=table[wan];
   delay1(2);   
   P2=0xef;
   P0=table[qian];
   delay1(2);
   P2=0xeb;
   P0=table[bai];
   delay1(2);
   P2=0xc7;
   P0=table[shi];
   delay1(2);
   P2=0xa3;
   P0=table[ge];
   delay1(2);

}
/***************************/
void   guangmin()
{                   wan=temp/10000;
       qian=(temp/1000)%10;                                                                          
           bai=(temp%1000)/100;
       shi=temp%100/10;
       ge=temp%10;
       write_com(0x80+0x40+0x01);
           write_dat(wan);//顯示萬位
           write_com(0x80+0x40+0x02);
           write_dat(qian);//顯示千位         
           write_com(0x80+0x40+0x03);
           write_dat(bai);//顯示百位         
           write_com(0x80+0x40+0x04);
           write_dat(shi);//顯示十數點         
             write_com(0x80+0x40+0x05);
           write_dat(ge);//顯示個數點
           }        
/*******************************************************************************
* 函 數 名       : main
*******************************************************************************/
void main()
{                 init();        
      lcd_init();
        while(1)
        {
      datapros();         //數據處理函數
                                //        DigDisplay();
        guangmin();
        }               
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:475444 發表于 2019-3-11 06:45 | 只看該作者
看視頻,看別人怎么寫的,取值是怎么取的,規格書也不看看

評分

參與人數 1黑幣 +8 收起 理由
struct00 + 8 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:164602 發表于 2019-3-11 08:34 | 只看該作者
很簡單啊。
你說數碼管顯示正常,就知道你的問題了。
1602顯示與數碼管顯示的字符編碼不一樣哦,這是很基礎的知識。看到你的程序,就知道你不知道這個,好好學習一下。
只要這四句改一下下,就好了。
guangmin()函數中的四句:
           write_dat(wan+0x30);//顯示萬位
           write_dat(qian+0x30);//顯示千位         
           write_dat(bai+0x30);//顯示百位         
           write_dat(shi+0x30);//顯示十數點         
           write_dat(ge+0x30);//顯示個數點

我已經在我的板子上通過了的。萬千都沒用,最大不超過500
回復

使用道具 舉報

地板
ID:479896 發表于 2019-3-11 12:05 | 只看該作者
嗯,謝謝幫助    我要好好學習了
回復

使用道具 舉報

5#
ID:479896 發表于 2019-3-11 12:45 | 只看該作者
HC6800-ES-V2.0 發表于 2019-3-11 08:34
很簡單啊。
你說數碼管顯示正常,就知道你的問題了。
1602顯示與數碼管顯示的字符編碼不一樣哦,這是很基 ...

謝謝
回復

使用道具 舉報

6#
ID:731755 發表于 2022-3-31 07:54 來自手機 | 只看該作者
HC6800-ES-V2.0 發表于 2019-3-11 08:34
很簡單啊。
你說數碼管顯示正常,就知道你的問題了。
1602顯示與數碼管顯示的字符編碼不一樣哦,這是很基 ...

感謝,我的程序也有此問題,不過老師說不能超過500.我就知道是我的程序哪里的問題了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av影音在线| 国产高清视频在线观看 | h视频在线免费 | 毛片网络| 国产成人亚洲精品自产在线 | 成人免费视频网站在线观看 | 成人免费黄色片 | 成人网在线观看 | 国产91视频一区二区 | 亚洲成人一级 | 二区三区在线观看 | 久久久天天 | 99精品一区二区 | 69电影网 | 殴美成人在线视频 | 成人免费淫片aa视频免费 | 亚洲欧美第一视频 | 免费亚洲婷婷 | 精品无码久久久久久国产 | 毛片一级片 | 91视频在线观看 | 日韩波多野结衣 | 成年视频在线观看福利资源 | 久久综合激情 | 91久久视频| 国产成人综合网 | 激情六月丁香 | 欧美成年网站 | 国产精品伦理一区 | 99精品免费在线观看 | 国产伦一区二区三区久久 | 天堂亚洲 | 中文字幕在线观看一区二区 | 91精品国产91久久久久久密臀 | 久久国产精品亚洲 | 亚洲精品乱码久久久久久蜜桃 | 91私密视频| 天天爽网站 | 日韩精品久久一区二区三区 | 日一区二区 | 国产精品污www一区二区三区 |