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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2287|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

為什么我的主函數(shù)這樣寫,在51單片機液晶上按上下鍵沒有任何顯示?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:521078 發(fā)表于 2019-10-19 11:45 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
10黑幣
Keil4編寫環(huán)境:A/D數(shù)模轉(zhuǎn)換和按鍵應(yīng)用操作顯示到Lcd1602上,子程序Lcd1602.c,keyboard.c,I2C.c程序略,跪求主程序
程序要求實現(xiàn):按上鍵查詢設(shè)定的電壓值上下限
                      按下鍵查詢當(dāng)前的電壓值(當(dāng)前電壓值是滑動變阻器所配置的電壓值)
                      數(shù)據(jù)采集器件用的是PCF8591測AIN0的值
為什么我的主函數(shù)這樣寫,在51液晶上按上下鍵沒有任何顯示,跪求主函數(shù),開發(fā)板是金三角開發(fā)板

#include <reg52.h>
sbit BUZZ = P1^6;  
bit flag300ms = 1;
bit enBuzz = 0;
unsigned char T0RH = 0;
unsigned char T0RL = 0;
unsigned int CountDown = 0;
void ConfigTimer0(unsigned int ms);
unsigned char GetADCValue(unsigned char chn);
void ValueToString(unsigned char *str, unsigned char val);
extern void I2CStart();
extern void I2CStop();
extern void KeyScan();
extern void KeyDriver();
extern unsigned char I2CReadACK();
extern unsigned char I2CReadNAK();
extern bit I2CWrite(unsigned char dat);
extern void InitLcd1602();
extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
void main()
{
    EA = 1;
   ConfigTimer0(10);  
   InitLcd1602();
// LcdShowStr (0, 0, "moli");
while(1)
{
     KeyDriver();
}
}
unsigned char GetADCValue (unsigned char chn)
{
      unsigned char val;
     I2CStart();
    if (!I2CWrite (0x48<<1))
    {
        I2CStop();
        return 0;
    }
I2CWrite (0x40 | chn);
I2CStart();
I2CWrite ((0x48<<1) | 0x01);
I2CReadACK();
val = I2CReadNAK();
I2CStop();
return val;
}
void ValueToString(unsigned char *str, unsigned char val)
{
     
  val = (val * 25) / 55;
  str[0] = (val/10) + '0';  
  str[1] = '.';   //С????
  str[2] = (val%10) + '0';  
  str[3] = 'V';  
  str[4] = '\0';
}
void KeyTaAction()
{
    unsigned char val;
    unsigned char str[10];
    InitLcd1602();
    LcdShowStr (0, 0, "TABANXINHAO");  
     while (1)
    {
         if (flag300ms)
     {
         flag300ms = 0;
           
        val = GetADCValue(0);
        ValueToString(str, val);
        LcdShowStr(0, 1, str);
      if (val >= 200)
      {
         enBuzz = 1;
        if (enBuzz)
           BUZZ = ~BUZZ;
      }
      else
          BUZZ = 1;
   }
  }
}
void KeyAction (unsigned char keycode)
{
   if(keycode == 0x26)
    {
      KeyTaAction();
    }
  else if (keycode == 0x28)
   {
     LcdShowStr (0, 0, "MAX");
     LcdShowStr (0, 1, 2^5);   
     LcdShowStr (6, 0, "MIN");
     LcdShowStr (6, 1, 0^0);
   }
}
void ConfigTimer0(unsigned int ms)
{
    unsigned long tmp;  
tmp = 11059200 / 12;
tmp = (tmp * ms) / 1000;
tmp = 65536 - tmp;
tmp = tmp + 12;
T0RH = (unsigned char)(tmp >> 8);
T0RL = (unsigned char)tmp;
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = T0RH;
TL0 = T0RL;
ET0 = 1;
TR0 = 1;
}
void InterruptTimer0() interrupt 1
{
    static unsigned char tmr300ms = 0;
TH0 = T0RH;
TL0 = T0RL;
tmr300ms++;
if (tmr300ms >= 30)  
{
     tmr300ms = 0;
  flag300ms = 1;
}
}

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

使用道具 舉報

沙發(fā)
ID:619594 發(fā)表于 2019-10-19 12:40 | 只看該作者
1、沒有看到你寫的液晶驅(qū)動程序
2、沒有看到你寫的AD轉(zhuǎn)換程序
3、沒有看到有按鍵定義
回復(fù)

