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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

AVR PCF8591 AD&DA數(shù)碼管顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:202598 發(fā)表于 2017-5-19 16:45 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include "iom16v.h"
#include "macros.h"
#define uchar unsigned char
#define uint unsigned int
/*******************************************
TWSR中數(shù)據(jù)的各種狀態(tài),#include"iom16v.h"
#include "macros.h"
#define uchar unsigned char
#define uint unsigned int
/*******************************************
TWSR中數(shù)據(jù)的各種狀態(tài),參照mega 16手冊172
*******************************************/
//主模式啟動狀態(tài)
#define START 0X08//啟動總線
#define RESTART 0X10//再啟動總線
//主機(jī)發(fā)送模式各種狀態(tài)
#define MT_SLA_ACK 0X18//SLA_W寫地址已發(fā)送,收到應(yīng)答位
#define MT_SLA_NACK 0X20//SLA_W寫地址已發(fā)送,收到非應(yīng)答位
#define MT_DATA_ACK 0X28//寫數(shù)據(jù)已發(fā)送,收到應(yīng)答位
#define MT_DATA_NACK 0X30//寫數(shù)據(jù)已發(fā)送,收到非應(yīng)答位
#define MT_ARB_LOST 0X38//SLA_W或者數(shù)據(jù)仲裁失敗
//主接收模式各種狀態(tài)
#define MR_ARB_LOST 0X38//SLA_W或者數(shù)據(jù)仲裁失敗
#define MR_SLA_ACK 0X40//SLA_R已發(fā)送,收到應(yīng)答位
#define MR_SLA_NACK 0X48//SLA_R已發(fā)送,收到非應(yīng)答位
#define MR_DATA_ACK 0X50//收到數(shù)據(jù),返回應(yīng)答位
#define MR_DATA_NACK 0X58//收到數(shù)據(jù),返回非應(yīng)答位
//IIC操作
#define Start()(TWCR=BIT(TWINT)|BIT(TWSTA)|BIT(TWEN))
#define Stop()(TWCR=BIT(TWINT)|BIT(TWSTO)|BIT(TWEN))
#define TestACK() (TWSR&0Xf8)//TWSR前五位狀態(tài)
#define Send() (TWCR=BIT(TWINT)|BIT(TWEN))
#define SendAck() (TWCR|=BIT(TWEA))
#define SendNoAck() (TWCR&=~BIT(TWEA))
#define ReadNoAck()   (TWCR=BIT(TWEN)|BIT(TWINT))
#define ReadAck()(TWCR=BIT(TWINT)|BIT(TWEN)|BIT(TWEA))
#define Wait() while(!(TWCR&BIT(TWINT)))//等待TWINT1
uint i;
////////////////////////////////////
void twi_init()
{
   TWBR=0X12;
         TWSR=0;
         TWCR=0X44;
}
////////////////////////////////////////////////////////////////寫函數(shù)
uchar write_data(uchar add, uchardata,uchar data1)
{
   Start();
         Wait();
         if(TestACK()!=START)
         {
           PORTA=0x01;
         }
         TWDR=add;
         Send();
         Wait();
         if(TestACK()!=MT_SLA_ACK)
         {
            PORTA=0x04;
         }
         TWDR=data;
         Send();
         Wait();
         if(TestACK()!=MT_DATA_ACK)
         {
            PORTA=0x10;
         }
         TWDR=data1;
         Send();
         Wait();
         if(TestACK()!=MT_DATA_ACK)
         {
            PORTA=0x20;
         }
         Stop();
         delay(1);
         
         
}
//////////////////////讀函數(shù)//////////////////////////////////////////////////
uchar Read(uchar data)
{
uchar team;
Start();
Wait();
if(TestACK()!=START)
         {show(8,1);
           PORTA=0xfe;
         }
         TWDR=0x90;
         Send();
         Wait();
         if(TestACK()!=MT_SLA_ACK)
         {show(8,1);
            PORTA=0xfb;
         }
         TWDR=data;
         Send();
         Wait();
         if(TestACK()!=MT_DATA_ACK)
         {show(8,1);
            PORTA=0xff;
         }
         Start();
         Wait();
         if(TestACK()!=RESTART)
         {show(8,1);
           PORTA=0xff;
         }
         TWDR=0x91;
         Send();
         Wait();
         if(TestACK()!=MR_SLA_ACK)
         {show(8,1);
            PORTA=0xff;
         }
         ReadNoAck();
         Wait();
         delay(1);
         if(TestACK()!=MR_DATA_NACK)
         {show(0,1);
            PORTA=0xff;
         }
         team=TWDR;
          Stop();
          return team;show(8,0);
         
}
///////////////////////////////////////////////////////////////////////
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
                             0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
