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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助,下面的程序到底哪里錯了?(關(guān)于程控放大的)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:85124 發(fā)表于 2015-7-30 14:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

/**************************************

*液晶控制函數(shù)

***************************************/

#include<reg52.H>

#include<intrins.h>

typedefunsigned char BYTE;

typedefbit BOOL;

sbitLCD_RS = P2^5;            

sbitLCD_RW = P2^6;

sbitLCD_EP = P2^7;         

/*******************************************

*函數(shù)名稱:delay1()      延時函數(shù)

*函數(shù)作用:延時  t ms

*********************************************/

voidDelay_ms(int ms)

{

       int i,j;  

       for (i=ms;i>0; i--)

              for (j=110; j>0; j--);

}

voidDelay_us(int ms)

{

       int i;

       for (i=ms;i>0; i--);

}            

/*******************************************

*函數(shù)名稱:lcd_bz() 液晶忙信號檢測

*函數(shù)作用:讀取液晶是否處于忙狀態(tài)

*********************************************/      

BOOLlcd_bz()

{                          //測試LCD忙碌狀態(tài)

       BOOL result;

       LCD_RS = 0;

       LCD_RW = 1;

       LCD_EP = 1;            //E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令

    Delay_us(4);

       result = (BOOL)(P0 & 0x80);//高電平表示忙狀態(tài)

       LCD_EP = 0;

       return result;

}


/*******************************************

*函數(shù)名稱:lcd_wcmd() 液晶寫指令字函數(shù)

*函數(shù)作用:向液晶寫控制指令字

*********************************************/      

voidlcd_wcmd(BYTE cmd)// 寫入指令數(shù)據(jù)到LCD

{   

   while(lcd_bz());                     

       LCD_RS = 0;

       LCD_RW = 0;

       LCD_EP = 0;

        Delay_us(2);

       P0 = cmd;   //此處要模仿時序狀態(tài)

        Delay_us(4);

       LCD_EP = 1;//高電平到低電平轉(zhuǎn)變時開始寫入數(shù)據(jù)

Delay_us(4);

       LCD_EP = 0;  

}

/*******************************************

*函數(shù)名稱:lcd_pos()     液晶數(shù)據(jù)地址函數(shù)

*函數(shù)作用:確定寫入液晶的數(shù)據(jù)的地址

*********************************************/      

voidlcd_pos(BYTE pos)  

{                          

  lcd_wcmd(pos | 0x80);    //設(shè)定顯示位置

}

/*******************************************

*函數(shù)名稱:lcd_wdat()   液晶寫數(shù)據(jù)函數(shù)

*函數(shù)作用:向液晶中寫入數(shù)據(jù)

*********************************************/      

void lcd_wdat(BYTE dat)

{                  //寫入字符顯示數(shù)據(jù)到LCD

while(lcd_bz());

       LCD_RS = 1;       //寫數(shù)據(jù)到ddram

       LCD_RW = 0;

       LCD_EP = 0;

       P0 = dat;          //要送的數(shù)據(jù)

Delay_us(4);

       LCD_EP = 1;      //執(zhí)行

Delay_us(4);

       LCD_EP = 0;

}

/*******************************************

*函數(shù)名稱:lcd_init() 液晶初始化配置函數(shù)

*函數(shù)作用:配置液晶的工作狀態(tài)

*********************************************/      

voidlcd_init()

{                           //LCD初始化設(shè)定,命令字

       lcd_wcmd(0x38);          //16*2顯示,5*7點陣,8位數(shù)據(jù)

         Delay_ms(1);

       lcd_wcmd(0x0c);          //顯示開,關(guān)光標(biāo)

         Delay_ms(1);

       lcd_wcmd(0x06);          //移動光標(biāo)

         Delay_ms(1);

       lcd_wcmd(0x01);          //清除LCD的顯示內(nèi)容

         Delay_ms(100);

}

voidlcd_str(unsigned char* dis,unsigned char N,unsigned char t,unsigned  char st)

{

        unsigned char i=0;

        for(i=0;i<N;i++)

        {

             lcd_pos(64*t+i+st);

              lcd_wdat(*(dis+i));

              Delay_ms(1);

        }

}

