上火了吃什么水果降火最快| 束手无策是什么意思| 火车票无座是什么意思| 100是什么意思| 气虚吃什么| 830是什么意思| pony是什么意思| 看见蛇过马路什么征兆| 舌头上长泡是什么原因| 乾五行属什么| 稀字五行属什么| 高密度脂蛋白胆固醇偏低是什么原因| 嘴巴边上长痘痘是什么原因| art是什么意思| 在什么后面| 每天早上喝一杯蜂蜜水有什么好处| 什么鸟没有翅膀| 网线长什么样| eyki是什么牌子的手表| 鲈鱼不能和什么一起吃| 减肥吃什么| 夏季喝什么茶| 吃哈密瓜有什么好处| 熬夜头疼是什么原因| 晚上七点到九点是什么时辰| 实性结节是什么意思| 什么药能降肌酐| 十月一日是什么节| 耳膜炎是什么症状| 蛊是什么| 冰心原名叫什么名字| hpv52阳性是什么病| 梦见栽花是什么意思| 资产负债率高说明什么| 螳螂吃什么东西| xxl是什么尺码| 怀孕挂什么科| 坐镇是什么意思| 彼此彼此什么意思| oversize是什么意思| honor是什么牌子手机| 枸杞有什么作用和功效| 渗液是什么意思| 手指甲发黑是什么原因| 党委委员是什么级别| pu是什么皮| 什么睡姿有助于丰胸| 初恋什么意思| 后背出汗多是什么原因| 宝宝什么时候开始说话| 拔河是什么意思| 血脂高有什么危害| 舌裂是什么原因造成的| 反流性食管炎吃什么药| 78什么意思| 清华大学书记什么级别| 跃字五行属什么| 53岁属什么| 停电了打什么电话| 海参什么样的好| 脑梗能吃什么水果| 什么人容易得精神病| 猪八戒叫什么名字| 气管炎的症状吃什么药好得快| 火碱对人体有什么害处| 中性皮肤的特征是什么| 石决明是什么| 什么颜色衣服显白| 脐带血能治疗什么病| 心心相惜是什么意思| 结节性硬化症是什么病| 史铁生为什么瘫痪| 打完狂犬疫苗有什么不良反应| 纹银是什么意思| 指甲竖纹是什么原因| 尿葡萄糖是什么意思| 受害者是什么意思| 产后恶露吃什么排干净| 夜尿多吃什么中成药| 性生活过后出血是什么原因| 小孩肛门瘙痒什么原因| 颤栗是什么意思| 梦见血是什么预兆| 双肺条索是什么意思| 偶发室性早搏什么意思| 倾倒是什么意思| 尿管痒是什么原因| 羊肉和什么不能一起吃| 梦见孩子被蛇咬是什么意思| 为什么会梦到前男友| 非均匀性脂肪肝是什么意思| 什么是面首| 碳是什么| 子宫腺肌症是什么原因引起的| 什么东西驱蛇效果最好| anxiety什么意思| 有口无心是什么意思| 查生化是查些什么| 马冲什么生肖| 苍蝇最怕什么| 男生的隐私长什么样| 子宫肌瘤钙化是什么意思| 早餐吃什么英语怎么说| 什么叫私生饭| 喜欢一个人会有什么表现| 舌头麻木吃什么药| 坑坑洼洼是什么意思| 下午五点多是什么时辰| 吃什么能快速降血压| 肉鸽是什么意思| 手腕痛挂什么科| 喝蒲公英根有什么好处| 女生下体长什么样| 伞裙搭配什么上衣| 脓毒血症是什么病| 维生素b族为什么不能晚上吃| 小孩子上户口需要什么证件| 掉头发吃什么好| 内分泌代谢科是看什么病的| lbl是什么意思| 吃什么食物养肝护肝| 肾结石吃什么比较好| 风寒感冒喉咙痛吃什么药| 伤口不愈合是什么原因| 端午节是什么星座| 空调什么度数最省电| 怀孕20天有什么症状| 胃息肉是什么症状| 什么什么入胜| 水煮鱼片用什么鱼| 吃什么东西补血快| 纳尼是什么意思| 手指甲上有竖纹是什么原因| 梦见好多猫是什么预兆| 小暑是什么意思啊| 什么是偏光眼镜| 六爻小说讲的什么| 感情是什么| 12月17号什么星座| 货号是什么| 1984年属鼠是什么命| 六月十三是什么日子| 靶子是什么意思| 肚脐左侧疼是什么原因| 什么样的大树| 凤凰代表什么生肖| 乙肝245阳性是什么意思| 马日冲鼠是什么意思| 喝三七粉有什么好处| 肺囊肿是什么病严重吗| pt代表什么| 鲁迅真名叫什么| 肝脓肿是什么病严重吗| 箱变是什么| 胃病喝什么茶养胃| 心率高吃什么药| 有什么菜| 杨梅用什么酒泡最好| 红参和人参有什么区别| 包裹是什么意思| 92年的属什么生肖| on是什么牌子| 海鸥吃什么食物| 湿疹是什么病的前兆| 刍狗是什么意思| 小孩包皮挂什么科| 胸外扩是什么样子| 145什么意思| 罗汉是什么意思| 什么叫裸眼视力| 浪子回头金不换是什么意思| 陆代表什么生肖| 铁树开花是什么意思| 肝胆挂什么科| 摇摇欲坠是什么意思| 冻感冒了吃什么药| d二聚体高是什么意思| hp代表什么意思| 12五行属什么| 520和521的区别是什么| 急性喉炎吃什么药| 身体透支是什么意思| 许莫氏结节是什么意思| delvaux是什么牌子| 加拿大现在是什么时间| 良辰是什么意思| 女性尿频是什么原因| tomboy什么意思| 手抖是什么原因| 大便不通吃什么药| 女性长期缺维d会带来什么病| 坨坨什么意思| 被蜜蜂蛰了涂什么药膏| 可乐饼为什么叫可乐饼| 治霉菌性阴炎用什么药好得快| 佝偻病是什么意思| 反胃想吐是什么原因| 肾上腺素高会导致什么| crayons什么意思| 一什么耳朵填量词| 犹太人说什么语言| 葡萄糖氯化钠注射作用是什么| 细菌感染引起的发烧吃什么药| 春节为什么要放鞭炮| 94年属什么今年多大| 激素是什么意思| 科目二学什么| 公分是什么| 海参什么时间吃最好| 逆熵是什么意思| 角膜炎吃什么药| 蓝光是什么| 山东都有什么大学| 绿豆汤不能和什么一起吃| 肝郁气滞是什么意思| 处子之身是什么意思| 外阴干裂用什么药| 5月12号是什么星座| 跃然纸什么| ACS什么意思| 什么是硬盘| 手指甲上有竖纹是什么原因| 盆腔炎做什么检查| 地指什么生肖| 酸菜是什么菜做的| 多元是什么意思| 止血芳酸又叫什么| 油漆味对人有什么危害| 加湿器用什么水比较好| 奶头痛是什么原因| 腰酸痛是什么原因| 血钾低会有什么症状| 经常眨眼睛是什么原因| sm是什么意思啊| 草鱼是什么鱼| 黑客帝国4什么时候上映| 补肝血吃什么药| 杭州五行属什么| 一个马一个并念什么| 精囊在什么位置| 穿山甲说了什么| 腿麻挂什么科| 紫色和蓝色混合是什么颜色| 崩漏是什么意思| 用膳是什么意思| 女人肾阴虚吃什么药| 身体缺糖有什么症状| 小孩睡觉流口水是什么原因| 万宝龙手表什么档次| 办电话卡需要什么| 纸醉金迷什么意思| 祈祷是什么意思| 夜间咳嗽是什么原因| 产后第一次来月经是什么颜色| 肝在人体什么位置| 寿司醋可以用什么代替| 嘴皮发白是什么原因| 消化不良吃什么水果| 月经血是黑色的是什么原因| 女真族现在是什么族| 更年期的女人有什么症状表现| 脸一边大一边小是什么原因| 长红疹是什么原因| 红米有什么功效和作用| 百度
工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->光电电路图->LED电路图->LED点阵书写显示屏的程序电路图

