大二计算机专业,是考软考还是考计算机三级,四级。考软考的话推荐什么,考计算机三级四级的话推荐什么(数据库还是网络技术还是软件测试)
1条回答 默认 最新
关注
【相关推荐】
- 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7754232
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【数据结构作业三】利用栈(以顺序栈作存储结构)实现二、十和十六进制转换
- 您还可以看一下 徐朋老师的软考网络工程师复习备考三步走课程中的 软考网络工程师复习备考课总体介绍小节, 巩固相关知识点
- 除此之外, 这篇博客: 蓝桥杯单片机学习过程记录(十三)第五届温度采集控制中的 蓝桥杯单片机学习过程记录(十三)第五届温度采集控制 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
一是锁存器的使用
P2=(P2&0X1F)
二是使用了官方提供的底层驱动程序,
有两点改动:一是onewire.c中的Delay函数要改成12个循环,因为52跟15的振荡不一样
二是onewire.h中的头文件把.c中的函数加进去,要不然报错,官方提供中没有。
三是把.c文件加到main里。主函数
//第五届温度采集及控制 #include <STC15F2K60S2.H> #include <intrins.h> #include "onewire.h" unsigned char num; unsigned char max_1,max_2,min_1,min_2,temp_set,num_set; unsigned char flag_jiemian,flag_led,flag_false; unsigned char t; unsigned char wendu,wendu_min,wendu_max; unsigned char yi,er,san,si,wu,liu,qi,ba; unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; void allinit(); void display_12(yi,er); void display_34(san,si); void display_56(wu,liu); void display_78(qi,ba); void Delay500us(); void delayms(int ms); void time0_init(); void key_scan(); unsigned char ds18_get(void); void main(){ //初始化参数 allinit(); wendu_min=20; wendu_max=30; //定时器初始化 time0_init(); EA=1;ET0=1; yi=10;er=11;san=10;si=11;wu=11;liu=11;qi=11;ba=11; while(1){ //温度获取 wendu=ds18_get(); //进入界面功能判断 //温度显示页面 if(flag_jiemian==0){ //进行温度判断 //小于温度设定最低 if(wendu<wendu_min){ //0模式,继电器关闭,小灯0.8闪 er=0; flag_led=0; P2=(P2&0x1f)|0XA0;P0=0X00; P2=P2&0x1f; } //大于温度设定最高 else if(wendu>wendu_max){ //2模式,小灯0.2闪,继电器开 er=2; P2=(P2&0x1f)|0XA0;P0=0X10; P2=P2&0x1f; flag_led=2; } //中间值 else{ //1模式,小灯0.4闪,继电器关闭 er=1; P2=(P2&0x1f)|0XA0;P0=0X00; P2=P2&0x1f; flag_led=1; } yi=10;san=10;si=11;wu=11;liu=11;qi=wendu/10;ba=wendu%10; key_scan(); display_12(yi,er); display_34(san,si); display_56(wu,liu); display_78(qi,ba); P2=0XC0;P0=0XFF;P2=0XE0;P0=0XFF; } //温度设定界面 else if(flag_jiemian==1){ while(1){ key_scan(); //依次设定最大最小值 switch(num_set){ case 0:break; case 1:max_1=temp_set;break; case 2:max_2=temp_set;break; case 3:min_1=temp_set;break; case 4:min_2=temp_set;break; } yi=10;er=max_1;san=max_2;si=11;wu=11;liu=10;qi=min_1;ba=min_2; if(flag_jiemian==0) break; display_12(yi,er); display_34(san,si); display_56(wu,liu); display_78(qi,ba); P2=0XC0;P0=0XFF;P2=0XE0;P0=0XFF; } } } }
矩阵按键
void key_scan(){ unsigned char temp; //第一列s7s6s5s4 P44=0;P42=1;P3=0XFF;temp=P3; temp=(temp&0x0f); if(temp!=0x0f){ delayms(5); temp=P3;temp=(temp&0x0f); if(temp!=0x0f){ temp=P3; switch(temp){ case 0xfe: temp_set=0;num_set++;break; case 0xfd: temp_set=3;num_set++;break; case 0xfb: temp_set=6;num_set++;break; case 0xf7: temp_set=9;num_set++;break; } while(temp!=0x0f){ temp=P3; temp=(temp&0x0f); } } } //第2列s11s10s9s8 P44=1;P42=0;P3=0XFF;temp=P3; temp=(temp&0x0f); if(temp!=0x0f){ delayms(5); temp=P3;temp=(temp&0x0f); if(temp!=0x0f){ temp=P3; switch(temp){ case 0xfe:temp_set=1;num_set++; break; case 0xfd:temp_set=4;num_set++; break; case 0xfb:temp_set=7;num_set++; break; case 0xf7: if(flag_jiemian==0) { flag_jiemian=1; } else if(flag_jiemian==1) { wendu_min=min_1*10+min_2; wendu_max=max_1*10+max_2; if(wendu_max<wendu_min){ P2=(P2&0x1f)|0x80;P0=0XFD; P2=P2&0x1f; flag_false=1; } else{ flag_false=0; num_set=0; flag_jiemian=0; } } break; } while(temp!=0x0f){ temp=P3; temp=(temp&0x0f); } } } //第三列s15-12 P44=1;P42=1;P3=0XDF;temp=P3; temp=(temp&0x0f); if(temp!=0x0f){ delayms(5); temp=P3;temp=(temp&0x0f); if(temp!=0x0f){ temp=P3; switch(temp){ case 0xde: temp_set=2;num_set++; break; case 0xdd: temp_set=5;num_set++; break; case 0xdb: temp_set=8;num_set++; break; case 0xd7: max_1=0;max_2=0;min_1=0;min_2=0;num_set=0; break; } while(temp!=0x0f){ temp=P3; temp=(temp&0x0f); } } } } //定时器初始化 void time0_init(){ AUXR|=0X80; TMOD&=0XF0; TL0=0X00; TH0=0X28; TF0=0;TR0=1; } void time0(void) interrupt 1{ t++; if(flag_jiemian==0){ if(flag_led==0){ if(t%200==0){ if(num==1){ P2=(P2&0x1f)|0x80;P0=0XFE; P2=P2&0x1f; num=0; } else if(num==0){ P2=(P2&0x1f)|0x80;P0=0XFF; P2=P2&0x1f; num=1; } } } else if(flag_led==1){ if(t>80){ t=0; if(num==1){ P2=(P2&0x1f)|0x80;P0=0XFE; P2=P2&0x1f; num=0; } else if(num==0){ P2=(P2&0x1f)|0x80;P0=0XFF; P2=P2&0x1f; num=1; } } } else if(flag_led==2){ if(t%40==0){ if(num==1){ P2=(P2&0x1f)|0x80;P0=0XFE; P2=P2&0x1f; num=0; } else if(num==0){ P2=(P2&0x1f)|0x80;P0=0XFF; P2=P2&0x1f; num=1; } } } } }
温度及其他
//温度读取 unsigned char ds18_get(void){ unsigned char low,high,temp; init_ds18b20(); Write_DS18B20(0XCC); Write_DS18B20(0X44); Delay500us(); init_ds18b20(); Write_DS18B20(0xcc); Write_DS18B20(0xbe); low=Read_DS18B20(); high=Read_DS18B20(); init_ds18b20(); temp=high<<4; temp=temp|(low>>4); return temp; } //延时 void Delay500us() //@11.0592MHz { unsigned char i, j; _nop_(); _nop_(); i = 6; j = 93; do { while (--j); } while (--i); } void allinit(){ P2=0XA0;P0=0X00; P2=0XC0;P0=0XFF;P2=0XE0;P0=0XFF; P2=0X80;P0=0XFF; } void delayms(int ms){ int q,w; for(q=0;q<ms;q++) for(w=0;w<845;w++); } void display_12(yi,er){ P2=0XC0;P0=0X01;P2=0XE0;P0=seg[yi]; delayms(1); P2=0XC0;P0=0X02;P2=0XE0;P0=seg[er]; delayms(1); } void display_34(san,si){ P2=0XC0;P0=0X04;P2=0XE0;P0=seg[san]; delayms(1); P2=0XC0;P0=0X08;P2=0XE0;P0=seg[si]; delayms(1); } void display_56(wu,liu){ P2=0XC0;P0=0X10;P2=0XE0;P0=seg[wu]; delayms(1); P2=0XC0;P0=0X20;P2=0XE0;P0=seg[liu]; delayms(1); } void display_78(qi,ba){ P2=0XC0;P0=0X40;P2=0XE0;P0=seg[qi]; delayms(1); P2=0XC0;P0=0X80;P2=0XE0;P0=seg[ba]; delayms(1); }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报