voidlcd_string(bit bRow, unsigned char btColumn, unsigned char *pData)

{

   while (*pData != '\0')

   {

         if (bRow)

         {

              lcd_wcmd(0xc0 + btColumn);//顯示在第1

         }

         else   

         {

               lcd_wcmd(0x80 + btColumn);  //顯示在第0

         }

         lcd_wdat(*(pData++));          //要顯示的數(shù)據(jù)

         btColumn++;                  //列數(shù)加一

         Delay_ms(1);

   }

}

voiddelay1(int );

voidlcd_wcmd(unsigned char );

voidlcd_pos(unsigned char );

voidlcd_wdat(unsigned char );

voidlcd_init();

voidlcd_str(unsigned char* dis,unsigned char N,unsigned char t,unsigned  char st);

voidDelay_ms(int ms);

voidlcd_string(bit bRow, unsigned char btColumn, unsigned char *pData);

/****************************************************************

#include<reg52.h>

#include"lcd.h"

#defineuint unsigned int

#defineuchar unsigned char

/******數(shù)模轉(zhuǎn)換器接口定義********/

sbitclk=P3^1;

sbitcs=P3^0;

sbitdin=P3^2;

// 粗調(diào)參數(shù)

uintcode vol[10]={0,145,250,315,365,430,465,492,508,549};//

// 細(xì)調(diào)參數(shù)

uintcode small_vol[52]={0,30,56,95,120,145,168,183,203,230,250,270,288,300,307,

315,325,335,349,359,365,385,400,410,423,430,438,443,449,452,465,468,472,476,486,492,

495,498,501,504,508,516,524,532,540,549};//

sbitadd=P1^0;           // 增加按鍵

sbitsub=P1^1;           // 減小按鍵

sbitk0=P1^2;             // 模式按鍵

unsignedint vol_n=0;   //對應(yīng)數(shù)組中的位置

unsignedchar mode=0;  //模式變量

voiddelay();

voidDAconver(uint DAValue);    //數(shù)模轉(zhuǎn)換器

/******************************************************

函數(shù)名稱:delayms

輸入?yún)?shù):t

函數(shù)說明:延時t毫秒

*******************************************************/

voiddelayms(uint t)

{

  uint i,j;

  for(i=0;i<t;i++)

    for(j=0;j<100;j++);     

}

/******************************************************

函數(shù)名稱:scan

輸入?yún)?shù):無

函數(shù)說明:鍵盤掃描函數(shù)

*******************************************************/

voidscan()

{

     uint t=0;

        if(k0==0)     //模式切換鍵按下

        {

         delayms(20);

         if(k0==0)

         {

             if(mode==0)

               {

                    mode=1;

                       lcd_pos(15);

                       lcd_wdat('B');  // 模式字符

               }

               else

               {

                    mode=0;

                       lcd_pos(15);

                       lcd_wdat('A');

               }

               vol_n=0;//

               delayms(800);

         }

        }

     if(add==0)         //增加按鍵按下

       {

        delayms(20);

        if(add==0)

         {                                                         

          if(mode==0)       //粗調(diào)模式,總共有10種情況

              {

                if(vol_n<9) vol_n=vol_n+1;

              }

              else           //細(xì)調(diào)模式

              {

              if(vol_n<45) vol_n=vol_n+1;

              }

         }

         delayms(800);      

       }

       else if(sub==0)

       {

        delayms(20);

        if(sub==0)

         {

                     if(vol_n>0)vol_n=vol_n-1;

         }

         delayms(800);

    }                //顯示的功能

    if(mode==0)

       {

         t=50+vol_n*50;

       }

       else

      {

        t=50+10*vol_n;

       }

      lcd_pos(4);

        lcd_wdat(t/100+48);

        lcd_pos(5);

        lcd_wdat('.');

        lcd_pos(6);

        lcd_wdat(t%100/10+48);

        lcd_pos(7);

        lcd_wdat(t%10+48);

        lcd_pos(8);

        lcd_wdat('V');

}

