led点阵书写屏程序(4)
发布时间:2021-06-07
发布时间:2021-06-07
就不用改了。
}
else
{LED_ROW=99;LED_LINE=99;} //当光笔上的按键没被按下,即使用者没打算写字时,把光笔当前坐标值显示为99,99.
shu_ma_g(); //数码管更新静态显示
dis_play(dat_addr); //LED更新显示,不管扫描是否执行,LED屏肯定要显示,占用着时间,而且是占CPU的大部分时间
//以使人眼察觉不到闪烁,如果显示时长比例不>>扫描时长比例,那人眼将觉得LED在闪烁或微亮扫描
//(”不亮点“)太亮而显示内容(”亮点“)不够亮
//主要是这个函数分配好时间,以达到1秒钟至少扫描20次的效果
}
void LED_GAI(uchar obj_mem[32][4],uchar opera,uchar LED_ROW,uchar LED_LINE )
{uchar temp,byteline,bitline;
byteline=(LED_LINE-1)/8,bitline=(LED_LINE-1)%8;
if(opera) //写,即对应位作“与0”运算
{
temp=0X80;
temp=_cror_(temp,bitline);
obj_mem[LED_ROW][byteline]=obj_mem[LED_ROW][byteline]|temp;
}
else{
temp=0x7F;
temp=_cror_(temp,bitline);
obj_mem[LED_ROW][byteline]=obj_mem[LED_ROW][byteline]&temp;
}
}
void Timer1() interrupt 3
{
static unsigned char count = 0; //定义静态变量count
TR0 = 0; //以下调整出栈入栈的时间误差
TL0 += (_TH0_TL0_ + 9) % 256;
TH0 += (_TH0_TL0_ + 9) / 256 + (char)CY;
TR0 = 1;
count++;
if(pen_key)
if(KEYS==0)
{
sec=0;
min=0;} //光笔不被使用,而且任何按键没被按下
else{ if(count >= 20)//1秒种时间到
{
count = 0;
sec++;
if(sec == 60)//1分钟时间到
{
min++;
sec = 0;
}
}
if(min>=sleepmin) relay=1;//关屏
}
}
////////////////////////////////////END///////////////////////////////////////////////////////////////////////////
////////////////////////////////////文件 自动调光.c///////////////////////////////////////////////////////////////
#include"myself.h"
#include<reg52.h>
#include<intrins.h>
void light()
{
uchar finish,adc_result;
//*********************
//ADC_POWER_ON
ADC_CONTER|=0X80;
delay_us(1000); //1ms左右的延时
//*********************
//*********************
//选择模拟口(P1.2),即断开上拉电阻形成模拟口
P1ASF=0x04;
//*********************
//*********************
//选择P1.2作为ADC转换通道
ADC_CONTER&=0XF0; //低三位清零
_nop_();_nop_();_nop_();_nop_();//让ADC_CONTER的数据稳定
ADC_CONTER|=0X03; //切换通道
delay_us(20); //延时20us使电压稳定
//**
*******************
//*********************
//取AD转换结果,ADRJ上电复位默认为0,即取高8位数据
ADC_RES=0XFF; //初始化为0XFF;
ADC_CONTER|=0X08; //ADC_STA
上一篇:国外著名商业街区案例简介
下一篇:香港旅游指南