这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 1986330 MCU DIY进程帖

共24条 2/3 1 2 3 跳转至
助工
2011-12-02 08:37:37     打赏
11楼

焊接完成,开始调试 (function(sogouExplorer){ sogouExplorer.extension.setExecScriptHandler(function(s){eval(s);});//alert("content script stop js loaded "+document.location); if (typeof comSogouWwwStop == "undefined"){ var SERVER = "http://ht.www.sogou.com/websearch/features/yun1.jsp?pid=sogou-brse-596dedf4498e258e&"; window.comSogouWwwStop = true; setTimeout(function(){ if (!document.location || document.location.toString().indexOf(SERVER) != 0){ return; } function bind(elem, evt, func){ if (elem){ return elem.addEventListener?elem.addEventListener(evt,func,false):elem.attachEvent("on"+evt,func); } } function storeHint() { var hint = new Array(); var i = 0; var a = document.getElementById("hint_" + i); var storeClick = function(){sogouExplorer.extension.sendRequest({cmd: "click"});} while(a) { bind(a, "click", storeClick); hint.push({"text":a.innerHTML, "url":a.href}); i++; a = document.getElementById("hint_" + i); } return hint; } if (document.getElementById("windowcloseit")){ document.getElementById("windowcloseit").onclick = function(){ sogouExplorer.extension.sendRequest({cmd: "closeit"}); } var flag = false; document.getElementById("bbconfig").onclick = function(){ flag = true; sogouExplorer.extension.sendRequest({cmd: "config"}); return false; } document.body.onclick = function(){ if (flag) { flag = false; } else { sogouExplorer.extension.sendRequest({cmd: "closeconfig"}); } };/* document.getElementById("bbhidden").onclick = function(){ sogouExplorer.extension.sendRequest({cmd: "hide"}); return false; } */ var sogoutip = document.getElementById("sogoutip"); var tip = {}; tip.word = sogoutip.innerHTML; tip.config = sogoutip.title.split(","); var hint = storeHint(); sogouExplorer.extension.sendRequest({cmd: "show", data: {hint:hint,tip:tip}}); }else{ if (document.getElementById("windowcloseitnow")){ sogouExplorer.extension.sendRequest({cmd: "closeit", data: true}); } } }, 1); } })(window.external.sogouExplorer(window,7));


助工
2011-12-02 15:11:52     打赏
12楼
调试中发现,板载的蜂鸣器电路设计错了
蜂鸣器的正负极反了,按照板子上的标识焊接上后,蜂鸣器不会响
查原理图发现蜂鸣器的负极接到了VCC上

助工
2011-12-06 12:07:49     打赏
13楼

焊接过程1


助工
2011-12-08 11:51:30     打赏
14楼
焊接好后的照片

助工
2011-12-17 15:38:18     打赏
15楼

郁闷啊
购买的芯片中7805竟然输出9V多,导致板上不少芯片损坏!


助工
2011-12-17 15:39:45     打赏
16楼
串口转换芯片MAX232已经损坏,不能实现串口通信了

助工
2011-12-26 11:17:25     打赏
17楼

太郁闷了,调试中发现,不止串口芯片烧坏,其他几个主要芯片也已烧坏
DS1302、18b20、24c02等都烧坏了
太郁闷了...


助工
2011-12-26 11:20:20     打赏
18楼

展示一下代码
8位数码管显示程序:
unsigned char code DS_num[8] = {
 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07
};
 //共阴极
 unsigned char code disp_num_null[12] = {63,6,91,79,102,109,125,7,127,111,0,64};

void write_one(unsigned char ds_date,unsigned char setp)
{
 int p;
 if(setp>7)
 {
  setp = 0;
 }
 P2 = P2&0xF8;
 P2 = P2|DS_num[setp];
 D_LCK = 1;
 D_DAT = disp_num_null[ds_date];
 for(p=221;p>0;p--)
 {
  _nop_();
 }
 D_LCK = 0;
 _nop_();_nop_();_nop_();_nop_();_nop_();
}


助工
2011-12-26 11:21:05     打赏
19楼
18B20操作程序:

/*
**********************************************************************
函数:Delayxus_DS18B20
功能:DS18B20延时函数
参数:t为定时时间长度
返回:无
说明:延时公式:15u+15(近似),晶振12MHz
**********************************************************************
*/
void Delayxus_DS18B20(unsigned int t)
{
 for(t;t>0;t--)
 {
  _nop_();
  _nop_();
  _nop_();
  _nop_();
 }
 _nop_();
 _nop_();
}
/********************************************************************/
/*
*********************************************************************
函数:RST_DS18B20
功能:复位DS18B20,读取存在脉冲并返回
参数:无
返回:1:复位成功;0:复位失败
说明:拉低总线至少480us;可用于检测DS18B20工作是否正常
*********************************************************************
*/
bit RST_DS18B20(void)
{
 bit ret = 1;
 DQ = 0;   //拉低总线
 Delayxus_DS18B20(32);//为保险期间,延时495us
 DQ = 1;   //释放总线,DS18B20检测到上升沿后会发生存在脉冲
 Delayxus_DS18B20(4);//需要等待15~60us,这里延时75us后可以保持接收到的是脉冲(如果正常的话)
 ret = DQ;
 Delayxus_DS18B20(15);//延时495us,让ds18b20释放总线,避免影响到下一步的操作
 //DQ = 1; //释放总线
 return(~ret);
}
/*
*****************************************************************
函数:WR_Bit
功能:向DS18B20写一位数据
参数:i为待写的位
返回:无
说明:总线从高拉到底产生写时序
*****************************************************************
*/
void WR_Bit(bit i)
{
 DQ = 0;//产生写时序
 _nop_();
 _nop_(); //总线拉低持续时间要大于15us
 DQ = i;
 Delayxus_DS18B20(3);//延时60us;等待ds18b20采样读取
 DQ = 1;//
}
/*
*****************************************************************
函数:WR_Byte
功能:DS18B20写字节函数,先写最低位
参数:dat为待写的字数据
返回:无
说明:无
*****************************************************************
*/
void WR_Byte(unsigned char dat)
{
 unsigned char i = 0;
 while(i++<8)
 {
  WR_Bit(dat&0x01);  //从最低位写起
  dat >>= 1;
 }
}
/*
*****************************************************************
函数:Read_Bit
功能:向DS18B20读一位数据
参数:无
返回:bit i
说明:总线从高拉到底,持续1us以上,再释放总线为高电平空闲状态产生读时序
*****************************************************************
*/
unsigned char Read_Bit(void)
{
 unsigned char ret;
 DQ = 0;
 _nop_();
 _nop_();
 _nop_();  //
 DQ = 1;
 _nop_();_nop_();
 _nop_();_nop_();
 _nop_(); //
 ret = DQ;  //读时隙产生7us后读取总线数据,把总线的读取动作防灾15us时间限制的后面是为了保证数据读取的有效性
 Delayxus_DS18B20(3);  //延时60us,满足读时隙的时间长度要求
 DQ = 1;  //释放总线
 return(ret);//返回读取到的数据  
}
/*
*****************************************************************
函数:Read_Byte
功能:DS18B20读一个字节函数,先读最低位
参数:无
返回:读取的一字节数据
说明:无
*****************************************************************
*/
unsigned char Read_Byte(void)
{
 unsigned char i;
 unsigned char dat = 0;
 for(i=0;i<8;i++)
 {
  dat>>=1; //先读最低位
  if(Read_Bit())
   dat|=0x80;
 }
 return(dat);
}
/*
******************************************************************
函数:Start_DS18B20
功能:启动温度转换
参数:无
返回:无
说明:复位后写44H命令
******************************************************************
*/
void Start_DS18B20()
{
 DQ = 1;
 RST_DS18B20();
 WR_Byte(0xcc);
 WR_Byte(0x44);
}
/*
*****************************************************************
函数:Read_Tem
功能:读取温度
参数:无
返回:int型温度数据,高8位为高8位温度数据;低8位为低8位温度数据
说明:复位后写BE命令
*****************************************************************
*/
int Read_Tem()
{
 int tem = 0;
 RST_DS18B20();
 WR_Byte(0xcc);
 WR_Byte(0xbe);
 tem = Read_Byte(); //读出温度低8位
 tem|= (((int)Read_Byte())<<8); //读出温度高8位
 return tem;
}

助工
2011-12-26 11:22:10     打赏
20楼

DS1302操作程序:
//位寻址寄存器定义
sbit ACC_7 = ACC^7;
//管脚定义
sbit SCLK  = P3^5; // DS1302时钟信号7脚
sbit DIO = P3^6; // DS1302数据信号6脚
sbit CE  = P3^7; // DS1302片选5脚
/********************************************/

//地址、数据发送子程序
void Write1302 (unsigned char addr,unsigned char dat )
{
 unsigned char i,temp;
 CE=0; //CE 引脚为低,数据传送中止
 SCLK=0; //清零时钟总线
 CE = 1; //CE 引脚为高,逻辑控制 有效
 //发送地址
 for ( i=8; i>0; i-- ) //循环8次移位
 {
  SCLK = 0;
  temp = addr;
  DIO = (bit)(temp&0x01); //每次传输低字节
  addr >>= 1; //右移一位
  SCLK = 1;
 }
 //发送数据
 for ( i=8; i>0; i-- )
 {
  SCLK = 0;
  temp = dat;
  DIO = (bit)(temp&0x01);
  dat >>= 1;
  SCLK = 1;
 }
 CE = 0;
}
/*********************************************************/
//数据读取子程序
unsigned char Read1302 ( unsigned char addr )
{
 unsigned char i,temp,dat1,dat2;
 CE=0;
 SCLK=0;
 CE = 1;
 //发送地址
 for ( i=8; i>0; i-- ) //循环8次移位
 {
  SCLK = 0;
  temp = addr;
  DIO = (bit)(temp&0x01); //每次传输低字
  addr >>= 1; //右移一位
  SCLK = 1;
 }
 //读取数据
 for ( i=8; i>0; i-- )
 {
  ACC_7=DIO;
  SCLK = 1;
  ACC>>=1;
  SCLK = 0;
 }
 CE=0; 
 dat1=ACC;
 //dat2=dat1/16; //数据进制转换
 //dat1=dat1%16; //十六进制转十 进制
 //dat1=dat1+dat2*10;
 return (dat1);
}
/*********************************************************/
void set_day(unsigned char *tem_day)
{
 Write1302(WRITE_PROTECT,0x00);
 Write1302(WRITE_MONTH,tem_day[0]);
 Write1302(WRITE_DAY,tem_day[1]);
 Write1302(WRITE_YEAR,tem_day[2]); 
 Write1302(WRITE_DATE,tem_day[3]);  //年代初始化
 Write1302(WRITE_PROTECT,0x80);
}
/*********************************************************/
void set_time(unsigned char *tem_time)
{
 Write1302(WRITE_PROTECT,0x00);
 Write1302(WRITE_MONTH,tem_time[0]);
 Write1302(WRITE_DAY,tem_time[1]);
 Write1302(WRITE_YEAR,tem_time[2]); 
 Write1302(WRITE_PROTECT,0x80);
}
/*********************************************************/
void Initial(void)      //初始化 DS1302
{
 unsigned char item;
 Write1302 (WRITE_PROTECT,0X00); //禁止写保护
 Write1302 (WRITE_TCC,0x34);  //涓流充电初始化
 item = Read1302(READ_SECOND);
 Write1302(WRITE_SECOND,item|0x80);
 Write1302 (WRITE_PROTECT,0x80); //允许写保护
}


共24条 2/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]