单片机源程序如下:
/**********************51实验开发板例程************************
* 平台:HJ-C52 + Keil U4 + STC89C52RD
******************************************************************/
/*-----------------------------------------------
名称:IIC协议 PCF8591ADDA转换
内容:此程序通过IIC协议对DAAD芯片操作, 并输出模拟量,用LED亮度渐变指示
------------------------------------------------*/
#include #include #define AddWr 0x90 //写数据地址 #define AddRd 0x91 //读数据地址 sbit RST=P2^4; //关掉时钟芯片输出 sbit Sda=P2^0; //定义总线连接端口 sbit Scl=P2^1; sbit Fm=P2^3; //FM sbit dula=P2^6; sbit wela=P2^7; bit ADFlag; //定义AD采样标志位 unsigned char code Datatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//7段数共阴码管段码表 data unsigned char Display[8];//定义临时存放数码管数值 /*------------------------------------------------ 延时程序 ------------------------------------------------*/ void mDelay(unsigned char j) { unsigned int i; for(;j>0;j--) { for(i=0;i<125;i++) {;} } } /*------------------------------------------------ 初始化定时器1 ------------------------------------------------*/ void Init_Timer1(void) { TMOD |= 0x10; TH1=0xff; /* Init value */ TL1=0x00; //PT1=1; /* 优先级 */ EA=1; /* interupt enable */ ET1=1; /* enable timer1 interrupt */ TR1=1; } /*------------------------------------------------ 启动IIC总线 ------------------------------------------------*/ void Start(void) { Sda=1; _nop_(); Scl=1; _nop_(); Sda=0; _nop_(); Scl=0; } /*------------------------------------------------ 停止IIC总线 ------------------------------------------------*/ void Stop(void) { Sda=0; _nop_(); Scl=1; _nop_(); Sda=1; _nop_(); Scl=0; } /*------------------------------------------------ 应答IIC总线 ------------------------------------------------*/ void Ack(void) { Sda=0; _nop_(); Scl=1; _nop_(); Scl=0; _nop_(); } /*------------------------------------------------ 非应答IIC总线 ------------------------------------------------*/ void NoAck(void) { Sda=1; _nop_(); Scl=1; _nop_(); Scl=0; _nop_(); } /*------------------------------------------------ 发送一个字节 ------------------------------------------------*/ void Send(unsigned char Data) { unsigned char BitCounter=8; unsigned char temp; do { temp=Data; Scl=0; _nop_(); if((temp&0x80)==0x80) Sda=1; else Sda=0; Scl=1; temp=Data<<1; Data=temp; BitCounter--; } while(BitCounter); Scl=0; } /*------------------------------------------------ 读入一个字节并返回 ------------------------------------------------*/ unsigned char Read(void) { unsigned char temp=0; unsigned char temp1=0; unsigned char BitCounter=8; Sda=1; do { Scl=0; _nop_(); Scl=1; _nop_(); if(Sda) temp=temp|0x01; else temp=temp&0xfe; if(BitCounter-1) { temp1=temp<<1; temp=temp1; } BitCounter--; } while(BitCounter); return(temp); } /*------------------------------------------------ 写入DA数模转换值 ------------------------------------------------*/ void DAC(unsigned char Data) { Start(); Send(AddWr); //写入芯片地址 Ack(); Send(0x40); //写入控制位,使能DAC输出 Ack(); Send(Data); //写数据 Ack(); Stop(); } /*------------------------------------------------ 读取AD模数转换的值,有返回值 ------------------------------------------------*/ unsigned char ReadADC(unsigned char Chl) { unsigned char Data; Start(); //写入芯片地址 Send(AddWr); Ack(); Send(0x40|Chl);//写入选择的通道,本程序只用单端输入,差分部分需要自行添加 //Chl的值分别为0、1、2、3,分别代表1-4通道 Ack(); Start(); Send(AddRd); //读入地址 Ack(); Data=Read(); //读数据 Scl=0; NoAck(); Stop(); return Data; //返回值
上一篇:单片机汇编 设晶振频率为11.0592M,串口工作方式1
下一篇:rs485 16路继电器控制板 仿modbus通信协议控制有上下位机程序
推荐阅读
史海拾趣
随着科技的进步,客户对电子元器件的性能要求也越来越高。CalRamic Technologies意识到,要想在激烈的市场竞争中脱颖而出,必须不断进行技术创新。因此,公司投入大量资源进行产品研发,特别是在陶瓷电容器领域取得了显著的技术突破。他们开发的新型陶瓷电容器不仅体积更小,性能也更加稳定,很快就受到了市场的热烈欢迎。
在国内市场取得一定成绩后,捷嘉电子开始将目光投向国际市场。通过与国外知名企业的合作,公司成功将产品出口到数十个国家。这一过程中,捷嘉电子不仅面临着文化差异、法律法规等挑战,还需要应对国际市场竞争的复杂性。然而,凭借着过硬的产品质量和专业的服务,捷嘉电子逐渐在国际市场上赢得了良好的口碑。
近期,启英泰伦完成了数千万元的B++轮融资,由水木春锦资本、盛裕资本和自觉资本共同投资。这笔资金将主要用于产品的大规模量产和新产品的研发,以进一步加速启英泰伦在智能语音芯片市场的布局。资本的注入不仅为公司的发展提供了强有力的支持,也反映了市场对启英泰伦技术和市场前景的认可。
随着业务的不断拓展,福禄克意识到全球化布局的重要性。1970年代,公司在英国设立了首个海外生产基地,随后又在荷兰和中国等地建立工厂。这一系列举措不仅降低了生产成本,还使福禄克能够更贴近全球市场需求,提供更加快速和灵活的服务。同时,福禄克在全球范围内建立了广泛的销售和服务网络,进一步巩固了其市场地位。
FARNELL公司成立于1937年,由创始人在英国利兹创建。起初,公司专注于电子元器件的分销,凭借其优质的产品和可靠的供货能力,逐渐在电子行业中崭露头角。在那个时代,电子产品正处于快速发展阶段,FARNELL公司凭借其前瞻性的市场洞察力和灵活的供应策略,赢得了众多客户的信赖。
瑞萨科技于2003年4月由日立制作所和三菱电机的半导体部门合并成立,致力于提供移动通信、汽车电子以及PC/AV(数码家电)领域的半导体解决方案。在全球汽车半导体市场中,瑞萨占有7.1%的市场份额,排名第四位;在日本市场中占据第一位,市场份额为 ...… 查看全部问答∨ |
|
大家好,刚刚玩液晶,一直对动态波形的显示很有兴趣,于是买书看了几天,学会了画线,画圆,而且很想知道医用脉搏检测的原理,于是做了一个最简单的.家里只能找到这些东西,没有时间去做精细的设计,以后到赛格去买,慢慢完善,这次仅作原理验证,希望大家不要 ...… 查看全部问答∨ |
|
由于我现在正在给一个项目做软件测试,这个项目的程序是C实现的,而且是嵌入式开发项目。ps:我是在校学生,给老师干活~ 看到了很多工具,例如VcTester,codetest,UniText,Logiscope等等 ms很多都是只提供共享版和商业版,感觉下载测试软件比一 ...… 查看全部问答∨ |
大家好! 我用F28335做了一块板子,电源用tps767d301来供电,内核电压1.9V与I/O电压3.3V都完全正常,程序不运行时TI_tps767d301芯片温度正常,但是一开始仿真运行程序是,其温度急剧升高,以致烫手,请问这是什么原因?电源电路完全照 ...… 查看全部问答∨ |
我的CCs在设置好,保存启动时出现Error adding memory map range :End address is beyond target memory length 大侠们帮一忙 小弟谢谢了… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- 【双11特别推荐】新产品,新方案,#TI“芯”世界#之电机驱动器
- TI 最新CapTIvate™ 触控微控制器技术直播开始报名喽!报名参与有礼呦!
- TI 样片免费申请,晒样片赢好礼!
- ADI•世健工业嘉年华——深度体验:ADI伺服电机控制方案
- 是德科技有奖问答活动之四,使用实时示波器进行串扰分析,答题闯关赢好礼!
- 【问题征集】大学生美国TI行,你问我送礼!
- 下载汽车电气化精品文章,赢【体脂秤、罗技鼠标、手持风扇】,开启MPS汽车技术进阶之旅!
- EEWORLD十周年为你而任性——上百块ST开发板团购盛宴开始啦!49元包邮,发帖还返现
- 直播已结束【借助 TI DLP 技术,开始您的下一代4K显示应用设计】
- 【评论有礼】大话CC2650,从资料到例程、从应用到生态全方位讲解!