“黑科技”加持 萤石新品发布会全程都是知识点

发布人:dolphin 时间:2025-08-04 收藏
百度 届时南方医院肾研所的知名专家教授将亲临现场免费为前来的群众解疑答惑,并为需要者免费提供检测服务(项目:血糖、尿蛋白、尿糖、尿pH值、血压、体温等),咨询后还将派发肾脏保健科普宣传册及小礼品。


LED驱动板PCB:

LED驱动板原理图:

光笔PCB:

光笔 原理图:

主控板PCB:

主控板 原理图:


////////////////////////////////////文件 myself.h///////////////////////////////////////////////////////////////
#include
#define writting 0x01 //写字
#define erasure 0x00 //擦除
#define key_enter 1 //确定
#define key_esc 2 //退出/取消
#define key_words_modle 3 //多字连写
#define key_light_level 4 //屏幕亮度级别
#define key_sleep_time 5 //超时待机时间设定
#define key_fanxian 6 //反显操作
#define key_cachu 7 //擦除操作
#define key_tuoyi 8 //对象拖移
#define key_all_screen_del 9 //整屏擦除
#define key_tuoyi_quxiao 10 //对象拖移内容选定后取消
#define key_crease 11 //数据加一(待机时间、亮度级别)
#define key_decrease 12 //数据减一
//24M晶振
#define _TH0_TL0_ (65536 - 50000)
#define HI (_TH0_TL0_ / 256) //给高8位赋值
#define LO (_TH0_TL0_ % 256) //给低8位赋值
#define M 40 //(2000/50)1秒要50个中断的累计
typedef char (*size)[4]; //把size定义为一个指向32X4的二维数组首地址的类型
typedef unsigned char uchar;
extern size point[4];
extern uchar LED_CODE[5][4];
extern uchar LED_ROW,LED_LINE;
extern uchar ROW_TEMP;
extern uchar KEYS;
extern uchar li_level;
extern uchar N;
extern uchar men_lig;
extern uchar sleepmin;
extern uchar min,sec;
extern uchar xdata LEDDATA0[32][4],LEDDATA1[32][4],LEDDATA2[32][4],LEDDATA3[32][4],LEDDATA4[32][4];
void LED_GAI(uchar obj_mem[32][4],uchar opera,uchar LED_ROW,uchar LED_LINE );
void one_word(uchar dat_addr[32][4],uchar caozuo);
void sys_init();
void one_word(uchar dat_addr[32][4],uchar caozuo);
uchar getkey();
void lightlev(uchar showing[32][4]);
void sleeptim(uchar showing[32][4]);
void fanxian(uchar LEDDATA[32][4]);
void delay_us(int us);
void LEDcachu(uchar LEDDATA[32][4]);
void obj_move(uchar led_data[32][4]);
void fourwords();
void fou_show();
void dis_play(uchar show_obj[32][4]);
void del_all(uchar obj[32][4]);
void shu_ma_g();
//void daiji();
void digital_show(uchar row,uchar line);
void output();
void input(uchar word);
void saomiao();
void light();
//void input(uchar word);;
////////////////////////////////////END///////////////////////////////////////////////////////////////


