avr单片机例程@天祥电子


avr单片机例程@天祥电子,老师的讲解视频程序,板带程序,资料全
资源截图
代码片段和文件信息
/*******************************************
  文件:AD5161.C
  环境:编译为ICC AVR6.25A,仿真为AVR Studio4.10 
  硬件:ATMEGA16芯片
  日期:2006年12月10日 
  功能:驱动开发板上的数字电位器(AD5161采用IIC接口)
  备注:参考《AVR系列单片机C语言编程与应用实例》(清华大学出版社)
/******************************************/
#include  //包含型号头文件
#include  //包含“位“操作头文件
#include  //标准输入输出头文件
#include  //包含自定义常量头文件
#include “Skey.C“ //包含数码管显示函数

/*******************************************
函数名称: Twi_init
功    能: 初始化TWI
参    数: MS--延时的毫秒数
返回值  : 无
/********************************************/
void Twi_init(void)
{
 TWBR= 0x20; //设置波特率
 TWSR= 0x00; //设置预分频比
 TWCR= 0x44; //使能应答,使能TWI
}
/*******************************************
函数名称: AD5161_writeB
功    能: 向AD5161写入电阻值数据
参    数: devadd--器件地址
     cmd--控制命令
  rdata--电阻数据
返回值  : success--数据成功标志(为TRUE时写入成功,为FALSE时失败)
/********************************************/
uchar AD5161_writeB(uchar devadduchar cmduchar rdata)
{
 uchar success=FALSE;   //默认返回是写入失败
 Start();   //产生START信号
 Wait();   //等待START信号发送完毕
 if(TestACK()!=START)   //检查是否是START信号发送完毕状态
 {
  success=FALSE;     //如果不是,则返回写入失败
  return success;
 }
 Writebyte(devadd);   //发送从器件地址
 Wait();   //等待发送完毕
 if(TestACK()!=MT_SLA_ACK)//检查是否是从器件地址发送完毕状态
 {
  success=FALSE;   //如果不是,则返回写入失败
  return success;
 }
 Writebyte(cmd);    //发送AD5161的命令字节(具体含义请参看AD5161的数据手册)
 Wait();   //等待发送完毕
 if(TestACK()!=MT_DATA_ACK)//检查是否是数据发送完毕
 {
  success=FALSE;   //如果不是,则返回写入失败
  return success;
 }
 Writebyte(rdata);   //发送电阻值数据
 Wait();   //等待发送完毕
 if(TestACK()!=MT_DATA_ACK)//检查是否是数据发送完毕
 {
  success=FALSE;   //如果不是,则返回写入失败
  return success;
 }
 Stop();      //对AD5161的一次操作完毕,发送STOP信号
 Delayms(10);   //等待发送完毕
 success=TRUE;   //本次写入成功
 return success;   //返回写入成功状态
}
/*******************************************
函数名称: main
功    能: 按键更新数字电位器的阻值(电阻是A和W端的阻值,默认B端是开路的)
参    数: 无
返回值  : 无
/********************************************/
void main(void)
{
 uchar idata=0;  //初始电阻是满量程
 Board_init( );   //初始化开发板
 Twi_init( );   //初始化TWI 
 AD5161_writeB(0x580x00data); //设置初始电阻
 while(1)
 {
  if(Skey_press())    //是否有按键按下
  {
   i=Skey_scan();    //扫描并反回翻译后的键码
   switch(i)
   {
    case 0: //S1键按下,减少电阻的数字量(AD5161的特性是减少电阻的数字量,阻值增加)
 data-=16;
 break;
case 1:        //S2键按下,增加电阻的数字量
 data+=16;
 break;
case 2:        //S3键按下,使电阻的数字量为零(阻值满量程)
 data=0;
 break;
case 3:     //S3键按下,使电阻的数字量为满(阻值清零,只剩下接触电阻)
 data=255;
 break;
   }
   AD5161_writeB(0x580x00data);  //更新电阻
  }
 }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2009-07-03 10:02  avr单片机例程
     文件       15663  2007-03-03 11:14  avr单片机例程AVR_PQ1A.H
     目录           0  2009-07-03 10:02  avr单片机例程AVR_PQ1A_DEMO
     目录           0  2009-07-03 10:02  avr单片机例程AVR_PQ1A_DEMO10_DA
     文件        2488  2007-03-09 09:52  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.C
     文件        3700  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.cof
     文件        2549  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.dbg
     文件         301  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.dp2
     文件        1775  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.hex
     文件       22340  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.lis
     文件          11  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.lk
     文件       18713  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.lst
     文件         779  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.mak
     文件        1477  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.mp
     文件        5708  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.o
     文件         840  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.prj
     文件        9377  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.s
     文件          43  2007-03-09 09:49  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300.SRC
     文件        2462  2007-03-09 09:50  avr单片机例程AVR_PQ1A_DEMO10_DAAD5300._C
     文件        1850  2007-01-06 21:56  avr单片机例程AVR_PQ1A_DEMO10_DASkey.C
     目录           0  2009-07-03 10:02  avr单片机例程AVR_PQ1A_DEMO11_DS18B20
     文件        4435  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.C
     文件        6958  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.cof
     文件        3935  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.dbg
     文件         306  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.dp2
     文件        6268  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.hex
     文件       39793  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.lis
     文件          12  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.lk
     文件       45489  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.lst
     文件         801  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.mak
     文件        3537  2007-03-09 09:55  avr单片机例程AVR_PQ1A_DEMO11_DS18B20DS18B20.mp
............此处省略354个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)