搜索: 高级
  注册会员 找回密码
设为首页
收藏本站
广告合作
加盟合作
联系我们
电源技术网
首  页 资 讯 供 应 求  购 展会信息 招 聘 求 职 资料共享 器件手册 技术文章 会员中心 电源沙龙
  当前位置:首页>资讯>技术文章>文章内容

2051的比较器模拟AD源程序(C)

作者:power   来源:网络   点击:    日期:2007-09-03    
/* io分配: *
;* OUTPUT: *
;* P1.0 ...... 模拟量输入*
;* P1.1 ...... DA输入比较基准电压*
;* P1.2~7..... R-2R DA电阻网络*
;* P3.7 ...... LED 模拟亮度输出*
;* CPU CLOCK EQU 6M */
//xiaoqi last edit in 2001.11
//#pragma src
#i nclude "AT89x051.h"
#i nclude
#i nclude
#i nclude
//变量类型标识的宏定义,大家都喜欢这么做
#defineUchar unsigned char
#define Uint unsigned int
#define Ledlight() (P3 &= 0x7f)
#define Leddark() (P3 |= 0x80)
sbitP36= P3^6;// 比较器内部判断脚
sbitLED= P3^7;// 一个发光二级管观察亮度变化
// 内部标志位定义
bitless;// 比较是否大于 1.小于,0.大于
// 全局变量定义
Uchartimer1, // 通用延时计数器
timer2, // 按键蜂鸣器反应定时器
adcdata,// ad转换变量
pwm1;// PWM输出比例
// 函数列表
void DelayMs(unsigned int number); // 毫秒延时
void timers0(); // 在定时器中断中做数码管的扫描显示(ct0)
void Initall(void); // 系统初始化
void timers1(void); // TC1定时器中断用于扫描显示与键盘
Uchar adcread(void);// adc转换程序
void main(void) using 0
{
DelayMs(120);
Initall();
pwm1 = adcread();
LED=1;
while(1)
{
pwm1 = adcread();
timer2=10;
while (timer2);
}
}
// 毫秒延时
void DelayMs(unsigned int number)
{
unsigned char temp;
for(;number!=0;number--)
for(temp=112;temp!=0;temp--);
}
/*************************************
在定时器中断中做LED的PWM输出
*************************************/
void timers0() interrupt 1 using 1
{
TH0 = 0xff;
TL0 = 0xd0;
timer1--;
if (timer1==pwm1)LED=0;
if (timer1==0){
LED=1;
timer1=0x40;
timer2--;
};
}
/****************
;* 6位 ADC转换
;****************/
Uchar adcread(void)
{
Uchar i=0x3f,temp=0;
P36 =1;
P1 = 3; _nop_();_nop_();// 从零开始
while ((i--)&& (P36))
{
temp += 4;
P1 = temp|3;
_nop_();
}
temp >>= 2;
return temp;
}
/****************
;* 系统初始化
;****************/
void Initall(void)
{
TMOD = 0x11;// 0001 0001 16进制计数器
IP = 0x8;// 0000 1000 t1优先
IE = 0x8A;// 1000 1010 t0,t1中断允许
TCON = 5;// 0000 0101 外部中断低电平触发
TR0 = 1;// 打开定时器中断,IE中已经打开,在明示一下
TR1 = 0;
ET0 = 1;
ET1 = 0;
P1 = 0xff;
}

/*************************************
TC1定时器中断用于扫描显示与键盘(ct1)
*************************************/
void timers1(void) interrupt 3 using 2
{
_nop_();//实验中没有启用

上一篇:使用Saber 仿真35W AC-DC 反激电源设计(续 I)   下一篇:用图片来记录时光
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·电子元件基础教程(pdf电子书)
·一款简单的手机充电器电路图
·几种MOSFET驱动电路的研究
·protel元件封装库
·晶体管资料大全
·常用电子元器件的教程
·三极管大全
·L E D 培 训 手 册
·TL494芯片资料和制控制电路
·最完整的变压器设计资料
·高频变压器计算公式
·MOSFET驱动电路的选择
·开关电源的可靠性热设计
·开关电源设计中主要参数解释及计
·蓄电池修复仪的电路图
·电磁兼容EMC中的屏蔽技术分析
·节能灯生产管理流程图,供参考。
·EMI / EMC设计秘籍
  相关文章
·使用Saber 仿真35W AC-DC 反激电
·用图片来记录时光
·全彩Power LED装饰照明系统构架
·World plug figure
·Plug pecification
·Plug test item
·FAT(32)和NTFS格式的性能对比
·全桥逆变器实测波形
·超级电容技术原理及在电动车上的
·蓄电池修复仪的电路图
·单片机C语言学习 !!!
·电源设计用软件工具下载
·自控经典论文之运放篇
·中国版ROHS标准及测试方法
·British Cable
·用圈数计算线径的软件
·难得有的中文资料,(做电动车用
·深入理解C语言指针的奥秘

设为首页 | 加入收藏 | 广告合作 | 关于我们 | 联系我们 | 网站地图 | 友情链接 | 意见投诉 | 使用帮助
本站部分信息由企业自行提供,对于该信息内容的真实准确合法性,电源技术网对此不承担任何保证责任。
所有资料来自于网络,版权归作者所有,本站不保证正确性和完整性,只提供参考学习交流之用。
总机:0755-21330265 传真:0755-83718018 E-mail:
工作时间:周一至周五 8:00-18:00 在线服务QQ:372470395 437743603 184979008
Copyright @ 2003-2008 电源技术网 Inc All Rights Reserved.Powered By power-bbs.com
网络实名/通用网址/Google实名通:电源技术网 粤ICP备06099648号