黄 凯高级讲师
多年移动互联网开发经验,精通Android与iOS开发,对JavaEE等后台技术也 有所研究。尤其精通Android平台的开发,对Android平台下的性能优化有极其丰富的经验。 曾就职于酷狗音乐担任高级Android软件工程师与Team Leader一职,带领超过20人的开发团队,有丰富的开发与管理经验。参与开发了<酷狗音乐>,<繁星网>,<中国电信移动办公>, <智慧天河>,<翼健康>,<创饷无限>,<外修管家>等20多款互联网热门应用。其不但开发经验丰富,教学幽默风趣,而且对 学生要求严格,坚持授人与鱼不如授人与渔的理念,注重培养学生的解决问题与自我思考的能力。
自学java与java培训该如何选择
从事IT培训行业这些年,身边经常有朋友来咨询,问现在是否可以加入这个高薪行业,Java学习难不难,需要哪些条件?
在软件开发设计行业当中,使用**多的编程语言就属Java软件开发了,很多人都想在Java编程开发领域寻求一份工作。
Java是当前世界上比较流行的计算机编程语言,Java彻底改变了人们的生活,国内的开发人才需求量仍然在不断的增长,主要原因还是在于移动互联网的快速发展,衍生出一大批的新生企业,创业公司,预计在未来5年内Java软件开发人才的需求将会远大于供给,其中java程序员、java工程师**为缺乏。
自学java与java培训是两个绕不开的话题,两者的区别,前者知识是自己搜寻的,买书看或者网上找视频看,而后者,技术知识是老师教的,作为一个普通大学生实际上任何人都能够自学,只不过聪明程度和坚持的时间长短不同,花费的时间长一点短一点而已。
学习关乎到时间和金钱,没有效果和质量的培训,其实是没有任何意义的。Java培训班有哪些呢?市面上的Java培训良莠不齐,选择时应该慎重些。Java致力于打造符合企业需求的全能型人才。课程定位定位中高级JAVA开发工程师,课程内容涉及面广,内容深。课程涵盖了Java、Web,数据库,企业流行框架,Java等企业**佳实践、云计算大数据课程、内容由浅入深,剖析原理,让学员掌握实用技术,做企业和社会需要的稀缺人才。
此外,Java培训将为你提供就业保障,开设有就业指导课,设有专门的就业指导老师,在毕业前期,毕业之际,就业老师会为你做专门的就业指导,更有职业素养课程,不仅将你打造成Java开发技术达人,更是一位懂得职场之道的合格就业者。还有丰富的Java学习视频免费为你提供学习。
JAVA 分布式大纲
一阶段 java基础,我们将学习变量,基本数据类型,进制,转义字符,运 算符,分支语句和循环语句等,以达到训练基础语法和逻辑能力的目的。还有对数组、面向对象和异常处理等。
二阶段 javaWeb,主要是学习Web前端开发基础和框架、Servlet和JSP在Web 后端的应用、Web后端开发相关专题、MVC和分层架构以及项目开发流程及CASE工具的使用等。
三阶段 java框架,像框架整合开发(SSH/SSS)、RESTful架构和移动端接口 设计、第三方接口和在线支付功能、网站安全和Spring Security应用实战、复杂用户交互处理和Spring Web Flow的应用、MyBatis的应用和SSM整合等 技术点都是需要你掌握的。
四阶段 java 云数据,亿级并发架构演进、Linux基础、搭建tomcat环境以 及大数据开发云计算等高级Java教程,是Java技术的高端知识。其中穿插项目实战演练,企业真实项目供学员应用学习,进行知识体系的“二次学习” 。
【51单片机】时光钟 - 一寸光阴一寸光
>**时间就像光一样,匆匆一撇却已远去,离去的时光怕是连光也望尘莫及。**
1.概要:有别于传统石英钟,内部不使用任何机械结构,而是全部使用电子电路。**单片机控制发光二极管所形成的光束来指示时间。因为指针全部使用光束代替,所以在深夜也能看得很清楚,也因此可以当作“壁灯”使用。
2.原理:51单片机作为主控芯片,从DS3231时钟得到时间数据,再**74ls38译码器输出低电平控制60个Led灯的开关。Led发光二极管安装于全透明的聚光杯中,形成的光束作为指针,**单片机的PWM控制Led的形成长短不一的光束来区分时针、分针和秒针。HC06作为通信芯片,可连接手机的蓝牙实现对本时钟时间的修改,以及指定Led灯的亮灭(作为壁灯使用时),或者显示一些预设的动画效果,比如流水灯等。
PS:楼主由于工具所限(自己在家无聊时做的,纯手工请不要嫌弃),这里只使用12个Led做了个原型,没加蓝牙模块,只实现**核心的时间功能。
3.材料: 1. STC89C52RC 2. DS3231时钟模块 3. 12个高亮5mmLED 4. 3.7v锂电池 5. TP4056锂电池充电模块 6. 奶茶店的透明吸管
PS:根据自己的喜好选择led的颜色即可,但是注意不同波长的led形成的光束有别,有些会比较不明显。
4.51单片机程序:
#include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define DS3231_WriteAddress 0xD0 #define DS3231_ReadAddress 0xD1 #define DS3231_SECOND 0x00 #define DS3231_MINUTE 0x01 #define DS3231_HOUR 0x02 #define DS3231_WEEK 0x03 #define DS3231_DAY 0x04 #define DS3231_MONTH 0x05 #define DS3231_YEAR 0x06 bit ack; //ó|′e±ê???? sbit SDA = P0^6; //?£?aI2Cêy?Y′??í??SDA sbit SCL = P0^7; //?£?aI2Cê±?ó??????SCL sbit c1 = P2^6; //??£????? sbit c2 = P2^5; //·?£????? sbit c3 = P2^7; //??£????? sbit c4 = P2^3; //??£????? sbit c5 = P2^1; //??£?ê??? sbit c6 = P2^0; //??£????? sbit c7 = P3^7; //??£????? sbit c8 = P3^6; //??£????? sbit c9 = P3^2; //??£?ê??? sbit c10 = P1^5; //·?£?ê??? sbit c11 = P1^3; //ê±£????? sbit c12 = P1^2; //ê±£?ê??? unsigned int flag1, flag2, flag3, flag4, flag5, flag6, flag7, flag8, flag9, flag10, flag11, flag12; unsigned char hour, minute, second; unsigned char lastHour = 24, lastMinute = 60, lastSecond = 60; void TM1637_start(); void TM1637_stop(); void TM1637_write1Bit(unsigned char mBit); void TM1637_write1Byte(unsigned char mByte); void TM1637_writeCammand(unsigned char mData); void TM1637_writeData(unsigned char addr, unsigned char mData); void time_set(char hour, char min); void time_display(); void timer0_init(); void setZero(); void delay_140us(); void delayus(uint us); uchar BCD2HEX(uchar val) //BCD??×a???aByte { uchar temp; temp = val & 0x0f; val >>= 4; val &= 0x0f; val *= 10; temp = val; return temp; } uchar HEX2BCD(uchar val) //B??×a???aBCD?? { return (((val % 100) / 10) << 4) | (val % 10); } void delayus(uint us) { while(us--); } void Start_I2C() { SDA = 1; delayus(1); SCL = 1; delayus(5); SDA = 0; delayus(5); SCL = 0; delayus(2); } void Stop_I2C() { SDA = 0; delayus(1); SCL = 1; delayus(5); SDA = 1; delayus(4); } void SendByte(uchar c) { uchar BitCnt; for(BitCnt = 0;BitCnt < 8;BitCnt ) { if((c << BitCnt) & 0x80) SDA = 1; else SDA = 0; delayus(1); SCL = 1; delayus(5); SCL = 0; } delayus(2); SDA = 1; delayus(2); SCL = 1; delayus(3); if(SDA == 1) ack = 0; else ack = 1; SCL = 0; delayus(2); } uchar RcvByte() { uchar retc; uchar BitCnt; retc = 0; SDA = 1; for(BitCnt = 0;BitCnt < 8;BitCnt ) { delayus(1); SCL = 0; delayus(5); SCL = 1; delayus(3); retc = retc << 1; if(SDA == 1) retc = retc 1; delayus(2); } SCL = 0; delayus(2); return(retc); } void Ack_I2C(bit a) { if(a == 0) SDA = 0; else SDA = 1; delayus(3); SCL = 1; delayus(5); SCL = 0; delayus(2); } uchar write_byte(uchar addr, uchar write_data) { Start_I2C(); SendByte(DS3231_WriteAddress); if (ack == 0) return 0; SendByte(addr); if (ack == 0) return 0; SendByte(write_data); if (ack == 0) return 0; Stop_I2C(); delayus(10); return 1; } uchar read_current() { uchar read_data; Start_I2C(); SendByte(DS3231_ReadAddress); if(ack == 0) return(0); read_data = RcvByte(); Ack_I2C(1); Stop_I2C(); return read_data; } uchar read_random(uchar random_addr) { Start_I2C(); SendByte(DS3231_WriteAddress); if(ack == 0) return(0); SendByte(random_addr); if(ack == 0) return(0); return(read_current()); } /******************************************************************** * ??3? : delay_140us() * 1|?ü : ?óê± * ê?è? : void * ê?3? : ?T **************************************************************/ void delay_140us() { int i; for(i = 0; i < 20; i ) _nop_(); } /******************************************************************** * ??3? : void ModifyTime(uchar hou,uchar min,uchar sec) * 1|?ü : DT??ê±??£¨è?£? * ê?è? : void * ê?3? : ?T **************************************************************/ void ModifyTime(uchar hou, uchar min,uchar sec) { uchar temp = 0; temp = HEX2BCD(hou); write_byte(DS3231_HOUR, temp); //éè??ê± temp = HEX2BCD(min); write_byte(DS3231_MINUTE, temp); //éè??·? temp = HEX2BCD(sec); write_byte(DS3231_SECOND, temp); //éè???? } /******************************************************************** * ??3? : void ModifyTime(uchar hou,uchar min,uchar sec) * 1|?ü : DT??ê±??£¨ê±£? * ê?è? : void * ê?3? : ?T **************************************************************/ void ModifyHour(hour) { uchar temp = HEX2BCD(hour); write_byte(DS3231_HOUR, temp); //éè??ê± } /******************************************************************** * ??3? : void Modifymin(minute) * 1|?ü : DT??ê±??£¨·?£? * ê?è? : void * ê?3? : ?T **************************************************************/ void ModifyMinute(minute) { uchar temp = HEX2BCD(minute); write_byte(DS3231_MINUTE, temp); //éè??·? } /******************************************************************** * ??3? : void ModifyTime(uchar hou,uchar min,uchar sec) * 1|?ü : DT??ê±??£¨??£? * ê?è? : void * ê?3? : ?T **************************************************************/ void ModifySecond(second) { uchar temp = HEX2BCD(second); write_byte(DS3231_SECOND, temp); //éè???? } /******************************************************************** * ??3? : void init() * 1|?ü : 3ìDò3?ê??ˉ * ê?è? : void * ê?3? : ?T **************************************************************/ void init() { TMOD = 0x02; TH0 = 0x06; TL0 = 0x06; TR0 = 1; ET0 = 1; EA = 1; } /******************************************************************** * ??3? : void setZero() * 1|?ü : è?2???á?£??ùóDμ???2?áá * ê?è? : void * ê?3? : ?T **************************************************************/ void setZero() { flag1 = 0; flag2 = 0; flag3 = 0; flag4 = 0; flag5 = 0; flag6 = 0; flag7 = 0; flag8 = 0; flag9 = 0; flag10 = 0; flag11 = 0; flag12 = 0; } /******************************************************************** * ??3? : void light(uint number, uint level) * 1|?ü : ???¨μ?áá * ê?è? : uint number, uint level * ê?3? : ?T **************************************************************/ void light(uint number, uint level) { switch(number) { case 0: flag12 = level; break; case 1: flag1 = level; break; case 2: flag2 = level; break; case 3: flag3 = level; break; case 4: flag4 = level; break; case 5: flag5 = level; break; case 6: flag6 = level; break; case 7: flag7 = level; break; case 8: flag8 = level; break; case 9: flag9 = level; break; case 10: flag10 = level; break; case 11: flag11 = level; break; default:break; } } /******************************************************************** * ??3? : void computer_and_display_time() * 1|?ü : ??ê?ê±?? * ê?è? : void * ê?3? : ?T **************************************************************/ void compute_and_display_time() { //????ê±?? uchar Htemp1, Htemp2, Mtemp1, Mtemp2, Stemp1, Stemp2; Htemp1 = read_random(DS3231_HOUR); //??è?ê± Htemp1&=0x3f; Htemp2 = BCD2HEX(Htemp1); Mtemp1 = read_random(DS3231_MINUTE); //??è?·? Mtemp2 = BCD2HEX(Mtemp1); Stemp1 = read_random(DS3231_SECOND); //??è??? Stemp2 = BCD2HEX(Stemp1); hour = Htemp2 % 12; minute = Mtemp2 / 5; second = Stemp2 / 5; //update hour if(hour != lastHour){ light(hour, 40); } //update minute if(minute != lastMinute){ if(minute != hour) light(minute, 30); } //update second if(second != lastSecond){ if(second != hour && second != minute) light(second, 1); } if(lastHour != hour && lastHour != minute && lastHour != second) light(lastHour, 0); if(lastMinute != hour && lastMinute != minute && lastMinute != second) light(lastMinute, 0); if(lastSecond != hour && lastSecond != minute && lastSecond != second) light(lastSecond, 0); lastHour = hour; lastMinute = minute; lastSecond = second; } /******************************************************************** * ??3? : timer0() * 1|?ü : PWMμ÷??????±è,0~10, áá?èμY?? * ê?è? : void * ê?3? : ?T **************************************************************/ void timer0() interrupt 1 { static unsigned int count; count ; if(count == 50) { count = 0; c1 = 1; c2 = 1; c3 = 1; c4 = 1; c5 = 1; c6 = 1; c7 = 1; c8 = 1; c9 = 1; c10 = 1; c11 = 1; c12 = 1; } if(flag12 != 0 && flag12 == count) c12 = 0; else if(flag1 != 0 && flag1 == count) c1 = 0; else if(flag2 != 0 && flag2 == count) c2 = 0; else if(flag3 != 0 && flag3 == count) c3 = 0; else if(flag4 != 0 && flag4 == count) c4 = 0; else if(flag5 != 0 && flag5 == count) c5 = 0; else if(flag6 != 0 && flag6 == count) c6 = 0; else if(flag7 != 0 && flag7 == count) c7 = 0; else if(flag8 != 0 && flag8 == count) c8 = 0; else if(flag9 != 0 && flag9 == count) c9 = 0; else if(flag10 != 0 && flag10 == count) c10 = 0; else if(flag11 != 0 && flag11 == count) c11 = 0; } /*********************************************************** ***** ***** ?÷oˉêy ***** ***********************************************************/ void main() { init(); setZero(); // ModifyHour(16); // ModifyMinute(24); while(1) { compute_and_display_time(); } }5.焊接:(从代码里可以看出怎么接线,所以就不再赘述了。)
拆了个旧风扇,搞定外壳。有没有外壳其实无所谓。
6.半成品:
7.成品图:(没有工具制作合适的外壳所以只能PS假装一下)
相关推荐: