10065|0

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

十万火急!!!请教各位大虾有关TLC2543 A/D转换的问题,望不吝赐教!!!~ [复制链接]

TLC2543输出至MCU后,在HD7279控制下的数码管显示的数值不稳定,一直在变化! 以下是小生写的程序: #include <absacc.h> #include <reg51.h> #include <math.h> #include <stdio.h> #include <reg51.h> #include <intrins.h> sbit cs= P1^4; // cs at P1.4 sbit clk=P1^5; // clk 连接于 P1.5 sbit dat=P1^2; // dat 连接于 P1.2 sbit key=P1^3; // key 连接于 P1.3 sbit AD_CLK= P3^0; sbit AD_INT= P3^1; sbit AD_OUT= P3^2; sbit AD_CS = P3^3; #define uint unsigned int #define uchar unsigned char void long_delay(void); // 长延时 void short_delay(void); // 短暂延时 void delay10ms(unsigned char); // 延时10MS void write7279(unsigned char, unsigned char); // 写入到HD7279 unsigned char read7279(unsigned char); // 从HD7279读出 void send_byte(unsigned char); // 发送一个字节 unsigned char receive_byte(void); // 接收一个字节 long tlc2543_out(uchar port); void tlc2543(void); unsigned int tmr,rg,rs,rb,rq; unsigned long advalue0,advalue3; float advalue1,advalue2; //****** HD7279A 指令 ****** #define CMD_RESET 0xa4 #define CMD_TEST 0xbf #define DECODE0 0x80 #define DECODE1 0xc8 #define UNDECODE 0x90 #define RLC 0xa3 #define RRC 0xa2 #define RL 0xa1 #define RC 0xa0 #define HIDE 0x98 #define FLASH 0x88 #define SEGON 0xe0 #define SEGOFF 0xc0 #define CMD_READ 0x15 /************************************** 名称:delay 功能:延时模块 *************************************/ void long_delay(void) { unsigned char i; for (i=0;i<0x30;i++); } void short_delay(void) { unsigned char i; for (i=0;i<8;i++); } void delay(uchar n) { uchar i; for(i=0;i<n;i++) { _nop_(); } } void delay10ms(unsigned char time) { unsigned char i; unsigned int j; for (i=0;i<time;i++) { for(j=0;j<0x390;j++) { if (!key) { // key_number=read7279(CMD_READ); // 读出键码 // write7279(DECODE1,key_number&0x0f); // key_int(); } } } } void send_byte( unsigned char out_byte) { unsigned char i; cs=0; long_delay(); for (i=0;i<8;i++) { if (out_byte&0x80) { dat=1; } else { dat=0; } clk=1; short_delay(); clk=0; short_delay(); out_byte=out_byte*2; } dat=0; } void write7279(unsigned char cmd, unsigned char dta) { send_byte (cmd); send_byte (dta); } void dispData() { rq= (advalue3/1000); rb= (advalue3- rq*1000)/100; rs= (advalue3 - rq*1000 -rb*100)/10; rg= (advalue3 - rq*1000 -rb*100 - rs*10); write7279(DECODE1+4,rg); write7279(DECODE1+5,rs); write7279(DECODE1+6,rb); write7279(DECODE1+7,rq); // for (j=0;j<4;j++) // write7279(DECODE1+7-j,digit[j]&0x0f); } /************************************** 名称:tlc2543_out 功能:TLC2543模块 *************************************/ long tlc2543_out(unsigned char port) { unsigned int i; long ad=0; AD_CLK=0; AD_CS=0; for(i=0;i<12;i++) { if(AD_OUT) ad|=0x01; AD_INT=(bit)(port&0x80); AD_CLK=1; delay(3); AD_CLK=0; delay(3); ad=ad<<1; } AD_CS=1; ad=ad>>1; return ad; } void tlc2543() { uint ad; while(1) { ad=tlc2543_out(0); delay10ms(300); advalue0=ad; advalue1=advalue0*0.001220703125; advalue2=advalue1*1000; advalue3=advalue2; delay10ms(300); dispData(); write7279(FLASH,0xff); } } //***MAIN***// void main() { while (1) { for (tmr=0;tmr<0x2000;tmr++); send_byte(CMD_RESET); tlc2543(); } } 此贴希望尽快回复,否则将在二十四小时后自动删除!
此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表