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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機驅動ADC0832模數轉換程序-lcd1602顯示

作者:我行天下   來源:本站原創   點擊數:  更新時間:2014年03月31日   【字體:

/*這個芯應用不多*/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar Chan0Value,Chan1Value;
sbit RS=P1^0; //1602各控制腳
sbit RW=P1^1;
sbit EN=P1^2;
sbit Cs0832=  P2^0;    //0832各控制腳
sbit Clk0832= P3^6;
sbit Di0832=  P3^7;
sbit Do0832=  P3^7;

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

/**********************************ADC0832********************************/
uchar GetValue0832(uchar Channel) //獲取數值返回。入口:通道(0或1)。出口:數值。
{
 uchar i,Dat1=0,Dat2=0;
 Clk0832=0;
 Di0832=1;
 Cs0832=0;
 Clk0832=1;
 Clk0832=0; //第一脈沖,開始位
 Di0832=1;
 Clk0832=1;
 Clk0832=0; //第二脈沖,模式選擇
 Di0832=Channel;//通道選擇,0或1
 Clk0832=1;
 Clk0832=0; //第三脈沖,通道選擇
 Di0832=1; //釋放輸入線
 for(i=0;i<8;i++)   //從高到低取一次數
  {
   Clk0832=1; //下降沿有效
   Clk0832=0;
   if(Do0832) Dat1|=0x80>>i;
   }
 for(i=0;i<8;i++)   //從低到高取一次數
  {
  if(Do0832) Dat2|=0x01<<i;
  Clk0832=1; //下降沿有效
  Clk0832=0;
  }
 Cs0832=1;
 Di0832=1;
 Clk0832=1;  //數據讀取完成,釋放所有數據線
 if(Dat1==Dat2)
 return Dat1; //校驗兩次數相等,輸出
}
/*本程序與其他一般程序最大的不同就是要讀兩次
一次從最高位到最低位,一次從最低位到最高位,
兩次所讀值相等即為正常,可以輸出*/
/******************************LCD1602**************************************/
/*************************lcd1602程序**************************/

void wr_com(unsigned char com)//寫指令//
{ delay1ms(1);
   RS=0;
   RW=0;
   EN=0; 
   P0=com;
   delay1ms(1); 
   EN=1; 
   delay1ms(1); 
   EN=0;
}
void wr_dat(unsigned char dat)//寫數據//
{ delay1ms(1);
   RS=1;
   RW=0;
   EN=0;
   P0=dat;
   delay1ms(1);
   EN=1;
   delay1ms(1);
   EN=0;
}
void lcd_init()//初始化設置//
{
delay1ms(15);
wr_com(0x38);delay1ms(5);
wr_com(0x80);delay1ms(5);
wr_com(0x01);delay1ms(5);
wr_com(0x06);delay1ms(5);
wr_com(0x0c);delay1ms(5);
}
void writevalue(uchar add,uchar dat)
{
 wr_com(0x80+add);
 wr_dat(dat);
}
 void zifuchuan(uchar *ch)
{
  while(*ch!=0)
  wr_dat(*ch++);
  delay1ms(20);
}
void main(void)
{
     lcd_init();
 while(1)
 {
  Chan0Value=GetValue0832(0);
  delay1ms(100);
     Chan1Value=GetValue0832(1);
 
        wr_com(0x80);
  zifuchuan("Chanal 0:");
  writevalue(10,Chan0Value/100+0x30);
  writevalue(11,Chan0Value%100/10+0x30);
  writevalue(12,Chan0Value%100%10+0x30);
 
  wr_com(0x80+0x40);
  zifuchuan("Chanal 1:");
  writevalue(0x40+10,Chan1Value/100+0x30);
  writevalue(0x40+11,Chan1Value%100/10+0x30);
  writevalue(0x40+12,Chan1Value%100%10+0x30);
  delay1ms(1000);
 }
}
/*此程序只為調 通ADC0832,沒有對電壓值進行轉換
要想得到準確電壓值,請把Chan0Value和Chan1Value
的值乘以5再除以255即可。當某一通道沒有輸入而
懸空時,有可能會顯示256的中間值128,這是干擾,可
以不理會*/

關閉窗口

相關文章

主站蜘蛛池模板: 亚洲色图图片 | 国产精品一区二区免费 | 日韩免费视频 | 九九热在线观看视频 | 欧美日韩国产一区二区三区 | 欧美舔穴 | 成人网av | 久久综合久久综合久久 | 亚洲人成人一区二区在线观看 | 超碰国产在线 | 在线观看亚洲一区二区 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 一区二区三区日韩 | 亚洲精品国产电影 | 久久夜视频 | 国产精品久久久久国产a级 欧美日韩国产免费 | 亚州精品天堂中文字幕 | 成人在线免费观看视频 | 午夜三级网站 | 少妇一级淫片免费播放 | 中文字幕在线观 | 日韩国产一区二区 | 午夜电影网 | 日韩高清国产一区在线 | 国产一级片91 | 99精品视频在线观看免费播放 | 国产综合久久 | 国产精品日日摸夜夜添夜夜av | 久久久久国产精品一区三寸 | 99在线资源| 亚洲iv一区二区三区 | 欧美成年人网站 | 91精品国产91久久久久久最新 | 久久久精| 亚洲精品免费观看 | 99re国产精品 | 亚洲视频在线播放 | 国产成人精品一区二区三区在线 | 超碰在线免费av | 欧美成人高清 | 亚洲精品一区在线观看 |