////////////////////////////////////文件 main.c///////////////////////////////////////////////////////////////
//*************************************************************************
//作品:LED书写点阵显示屏
//作者:陈宇曦 黄晓光 唐敏健
//时间:2010/04~2010/05
//主控器:IAP12C5A62S2(STC12系列)
//晶振:24MHZ
//功能模块分析:
// 系统共有4个功能模块:
// 1、点亮与画亮 (即写字功能、开机默认)
// 2、多字连写
// 3、自动调光功能
// 4、超时待机功能
// 而对上述功能的 操作 有:
// 1、反显(可对于功能1和功能2模块操作)
// 2、整屏擦除(可对于功能1和功能2模块操作)
// 3、光笔擦除(可对于功能1和功能2模块操作)
// 4、对象拖移(可对于功能1和功能2模块操作)
// 5、写字存储(可对于功能1和功能2模块操作)PS:由于时间问题,
// 而且这个功能题目没要求,暂先搁置
// 6、自动调光参数设置,即调整使用者喜好的屏幕亮度级别,
// 而同时,系统会在这个级别内对LED屏根据环境光强的变化而自动调光
// 7、超时待机时间设定
//
//联系人:唐敏健(15014225360/380467850@qq.com)
//
//****************************************************************************
#includemyself.h
#include
#include