使用道具 舉報

板凳
ID:626591 發(fā)表于 2019-10-19 12:54 | 只看該作者
要先確定是不是LCD1602的程序問題
回復(fù)

使用道具 舉報

地板
ID:521078 發(fā)表于 2019-10-19 14:37 | 只看該作者
#include <reg52.h> #define LCD1602_DB P0 sbit LCD1602_RS = P1^0; sbit LCD1602_RW = P1^1; sbit LCD1602_E = P1^5; /*???????????*/ void LcdWaitReady() {     unsigned char sta;         LCD1602_DB = 0xFF;         LCD1602_RS = 0;         LCD1602_RW = 1;         do{            LCD1602_E = 1;            sta = LCD1602_DB; //???????            LCD1602_E = 0;         }while(sta & 0x80);           //Bit7????1?????????????????????????0?? } /*??LCD1602???д??????????cmd-??д?????????*/ void LcdWriteCmd(unsigned char cmd) {      LcdWaitReady();          LCD1602_RS = 0;          LCD1602_RW = 0;          LCD1602_DB = cmd;          LCD1602_E = 1;          LCD1602_E = 0; } /*??LCD1602???д???????????dat-??д???????*/ void LcdWriteDat(unsigned char dat) {      LcdWaitReady();          LCD1602_RS = 1;          LCD1602_RW = 0;          LCD1602_DB = dat;          LCD1602_E = 1;          LCD1602_E = 0; } /*???????RAM?????????????λ?????x,y??-????????????????*/ void LcdSetCursor(unsigned char x, unsigned char y) {      unsigned char addr;          if (y == 0)                addr = 0x00 + x;          else              addr = 0x40 + x;          LcdWriteCmd(addr | 0x80); } /*???????????????????x,y??-????????????????str-????????*/ void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str) {     LcdSetCursor(x, y);         while (*str != '\0')           {             LcdWriteDat(*str++);         } } /*?????1602???*/ void InitLcd1602() {     LcdWriteCmd(0x38);         LcdWriteCmd(0x0C);         LcdWriteCmd(0x06);         LcdWriteCmd(0x01); }
回復(fù)

使用道具 舉報

5#
ID:521078 發(fā)表于 2019-10-19 14:46 | 只看該作者
來51學(xué)習(xí)2 發(fā)表于 2019-10-19 12:40
1、沒有看到你寫的液晶驅(qū)動程序
2、沒有看到你寫的AD轉(zhuǎn)換程序
3、沒有看到有按鍵定義

大佬,我重新加上了,重新又發(fā)了個懸賞帖,望解答下求51大神
http://www.zg4o1577.cn/bbs/dpj-171595-1.html
(出處: 單片機論壇)
回復(fù)

使用道具 舉報

6#
ID:521078 發(fā)表于 2019-10-19 14:47 | 只看該作者
zycstc 發(fā)表于 2019-10-19 12:54
要先確定是不是LCD1602的程序問題

求51大神
http://www.zg4o1577.cn/bbs/dpj-171595-1.html
(出處: 單片機論壇)
大佬看這個懸賞貼,程序全部貼上了,,謝謝
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区 在线视频 | 精品国产欧美一区二区三区成人 | 无码一区二区三区视频 | 国产精品特级片 | 天天天插| 国产精品久久久久久妇女6080 | 国产在线一区二 | 欧美日本韩国一区二区 | 美女爽到呻吟久久久久 | 国产精品亚洲一区二区三区在线观看 | 一区中文 | 国产精品无码专区在线观看 | 午夜视频一区二区 | 日本久久网 | 中文字幕日韩在线 | 精品欧美色视频网站在线观看 | 日本特黄a级高清免费大片 国产精品久久性 | 日韩在线免费看 | 欧美日韩在线精品 | 日韩a在线| 精品久久视频 | 久久久久久美女 | 成人免费看片又大又黄 | 天天看天天干 | 黄色网址av| 拍拍无遮挡人做人爱视频免费观看 | 国产精品久久a | 黄色中文字幕 | 日本久久精品 | 国产在线视频一区 | 成人亚洲精品 | 黄色片在线网站 | 欧美精品导航 | 在线观看午夜视频 | 在线一区二区三区 | 精品视频一区二区三区 | 国产一级在线 | 久久久精品一区 | 国产一区二区三区视频在线观看 | 亚洲欧美视频 | 羞羞网站在线免费观看 |