当前位置: 首页 > wzjs >正文

263云通信官方网站商城网站html模板

263云通信官方网站,商城网站html模板,音乐网站手机模板,太原网站建设与维护竞赛板配置: 将IAP15F2K61S2单片机内部振荡器频率设定为12MHz。 键盘工作模式跳线J5配置为矩阵键盘(KBD)模式。 扩展方式跳线J13配置为IO模式。 硬件框图 图1 系统硬件框图 功能描述 3.1 功能概述 1)通过PCF8591采集光敏电…

竞赛板配置:

将IAP15F2K61S2单片机内部振荡器频率设定为12MHz。

键盘工作模式跳线J5配置为矩阵键盘(KBD)模式。

扩展方式跳线J13配置为IO模式。

硬件框图


图1 系统硬件框图 

功能描述


3.1 功能概述

1)通过PCF8591采集光敏电阻电压值。

2)通过数码管、按键完成题目要求的数据显示、界面切换、参数设置功能。

3)通过LED指示灯完成题目要求的输出指示功能。

4)通过继电器模拟开发板外的功率器件。

3.2 性能要求

1)按键动作响应时间:≤0.2.秒。

2)指示灯动作响应时间:≤0.1秒。

3)继电器响应时间:≤0.2秒。

3.3 显示功能

1)欢迎界面

   欢迎界面如图2所示,显示内容固定为(HELLO)。

图2 欢迎界面

2)工作界面

   工作界面如图3所示,显示内容包括标识符(C)、剩余时间组成。剩余时间固定由两位数码管显示,显示不足位数时高位(左侧)数码管熄灭。

图3 工作界面

**剩余时间的初始值为当前设置的时间参数,倒计时过程中从该值递减至0。当时间参数修改后,剩余时间将同步更新为新的参数值

3)设置界面

   设置界面如图4所示,显示内容包括标识符(E)、时间参数组成。时间参数数值范围为(5~30),显示不足位数时高位(左侧)数码管熄灭。

图4 设置界面

4)显示要求

按照题目要求的格式和切换方式设计

数码管显示无重影、闪烁、过暗、亮度不均匀等严重影响显示效果的缺陷。

3.5 按键功能

1、功能说明

使用S4完成界面切换与设置功能。

1)S4:定义为“多功能”按键。

   在“欢迎界面”时,定义为“切换”按键,按下S4按键,切换到“设置界面”。

   在“设置界面”时,定义为“加”按键,按下S4按键,“时间参数”增加5。

2、按键要求

1)按键应做好消抖处理,避免出现一次按键动作导致功能多次触发。

2)按键动作不影响数码管显示等其他功能。

3.6 工作模式

①当光敏电阻处于被遮挡状态时,自动切换到“工作界面”,开始倒计时,同时打开继电器。

②在倒计时过程中,若光敏电阻的遮挡被移开,则立即停止计时并关闭继电器,在“工作界面”继续停留3秒,显示剩余时间。若在这3秒内光敏电阻重新被遮挡,则再次打开继电器并继续计时;若未被遮挡则返回“欢迎界面”。准备下一次工作。

③在倒计时结束后(为0),无论光敏电阻是否被遮挡,均停止计时并关闭继电器,在“工作界面”继续停留3秒,之后返回“欢迎界面”。准备下一次工作。

④在“设置界面”无操作3秒后,自动返回“欢迎界面”。

3.7 LED指示灯功能

1、界面指示灯

1)L1:在“欢迎界面”下,指示灯L1点亮,否则指示灯L1熄灭。

2)L2:在“工作界面”下,指示灯L2点亮,否则指示灯L2熄灭。

3)L3:在“设置界面”下,指示灯L3点亮,否则指示灯L3熄灭。

2、其余试题未涉及的指示灯均处于熄灭状态。

初始状态


请严格按照以下要求设计作品的上电初始状态。

1)处于欢迎界面。

2)默认时间参数为5。

代码

other.h