uchar LED_CODE[5][4]= /*LED灯的列编码,每个LED灯的编码为5位数据(0到2^5),每次要给32列LED灯同步输出1位数据,共5次。*/
{ /*这些数据由于操作频率高,故把它们定义在内部RAM中*/
0X00,0X00,0XFF,0XFF,
0X00,0XFF,0X00,0XFF,
0X0F,0X0F,0X0F,0X0F,
0X33,0X33,0X33,0X33,
0X55,0X55,0X55,0X55
};
uchar LED_ROW,LED_LINE,N; //存放当前光笔坐标的全局变量,系统初始化时把它设为99(任意一个大于32的数)
uchar ROW_TEMP; //扫描时行坐标的”临时变量“(全局变量),以便进入中断后,LED_ROW=ROW_TEMP,保存起来
uchar KEYS=0; //存储按下的按键编号,初始化为0,
uchar li_level=10;
uchar men_lig=10;
uchar min=0,sec=0;
uchar sleepmin=5; //默认超时5分钟待机
//sbit pen_key=P3^3; //光笔按键P3^3是INT0,所以要在初始化阶段关闭外部中断0
//sbit OUT_EN =P1^7;
uchar xdata LEDDATA0[32][4],LEDDATA1[32][4],LEDDATA2[32][4],LEDDATA3[32][4],LEDDATA4[32][4];
//存放整屏数据的数组,屏幕数据量为32/8*32字节
size point[4]; //二维数组的指针数组
void delay_us( int us)
{
while(us>0)
{
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();//24条空操作指令为1US,现在为20条
us--;
}
}
void main()
{
uchar light_T;
N=3;
light_T=0;
relay=0;
point[0]=LEDDATA1;point[1]=LEDDATA2;
point[2]=LEDDATA3;point[3]=LEDDATA4;
//**********************
//定时器1初始化
TL0 = _TH0_TL0_ % 256;
TH0 = _TH0_TL0_ / 256 + (char)CY;
TR0 = 1;
//*****************
//sys_init(); //系统初始化,把4个数组首地址放进point[4]中去
while(1)
{
one_word(LEDDATA0,writting); //扫描一个点并予以显示

KEYS=getkey(); //AD扫描按键,其实按键扫描1秒钟内进行10次足矣,不必跟随这个dis_play()做至少20次的扫描,
//因为人的手不可能一秒内按键超过10次。
//调试时如果发现LED屏对光笔的反应比较慢,则需要修改getkey()在一秒内的时间占用比例,
//即也意味着getkey()在一秒内的执行次数。可以这样:设定一个计数器,每dis_play()一次就+1,初值
//为0,到了1就清零,并且调用get_key(),否则不执行get_key().
if(KEYS) //getkey()检测到按键按下就返回按键的值,没按键按下就返回0
{
switch(KEYS)
{
case key_enter : break; //”确定“在这里没意义
case key_esc : break; //没得退出,已经是最底的一层了
case key_words_modle : fourwords();break; //进入多字连写功能
case key_light_level : lightlev(LEDDATA0);break; //调整屏幕亮度级别的参数
case key_sleep_time : sleeptim(LEDDATA0);break; //调整超时待机的超时时间
case key_fanxian : fanxian(LEDDATA0);break; //反显操作
case key_cachu : LEDcachu(LEDDATA0);break; //擦除操作
case key_tuoyi : obj_move(LEDDATA0);break; //对象拖移
case key_all_screen_del : del_all(LEDDATA0);break; //
case key_tuoyi_quxiao : break; //”对象选定确认后取消“在这里没意义
case key_crease : break; //”数据+1“在这里没意义
case key_decrease : break; //”数据-1“在这里没意义
default : break; //没按键匹配的,直接退出。虽然在这里不发生,但安全起见加上去
}
}
KEYS=0;
light_T++;
if(light_T>5){light_T=0;light();} //一秒内自动调光4次左右
}
}



