当前位置: 首页 > news >正文

中国站长站最好看免费观看高清视频了

中国站长站,最好看免费观看高清视频了,想要注册一个公司网站怎么做,php动态网站开发外文文献基于STC12C5A60S2系列1T 8051单片的IIC总线器件数模芯片PCF8591实现数模转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍IIC总线器件数模芯片PCF8591介绍通过按…

基于STC12C5A60S2系列1T 8051单片的IIC总线器件数模芯片PCF8591实现数模转换应用

  • STC12C5A60S2系列1T 8051单片机管脚图
  • STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置
  • STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍
  • IIC总线器件数模芯片PCF8591介绍
    • 通过按键调节IIC总线器件数模芯片PCF8591输出模拟量控制LED灯亮度

STC12C5A60S2系列1T 8051单片机管脚图

在这里插入图片描述在这里插入图片描述

STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置

在这里插入图片描述

STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍

在这里插入图片描述在这里插入图片描述

IIC总线器件数模芯片PCF8591介绍

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

通过按键调节IIC总线器件数模芯片PCF8591输出模拟量控制LED灯亮度

在这里插入图片描述

#include <stc12c5a60s2.h>
#include <intrins.h>
#define uchar unsigned char//自定义无符号字符型为uchar
#define uint unsigned int//自定义无符号整数型为uint 
#define KeyPressDeshakeTime 10//自定义按键按下消抖时间为10ms
#define KeyLongPressDelayTime 500//自定义按键长按延时时间为500ms
#define KeyLongPressIntervalChangeTime 25//自定义按键长按间隔变化时间为25ms
uchar AddKeyLockFlag;//声明增加按键锁定标志位变量
uchar DecKeyLockFlag;//声明减少按键锁定标志位变量
uchar KeyNumber = 0;//定义按键键值为0
uchar AddKeyLongPressAddIntervalTime;//声明增加按键长按连增间隔时间变量
uchar DecKeyLongPressDecIntervalTime;//声明减少按键长按连减间隔时间变量
uchar NumberValue;//声明数字量变量
uint AddKeyPressDelayTime;//声明增加按键按下延时时间变量
uint DecKeyPressDelayTime;//声明减少按键按下延时时间变量
//uint Timer0TimeCount;//声明定时器0定时计数变量
sbit AddKey = P2^0;//位定义增加按键为单片机P2.0引脚
sbit DecKey = P2^1;//位定义减少按键为单片机P2.1引脚
sbit I2CSCL = P1^0;//位定义I2C时钟变量为P1.0端口
sbit I2CSDA = P1^1;//位定义I2C数据变量为P1.1端口void PCF8591Change(uchar Address,uchar Data)//PCF8591转化函数
{I2CStar();//I2C启动函数I2CWriteByte(Address);//I2C写字节函数I2CWriteByte(0x40);//I2C写器件地址I2CWriteByte(Data);//I2C写数据I2CStop();//I2C停止函数}void I2CDelay()//I2C延时函数
{_nop_();_nop_();_nop_();_nop_();}void I2CStar()//I2C启动函数
{I2CSCL = 1;//空闲时 I2C时钟变量置高电平I2CSDA = 1;//空闲时 I2C数据变量置高电平I2CDelay();//I2C延时I2CSDA = 0;//I2C数据变量置低电平I2CDelay();//I2C延时I2CSCL = 0;//I2C时钟变量置低电平}bit I2CWriteByte(uchar Data)//I2C写字节函数
{uchar Temp;//声明临时变量bit Ack;//声明一位应答变量for(Temp = 0x80;Temp = !0;Temp >>= 1)//从某八位二进制数的最高位往最低位每次移出一位二进制数 取变化后的八位二进制数进行下一步从最高位往最低位每次右移出一位二进制数 直到写完某八位二进制数的每一位二进制数{if((Temp & Data) == 0)//判断临时变量包含的数据与上输入数模芯片PCF8591的八位二进制数得出八位二进制数最高位是否为0I2CSDA = 0;//I2C数据变量写0else//否则I2CSDA = 1;//I2C数据变量写1I2CDelay();//I2C延时I2CSCL = 1;//I2C时钟变量置高电平I2CDelay();//I2C延时I2CSCL = 0;//I2C时钟变量置低电平}Ack = I2CReceiveAck();//I2C接收应答函数接收应答赋给应答变量return (Ack);//返回应答}void SendAck(bit Ack)//I2C发送应答函数
{I2CSDA = Ack;//应答变量赋给I2C数据变量I2CDelay();//I2C延时I2CSCL = 1;//I2C时钟变量置高电平I2CDelay();//I2C延时I2CSCL = 0;//I2C时钟变量置低电平}bit ReceiveAck()//I2C接收应答函数
{bit Ack;//声明一位应答变量I2CSDA = 1;//I2C数据变量置高电平I2CDelay();//I2C延时I2CSCL = 1;//I2C时钟变量置高电平Ack = I2CSDA;//I2C数据变量I2CDelay();//I2C延时I2CSCL = 0;//I2C时钟变量置低电平return (Ack);//返回应答}uchar I2CReadByte()//I2C读字节函数
{uchar Data;//声明数据变量uchar Temp;//声明临时变量I2CSDA = 1;//I2C数据变量置高电平for(Temp = 0x80;Temp = !0;Temp >>= 1)//从某八位二进制数的最高位往最低位每次右移出一位二进制数 取变化后的八位二进制数进行下一步从最高位往最低位每次右移出一位二进制数 直到读完某八位二进制数的每一位二进制数{I2CDelay();//I2C延时I2CSCL = 1;//I2C时钟变量置高电平if(I2CSDA == 1)//判断I2C数据变量是否置高电平{Data |= Temp;//临时变量包含的数据或上某八位二进制数读出八位二进制数最高位为1}else//否则{Data &= ~Temp;//临时变量包含的数据与上某八位二进制数读出八位二进制数最高位为0}I2CDelay();//I2C延时I2CSCL = 0;//I2C时钟变量置低电平}return Data;//返回数据变量}void I2CStop()//I2C停止函数
{I2CSCL = 0;//I2C时钟变量置低电平I2CSDA = 0;//I2C数据变量置低电平I2CDelay();//I2C延时I2CSCL = 1;//I2C时钟变量置高电平I2CDelay();//I2C延时I2CSDA = 1;//I2C数据变量置高电平I2CDelay();//I2C延时}void KeyScan()//按键扫描函数 该函数放在定时器定时1ms的中断函数中扫描
{if(AddKey)//如果增加按键没按下或弹起{AddKeyLockFlag = 0;//增加按键锁定标志位清0AddKeyPressDelayTime = 0;//增加按键按下延时时间清0}   else if(!AddKeyLockFlag)//如果增加按键锁定标志位置1 即增加按键按下{AddKeyPressDelayTime++;//增加按键按下延时时间自加if(AddKeyPressDelayTime > KeyPressDeshakeTime)//如果增加按键按下延时时间大于按键按下消抖时间{AddKeyPressDelayTime = 0;//增加按键按下延时时间清0KeyNumber = 1;//按键键值置1 此处是单击增加 可赋给swicth()语句中的变量来对数值单击增加AddKeyLockFlag = 1;//增加按键锁定标志位置1}}else if(AddKeyPressDelayTime < KeyLongPressDelayTime)//如果增加按键按下延时时间小于按键长按延时时间{AddKeyPressDelayTime++;//增加按键按下延时时间自加}else//如果增加按键按下延时时间大于按键长按延时时间{AddKeyLongPressAddIntervalTime++;//增加按键长按连增间隔时间自加if(AddKeyLongPressAddIntervalTime > KeyLongPressIntervalChangeTime)//如果增加按键长按连增间隔时间大于按键长按间隔变化时间{AddKeyLongPressAddIntervalTime = 0;//增加按键长按连增间隔时间清0KeyNumber = 1;//按键键值置1 此处是连击增加 可赋给swicth()语句中的变量来对数值连击增加}}   if(DecKey)//如果减少按键没按下或弹起{DecKeyLockFlag = 0;//减少按键锁定标志位清0DecKeyPressDelayTime = 0;//减少按键按下延时时间清0}   else if(!DecKeyLockFlag)//如果减少按键锁定标志位置1 即减少按键按下{DecKeyPressDelayTime++;//减少按键按下延时时间自加if(DecKeyPressDelayTime > KeyPressDeshakeTime)//如果减少按键按下延时时间大于按键按下消抖时间{DecKeyPressDelayTime = 0;//减少按键按下延时时间清0KeyNumber = 2;//按键键值置2 此处是单击减少 可赋给swicth()语句中的变量来对数值单击减少DecKeyLockFlag = 1;//减少按键锁定标志位置1}}else if(DecKeyPressDelayTime < KeyLongPressDelayTime)//如果减少按键按下延时时间小于按键长按延时时间{DecKeyPressDelayTime++;//减少按键按下延时时间自加}else//如果减少按键按下延时时间大于按键长按延时时间{DecKeyLongPressDecIntervalTime++;//减少按键长按连减间隔时间自加if(DecKeyLongPressDecIntervalTime > KeyLongPressIntervalChangeTime)//如果减少按键长按连减间隔时间大于按键长按间隔变化时间{DecKeyLongPressDecIntervalTime = 0;//减少按键长按连减间隔时间清0KeyNumber = 2;//按键键值置2 此处是连击减少 可赋给swicth()语句中的变量来对数值连击减少}}}void NumberValueSet()//数字量数值设置函数
{switch(KeyNumber)//按键类型筛选位{case 1 ://增加按键单击、长按触发位NumberValue++;//数字量数值自加if(NumberValue > 255)//如果数字量数值大于255 为啥数字量数值变量NumberValue取255来比较?由于数字量数值变量NumberValue要计入PCF8591转换器 而PCF8591转换器是十位寄存器 最大只能计入255 因此数字量数值变量NumberValue取255来比较{NumberValue = 255;//数字量数值等于255}KeyNumber = 0;//按键键值清0break;//跳出case 2 ://减少按键单击、长按触发位NumberValue--;//数字量数值自减if(NumberValue < 0)//如果数字量数值小于0{NumberValue = 0;//数字量数值清0}KeyNumber = 0;//按键键值清0break;//跳出default:break;//跳出}}void Timer0Init()//定时器0的16位定时模式1用12分频定时1ms初始化函数 晶振为12MHz
{AUXR &= 0x7f;//设定定时器/计数器模式为12TTMOD &= 0xf0;//设定定时器/计数器工作模式清0TMOD |= 0x01;//设定定时器/计数器为定时器 工作模式为16位定时器0模式1TH0 = 0xfc;//设定定时器0高8位初值 TL0 = 0x18;//设定定时器0低8位初值TF0 = 0;//定时器0溢出中断标志位清0ET0 = 1;//打开定时器中断开关EA = 1;//打开定时器中断总开关TR0 = 1//打开定时器0开关} void Timer0() interrupt 1//定时器0的16位定时模式1用12分频定时1ms中断函数 晶振为12MHz
{TR0 = 0;//关定时器0开关/***Timer0TimeCount++;//定时器0定时计数自加if(Timer0TimeCount >= 10)//10ms时间到{Timer0TimeCount = 0;//定时器0定时计数清0PCF8591Change(NumberValue);//PCF8591转化函数 }***/KeyScan();//按键扫描函数TH0 = 0xfc;//设定定时器0高8位初值TL0 = 0x18;//设定定时器0低8位初值TR0 = 1;//开定时器0开关} void main()//主函数
{Timer0Init();//定时器0的16位定时模式1用12分频定时1ms初始化函数 晶振为12MHzNumberValueSet();//数字量数值设置函数while(1)//主循环{PCF8591Change(0x90,NumberValue);//PCF8591转化函数 }} 

文章转载自:
http://jumbal.tyjp.cn
http://electrum.tyjp.cn
http://diarrhoea.tyjp.cn
http://tucket.tyjp.cn
http://gesticulation.tyjp.cn
http://misascription.tyjp.cn
http://permanence.tyjp.cn
http://pan.tyjp.cn
http://ferroconcrete.tyjp.cn
http://baneberry.tyjp.cn
http://recultivate.tyjp.cn
http://sabulous.tyjp.cn
http://expressible.tyjp.cn
http://racer.tyjp.cn
http://allopelagic.tyjp.cn
http://gamelin.tyjp.cn
http://parturifacient.tyjp.cn
http://bas.tyjp.cn
http://misunderstanding.tyjp.cn
http://ghoul.tyjp.cn
http://causeless.tyjp.cn
http://retinoscope.tyjp.cn
http://scratch.tyjp.cn
http://zeaxanthin.tyjp.cn
http://refractory.tyjp.cn
http://charactery.tyjp.cn
http://rachis.tyjp.cn
http://jooked.tyjp.cn
http://cataclastic.tyjp.cn
http://cryptobranchiate.tyjp.cn
http://untaa.tyjp.cn
http://trimethylglycine.tyjp.cn
http://gymnasium.tyjp.cn
http://cirriped.tyjp.cn
http://middlescent.tyjp.cn
http://spurt.tyjp.cn
http://analytical.tyjp.cn
http://superatomic.tyjp.cn
http://hopping.tyjp.cn
http://stoneman.tyjp.cn
http://msp.tyjp.cn
http://nondisorimination.tyjp.cn
http://homozygous.tyjp.cn
http://granita.tyjp.cn
http://moctezuma.tyjp.cn
http://trithing.tyjp.cn
http://adapt.tyjp.cn
http://pentadactyl.tyjp.cn
http://bibitory.tyjp.cn
http://bromyrite.tyjp.cn
http://gazetteer.tyjp.cn
http://protyl.tyjp.cn
http://nyu.tyjp.cn
http://banefully.tyjp.cn
http://cpc.tyjp.cn
http://tolane.tyjp.cn
http://shucks.tyjp.cn
http://biauriculate.tyjp.cn
http://whisper.tyjp.cn
http://hallucinogen.tyjp.cn
http://bellmouthed.tyjp.cn
http://apportionment.tyjp.cn
http://piton.tyjp.cn
http://binoculars.tyjp.cn
http://soucar.tyjp.cn
http://paleogeophysics.tyjp.cn
http://chlordane.tyjp.cn
http://iberia.tyjp.cn
http://ribbed.tyjp.cn
http://wadeable.tyjp.cn
http://clipboard.tyjp.cn
http://gustavian.tyjp.cn
http://symphonism.tyjp.cn
http://bouquetin.tyjp.cn
http://noser.tyjp.cn
http://musjid.tyjp.cn
http://microtomy.tyjp.cn
http://dependability.tyjp.cn
http://flashbulb.tyjp.cn
http://juvenilize.tyjp.cn
http://unwritten.tyjp.cn
http://honorand.tyjp.cn
http://breach.tyjp.cn
http://pythagorist.tyjp.cn
http://xhosa.tyjp.cn
http://redbug.tyjp.cn
http://geodesy.tyjp.cn
http://wcdma.tyjp.cn
http://cornelius.tyjp.cn
http://tyrannical.tyjp.cn
http://slide.tyjp.cn
http://red.tyjp.cn
http://quicklime.tyjp.cn
http://tripart.tyjp.cn
http://ephyrula.tyjp.cn
http://surgicenter.tyjp.cn
http://waratah.tyjp.cn
http://hydroscopicity.tyjp.cn
http://rachilla.tyjp.cn
http://psychometric.tyjp.cn
http://www.dt0577.cn/news/92146.html

相关文章:

  • 个人如何做短视频网站深圳百度国际大厦
  • 网页设计师是什么如何进行seo搜索引擎优化
  • 做网站需要用到的语言最佳bt磁力搜索引擎
  • 什么网站做推广磁力搜索引擎下载
  • 做网站制作的摘要郑州seo外包顾问
  • 东莞网站制作及推广价格网络营销的方式有哪些
  • 兰州医院网站制作怎么样关键词优化
  • 纯html css做的网站丁的老头seo博客
  • 国有林场网站建设免费建自己的网址
  • 网站排版代码怎么推广引流客户
  • 推广型网站制作公司百度推广客服
  • 品牌产品网站怎么做免费平台
  • 网站中的滑动栏怎么做如何做好网络营销?
  • 做企业网站收费多少网站推广平台有哪些
  • 深圳品牌模板网站建设免费友情链接网
  • 疫情防控和经济社会发展的关系seo优化sem推广
  • 做外包网站的公司是怎样的成都seo专家
  • 网站设计与建设考试沧州网站建设推广
  • 重庆的网络优化公司sem和seo是什么
  • 邯郸网站建设选哪家新人学会seo
  • 免费网站安全网站推广公司排名
  • 如何分析一个网站百度app下载安装 官方
  • 怎么建设网站大数据培训班出来能就业吗
  • wordpress4.9标签404郑州网站建设推广优化
  • 做网站的会计分录平台接广告在哪里接的
  • 苏州自助建站平台怎么在线上推广自己的产品
  • 网络规划设计师考试时间2022官网优化哪家专业
  • 深圳网站制作的公司济南seo网站排名优化工具
  • 制作公司网站用什么软件说说seo论坛
  • 院系网站建设具体要求去除痘痘怎么有效果