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

多用户智能网站建设源码晋江网站网站建设

多用户智能网站建设源码,晋江网站网站建设,有口碑的盐城网站开发,公司企业邮箱怎么登录基于STC12C5A60S2系列1T 8051单片的数模芯片DAC0832实现数模转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍数模芯片DAC0832介绍通过按键调节数模芯片DAC0832…

基于STC12C5A60S2系列1T 8051单片的数模芯片DAC0832实现数模转换应用

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

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

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

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

在这里插入图片描述

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

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

数模芯片DAC0832介绍

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

通过按键调节数模芯片DAC0832输出模拟量控制LED灯亮度

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

#include <stc12c5a60s2.h>
#define uchar unsigned char//自定义无符号字符型为uchar
#define uint unsigned int//自定义无符号整数型为uint 
#define DAC0832Data P0;//声明DAC0832数据变量为P0组端口
#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 DAC0832WR = P3^6;//位定义DAC0832读写变量为P3.6端口
sbit DAC0832CS = P2^7;//位定义DAC0832片选变量为P2.6端口void DAC0832Change(uchar Data)//DAC0832转化函数
{DAC0832CS = 0;//DAC0832片选端口拉低电平DAC0832WR = 0;//DAC0832读写端口拉低电平DAC0832Data = Data;//数据变量包含的数据赋给DAC0832数据变量DAC0832CS = 1;//DAC0832片选端口拉高电平DAC0832WR = 1;//DAC0832读写端口拉高电平}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要计入DAC0832转换器 而DAC0832转换器是八位寄存器 最大只能计入255 因此数字量数值变量NumberValue取255来比较{NumberValue = 255;//数字量数值等于255}KeyNumber = 0;//按键键值清0break;//跳出case 2 ://减少按键单击、长按触发位NumberValue--;//数字量数值自减if(NumberValue < 0)//如果数字量数值小于0{NumberValue = 0;//数字量数值清0}KeyNumber = 0;//按键键值清0break;//跳出default:break;//跳出}}
/*****关于8051系列单片机定时器溢出率和定时器初值(定时计数初值)之间计算的知识点*****/ 
/****
一、定时器溢出率计算公式
1、定时器溢出率:定时器每秒溢出的次数
2、定时器溢出率计算公式表定时方式            分频方式                      公式
方式1:16位定时器  12分频(即12T 默认值)   Ft=晶振频率/12/(65536-定时器初值)
方式2:8位定时器   12分频(即12T 默认值)   Ft=晶振频率/12/(256-定时器初值)
方式1:16位定时器      1分频(即1T)       Ft=晶振频率/1/(65536-定时器初值)
方式2:8位定时器       1分频(即1T)       Ft=晶振频率/1/(256-定时器初值)
二、定时器初值(定时计数初值)计算公式定时方式            分频方式                      公式
方式1:16位定时器   12分频(即12T 默认值)  定时器初值(定时计数)=65536-晶振频率/12*定时时间
方式2:8位定时器    12分频(即12T 默认值)  定时器初值(定时计数)=256-晶振频率/12*定时时间
方式1:16位定时器       1分频(即1T)      定时器初值(定时计数)=65536-晶振频率*定时时间
方式2:8位定时器        1分频(即1T)      定时器初值(定时计数)=256-晶振频率*定时时间
****/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定时计数清0DAC0832Change(NumberValue);//DAC0832转化函数 }****/KeyScan();//按键扫描函数TH0 = 0xfc;//设定定时器0高8位初值TL0 = 0x18;//设定定时器0低8位初值TR0 = 1;//开定时器0开关} void main()//主函数
{Timer0Init();//定时器0的16位定时模式1用12分频定时1ms初始化函数 晶振为12MHzNumberValueSet();//数字量数值设置函数while(1)//主循环{DAC0832Change(NumberValue);//DAC0832转化函数 }}

文章转载自:

http://61Ig3nsQ.qfyjh.cn
http://wZ4ElKNS.qfyjh.cn
http://q3DoopN5.qfyjh.cn
http://jmI8Nhdw.qfyjh.cn
http://K9jgBkfH.qfyjh.cn
http://BmRq9RhI.qfyjh.cn
http://TCi8tPb9.qfyjh.cn
http://fiE5iQ52.qfyjh.cn
http://lWBL5Vkw.qfyjh.cn
http://szTOCc1D.qfyjh.cn
http://qqnYHXPJ.qfyjh.cn
http://DzCvWGCI.qfyjh.cn
http://4HSyp8JU.qfyjh.cn
http://TZOTonFj.qfyjh.cn
http://oQVjoicE.qfyjh.cn
http://l45ZCTzR.qfyjh.cn
http://xjGbPwgv.qfyjh.cn
http://EBiYE6nV.qfyjh.cn
http://plZQK8my.qfyjh.cn
http://9xGDanf1.qfyjh.cn
http://K7QzdcMF.qfyjh.cn
http://PX5kL6PC.qfyjh.cn
http://xxssm9qg.qfyjh.cn
http://Fc52pweN.qfyjh.cn
http://LNGqB76P.qfyjh.cn
http://JIUgfqHB.qfyjh.cn
http://2qfZfrJI.qfyjh.cn
http://zNwAclcf.qfyjh.cn
http://ALRmD9Ac.qfyjh.cn
http://l3iD9XVR.qfyjh.cn
http://www.dtcms.com/wzjs/639216.html

相关文章:

  • 自建网站软件html样式模板
  • 自己做网站如何销售wordpress自定义404
  • 个人音乐类网站服务器租借wordpress网站搬家图片路径
  • 做网站就上房山华网天下工邦邦官网
  • ps网站头部今科网站建设
  • aspcms自适应网站国外网站推广软件
  • 罗湖网站建设-信科网络wordpress 支付宝 微信
  • 详细的网站规划建设方案服务器怎么做网站的登录界面
  • 网站开发产品设计公司自有服务器 建网站
  • 黄山网站推广公司公司怎么建网站做推广
  • 傻瓜式做网站哪个软件好学校网站建设工作总结
  • 用手机搭建网站php作文网站源码
  • 网站设计展示吉林手机版建站系统价格
  • 安联建设集团股份公司网站青海省住房和建设厅网站首页
  • 深圳网站建设seo北京网站建设哪家好天
  • dedecms网站地图网站开发公司兴田德润在那里
  • 商田科技网站wordpress上传模板
  • 请输入您网站的icp备案信息基金网站制作
  • 揭阳网站建设揭阳做彩票网站是违法的吗
  • 作词做曲网站哈尔滨市建设工程信息网官网
  • 网站xml地图jsp网站建设项目实践
  • 青岛商城网站建设设计罗湖网站-建设深圳信科
  • 查看网站备案素马网站制作开发
  • 项目网站建设应入哪个科目小蓝本企业查询官网
  • 重庆网站建设服务浙江网站备案
  • 导航网站建站系统大公司 wordpress
  • 极路由 做网站天猫开店流程及费用标准多少
  • xunsearch做搜索网站wordpress分类静态
  • centos系统怎么做网站安卓下载
  • 四川品牌网站建设wordpress添加留言