/******************************************************

函數(shù)名稱:main

輸入?yún)?shù):無

函數(shù)說明:系統(tǒng)主函數(shù)

*******************************************************/

voidmain()

{vol_n=0; lcd_init();  // 液晶初始化

lcd_string(0,4,"Welcome");

lcd_string(1,0,"fengzhengliang");

delayms(2000);

lcd_wcmd(0x01);

delayms(100);

lcd_string(0,0,"VPP:0.5V");

lcd_pos(15);

lcd_wdat('A');

while(1)

       {

         scan();

         if(mode==0)

         {

            DAconver(vol[vol_n]);

         }

         else

         {

            DAconver(small_vol[vol_n]);  //不斷地輸出數(shù)據(jù)

         }

         delayms(500);

       }

}

/******************************************************

函數(shù)名稱:delay

輸入?yún)?shù):無

函數(shù)說明:延時10us左右

*******************************************************/

voiddelay()

{

   char i = 5;

   while(i--);

}

/******************************************************

函數(shù)名稱:DAconver

輸入?yún)?shù):無

函數(shù)說明:這個是用了12個時鐘的驅(qū)動,根據(jù)PDF的數(shù)據(jù)格式,十位數(shù)據(jù)在12位的前面,后面兩位沒有用,所以要先把16位數(shù)據(jù)DAValue先左移6位,使到剩下的十位是有效數(shù)據(jù)

*******************************************************/

voidDAconver(uint DAValue)

{

      uchar i;

      DAValue <<= 6;

      cs = 0;                           

      clk = 0;                             

      for(i = 0; i < 12; i++) //內(nèi)輸入的是10DA數(shù)據(jù),后兩個時鐘周期為填充字節(jié)

      {                       

          din = (bit)(DAValue &0x8000);   

          clk = 1;                        

          DAValue <<= 1;                  

          clk = 0;

      }

      cs = 1;           // CS的上升沿和下降沿只有在CLK為低的時候才有效

      clk = 0;            

}

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

使用道具 舉報

沙發(fā)
ID:85124 發(fā)表于 2015-7-30 14:39 | 只看該作者
唉 。unsigned char ;unsigned int ;沒有宏定義。目前看來是這個樣子的
回復(fù)

使用道具 舉報

板凳
ID:87274 發(fā)表于 2015-7-30 18:16 | 只看該作者
delay錯了吧 這個函數(shù)
回復(fù)

使用道具 舉報

地板
ID:7485 發(fā)表于 2015-7-31 12:56 | 只看該作者
本帖最后由 ahshmj 于 2015-7-31 12:58 編輯

不知道是你打字打錯的,還是你的程序就是這樣錯的,許多“關(guān)鍵字”之間沒有留出空格。如:“voidDelay_ms(int ms)”, 應(yīng)該是:“void Delay_ms(int ms)”
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av黄色免费| 国产精品久久久久久久久久了 | 国产精品7777777 | 国产精品夜夜春夜夜爽久久电影 | www.色53色.com | 午夜精品一区二区三区在线观看 | 美女网站视频免费黄 | 国产成人99久久亚洲综合精品 | 久久不卡日韩美女 | 一级做a爰片性色毛片16美国 | 欧美精品区 | 欧美黑人体内she精在线观看 | 亚洲欧美一区二区三区国产精品 | 欧美精品片 | 一区二区三区视频 | 91久久| 99视频在线| 欧美久久视频 | 日韩高清一区二区 | 这里只有精品999 | 不卡的av一区 | 欧美片网站免费 | 激情小说综合网 | 91精品国产91久久久久久最新 | 久久国产亚洲精品 | 国产国产精品久久久久 | 9999国产精品欧美久久久久久 | 久久久日韩精品一区二区三区 | 亚洲成人黄色 | 国内精品久久精品 | 黄色毛片黄色毛片 | 色爱综合网 | 国产草草视频 | 成人高清网站 | 亚洲毛片在线观看 | 国产伦精品一区二区三区高清 | 欧美男人天堂 | 欧美三区在线观看 | 激情国产视频 | 亚洲a视频 | 亚洲欧洲精品在线 |