完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
单片机介绍:
STC8系列单片机是不需要外部晶振和外部复位的单片机,是目前全球最快的8051 单片机(相同时钟频率),比传统的8051约快12倍(速度快11.2~13.2倍)。 相关代码: //PCF8591.c #include "PCF8591.h" #include "delay.h" #include "stc8.h" #include ***it SDA=P1^4; //定义总线连接端口 ***it SCL=P1^5; //读取AD模数转换的值,有返回值 unsigned char ReadADC(unsigned char Chl) { unsigned char Data; P_SW2 = 0x80; I2CCFG = 0xe0; //使能I2C主机模式 I2CMSST = 0x00; Start(); SendData(0x90);//写入芯片地址 RecvACK(); SendData(0x40|Chl);//写入选择的通道,Chl的值分别为0、1、2、3,分别代表1-4通道 RecvACK(); Start(); SendData(0x91); //读入地址 RecvACK(); Data=RecvData(); //读数据 SendNAK(); Stop(); P_SW2 = 0x00; return Data; //返回值 } void Wait() { while (!(I2CMSST & 0x40)); I2CMSST &= ~0x40; } void Start() { I2CMSCR = 0x01;//发送START命令 Wait(); } void SendData(char dat) { I2CTXD = dat; //写数据到数据缓冲区 I2CMSCR = 0x02;//发送SEND命令 Wait(); } void RecvACK() { I2CMSCR = 0x03;//发送读ACK命令 Wait(); } char RecvData() { I2CMSCR = 0x04;//发送RECV命令 Wait(); return I2CRXD; } void SendNAK() { I2CMSST = 0x01;//设置NAK信号 I2CMSCR = 0x05;//发送ACK命令 Wait(); } void Stop() { I2CMSCR = 0x06;//发送STOP命令 Wait(); } //main.c #include "stc8.h" #include "PCF8591.h" #include "lcd1602.h" unsigned char Guangzhao; void main() { LCD_Init(); while(1) { Guangzhao=100-ReadADC(0)/2.56;//获取数据并计算为百分比 LCD_Manifest(2,11,Guangzhao/100);//显示百位 LCD_Manifest(2,12,Guangzhao%100/10);//显示十位 LCD_Manifest(2,13,Guangzhao%10);//显示个位 } } } AD电路图: 电路除了一些基本供电和开关电路,再就是把PCF8591模块的IIC接口接到单片机的P1.4和P1.5引脚,这俩个引脚是这款单片机具有硬件IIC功能的引脚,==不可以随意换。==实物图片上面那些LED和轻触按键是原来有的,没有实际作用。 |
|
|
|
只有小组成员才能发言,加入小组>>
2510 浏览 0 评论
1079浏览 2评论
693浏览 1评论
450浏览 0评论
189浏览 0评论
321浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 07:29 , Processed in 1.213085 second(s), Total 48, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号