2051温控器c语言程序,2051的比较器模拟AD源程序(C语言)

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--;

};

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值