#ifndef __OTHER_H__
#define __OTHER_H__#include <STC15F2K60S2.H>
#include "intrins.h"
#define LINE 1.5	//判断光敏电阻是否被遮挡的电压底线
sbit sda=P2^1;
sbit scl=P2^0;
sbit s4=P3^3;
extern unsigned char time_remain;//剩余时间
extern unsigned char time_init;//时间参数
extern unsigned char Seg_Buff[8];//数码管缓存
extern unsigned char keyval;//按键标志
extern unsigned char UI;//界面选择标志,1为欢迎界面,2为工作界面,3为设置界面
extern float num_adc;//光敏电阻电压值//other.c
void init74hc138(unsigned char n);//74hc138译码器选通
void no_relay(void);//关闭继电器
void relay(void);//打开继电器
void init(void);//系统初始化
void led(void);//LED功能//seg.c
void Seg_Loop(void);//数码管刷新函数
void seg_ui();//界面显示选择//key.c
void Key_Loop(void);//按键刷新函数//iic.c
unsigned char r_adc(unsigned char addr);//AD转换函数#endif

main.c

#include "other.h"
bit flag_seg=0;
bit flag_key=0;
bit flag_adc=0;
bit flag_time=0;//倒计时开始标志位void Timer0_Init(void)		//100微秒@12.000MHz
{AUXR |= 0x80;			//定时器时钟1T模式TMOD &= 0xF0;			//设置定时器模式TL0 = 0x50;				//设置定时初始值TH0 = 0xFB;				//设置定时初始值TF0 = 0;				//清除TF0标志TR0 = 1;				//定时器0开始计时ET0 = 1;				//使能定时器0中断EA = 1;
}
void Timer1_Init(void)		//1毫秒@12.000MHz
{AUXR |= 0x40;			//定时器时钟1T模式TMOD &= 0x0F;			//设置定时器模式TL1 = 0x20;				//设置定时初始值TH1 = 0xD1;				//设置定时初始值TF1 = 0;				//清除TF1标志TR1 = 1;				//定时器1开始计时ET1 = 1;				//使能定时器1中断EA = 1;
}
void main(){init();Timer0_Init();Timer1_Init();num_adc=(float)r_adc(0x01)*5.0/255;while((int)(num_adc*100)<(int)(LINE*100))num_adc=(float)r_adc(0x01)*5.0/255;while(1){led();if(flag_seg){flag_seg=0;seg_ui();Seg_Loop();}if(flag_key){flag_key=0;Key_Loop();}if(flag_adc){flag_adc=0;num_adc=(float)r_adc(0x01)*5.0/255;//0x01即选择AIN1通道}if((int)(num_adc*100)<(int)(LINE*100)){UI=2;//切换为工作模式relay();//打开继电器flag_time=1;}else{flag_time=0;}}
}
void Timer0_Isr(void) interrupt 1
{static unsigned char count1=0;//数码管定时刷新static unsigned char count2=0;//按键定时扫描static unsigned int count3=0;//AD转换count1++;count2++;count3++;if(count1==2){count1=0;flag_seg=1;}if(count2==50){count2=0;flag_key=1;}if(count3==1000){//0.1s进行一次AD转换count3=0;flag_adc=1;}
}
void Timer1_Isr(void) interrupt 3
{static unsigned int count4=0;static unsigned int count5=0;static unsigned int count6=0;static unsigned int count7=0;if(flag_time){count5=0;count4++;if(count4==1000){//定时1scount4=0;if(time_remain>0)time_remain--;}}else if(time_remain>0){count4=0;count5++;if(count5==3000){//定时3scount5=0;no_relay();UI=1;time_remain=time_init;}}else{count4=0;count5=0;}if(time_remain==0){no_relay();count6++;if(count6==3000){count6=0;flag_time=0;UI=1;time_remain=time_init;}}else{count6=0;}if(UI==3&&keyval==0){count7++;if(count7==3000){count7=0;UI=1;}}else{count7=0;}
}

other.c

#include "other.h"
unsigned char UI=1;
unsigned char time_init=5;
unsigned char time_remain=5;
float num_adc;//74hc138译码器选通
void init74hc138(unsigned char n){P2=(P2&0x1f)|(n<<5);P2&=0x1f;
}
//系统初始化
void init(void){P0=0x00;init74hc138(5);//关闭蜂鸣器和继电器P0=0xff;init74hc138(4);//熄灭LED小灯UI=1;
}
//LED功能
void led(void){switch(UI){case 1://欢迎界面L1亮P0=0xfe;init74hc138(4);P0=0xff;break;case 2://工作界面L2亮P0=0xfd;init74hc138(4);P0=0xff;break;case 3://设置界面L3亮P0=0xfb;init74hc138(4);P0=0xff;break;}
}
//打开继电器
void relay(void){P0=0x10;init74hc138(5);P0=0xff;
}
//关闭继电器
void no_relay(void){P0=0x00;init74hc138(5);P0=0xff;
}

seg.c

#include "other.h"
code unsigned char Seg_Table[] = 
{
0xc0, //0
0xf9, //1
0xa4, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xf8, //7
0x80, //8
0x90, //9
0xc6, //C 10
0x86, //E 11
0x89, //H 12
0xC7,	//L 13
0xff //熄灭 14
};
unsigned char Seg_Buff[8]={14,14,14,14,14,14,14,14};
void seg(unsigned char addr,unsigned char num){P0=0xff;	//消隐init74hc138(7);P0=0x01<<addr;init74hc138(6);P0=Seg_Table[num];init74hc138(7);
}
void Seg_Loop(void){static unsigned char i=0;seg(i,Seg_Buff[i]);i++;if(i==8)i=0;
}
void seg_u1(void){Seg_Buff[7]=14;Seg_Buff[6]=14;Seg_Buff[5]=14;Seg_Buff[4]=0; //OSeg_Buff[3]=13;//LSeg_Buff[2]=13;//LSeg_Buff[1]=11;//ESeg_Buff[0]=12;//H
}
void seg_u2(void){Seg_Buff[7]=time_remain%10;if(time_remain<10)Seg_Buff[6]=14;elseSeg_Buff[6]=time_remain/10;Seg_Buff[5]=14;Seg_Buff[4]=14; Seg_Buff[3]=14;Seg_Buff[2]=14;Seg_Buff[1]=14;Seg_Buff[0]=10;//C
}
void seg_u3(void){Seg_Buff[7]=time_init%10;if(time_init==5)Seg_Buff[6]=14;elseSeg_Buff[6]=time_init/10;Seg_Buff[5]=14;Seg_Buff[4]=14; Seg_Buff[3]=14;Seg_Buff[2]=14;Seg_Buff[1]=14;Seg_Buff[0]=11;//E
}
void seg_ui(){switch(UI){case 1:seg_u1();break;case 2:seg_u2();break;case 3:seg_u3();break;}
}

key.c

#include "other.h"
unsigned char keyval,keyold,keyup,keydown;unsigned char Key_Scan(void){static unsigned char key_cnt = 0;unsigned char temp=0;P44=0;if(s4==0){key_cnt++;if(key_cnt >= 20){ // 消抖处理,20mskey_cnt = 20;//在欢迎界面按下,temp=1表示切换到设置界面if(UI==1)temp=1;//在设置界面按下,temp=2表示时间参数增加5if(UI==3)temp=2;}}else{key_cnt = 0;}return temp;
}
void Key_Loop(void){keyval=Key_Scan();keydown=keyval&(keyold^keyval);keyup=~keyval&(keyold^keyval);if(keyval==1&&keyold!=1){UI=3;}if(keyval==2&&keyold!=2){time_init+=5;if(time_init==35)time_init=5;time_remain=time_init;}keyold=keyval;
}

iic.c

#include "other.h"
#define DELAY_TIME	5
static void I2C_Delay(unsigned char n)
{do{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();		}while(n--);      	
}
void I2CStart(void)
{sda = 1;scl = 1;I2C_Delay(DELAY_TIME);sda = 0;I2C_Delay(DELAY_TIME);scl = 0;    
}
void I2CStop(void)
{sda = 0;scl = 1;I2C_Delay(DELAY_TIME);sda = 1;I2C_Delay(DELAY_TIME);
}
void I2CSendByte(unsigned char byt)
{unsigned char i;for(i=0; i<8; i++){scl = 0;I2C_Delay(DELAY_TIME);if(byt & 0x80){sda = 1;}else{sda = 0;}I2C_Delay(DELAY_TIME);scl = 1;byt <<= 1;I2C_Delay(DELAY_TIME);}scl = 0;  
}
unsigned char I2CReceiveByte(void)
{unsigned char da;unsigned char i;for(i=0;i<8;i++){   scl = 1;I2C_Delay(DELAY_TIME);da <<= 1;if(sda) da |= 0x01;scl = 0;I2C_Delay(DELAY_TIME);}return da;    
}
unsigned char I2CWaitAck(void)
{unsigned char ackbit;scl = 1;I2C_Delay(DELAY_TIME);ackbit = sda; scl = 0;I2C_Delay(DELAY_TIME);return ackbit;
}
void I2CSendAck(unsigned char ackbit)
{scl = 0;sda = ackbit; I2C_Delay(DELAY_TIME);scl = 1;I2C_Delay(DELAY_TIME);scl = 0; sda = 1;I2C_Delay(DELAY_TIME);
}
unsigned char r_adc(unsigned char addr){unsigned char temp;I2CStart();I2CSendByte(0x90);I2CWaitAck();I2CSendByte(addr);I2CWaitAck();I2CStart();I2CSendByte(0x91);I2CWaitAck();temp=I2CReceiveByte();I2CSendAck(1);I2CStop();return temp;
}


文章转载自:

http://hoKOUZBH.yrnLL.cn
http://8dBWEgRo.yrnLL.cn
http://msYKJqJd.yrnLL.cn
http://Kr5bF9EB.yrnLL.cn
http://5RhVwnlR.yrnLL.cn
http://1zGyoJhm.yrnLL.cn
http://HqcDvH8h.yrnLL.cn
http://NbIAnxHw.yrnLL.cn
http://2NOXbP8u.yrnLL.cn
http://ZTaEAoDT.yrnLL.cn
http://16p1ekC8.yrnLL.cn
http://XvAghrKO.yrnLL.cn
http://2jJETpbz.yrnLL.cn
http://4icphKkJ.yrnLL.cn
http://F0Lf7qas.yrnLL.cn
http://qU0Wpovr.yrnLL.cn
http://aPgpxtfO.yrnLL.cn
http://sh2bappb.yrnLL.cn
http://IOp0BDW7.yrnLL.cn
http://6DJaAkju.yrnLL.cn
http://A4Nq0MMo.yrnLL.cn
http://rCBVYTbh.yrnLL.cn
http://wp5XLFnu.yrnLL.cn
http://64mKfeKq.yrnLL.cn
http://KUBuzvdl.yrnLL.cn
http://kb8jajwS.yrnLL.cn
http://UH5nuj9L.yrnLL.cn
http://FIVdSlrk.yrnLL.cn
http://d3i6a6JA.yrnLL.cn
http://lwa5WURt.yrnLL.cn
http://www.dtcms.com/wzjs/624608.html

相关文章:

  • 溧水做网站wordpress迅雷下载
  • 如何在手机上做自己的网站wordpress 视差效果
  • 百度统计网站怎么进入wordpress修改界面
  • 如何让自己网站排名提高建官网公司
  • 东莞网站建设培训一级造价工程师报名时间2023年
  • 网站建设的软文素材wordpress搜索全站
  • 贷款类网站怎样做建个网站的电话
  • phpstudy做网站如何制作app的页面
  • 深圳网站制作必选祥奔科技网站页面分析作业
  • 漫画门户网站怎么做的百度seo公司整站优化
  • 富阳科技网站有哪些自己做网站要学前端和后端
  • 如何给网站做权重大连 网站
  • 组织建设一百年心得体会苏州搜索引擎优化
  • 企业网站怎么做排名diy网站建设源码
  • 网站建设课程设计报告浙江省建设厅建筑信息网官网
  • 网站建设个人网上银行济南seo整站外包
  • 站长统计app进入网址新版小猪腾讯企点聊天记录怎么恢复
  • 免费的编程自学网站百度商城
  • 云南省建设网站手机小说网站建设
  • iis 7.5 网站网站运营暂停
  • 网站建设栏目设置表格餐饮设计公司名字
  • 给企业做网站用什么程序注册境外服务公司
  • 宁波网站制作哪家优惠多wordpress 文章排名
  • 泉州市住房与城乡建设局网站重庆网站备案
  • 团购网站建设深圳网站设计的公司
  • 中学网上做试卷的网站一流 北京网站建设
  • 网站布局结构哪家公司建设网站
  • 中山网站建设中山怎么优化网站关键词排名
  • 建设信用卡在网站挂失块吗手机好看网站模板
  • 如何创作个人网站搜索关键词热度