const table1[]={0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void delay(uint ms)
{
       uint i,j;
         for(i=0;i<ms;i++)
            {
            for(j=0;j<1141;j++);
      }
}
void show(uchar j,uchar k)
{
         DDRB=0XFF;
         DDRD=0X03;
         PORTD=0X02;   
         PORTB=table[j];
         PORTD=0X01;
         PORTB=table1[k];
   delay(1);
}
///////////////////////////////////////////////////////////
main()
{
uint a=0,temp;
twi_init();
DDRA=0XFF;
while(1){
a++;
write_data(0x90,0x44,a);
if(a>200) {a=0;}
temp=Read(0x42);
show(temp/100,1);
show(temp%100/10,2);
show(temp%100%10,3);
}
}參照mega 16手冊172
*******************************************/
//主模式啟動狀態(tài)
#define START 0X08//啟動總線
#define RESTART 0X10//再啟動總線
//主機(jī)發(fā)送模式各種狀態(tài)
#define MT_SLA_ACK 0X18//SLA_W寫地址已發(fā)送,收到應(yīng)答位
#define MT_SLA_NACK 0X20//SLA_W寫地址已發(fā)送,收到非應(yīng)答位
#define MT_DATA_ACK 0X28//寫數(shù)據(jù)已發(fā)送,收到應(yīng)答位
#define MT_DATA_NACK 0X30//寫數(shù)據(jù)已發(fā)送,收到非應(yīng)答位
#define MT_ARB_LOST 0X38//SLA_W或者數(shù)據(jù)仲裁失敗
//主接收模式各種狀態(tài)
#define MR_ARB_LOST 0X38//SLA_W或者數(shù)據(jù)仲裁失敗
#define MR_SLA_ACK 0X40//SLA_R已發(fā)送,收到應(yīng)答位
#define MR_SLA_NACK 0X48//SLA_R已發(fā)送,收到非應(yīng)答位
#define MR_DATA_ACK 0X50//收到數(shù)據(jù),返回應(yīng)答位
#define MR_DATA_NACK 0X58//收到數(shù)據(jù),返回非應(yīng)答位
//IIC操作
#define Start()(TWCR=BIT(TWINT)|BIT(TWSTA)|BIT(TWEN))
#define Stop()(TWCR=BIT(TWINT)|BIT(TWSTO)|BIT(TWEN))
#define TestACK() (TWSR&0Xf8)//TWSR前五位狀態(tài)
#define Send() (TWCR=BIT(TWINT)|BIT(TWEN))
#define SendAck() (TWCR|=BIT(TWEA))
#define SendNoAck() (TWCR&=~BIT(TWEA))
#define ReadNoAck()   (TWCR=BIT(TWEN)|BIT(TWINT))
#define ReadAck()(TWCR=BIT(TWINT)|BIT(TWEN)|BIT(TWEA))
#define Wait()while(!(TWCR&BIT(TWINT)))//等待TWINT1
uint i;
////////////////////////////////////
void twi_init()
{
   TWBR=0X12;
         TWSR=0;
         TWCR=0X44;
}
////////////////////////////////////////////////////////////////寫函數(shù)
uchar write_data(uchar add, uchardata,uchar data1)
{
   Start();
         Wait();
         if(TestACK()!=START)
         {
           PORTA=0x01;
         }
         TWDR=add;
         Send();
         Wait();
         if(TestACK()!=MT_SLA_ACK)
         {
            PORTA=0x04;
         }
         TWDR=data;
         Send();
         Wait();
         if(TestACK()!=MT_DATA_ACK)
         {
            PORTA=0x10;
         }
         TWDR=data1;
         Send();
         Wait();
         if(TestACK()!=MT_DATA_ACK)
         {
            PORTA=0x20;
         }
         Stop();
         delay(1);
         
         
}
//////////////////////讀函數(shù)//////////////////////////////////////////////////
uchar Read(uchar data)
{
uchar team;
Start();
Wait();
if(TestACK()!=START)
         {show(8,1);
           PORTA=0xfe;
         }
         TWDR=0x90;
         Send();
         Wait();
         if(TestACK()!=MT_SLA_ACK)
         {show(8,1);
            PORTA=0xfb;
         }
         TWDR=data;
         Send();
         Wait();
         if(TestACK()!=MT_DATA_ACK)
         {show(8,1);
            PORTA=0xff;
         }
         Start();
         Wait();
         if(TestACK()!=RESTART)
         {show(8,1);
           PORTA=0xff;
         }
         TWDR=0x91;
         Send();
         Wait();
         if(TestACK()!=MR_SLA_ACK)
         {show(8,1);
            PORTA=0xff;
         }
         ReadNoAck();
         Wait();
         delay(1);
         if(TestACK()!=MR_DATA_NACK)
         {show(0,1);
            PORTA=0xff;
         }
         team=TWDR;
          Stop();
          return team;show(8,0);
         
}
///////////////////////////////////////////////////////////////////////
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
                             0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
const table1[]={0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void delay(uint ms)
{
       uint i,j;
         for(i=0;i<ms;i++)
            {
            for(j=0;j<1141;j++);
      }
}
void show(uchar j,uchar k)
{
         DDRB=0XFF;
         DDRD=0X03;
         PORTD=0X02;   
         PORTB=table[j];
         PORTD=0X01;
         PORTB=table1[k];
   delay(1);
}
///////////////////////////////////////////////////////////
main()
{
uint a=0,temp;
twi_init();
DDRA=0XFF;
while(1){
a++;
write_data(0x90,0x44,a);
if(a>200) {a=0;}
temp=Read(0x42);
show(temp/100,1);
show(temp%100/10,2);
show(temp%100%10,3);
}
}

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕国产视频 | 欧美婷婷 | 大学生a级毛片免费视频 | 午夜男人天堂 | 一区二区三区不卡视频 | 久久久久国产一区二区三区 | av在线免费网 | 欧美乱操| 国产欧美日韩二区 | 成人黄在线观看 | 国产在线一区二区三区 | 日本三级电影在线免费观看 | 中文字幕一区二区三区日韩精品 | 精品伊人久久 | 91在线精品播放 | 国产a一区二区 | 国产美女自拍视频 | 999免费网站 | 在线欧美一区 | 狠狠做深爱婷婷综合一区 | 亚洲永久在线 | 91看片网址| 久草.com | 欧美精品一区二区在线观看 | 欧美日韩精品久久久免费观看 | 国产精品高潮呻吟久久 | 久久久久久国产精品免费 | 亚洲精品在线看 | 国产在线精品一区二区 | 蜜臀久久 | 福利一区二区在线 | 91在线电影 | 天堂网中文| 久久精品免费观看 | 国产精品免费一区二区三区四区 | 日韩色图视频 | 超碰操 | 久久福利 | 国产欧美在线 | 国产成人久久 | 久久久成人动漫 |