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

上海做网站内容检查的公司网站访问index.html

上海做网站内容检查的公司,网站访问index.html,很长的网站域名怎么做短,寻找客户的平台题目要求#xff1a; 2、 竞赛板配置要求 2.1将 IAP15F2K61S2 单片机内部振荡器频率设定为 12MHz。 2.2键盘工作模式跳线 J5 配置为 KBD 键盘模式。 2.3扩展方式跳线 J13 配置为 IO 模式。 2.4 请注意 #xff1a; 选手需严格按照以上要求配置竞赛板#xff0c;编写和调…题目要求 2、 竞赛板配置要求 2.1将 IAP15F2K61S2 单片机内部振荡器频率设定为 12MHz。 2.2键盘工作模式跳线 J5 配置为 KBD 键盘模式。 2.3扩展方式跳线 J13 配置为 IO 模式。 2.4 请注意 选手需严格按照以上要求配置竞赛板编写和调试程序 不符合以上 配置要求的作品将被评为零分或者被酌情扣分。 3、 硬件框图 4、 功能描述 4.1功能概述 1) 通过获取 DS18B20 温度传感器的温度数据完成温度测量功能。 2) 通过 PCF8591 AD/DA 芯片完成 DAC 输出功能。 3) 通过数码管完成题目要求的数据显示功能。 4) 通过按键完成题目要求的显示界面切换和设置功能。 5) 通过 LED 指示灯完成题目要求的指示功能。 4.2性能要求 1) 温度数据刷新时间≤1 秒。 2) DAC 输出电压刷新时间≤0.5 秒。 3) 按键动作响应时间≤0.2 秒。 4.3显示功能 4.4按键功能 1) 功能说明 ⚫ S4 定义为“界面”按键按下 S4 按键切换温度显示界面、参数 设置界面和 DAC 输出界面按键 S4 切换模式如图 5 所示 ⚫ S8 定义为“减”按键 在参数界面下按下 S8 按键温度参数减 1。 ⚫ S9 定义为“加”按键 在参数界面下按下 S9 按键温度参数加 1。 ⚫ S5 定义为“模式”切换按键。 模式 1 DAC 输出电压与温度相关。 通过 DS18B20 采集到的实时温度小于温度参数时 DAC 输出 0V否则 DAC 输出 5V。 模式 2 DAC 按照图 7 给出的关系输出电压。 2) 其它要求 ⚫ 按键应做好消抖处理避免出现一次按键动作导致功能多次触发等问 题。 ⚫ 按键动作不影响数码管显示和数据采集过程。 ⚫ S8、S9 按键仅在参数设置界面有效。 ⚫ 设定的温度参数在退出参数设置界面时生效。 4.5LED 指示灯功能 1) 当前处于模式 1 状态指示灯 L1 点亮否则熄灭。 2) 当前处于温度显示界面指示灯 L2 点亮否则熄灭。 3) 当前处于参数设置界面指示灯 L3 点亮否则熄灭。 4) 当前处于 DAC 输出界面指示灯 L4 点亮否则熄灭。 4.6初始状态说明 请严格按照以下要求设计作品的上电初始状态。 1) 处于温度显示界面。 2) 处于模式 1。 3) 温度参数为 25℃ 每次建好工程文件夹里边包含User放工程文件mian.c可以在这里写如同我这个文章的文本文档、Driver存放底层文件如Led.cLed.h等 新建的工程先搭建框架可以先书写底层函数此次书写了六个函数并包含相应的头文件共十二个底层文件 底层函数内容 1.初始化底层驱动专用文件 比如先用3个IO口控制74HC138译码器控制Y4为低电平当Y4为低电平时或非门74HC02控制Y4C为高电平使74HC573的OE端口有效OE端口有效时可使用P0口控制LED的亮灭。 可以去多了解74HC138译码器74HC02或非门74HC573八路输出透明锁存器的相关内容会更好理解 #include Init.h //关闭外设 void System_Init() {     P0 0xff;     P2 P2 0x1f | 0x80;     P2 0x1f;     P0 0x00;     P2 P2 0x1f | 0xa0;     P2 0x1f; } //头文件 #include STC15F2K60S2.H void System_Init(); 2.Led底层驱动专用文件 与初始化底层驱动专用文件同理需要了解对应的锁存器控制可以在使用的芯片数据手册查看 #include Led.h void Led_Disp(unsigned char addr,enable)//LED {     static unsigned char temp 0x00;     static unsigned char temp_Old 0xff;     if(enable)         temp |0x01 addr;     else         temp ~ (0x01 addr);     if(temp ! temp_Old)     {         P0 ~ temp;         P2 P2 0x1f | 0x80;         P2 0x1f;         temp_Old temp;     } } void Beep(unsigned char flag)//蜂鸣器 {     static unsigned char temp 0x00;     static unsigned char temp_Old 0xff;     if(flag)         temp |0x40 ;     else         temp ~ 0x40 ;     if(temp ! temp_Old)     {         P0 ~ temp;         P2 P2 0x1f | 0xa0;         P2 0x1f;         temp_Old temp;     } } void Relay(unsigned char flag)//继电器 {     static unsigned char temp 0x00;     static unsigned char temp_Old 0xff;     if(flag)         temp | 0x10 ;     else         temp ~ 0x10 ;     if(temp ! temp_Old)     {         P0 ~ temp;         P2 P2 0x1f | 0xa0;         P2 0x1f;         temp_Old temp;     } } //头文件 #include STC15F2K60S2.H void Led_Disp(unsigned char addr,enable); 3.按键底层驱动专用文件 板子上的按键从按键4开始到按键19可根据实际硬件修改 #include Key.h unsigned char Key_Read() {     unsigned char temp 0;     P44 0; P42 1; P35 1; P34 1;//实际板子的连接     //P37 0; P36 1; P35 1; P34 1;//这个是仿真使用的     if(P33 0)temp 4;     if(P32 0)temp 5;     if(P31 0)temp 6;     if(P30 0)temp 7;     P44 1; P42 0; P35 1; P34 1;     if(P33 0)temp 8;     if(P32 0)temp 9;     if(P31 0)temp 10;     if(P30 0)temp 11;     P44 1; P42 1; P35 0; P34 1;     if(P33 0)temp 12;     if(P32 0)temp 13;     if(P31 0)temp 14;     if(P30 0)temp 15;     P44 1; P42 1; P35 1; P34 0;     if(P33 0)temp 16;     if(P32 0)temp 17;     if(P31 0)temp 18;     if(P30 0)temp 19;     return temp;      } //头文件 #include STC15F2K60S2.H unsigned char Key_Read(); 4.数码管底层驱动专用文件 #include Seg.h unsigned char Seg_Dula[] {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xc6,0x8c,0x88};//数码管段码储存数组 unsigned char Seg_Wela[] {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//数码管位码储存数组 void Seg_Disp(unsigned char wela,dula,point)//数码管显示函数 {     P0 0xff; //     P2 P2 0x1f |0xe0;     P2 0x1f;     P0 Seg_Wela[wela];     P2 P2 0x1f |0xc0;     P2 0x1f;     P0 Seg_Dula[dula];     if(point)         P0 0x7f;     P2 P2 0x1f |0xe0;     P2 0x1f; } //头文件 #include STC15F2K60S2.H void Seg_Disp(unsigned char wela,dula,point); 5.//DAC底层驱动专用头文件 /*   程序说明: IIC总线驱动程序   软件环境: Keil uVision 4.10    硬件环境: CT107单片机综合实训平台 805112MHz   日    期: 2011-8-9 */ #include iic.h #include intrins.h #define DELAY_TIME 5 #define Photo_Res_Channel 0x41 #define Adj_Res_Channel 0x43 //总线引脚定义 sbit SDA P2^1;  /* 数据线 */ sbit SCL P2^0;  /* 时钟线 */ void IIC_Delay(unsigned char i) {     do{_nop_();}     while(i--);         } //总线启动条件 void IIC_Start(void) {     SDA 1;     SCL 1;     IIC_Delay(DELAY_TIME);     SDA 0;     IIC_Delay(DELAY_TIME);     SCL 0;     } //总线停止条件 void IIC_Stop(void) {     SDA 0;     SCL 1;     IIC_Delay(DELAY_TIME);     SDA 1;     IIC_Delay(DELAY_TIME); } //发送应答 void IIC_SendAck(bit ackbit) {     SCL 0;     SDA ackbit;                      // 0应答1非应答     IIC_Delay(DELAY_TIME);     SCL 1;     IIC_Delay(DELAY_TIME);     SCL 0;      SDA 1;     IIC_Delay(DELAY_TIME); } //等待应答 bit IIC_WaitAck(void) {     bit ackbit;          SCL   1;     IIC_Delay(DELAY_TIME);     ackbit SDA;     SCL 0;     IIC_Delay(DELAY_TIME);     return ackbit; } //通过I2C总线发送数据 void IIC_SendByte(unsigned char byt) {     unsigned char i; for(i0; i8; i)     {         SCL   0;         IIC_Delay(DELAY_TIME);         if(byt 0x80) SDA   1;         else SDA   0;         IIC_Delay(DELAY_TIME);         SCL 1;         byt 1;         IIC_Delay(DELAY_TIME);     }     SCL   0;   } //从I2C总线上接收数据 unsigned char IIC_RecByte(void) {     unsigned char i, da;     for(i0; i8; i)     {            SCL 1;     IIC_Delay(DELAY_TIME);     da 1;     if(SDA) da | 1;     SCL 0;     IIC_Delay(DELAY_TIME);     }     return da;     } //函数名DAC转换函数 //入口参数要进行转换的数值 //返回值无 //函数功能对入口参数要转换的DA数据进行转换 void Da_Write(unsigned char dat) {     IIC_Start();//发送开启信号     IIC_SendByte(0x90);//选择PCF8591芯片确定写的模式     IIC_WaitAck();//等待PCF8591反馈     IIC_SendByte(0x41);//使能DA转换随便写通道编号不影响主要的功能是使能DA     IIC_WaitAck();//等待PCF8591反馈     IIC_SendByte(dat);//将待转换的数据发送出去     IIC_WaitAck();//等待PCF8591反馈     IIC_Stop();//停止发送 } //头文件 # include STC15F2K60S2.H void IIC_Start(void);  void IIC_Stop(void);   bit IIC_WaitAck(void);   void IIC_SendAck(bit ackbit);  void IIC_SendByte(unsigned char byt);  unsigned char IIC_RecByte(void);  //函数名DAC转换函数 //入口参数要进行转换的数值 //返回值无 //函数功能对入口参数要转换的DA数据进行转换 void Da_Write(unsigned char dat); 6.//温度底层驱动专用头文件 /*    #     单总线代码片段说明     1.     本文件夹中提供的驱动代码供参赛选手完成程序设计参考。     2.     参赛选手可以自行编写相关代码或以该代码为基础根据所选单片机类型、运行速度和试题         中对单片机时钟频率的要求进行代码调试和修改。 */ #include onewire.h #include reg52.h sbit DQ P1^4; //单总线内部延时函数 void Delay_OneWire(unsigned int t) //12T 或1T根据需要修改 {     t * 12;//用了温度这句必须写设置为12T这句官方不会写这两句和下面的功能一样     while(t--); //    unsigned char i; //    while(t--) //        { //            for(i0;i12;i); //        } } //单总线写操作 void Write_DS18B20(unsigned char dat)//写 {     unsigned char i;     for(i0;i8;i)     {         DQ 0;         DQ dat0x01;         Delay_OneWire(5);         DQ 1;         dat 1;     }     Delay_OneWire(5); } //单总线读操作 unsigned char Read_DS18B20(void)//读 {     unsigned char i;     unsigned char dat;        for(i0;i8;i)     {         DQ 0;         dat 1;         DQ 1;         if(DQ)         {             dat | 0x80;         }                 Delay_OneWire(5);     }     return dat; } //DS18B20初始化 bit init_ds18b20(void)//初始化 {       bit initflag 0;              DQ 1;       Delay_OneWire(12);       DQ 0;       Delay_OneWire(80);       DQ 1;       Delay_OneWire(10);      initflag DQ;            Delay_OneWire(5);          return initflag; } //函数名读取温度函数 //入口参数无 //函数功能完成温度转换并返回转换之后的温度数据 float Read_t() {     unsigned char high,low;//返回的温度数据的高低八位     init_ds18b20();//初始化     Write_DS18B20(0xcc);//跳过ROM     Write_DS18B20(0x44);//进行温度转换     init_ds18b20();//初始化     Write_DS18B20(0xcc);//跳过ROM     Write_DS18B20(0xbe);//读取温度     low Read_DS18B20();//读取低位     high Read_DS18B20();//读取高位     return ((high 8) |low) / 16.0; } //头文件 #ifndef __ONEWIRE_H #define __ONEWIRE_H float Read_t(); #endif 工程主函数内容 1.头文件声明把需要用到的头文件添加进来 /*头文件声明区*/ #include STC15F2K60S2.H//单片机寄存器专用头文件 #include Init.h//初始化底层驱动专用头文件 #include Led.h//Led底层驱动专用头文件 #include Key.h//按键底层驱动专用头文件 #include Seg.h//数码管底层驱动专用头文件 #include onewire.h//温度底层驱动专用头文件 #include iic.h//DAC底层驱动专用头文件 2.变量声明把需要用到的所有变量现在这里进行声明 /*变量声明区*/ unsigned char Key_Val,Key_Old,Key_Down,Key_Up;//按键专用变量 unsigned char Key_Slow_Down;//按键减速专用变量 unsigned char Seg_Slow_Down;//数码管减速专用变量 unsigned char Seg_Pos;//数码管扫描专用变量 unsigned char Seg_Buf[8] {10,10,10,10,10,10,10,10};//数码管显示数据存放数组 unsigned char Seg_Point[8] {0,0,0,0,0,0,0,0};//数码管小数点数据存放数组 unsigned char ucLed[8] {0,0,0,0,0,0,0,0};//Led显示数据存放数组 unsigned char Seg_Disp_Mode;//数码管显示模式 0-温度显示界面 1-参数设置界面 2-DAC输出界面 float Temperature;//实时温度变量 unsigned char Temp_Disp 25;//温度参数变量用于设置显示 unsigned char Temp_Ctrol 25;//温度参数控制变量用于实际控制 初始值25 float Voltage_Output;//实时输出电压 bit Output_Mode;//DAC输出模式 0-DAC输出电压与温度相关 1-DAC给出的关系输出电压 3.按键处理函数在这里编写按键控制的函数 /*键盘处理函数*/ void Key_Proc() {     if(Key_Slow_Down)return;     Key_Slow_Down 1;//键盘减速程序          Key_Val Key_Read();//实时读取键码值     Key_Down Key_Val (Key_Val ^ Key_Old);//捕捉按键下降沿     Key_Up ~ Key_Val (Key_Val ^ Key_Old);//捕捉按键上升沿     Key_Old Key_Val;//辅助扫描变量          switch(Key_Down)     {         case 4://界面切换按键             if(Seg_Disp_Mode 3)             Seg_Disp_Mode 0;//数码管显示模式在0-2之间循环切换             if(Seg_Disp_Mode 1)//当前处于温度参数设置界面             Temp_Disp Temp_Ctrol;//将实际控制数据赋值给设置变量 便于数据更改             if(Seg_Disp_Mode 2) //当界面从参数设置切换出去后             Temp_Ctrol Temp_Disp;//将设置数据保存到控制变量         break;         case 8://参数自减按键             if(Seg_Disp_Mode 1)//当前处于温度参数设置界面             {                 if(--Temp_Disp 255)//限制温度下限为0                     Temp_Disp 0;             }         break;             case 9://参数自加按键             if(Seg_Disp_Mode 1)//当前处于温度参数设置界面             {                 if(Temp_Disp 100)//限制温度上限为99                     Temp_Disp 99;             }         break;             case 5://模式切换按键                 Output_Mode ^ 1;//切换输出模式             break;     }      } 4.信息处理函数需要使用到到的函数进行简单的预处理 /*信息处理函数*/ void Seg_Proc() {     if(Seg_Slow_Down)return;     Seg_Slow_Down 1;     /*信息获取区域*/     Temperature Read_t();//实时读取温度值     /*数据显示区域*/ switch(Seg_Disp_Mode)         {             case 0://温度显示界面                 Seg_Buf[0] 11;//显示C                 Seg_Buf[4] (unsigned char)Temperature / 10 % 10;                 Seg_Buf[5] (unsigned char)Temperature % 10;                 Seg_Buf[6] (unsigned int)(Temperature * 100 )/ 10 % 10;                 Seg_Buf[7] (unsigned int)(Temperature * 100 )% 10;                 //Seg_Point[5] 1;//使能小数点             break;             case 1://参数设置界面                 Seg_Buf[0] 12;//显示P                 Seg_Buf[4] Seg_Buf[5] 10;//熄灭第五、第六个数码管                 Seg_Buf[6] Temp_Disp / 10 % 10;                 Seg_Buf[7] Temp_Disp % 10;                 Seg_Point[5] 0;             break;             case 2://DAC输出界面                 Seg_Buf[0] 13;//显示A                 Seg_Buf[5] (unsigned char)Voltage_Output % 10;                 Seg_Buf[6] (unsigned int)(Voltage_Output * 100 )/ 10 % 10;                 Seg_Buf[7] (unsigned int)(Voltage_Output * 100 )% 10;                 Seg_Point[5] 1;             break;         }              } int cnt10; 5.其他函数其他编写的函数在这里书写会比较方便理解 /*其他函数*/ void Led_Proc() {     unsigned char i;//用于For循环     /*DAC相关*/     if(Output_Mode 0)//DAC输出电压与温度相关当前处于模式 1 状态指示灯 L1 点亮否则熄灭     {         if(Temperature Temp_Ctrol)//当实时温度小于温度参数时             Voltage_Output 0;//DAC输出0V         else//当实时温度大于参数设置时             Voltage_Output 5;//DAC输出5V     }     else    //当前处于 DAC 输出界面指示灯 L4 点亮否则熄灭。     {         if(Temperature 20)//当实时温度小于20度时测试时难以达到相应温度可以修改实际温度看显示状况             Voltage_Output 1;//DAC输出1V         else if(Temperature 40)//当实时温度小于40度时测试时难以达到相应温度可以修改实际温度看显示状况             Voltage_Output 4;//DAC输出4V         else//当实时温度在20-40之间时             Voltage_Output 0.15*(Temperature - 20) 1;//DAC输出与实时温度为一次函数关系0.1540-20/4-1V     }     Da_Write(Voltage_Output * 51);//实时输出DAC0-255的范围和0-5V要对应上则*51          /*LED相关*/     //    ucLed[0] !Ouput_Mode;//当前处于模式 1 状态指示灯 L1 点亮否则熄灭     //    for(i0;i3;i)//模式指示灯     //     ucLed[1i] (i Seg_Disp_Mode); //这几个同样可以实现指示灯的状态但是在上电时L1常亮出现异常当前并非为模式一界面切换到模式一界面后L4没有熄灭按下S5后L4才会熄灭     for(i 0;i3;i)//模式指示灯无异常     {         if( Output_Mode 0)         {             if(i Seg_Disp_Mode )//上电显示界面             {                 cnt1i1;                 if(cnt13)//DAC显示界面两种模式和输出模式                 {                     Led_Disp(0,1);//L1                     Led_Disp(3,0);//当L1亮起熄灭L4                 }                 else                 {                     Led_Disp(i1,1);                 }                              }             else             {                 //Led_Disp(i1,0);                 cnt1i1;                 if(cnt13) Led_Disp(0,0);                 else Led_Disp(i1,0);             }         }         else    //DAC         {             if(i Seg_Disp_Mode )             {                 Led_Disp(0,0);                 Led_Disp(i1,1);             }             else                 Led_Disp(i1,0);         } }     } 6.定时器0中断初始化函数 这个可以使用STC的定时器计算那里生成c代码后面要自己添加ET0,EA打开中断 /*定时器0初始化函数*/ void Timer0Init(void)        //1毫秒12.000MHz {     AUXR 0x7F;        //定时器时钟12T模式     TMOD 0xF0;        //设置定时器模式     TL0 0x18;        //设置定时初值     TH0 0xFC;        //设置定时初值     TF0 0;        //清除TF0标志     TR0 1;        //定时器0开始计时     ET0 1;     EA 1; } 7.定时器0中断服务函数 为了定时执行特定的任务如此处设置了定时的时间触发了数码管和LED产生特定反应 /*定时器0中断服务函数*/ void Timer0server() interrupt  1 {     if(Key_Slow_Down 10)Key_Slow_Down 0;//键盘减速专用     if(Seg_Slow_Down 500)Seg_Slow_Down 0;//数码管减速专用     if(Seg_Pos 8)Seg_Pos 0;//数码管显示专用     Seg_Disp(Seg_Pos,Seg_Buf[Seg_Pos],Seg_Point[Seg_Pos]);          //Led_Disp(Seg_Pos,ucLed[Seg_Pos]);//0  1 } /*延时函数*/ void Delay750ms()        //12.000MHz {     unsigned char i, j, k;     i 35;     j 51;     k 182;     do     {         do         {             while (--k);         } while (--j);     } while (--i); } 8.主函数Main调用书写的函数实现所需的相应功能 /*Main*/ void main() {     Read_t();//上电读取一次温度并且延时750ms避免数据出现85     Delay750ms();     Sys_Init();     Timer0Init();     while(1)     {         Key_Proc();         Seg_Proc();         Led_Proc();     } } DS18B20相关资料 Bit15-bit11符号位bit10-bit4整数位bit3-bit0小数位 后面返回值的时候有一个/ 16.0 ,等价于*0.625这两个都是计算精度的。 这两个为了更好的运行效果可以直接在主函数调用当把这两个语句放到while循环里面或者读取的语句放入while循环里会产生大约10秒的延时才会显示数据与预期750ms的效果相差较大。产生这么久的延时主要由于中断的数码管显示延时占用了较多次可以把延时改小尝试。
http://www.dnsts.com.cn/news/29256.html

