2051的比较器模拟AD源程序(C语言)
/* 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
//变量类型标识的宏定义,大家都喜欢这么做
#define Uchar unsigned char
#define Uint unsigned int
#define Ledlight() (P3 &= 0x7f)
#define Leddark() (P3 |= 0x80)
sbit P36 = P3^6; // 比较器内部判断脚
sbit LED = P3^7; // 一个发光二级管观察亮度变化
// 内部标志位定义
bit less; // 比较是否大于 1.小于,0.大于
// 全局变量定义
Uchar timer1, // 通用延时计数器
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_(); //实验中没有启用
}
上一篇:基于DSP6713实现的IIR格型自适应滤波器
下一篇:基于PIC24FJ64的智能光伏汇流采集装置设计及应用
- 热门资源推荐
- 热门放大器推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
- 乐享惬意春天,TI A8开源硬件平台体验季!
- Vishay官方微信君驾到,扫码关注赢好礼
- 2022 Digi-Key KOL 视频系列:你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍
- 4月26日上午10:00邀您观看 基于TI Sitara™AM5708的工业派开源平台介绍 有奖直播
- 揭秘正确选择探头的5大要素 (泰克原装探头促销,高贵不贵,199元起)
- 评论赢好礼|TI SK-AM64评估套件测评
- 有奖直播 | 同质化严重,缺乏创新,ST60毫米波非接触连接器,赋予你独特的产品设计,重拾市场话语权
- MPS有奖活动|梦想设计闪亮登场,便携式多功能电工台诞生啦!
- 有奖下载 |《设计无线通信系统时需考虑的天线因素》