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

標(biāo)題: 單片機(jī)+LTC1297角度儀Proteus仿真與Keil源程序 [打印本頁(yè)]

作者: 第幾集    時(shí)間: 2022-5-24 16:01
標(biāo)題: 單片機(jī)+LTC1297角度儀Proteus仿真與Keil源程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機(jī)程序代碼
#include <AT89X51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

#define AD P2
#define lcd  P2
#define key P1

sbit        a6=P3^0;
sbit        a5=P3^1;
sbit        a4=P3^2;
sbit         A0=P2^0;
sbit         A1=P2^1;
sbit         A2=P2^2;
sbit    A3=P2^3;

sbit        n0=P1^0;
sbit        n1=P1^1;
sbit        n2=P1^2;
sbit         n3=P1^3;
sbit         n4=P1^4;
sbit         n5=P1^5;
sbit    n6=P1^6;
sbit    n7=P1^7;

uchar code Y1[96]={
0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0x42,0xE2,0x52,0x4A,0xC6,0x42,0x40,0xC0,0x00,
0x10,0x60,0x02,0x8C,0x20,0x90,0x8E,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0x80,0x00,
0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,
0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00
};
uchar code Y2[96]={
0x04,0x03,0x00,0xFF,0x00,0x23,0x10,0x8C,0x43,0x20,0x18,0x47,0x80,0x40,0x3F,0x00,
0x04,0x04,0x7E,0x01,0x00,0x00,0xFC,0x44,0x44,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,
0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00        
};
uchar code H1[120]={
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,
0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,        
0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,
0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,
0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
0x00,0x00,0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code H2[120]={
0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,
0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,
0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00,        
0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x24,0x24,0x12,0x3F,0x20,0x00,
0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};


void delay(unsigned int i)
{
unsigned char k=200;
while(i>0)
{
i--;
}
}
void OUTMD(uchar i){        //??
   A0=1; //???        //????
   delay(5);
   A1=1;
   delay(10);
   lcd=i;
   delay(5);
   A1=0;
}

void OUTSD(unsigned char i){        
   A0=1; //???//??//????
   delay(5);
   A2=1;
   delay(10);
   lcd=i;
   delay(5);
   A2=0;
}

void OUTMI(uchar i){   //??
   A0=0; //???//????
   delay(5);
   A1=1;
   delay(10);
   lcd=i;
   delay(5);
   A1=0;
}


void OUTSI(unsigned char i){         
  A0=0; //???//??//????
  delay(5);
  A2=1;
  delay(10);
  lcd=i;
  delay(5);
  A2=0;
}

void lcdini(void){        //???
   A3=0;
   OUTMI(0XE2);  OUTSI(0XE2);//??
   OUTMI(0XAE);  OUTSI(0XAE);//POWER SAVE ??????,?????
   OUTMI(0XA4);  OUTSI(0XA4);//????
   OUTMI(0XA9);  OUTSI(0XA9);//1/32???
   OUTMI(0XA1);  OUTSI(0XA1);//?????,????
   OUTMI(0XE0);  OUTSI(0XE0);//??-??-???
   OUTMI(0XEE);  OUTSI(0XEE);//???  ???-??-???
   OUTMI(0X00);  OUTMI(0XC0);
   OUTSI(0X00);  OUTSI(0XC0);
   OUTMI(0XAF);  OUTSI(0XAF);//POWER SAVE ??????,?????
}


void SetPage ( uchar page0,uchar page1)
{
OUTMI(0xB8|page1);
OUTSI(0xB8|page0);
}


void SetAddress ( uchar address0,uchar address1)
{
OUTMI(address1);
OUTSI(address0);
}

void PutCharR(uchar ch)
{
OUTSD(ch);
}


void PutCharL(uchar ch)
{
OUTMD(ch);
}

void clrscr(void)
{
uchar  i;
uchar  page;
for (page=0;page<4;page++)
  {
    SetPage ( page, page);
    SetAddress(0,0);
    for (i=0;i<61;i++)
        {
          PutCharR(0);
          PutCharL(0);
        }
   }
}


void Draw_wordh (uint d_where, uint x_add, bit layer, uchar width,uchar *p)
{                //???????
  uchar x, address;     //address?????????
  bit window=0;  //window??????
  d_where = d_where*2*width;                                    
  for (x=width;x>0;x--){
   if (x_add>=61) {window=1;address=x_add%61;}
   else address=x_add;
   if(layer==0){ //??????????
     SetPage(0,0);
     SetAddress(address,address);
     if(window==1)PutCharR(p[d_where]);
     else PutCharL(p[d_where]);
                 
   }
else{         //????????????
   SetPage(2,2);
   SetAddress(address,address);
   if(window==1)PutCharR(p[d_where]);//??
   else PutCharL(p[d_where]);
   }
    x_add++;
    d_where++;
}}
void Draw_wordh2 (uint d_where, uint x_add, bit layer, uchar width,uchar *p)
{                //???????
  uchar x, address;     //address?????????
  bit window=0;  //window??????
  d_where = d_where*2*width;                                    
  for (x=width;x>0;x--){
   if (x_add>=61) {window=1;address=x_add%61;}
   else address=x_add;
   if(layer==0){ //??????????
     SetPage(1,1);
     SetAddress(address,address);
     if(window==1)PutCharR(p[d_where]);
     else PutCharL(p[d_where]);
                 
   }
else{         //????????????
         SetPage(3,3);
   SetAddress(address,address);
   if(window==1)PutCharR(p[d_where+width]);//??
   else PutCharL(p[d_where+width]);
   }
    x_add++;
    d_where++;
}
}

uint ReadADC() //把模擬電壓值轉(zhuǎn)換成12位二進(jìn)制數(shù)并返回
{
  uint ad = 0;   //          電壓:3.3V
                 //          數(shù)字:1010 0011 1011
        uchar l;       //    1:ad:0000 0000 0000
                 //             DA: 0000 0000 0001
        a5=0;         //       ad: 0000 0000 0001
        a4=0;          //    2: ad: 0000 0000 0010
           _nop_();     //         DA: 0
        _nop_();       //       ad: 0000 0000 0010
        _nop_();       //    3: ad: 0000 0000 0100
        _nop_();       //       DA: 1
        _nop_();       //       ad: 0000 0000 0101
        _nop_();       //    4: ad: 0000 0000 1010
        _nop_();
        a5=1;
        _nop_();
        _nop_();
        a5=0;
        _nop_();
        _nop_();
        for(l=0;l<12;l++)
        {
         ad <<= 1;
         a5=1;
         _nop_();                                                         
         _nop_();
          a5=0;
         _nop_();
         _nop_();
         ad |= a6;
        }
        a4=1;
        return ad;
}

uchar temp()
{
        

}

uchar key()
{
uchar temp;
// while(1)
// {
  P1=0xff; //向P1口輸入1表示這個(gè)I/O口作為輸入端口
  P1=0xf0; //先將行全置0,列全置1
  temp=P1; //實(shí)時(shí)采取P1端口的數(shù)據(jù)
  if(temp!=0xf0)
  {
   delay(1000);//消抖
         temp=P1; //實(shí)時(shí)采取P1端口的數(shù)據(jù)
   if(temp!=0xf0)  //再判斷
   {
     P1=0xfe;//列已判斷,將進(jìn)行逐行掃描,即將某一行置0其余行置1,逐列掃描,對(duì)該行進(jìn)行判斷!
         temp=P1;
         switch(temp)
         {
          case(0xee):return 7;break;
          case(0xde):return 8;break;
          case(0xbe):return 9;break;
          case(0x7e):return 10;break;
         }
         P1=0xfd;
         temp=P1;
         switch(temp)
         {
          case(0xed):return 4;break;
          case(0xdd):return 5;break;
          case(0xbd):return 6;break;
          case(0x7d):return 11;break;
         }
         P1=0xfb;
         temp=P1;
         switch(temp)
         {
          case(0xeb):return 1;break;
          case(0xdb):return 2;break;
          case(0xbb):return 3;break;
          case(0x7b):return 12;break;
         }
         P1=0xf7;
         temp=P1;
         switch(temp)
         {
          case(0xe7):return 13;break;
          case(0xd7):return 0;break;
          case(0xb7):return 14;break;
          case(0x77):return 15;break;
         }
   }
         
  }
        else
                 return 16;

}

void main()
{
        uint i=0,jiaodu=0;
        uchar keynum[3],keyc,keyval,keyd,tgc;
//        uchar keynum[]={5,2,1};
        lcdini();
        
while(1)
{
        keyval=key1();        
        if(keyval!=16) //有鍵按下
        {
         if(keyd==0)
         {         keyd=1;
        
               
         if(keyval==13) //取消鍵
         {
                 for(i=0;i<3;i++)
                 {
                         keynum[ i]=0;
                 }
                 jiaodu=0;
                 keyc=0;
   }
        if(keyval<10) //數(shù)字鍵盤
         {
                 keynum[keyc]=keyval;
                 keyc++;
                switch(keyc)
                {
          case 0:break;
          case 1:jiaodu=keynum[0];break;
          case 2:jiaodu=keynum[0]*10+keynum[1];break;
          case 3:jiaodu=keynum[0]*100+keynum[1]*10+keynum[2];break;
                }
         }        
   }
        }
   else
                 keyd=0;

}
}

Keil代碼與Proteus仿真下載: 實(shí)驗(yàn)二.7z (57.73 KB, 下載次數(shù): 14)





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91精品国产乱码久久久久久久久 | 久久久人成影片一区二区三区 | 亚洲一区二区精品视频 | 国产乱码久久久 | 蜜桃av鲁一鲁一鲁一鲁 | 亚洲3级 | 亚洲综合二区 | 欧美乱大交xxxxx另类电影 | 亚洲女人天堂网 | 精品九九| 国产精品久久在线 | 操操网站| 国产亚洲日本精品 | 一区二区三区在线免费观看 | 国产精品高潮呻吟久久 | 国产精品国产成人国产三级 | 成人水多啪啪片 | 黄色一级毛片免费看 | 亚洲成人一区二区三区 | 亚洲一二三区在线观看 | 五月婷婷亚洲 | 亚洲欧美日本国产 | 亚洲网站在线观看 | 依人成人 | 亚洲在线一区二区 | 国内久久精品 | 久久男人 | 精品伊人 | 日韩手机视频 | 国产成人jvid在线播放 | 亚洲一区二区三区四区五区中文 | 一级黄色网页 | 免费激情网站 | 国产精品一区二区免费 | 91精品久久久久久久久中文字幕 | 国产中文字幕网 | 麻豆a级片 | 三级在线免费观看 | 亚洲高清电影 | 国产精品欧美一区二区三区 | 久久久久久久国产精品视频 |