相关文章:

  • 营销网站建设网络公司做网站爱游戏
  • 深圳市建设安监站网站活动策划招聘
  • 企业建站用什么主机网站优化报价
  • 免费制作单页的网站蜜芽免费网站域名
  • 做网站团队搜索词分析
  • 域名怎么解析到网站国字类型网站有哪些内容
  • 开源电商网站建设价格网站的建设多少钱
  • 网站设计就业要求wordpress怎么没有导航栏
  • 抚州网站网站建设建筑工程网络进度图
  • 网站建设及运营中山网站建设文化案例
  • 做全房订制网站公司免费搭建个人服务器
  • dw做存资料网站专业全网推广建站公司
  • 信息发布类网站模板android显示wordpress
  • 发布网站搭建教程网站302错误
  • 网站的话术佛山网站制作专家
  • 东城东莞网站建设深圳盐田建设交易中心网站
  • 郑州橱柜网站建设个人可以架设网站吗
  • 佛山论坛建站模板温州自适应网站建设
  • 贷款网站源码下载南通电子商务网站建设
  • 专门做游戏交易的网站广州海珠建网站
  • 网站开发个人所得税做网站还有开发文档吗
  • 网站建设的色彩搭配校园网站做自己的广告
  • 深圳建筑网站后台风格网站
  • 西安企业做网站玉树营销网站建设
  • 网站规划建设心得与体会江西工厂网站建设
  • 有口碑的武进网站建设洛阳宣传片制作公司
  • 网站服务器租用还是托管呢ok卡怎么在京东网上商城
  • 高端建站用什么软件做网站单页视频
  • 网上医疗和医院网站建设制作网站建设公司如何收费
  • 手机体验网站仁怀哪里可以做网站