void one_word(uchar dat_addr[32][4],uchar caozuo) //一秒钟的一部分,大概是1/20秒。进行一个点的扫描并显示在LED屏上显示,
//以及更新数码管的显示
{
if(!pen_key)
{ saomiao(); //光笔上的按键被按下就扫描,光笔这里占时间笔也算是一个大块头,3DU33的
//响应时间保险点来计算大约需要延时5uS。这样,每次扫描按最坏打算则需要时
//长为:T=(5+5)*32*N+(5+5)*N=330N(uS).N为给32列LED的高->低变换次数,同时也为
//计数器计满溢出的次数。
LED_GAI(dat_addr,caozuo,LED_ROW,LED_LINE); //修改当前屏幕数据内容以便下面更新显示,writting意味着LED_GAI()函数
// 对LEDDATA1[LED_ROW][LED_LINE/8]中的第LED_LINE%8位数据作”与0“操作。
//因为给74HC595的输出端口低电平对应选通该列。
//而相反,假如参数为erasure,则对同样一位数据作”或1“运算
//另外,如果pen_key没被按下,那数据没更新就不用改了。
}
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///////////////////////////////////////////////////////////////
#includemyself.h
#include
#include
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_START
_nop_();_nop_();_nop_();_nop_();
do{
finish=0X10; //0001 0000(b)
finish|=ADC_CONTER;
}while(finish); //等待AD转换完成
ADC_CONTER=0XE7; //11100111,清ADC_FLAG和ADC_START,停止AD转换
adc_result=ADC_RES;
//*********************
if(adc_result>0x80)li_level=10; //R5549阻值在100K以上
else if(adc_result>0X71)li_level=9; //R5549阻值在80K~100K区间
else if(adc_result>0x60)li_level=8; //R5549阻值在60K~80K区间
else if(adc_result>0X49)li_level=7; //R5549阻值在40K~60K区间
else if(adc_result>0X2A)li_level=6; //R5549阻值在20K~40K区间
else if(adc_result>0X17)li_level=5; //R5549阻值在10K~20K区间
else li_level=4; //降到4级就好
}
void lightlev(uchar showing[32][4])
{
uchar key;
uchar save_row=LED_ROW,save_line=LED_LINE; //用来保存数码管数据
while(1)
{
key=getkey();
switch(key)
{
case key_esc : return;break; //退出
case key_crease : if(men_lig4) men_lig--;break; //”数据-1“最少值为4
default : break; //没按键匹配的,直接退出。虽然在这里不发生,但安全起见加上去
}
LED_ROW=0x00;LED_LINE=men_lig;
shu_ma_g();
dis_play(showing);
LED_ROW=save_row;LED_LINE=save_line;
}
}
////////////////////////////////////END///////////////////////////////////////////////////////////////////////////
////////////////////////////////////文件按键扫描.c//////////////////////////////////////////////////////////
#includemyself.h
#include
#include
uchar getkey()
{
uchar key,finish,adc_result;
//*********************
//ADC_POWER_ON
ADC_CONTER|=0X80;
delay_us(1000); //1ms左右的延时
//*********************
//*********************
//选择模拟口(P1.0、P1.1),即断开上拉电阻形成开漏输出
P1ASF=0x03;
//*********************
//*********************
//选择P1.0作为ADC转换通道
ADC_CONTER=0XF8; //低三位置零,同时即选择P1.0
_nop_();_nop_();_nop_();_nop_();//让ADC_CONTER的数据稳定
delay_us(20); //延时20us使电压稳定
//*********************
//*********************
//取AD转换结果,ADRJ上电复位默认为0,即取高8位数据
ADC_RES=0XFF; //初始化为0XFF;
ADC_CONTER|=0X08; //ADC_START
_nop_();_nop_();_nop_();_nop_();
do{
finish=0X10; //0001 0000(b)
finish=ADC_CONTERfinish;
}while(!finish);
ADC_CONTER=0XE7; //11100111,请AD转换完成标志位,停止AD转换
adc_result=ADC_RES;
//*********************
if (adc_result0x99)key=7; //>3v
else if(adc_result>0X80)key=6; //>2.5v
else if(adc_result>0X66)key=5; //>2V
else if(adc_result>0X4C)key=4; //>1.5V
else if(adc_result>0X33)key=3; //>1V
else if(adc_result>0X19)key=2; //>0.5V
else key=1;
}else{
//*********************
//ADC_POWER_ON
ADC_CONTER|=0X80;
delay_us(1000); //1ms左右的延时
//*********************
//*********************
//选择模拟口(P1.0、P1.1),即断开上拉电阻形成开漏输出
P1ASF=0x03;
//*********************
//*********************
//选择P1.0作为ADC转换通道
ADC_CONTER=0XF8; //低三位清零
_nop_();_nop_();_nop_();_nop_();//让ADC_CONTER的数据稳定
ADC_CONTER|=0X01;
delay_us(20); //切换通道,延时20us使电压稳定
//*********************
//*********************
//取AD转换结果,ADRJ上电复位默认为0,即取高8位数据
ADC_RES=0XFF; //初始化为0XFF;
ADC_CONTER|=0X08; //ADC_START
_nop_();_nop_();_nop_();_nop_();
do{
finish=0X10; //0001 0000(b)
finish|=ADC_CONTER;
}while(finish); //等待AD转换完成
ADC_CONTER=0XE7; //11100111,请AD转换完成标志位,停止AD转换
adc_result=ADC_RES;
//*********************
if (adc_result0x99)key=14; //>3v
else if(adc_result>0X80)key=13; //>2.5v
else if(adc_result>0X66)key=12; //>2V
else if(adc_result>0X4C)key=11; //>1.5V
else if(adc_result>0X33)key=10; //>1V
else if(adc_result>0X19)key=9; //>0.5V
else key=8;
}
}
return key;
}
////////////////////////////////////END///////////////////////////////////////////////////////////////////////////


