#i nclude
#i nclude
#i nclude
#include
void ledxianshi();
void PWM()
sbit up=P1^5; //定义UP键
sbit down=P1^6; //定义DOWN键
static unsigned char pwm;
unsigned char t;
unsigned char xdata seg_add _at_ 0xEFFF;
unsigned char xdata light_add _at_ 0xF7FF;
#define base_Adr 0xDFFF
#define uchar unsigned char
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define uchar unsigned char
#define uint unsigned int
#define ADC0809 XBYTE[0x0B000] //P2.6选通
float sum=0,fjg;
uint i,j,*q,*p,sd=5;
sbit p1_0=P1^0;
void wait(uint n);
void main(void)
{ j=0;
TMOD=0X01;//设置定时器0
TH0=0XFC;//定时时间设为1ms
TL0=0X18;
EA=0;//先关中断
EA=1;//开总中断
ET0=1;
//TR0=1;
for(; ;)
{
if(j=20){
do{}while(!TF0);
q=0x30;
for(i=0;i<20;i++)
{sum=sum+(*q)*(*q);
q++;
}
sum=sum/20;
fjg=sqrt(sum);
if(fjg>sd)
p1_0=1;
j=0;
}}
}
void power(void)
{ uchar x;
for(;;)
{ADC0809=0x01;
wait(1000);
x=ADC0809;
P2=x;
}
}
void wait(uint n)
{ uint i,j;
for(i=0;i
}
timer0()interrupt 1 using 1
{*p=ADC0809;
p++;
TH0=0XFC;
TL0=0X18;
TR0=1;
j++;
}
//sbit EOC=P3^2;//为A/D转换结束标志
//sbit START= //启动A/D
uint data tvdata; //
unsigned char xdata CH_base_Adr _at_ base_Adr;
unsigned char CH_data;
//unsigned char float;
void delay(unsigned int N) //延时
{
int i;
for(i=0;i
void main()using 0
{
long b=19;
//light_add=0X3f;
/* 采样AD0809通道的值 */
while(1){
//CH_base_Adr=3;
CH_data =CH_base_Adr;
P0=CH_data;
tvdata=P0; //显示口
tvdata=(tvdata*b);
CH_base_Adr=0;
ledxianshi(); //显示
delay(50);
}
}
void ledxianshi(void) //显示模块
{
uchar k=0,seg=0,i=0;
//int i=0;
led[3]=tvdata%10;
led[2]=tvdata/10%10;
led[1]=tvdata/100%10;
led[0]=tvdata/1000;
for(k=0;k<4;k++)
{
seg=tv[k]; //选择哪个LED口
seg_add=seg;
i=led[k]; //显示口
light_add=a; //显示
delay(10);
}
}
PWM ()
{
void delay (unsigned char ms);
TMOD=0X21;
ET0=1;
ET1=1;
EA=1;
TH0=0XFC; //定时器0,定时1ms
TL0=0X18;
TH1=0X9C; //定时器1,定时0.1ms
TL1=0X00;
TR0=1;
PT1=1; //定义定时器1优先中断
pwm=0x9c;
while (1)
{
do
{
pwm++;
delay (10);
if (pwm==0xff) beep();
}
while (pwm!=0xff);
do
{
pwm--;
delay (10);
if (pwm==0x01) beep ();
}
while (pwm!=0x01);
}
}
void timer0 (void) interrupt 1 //定义定时器0
{
TH0=0XFC;
TL0=0X18;
TR1=1;
TH1=pwm;
P0=0X00;
}
void timer1(void) interrupt 3 //定义定时器1
{
P0=0XFF;
TR1=0;
}
void delay (unsigned char ms) //延时
{
unsigned char i=120;
while (ms--)
{
while (i--)
{}
}
}
上一篇:LED中“流明”的定义
下一篇:protues元件库中英文对照表
推荐阅读最新更新时间:2023-10-18 15:09
Vishay线上图书馆
- 选型-汽车级表面贴装和通孔超快整流器
- 你知道吗?DC-LINK电容在高湿条件下具有高度稳定性
- microBUCK和microBRICK直流/直流稳压器解决方案
- SOP-4小型封装光伏MOSFET驱动器VOMDA1271
- 使用薄膜、大功率、背接触式电阻的优势
- SQJQ140E车规级N沟道40V MOSFET
- 我国科学家建立生成式模型为医学AI训练提供技术支持
- Diodes 推出符合车用标准的电流分流监测器,通过高精度电压感测快速检测系统故障
- Power Integrations面向800V汽车应用推出新型宽爬电距离开关IC
- 打破台积电垄断!联电夺下高通先进封装订单
- Ampere 年度展望:2025年重塑IT格局的四大关键趋势
- 存储巨头铠侠正式挂牌上市:首日股价上涨超10%
- Vishay 推出新款精密薄膜MELF电阻,可减少系统元器件数量,节省空间,简化设计并降低成本
- 芯原推出新一代高性能Vitality架构GPU IP系列 支持DirectX 12和先进的计算能力
- NXP 2.5亿美元收购Aviva,但车载SerDes领域依然处于战国时期
- 应对 AI 时代的云工作负载,开发者正加速向 Arm 架构迁移