///////////////////////////////////文件超时待机.c//////////////////////////////////////////////////////////
#includemyself.h
#include
#include


void sleeptim(size showing)
{
uchar key;
uchar save_row=LED_ROW,save_line=LED_LINE; //用来保存数码管数据
while(1)
{
key=getkey();
switch(key)
{
case key_esc : return;break; //退出
case key_crease : if(sleepmin1)sleepmin--;break; //”数据-1“最小值为1
default : break; //没按键匹配的,直接退出。虽然在这里不发生,但安全起见加上去
}
LED_ROW=0x00;LED_LINE=sleepmin;
shu_ma_g();
dis_play(showing);
LED_ROW=save_row;LED_LINE=save_line;
}
}
////////////////////////////////////END///////////////////////////////////////////////////////////////////////////

////////////////////////////////////文件 数码管显示.c//////////////////////////////////////////////////////////////////
#include myself.h
#include
#include
sbit RCLK_595=P2^5;
sbit SRCLK_595=P2^6;
sbit SER_595=P2^7;

void shu_ma_g()
{
digital_show(LED_ROW,LED_LINE);
}
void digital_show(uchar row,uchar line)
{
uchar one;
one=line%10;
input(one);
_nop_();_nop_();
one=(line-one)/10;
input(one);
_nop_();_nop_();
one=row%10;
input(one);
_nop_();_nop_();
one=(row-one)/10;
input(one);
_nop_();_nop_();
output();
}
//将移位寄存器内的数据锁存到输出寄存器并显示
void output()
{
RCLK_595=0;
_nop_();_nop_();
RCLK_595=1;
_nop_();_nop_();
RCLK_595=0;
}
//;*****移位寄存器接收一个字节(如3FH)数据子程序
void input(uchar word)
{
uchar i;
word=~word; //共阳,先取反
for(i=0;i
#include
void dis_play(uchar show_obj[32][4])
{
uchar row,line,temp_row,templine;

for(row=0;row
#include

void fourwords()
{
uchar count;

for(count=0;count=key_words_modleKEYS
#include
void saomiao()
{

uchar tempsave,mod_save;
uchar N_times;
TR1=0;//关闭定时器1
OUT_EN=1; //先让锁止LED点阵显示
mod_save=0XF0;
TMOD|=0X06; //TMOD=XXXX 0110,计数器,八位自动重载
TH0=0XFF-N;
TL0=0XFF-N;
TR0=1; //开始对外负跳变脉冲进行计算,此时OUT_EN还是锁止输出
for(ROW_TEMP=0;ROW_TEMP
#include
#define CLICK P3^3
#define X LED_ROW
#define Y LED_LINE
void enkey(uchar led_data[32][4],uchar x,uchar y); //将第x行第y列反显
void mov(uchar a,uchar b,uchar c,uchar d);//a^b->c^d
void obj_move(uchar led_data[32][4])
{
struct zuobiao
{
uchar x,y;
}start,end,go,pref;
uchar temp,i,j,chang,kuan;
uchar xdata save[32][4];
uchar xdata tempscr[32][4];
while(CLICK);//等待按下
saomiao();
start.x=X;start.y=Y;//起点
while(!CLICK);//等待弹起
saomiao();
end.x=X;end.y=Y;//终点

if(start.x>=end.x){temp=start.x;start.x=end.x;end.x=temp;} //将start定位到矩形左上角,
if(start.y>=end.y){temp=start.y;start.y=end.y;end.y=temp;} //end至右下角


for(i=start.x;i=start.xX=start.yYc^d
{
uchar ta,tb;
ta=0x80;tb=0x7f;
ta=_cror_(ta,b);tb=_cror_(tb,d);
ta=ata;tb=btb;
if(b>d)ta=_crol_(ta,b-d);
else ta=_cror_(ta,d-b);
c=ta|tb;
}
///////////////////////////////////文件 operating.c////////////////////////////////////////////////////////

#includemyself.h
#includereg52.h>
#includeintrins.h>

void fanxian(uchar LEDDATA[32][4])
{
uchar row;
for(row=0;row32;row++)
{
LEDDATA[row][0]=~LEDDATA[row][0];
LEDDATA[row][1]=~LEDDATA[row][1];
LEDDATA[row][2]=~LEDDATA[row][2];
LEDDATA[row][3]=~LEDDATA[row][3];
}

}




void LEDcachu(uchar LEDDATA[32][4])
{
do
{

one_word(LEDDATA,erasure); //扫描一个点并予以显示


KEYS=getkey(); //AD扫描按键,其实按键扫描1秒钟内进行10次足矣,不必跟随这个dis_play()做至少20次的扫描,
//因为人的手不可能一秒内按键超过10次。
//调试时如果发现LED屏对光笔的反应比较慢,则需要修改getkey()在一秒内的时间占用比例,
//即也意味着getkey()在一秒内的执行次数。可以这样:设定一个计数器,每dis_play()一次就+1,初值
//为0,到了1就清零,并且调用get_key(),否则不执行get_key().
/*if(KEYS) //getkey()检测到按键按下就返回按键的值,没按键按下就返回0
{
switch(KEYS)
{ //为了不让使用者觉得混乱,这里就不允许多级嵌套了,因此
//下面很多都不允许
case key_enter : break; //”确定“在这里没意义
case key_esc : return;break; //退出,返回点亮与画亮模式
case key_words_modle : break; //这里模式下不允许进入多字连写功能
case key_light_level : break; //不允许调整屏幕亮度级别的参数
case key_sleep_time : break; //不允许调整超时待机的超时时间
case key_fanxian : break; //不允许反显操作
case key_cachu : break; //不允许擦除操作
case key_tuoyi : break; //不允许对象拖移
case key_tuoyi_xuanding : break; //”对象选定确认“在这里没意义
case key_tuoyi_quxiao : break; //”对象选定确认后取消“在这里没意义
case key_crease : break; //”数据+1“在这里没意义
case key_decrease : break; //”数据-1“在这里没意义
default : break; //没按键匹配的,直接退出。虽然在这里不发生,但安全起见加上去
}
}

*/ //这一段可以不需要了
}while(KEYS!=key_esc);


}


void del_all(uchar obj[32][4])
{
uchar row;
for(row=0;row32;row++)
{
obj[row][0]=0X00;
obj[row][1]=0X00;
obj[row][2]=0X00;
obj[row][3]=0X00;
}
}

////////////////////////////////////END///////////////////////////////////////////////////////////////////////////



评论

技术专区

9月15号是什么星座 家里狗死了预示着什么 南方是什么生肖 什么是鸡皮肤图片 输血前四项检查是什么
宝宝什么时候开始说话 肠胃不好吃什么水果好 咳嗽吃什么药好得快 孕妇吃坚果对胎儿有什么好处 生黄瓜吃了有什么好处
舌尖发麻是什么原因引起的 什么不动 碳十四检测是查什么的 肠胃炎吃什么消炎药 是什么原因导致肥胖
xswl是什么意思 鹤字五行属什么 痔疮便血吃什么药 扁桃体发炎吃什么食物 吉祥三宝是什么意思
梦见吃核桃是什么意思hcv8jop2ns7r.cn 梦见白萝卜是什么意思hcv8jop7ns2r.cn 反乌托邦是什么意思hcv9jop0ns3r.cn 甲亢是什么原因导致的hcv8jop6ns5r.cn cea是什么意思hcv9jop3ns0r.cn
右胳膊麻木是什么征兆hlguo.com 腹胀是什么病的前兆hcv8jop3ns7r.cn 老汉是什么意思hcv9jop0ns5r.cn 抗核抗体弱阳性说明什么hcv9jop2ns2r.cn 为什么梦不到死去的亲人hcv8jop3ns5r.cn
查血常规能查出什么sscsqa.com 三月24号是什么星座的hcv7jop5ns2r.cn 仓鼠是什么科动物huizhijixie.com 沙僧为什么被贬下凡间hcv9jop3ns5r.cn 为什么家里有蟑螂hcv8jop4ns5r.cn
轻度脂肪肝有什么症状hcv8jop5ns3r.cn 什么是心理健康hcv8jop7ns0r.cn 什么车hcv8jop0ns3r.cn 贫血要注意些什么hcv8jop8ns2r.cn 5月5号什么星座hcv9jop1ns9r.cn
百度