学科代码.docx
《学科代码.docx》由会员分享,可在线阅读,更多相关《学科代码.docx(21页珍藏版)》请在冰豆网上搜索。
学科代码
学科代码:
071201
学号:
贵州师范大学(本科)
毕业论文
题目:
无线******
学院:
物理与电子信息科学学院
专业:
电子信息科学与技术
年级:
20**级
姓名:
***
指导教师:
****
完成时间:
201*年**月**日
附件1:
贵州师范大学本科毕业论文(设计)开题报告
物理与电子信息科学学院 专业:
电子信息科学与技术 级别:
****级
课题名称
无*****
学生
姓名
张*
学号
0708*****
指导教师姓名
**
职称
学位
开题报告内容要求:
1、选题的理论、实际意义
2、研究动态、见解
3、研究思路、方法、技术路线
4、总体安排、进度计划
5、主要参考文献
1、选题理论、实际意义
微电子科学*
随着市场
本文通过查阅网络资料及图书资料,
2009年11月13日:
*******;
2009年11月13日—12月15日:
**********
****;
2009年12月17日:
2009年12月18日—12月30日:
***;
2010年1月1日—3月15日:
*****;
2010年3月16日—3月31日:
*****。
2010年4月22日:
再次审核论文,定稿。
2010年4月23日:
论文答辩。
[1]童诗白主编.模拟电子技术基础.[M]高等教育出版社,2000
[2]电子报社编辑部.电子报2005合订本(上,下)[J]电子科技大学出版社,2005,(3):
40-46
[3]电子制作编辑部.电子制作.[J].电子制作杂志社,2006,(7):
35-37
[4]王卫东.电流模技术在模拟电子电路课程中的应用[J].挂林电子科技大学学报,23卷4期2003(8):
51-54
[5]张爱民.怎样选用电子元器件[J].中国电力出版社,2005,(3)
[6]安阳新世纪电子研究所产品手册[DB/OL].F05P&J04V典型应用电路.2008
[7]于文辉.基于单片机的智能流量控制系统[EB/OL].西安航空职工大学西航工学院
[8]霍少达,李斌,赵忠禹ZigBee模块的运动数据采集与传输设[J].Microcontrollers&EmbeddedSystems.2009年第十二期:
21-27
[9]StephenGKochan著.ProgramminginANSIC.HagdenBooksIndiana,[J]U.S.A,1944:
17-19
[10]HMPeitel,PJDeitel.CHowtoprogram,secondEdition.蒋才鹏等译.北京:
机械工业出版社,2000
指导教师意见:
签名:
2009年12月16日
注:
此表须打印,不够填写可续页。
附件3:
贵州师范大学本科毕业论文(设计)指导教师指导记录表
电子信息科学与技术级别:
2006级
论文(设计)题目
学生姓名
指导内容:
学生签名:
教师签名:
20年月日
备注:
1、此表由学生根据老师每次指导的内容填写,指导教师签字后学生保存,完成论文(设计)后与论文一并交学院。
2、此表可以续页。
附件6:
贵州师范大学本科毕业论文(设计)答辩记录表
答辩情况记录:
在答辩时间内完成以下答辩内容
一、本人叙述:
1.本文
2.几种
3.介绍。
4.介绍。
二、提问
问题
(1):
(2):
问题(3):
问题(4):
记录人:
答辩委员会成员签名:
答辩委员会负责人签字:
附件5:
贵州师范大学本科毕业论文(设计)成绩表
一、指导教师评价
200级
指导教师
指导教师评语(参照《贵州师范大学本科毕业论文(设计)成绩评定参考标准》):
建议成绩:
指导教师签名:
二、同行教师评审
20级
同行教师评审意见:
同行教师签名:
三、答辩委员会评定
答辩委员会评定意见:
答辩委员会负责人签名:
毕业论文(设计)成绩:
学院本科毕业论文(设计)指导委员会负责人签字:
年月日
年
题目
摘要:
本文摘要***********
Abstract:
This*************
.
Keywords:
Mi**************;
引言
电子*********
1.标题
1.1********
*******
1.2********
********
2.标题
3.标题
3.1*******
******
3.2*******
3.3STC89C51单片机
STC89C51单片机
3.4无线收发及编、解码电路原理
此系统
4.*****
图3-1********
5.****
*****
6.结束语
本文从******
参考文献:
[10]HMPeitel,PJDeitel.CHowtoprogram,secondEdition.蒋才鹏等译[J].北京:
致谢!
**************
附录:
附录1.系统详细电路原理图
附录2:
部分程序源代码
(1).12864液晶显示程序
#ifndef_12864_H__
#define_12864_H__
sbitE=P1^2;//使能端
sbitRW=P1^1;//读写端
sbitRS=P1^0;//数据命令端口
sbitCS1=P1^3;
sbitCS2=P1^4;
/****检查液晶是否忙碌***/
voidchekbusy12864(void)
{
uchardat;
RS=0;//指令模式
RW=1;//读数据
do{
/**点的显示**/
voiddot(ucharx,uchary)//所有的图形都在右屏上。
choose12864
(1);
dat=dat_r12864(y/8,x);
cmd_w12864(0x40+x);
cmd_w12864(0xb8+y/8);
dat_w12864((1<<(y%8))|dat);
}
/**温度对图形的转换**/
voidchange(void)
staticucharn=63;
uchari,m,sum=0;
m=temp[0]*10+temp[1]+(temp[2]+5)/10;
if(m<60)
m=62-m;
if(m{vertical(m,63,60);}if(m>n){if((m/8)>(n/8)){cmd_w12864(n/8+0xb8);cmd_w12864(0x40+60);dat_w12864(0x00);}for(i=0;i<(8-m%8);i++){sum=sum+(2<<((m%8)+i));}cmd_w12864(m/8+0xb8);cmd_w12864(0x40+60);dat_w12864(sum);n=m;}dot(60,3);}}#endif(2).键盘扫描程序#ifndef_KEY_H__#define_KDY_H__#definedataportP2ucharscan(uchark);ucharkeyscan(void){ucharm,n,keyscantime,keyoverflag;keyoverflag=0;ucharscan(uchark){ucharre;switch(k){case0xee:re=7;break;case0xde:re=8;break;case0xbe:re=9;break;case0x7e:re=10;break;//模式切换case0xed:re=4;break;case0xdd:re=5;break;case0xbd:re=6;break;case0x7d:re=11;break;//上case0xeb:re=1;break;case0xdb:re=2;break;case0xbb:re=3;break;case0x7b:re=12;break;//下case0xe7:re=0;break;case0xd7:re=13;break;//菜单case0xb7:re=14;break;//返回case0x77:re=15;break;//确定default:break;}returnre;}(3).ds18b20温度读取#ifndef_DS18B20_H__#define_DS18B20_H__#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^0;uchartemp[3];ucharflag=0;delayfor(8);DQ=0;delayfor(70);//80改60DQ=1;delayfor(25);}/**ds18b20读一个字节**/uchards18b20_readchar(void){uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;delay11us(10);}return(dat);}/**ds18b20写一个字节**/ds18b20_writechar(uchardat){uchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay11us(10);DQ=1;dat>>=1;}}/**读出温度**/uintreadtemperature(void){uchara=0;ucharb=0;/**温度数值处理**/voidgettemperature(void){staticuintte=0xffff;uintrealtemp;realtemp=readtemperature();if(te!=realtemp){temp[0]=realtemp/1000;temp[1]=(realtemp/100)%10;temp[2]=(realtemp/10)%10;te=realtemp;}}#endif(4).时钟初始化及读取#ifndef_DS1302_H__//防止重载#define_DS1302_H__#defineds1302_second0x80#defineds1302_minute0x82#defineds1302_hour0x84#defineds1302_day0x86#defineds1302_week0x8a#defineds1302_month0x88#defineds1302_year0x8c/**端口定义**/sbitIO=P1^6;sbitCLK=P1^7;sbitRST=P1^5;sbitACC0=ACC^0;sbitACC7=ACC^7;uchardatastring[13];////存放时间的数组typedefstruct{ucharsecond;ucharminute;ucharhour;ucharday;ucharweek;ucharmonth;ucharyear;}systemtime;//定义的时间的类型voidds1302_write(uchardat){uchari,j;j=dat;for(i=0;i<8;i++)//{//for(i=0;i<8;i++)仿真就会不成功,高手指点下!!IO=j&0x01;CLK=1;CLK=0;j>>=1;}}/**实时时钟读出一个字节**/uchards1302_read(){uchari;for(i=0;i<8;i++){ACC=ACC>>1;ACC7=IO;CLK=1;CLK=0;}return(ACC);}/**写入数据**/voiddat_write(ucharaddr,uchardat)//addr为要写数据的地址,dat为要写的数据{RST=0;CLK=0;RST=1;ds1302_write(addr);ds1302_write(dat);CLK=1;RST=0;}/**读出数据**/uchardat_read(ucharaddr){uchardat;RST=0;CLK=0;RST=1;ds1302_write(addr|0x01);dat=ds1302_read();CLK=1;RST=0;return(dat);}/**是否写保护**/voidds1302_protect(bitflag){if(flag)dat_write(0x8e,0x10);//禁止写elsedat_write(0x8e,0x00);//允许写}/**时间设置**/voidsettime(ucharaddr,ucharvalue){ds1302_protect(0);dat_write(addr,value);ds1302_protect(1);}/**时间增减设置**/voidset(ucharadr,bitflag){uchardat;dat=dat_read(adr);if(flag)dat_write(adr,dat+1);elsedat_write(adr,dat-1);}/**12/24小时时间设置**/voidday_set(bitflag)//flag为1为12时制,为0则为24小时制{ucharhour;hour=(dat_read(0x85)&0x7f);//保留小时寄存器中原有的时间值ds1302_protect(0);if(flag){dat_write(0x84,0x80|hour);}else{dat_write(0x84,0x00|hour);}ds1302_protect(1);}/**取时间**/voidgettime(systemtime*time){ucharreadvalue;readvalue=dat_read(ds1302_second);time->second=((readvalue&0x70)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_minute);time->minute=((readvalue&0x70)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_hour);time->hour=((readvalue&0x30)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_day);time->day=((readvalue&0x30)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_week);time->week=(readvalue&0x07);readvalue=dat_read(ds1302_month);time->month=((readvalue&0x01)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_year);time->year=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);datastring[0]=time->year/10;datastring[1]=time->year%10;datastring[2]=time->month/10;datastring[3]=time->month%10;datastring[4]=time->day/10;datastring[5]=time->day%10;datastring[6]=time->hour/10;datastring[7]=time->hour%10;datastring[8]=time->minute/10;datastring[9]=time->minute%10;datastring[10]=time->second/10;datastring[11]=time->second%10;datastring[12]=time->week;}/**初始时间设置为2008-08-0808时08分08秒**/voidinit_time(void){day_set(0);settime(ds1302_second,0x08);settime(ds1302_minute,0x30);settime(ds1302_hour,0x10);settime(ds1302_day,0x23);settime(ds1302_month,0x04);settime(ds1302_year,0x10);settime(ds1302_week,0x04);}/**DS1302初始化**/voidinit_ds1302(void){ucharsecond=dat_read(ds1302_second);if(second&0x80)settime(ds1302_second,0);}#endif
vertical(m,63,60);
if(m>n)
if((m/8)>(n/8))
cmd_w12864(n/8+0xb8);
cmd_w12864(0x40+60);
dat_w12864(0x00);
for(i=0;i<(8-m%8);i++)
sum=sum+(2<<((m%8)+i));
cmd_w12864(m/8+0xb8);
dat_w12864(sum);
n=m;
dot(60,3);
#endif
(2).键盘扫描程序
#ifndef_KEY_H__
#define_KDY_H__
#definedataportP2
ucharscan(uchark);
ucharkeyscan(void)
ucharm,n,keyscantime,keyoverflag;
keyoverflag=0;
ucharscan(uchark)
ucharre;
switch(k)
case0xee:
re=7;break;
case0xde:
re=8;break;
case0xbe:
re=9;break;
case0x7e:
re=10;break;//模式切换
case0xed:
re=4;break;
case0xdd:
re=5;break;
case0xbd:
re=6;break;
case0x7d:
re=11;break;//上
case0xeb:
re=1;break;
case0xdb:
re=2;break;
case0xbb:
re=3;break;
case0x7b:
re=12;break;//下
case0xe7:
re=0;break;
case0xd7:
re=13;break;//菜单
case0xb7:
re=14;break;//返回
case0x77:
re=15;break;//确定
default:
break;
returnre;
(3).ds18b20温度读取
#ifndef_DS18B20_H__
#define_DS18B20_H__
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^0;
uchartemp[3];
ucharflag=0;
delayfor(8);
DQ=0;
delayfor(70);//80改60
DQ=1;
delayfor(25);
/**ds18b20读一个字节**/
uchards18b20_readchar(void)
uchari=0;
uchardat=0;
for(i=8;i>0;i--)
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay11us(10);
return(dat);
/**ds18b20写一个字节**/
ds18b20_writechar(uchardat)
DQ=dat&0x01;
/**读出温度**/
uintreadtemperature(void)
uchara=0;
ucharb=0;
/**温度数值处理**/
voidgettemperature(void)
staticuintte=0xffff;
uintrealtemp;
realtemp=readtemperature();
if(te!
=realtemp)
temp[0]=realtemp/1000;
temp[1]=(realtemp/100)%10;
temp[2]=(realtemp/10)%10;
te=realtemp;
(4).时钟初始化及读取
#ifndef_DS1302_H__//防止重载
#define_DS1302_H__
#defineds1302_second0x80
#defineds1302_minute0x82
#defineds1302_hour0x84
#defineds1302_day0x86
#defineds1302_week0x8a
#defineds1302_month0x88
#defineds1302_year0x8c
/**端口定义**/
sbitIO=P1^6;
sbitCLK=P1^7;
sbitRST=P1^5;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
uchardatastring[13];////存放时间的数组
typedefstruct
{ucharsecond;
ucharminute;
ucharhour;
ucharday;
ucharweek;
ucharmonth;
ucharyear;
}systemtime;//定义的时间的类型
voidds1302_write(uchardat)
uchari,j;
j=dat;
for(i=0;i<8;i++)//
{//for(i=0;i<8;i++)仿真就会不成功,高手指点下!
!
IO=j&0x01;
CLK=1;
CLK=0;
j>>=1;
/**实时时钟读出一个字节**/
uchards1302_read()
uchari;
for(i=0;i<8;i++)
ACC=ACC>>1;
ACC7=IO;
return(ACC);
/**写入数据**/
voiddat_write(ucharaddr,uchardat)//addr为要写数据的地址,dat为要写的数据
RST=0;
RST=1;
ds1302_write(addr);
ds1302_write(dat);
/**读出数据**/
uchardat_read(ucharaddr)
ds1302_write(addr|0x01);
dat=ds1302_read();
/**是否写保护**/
voidds1302_protect(bitflag)
if(flag)
dat_write(0x8e,0x10);//禁止写
else
dat_write(0x8e,0x00);//允许写
/**时间设置**/
voidsettime(ucharaddr,ucharvalue)
{ds1302_protect(0);
dat_write(addr,value);
ds1302_protect
/**时间增减设置**/
voidset(ucharadr,bitflag)
{uchardat;
dat=dat_read(adr);
dat_write(adr,dat+1);
dat_write(adr,dat-1);
/**12/24小时时间设置**/
voidday_set(bitflag)//flag为1为12时制,为0则为24小时制
hour=(dat_read(0x85)&0x7f);//保留小时寄存器中原有的时间值
ds1302_protect(0);
{dat_write(0x84,0x80|hour);
}else
{dat_write(0x84,0x00|hour);}
/**取时间**/
voidgettime(systemtime*time)
ucharreadvalue;
readvalue=dat_read(ds1302_second);
time->second=((readvalue&0x70)>>4)*10+(readvalue&0x0f);
readvalue=dat_read(ds1302_minute);
time->minute=((readvalue&0x70)>>4)*10+(readvalue&0x0f);
readvalue=dat_read(ds1302_hour);
time->hour=((readvalue&0x30)>>4)*10+(readvalue&0x0f);
readvalue=dat_read(ds1302_day);
time->day=((readvalue&0x30)>>4)*10+(readvalue&0x0f);
readvalue=dat_read(ds1302_week);
time->week=(readvalue&0x07);
readvalue=dat_read(ds1302_month);
time->month=((readvalue&0x01)>>4)*10+(readvalue&0x0f);
readvalue=dat_read(ds1302_year);
time->year=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);
datastring[0]=time->year/10;
datastring[1]=time->year%10;
datastring[2]=time->month/10;
datastring[3]=time->month%10;
datastring[4]=time->day/10;
datastring[5]=time->day%10;
datastring[6]=time->hour/10;
datastring[7]=time->hour%10;
datastring[8]=time->minute/10;
datastring[9]=time->minute%10;
datastring[10]=time->second/10;
datastring[11]=time->second%10;
datastring[12]=time->week;
/**初始时间设置为2008-08-0808时08分08秒**/
voidinit_time(void)
{day_set(0);
settime(ds1302_second,0x08);
settime(ds1302_minute,0x30);
settime(ds1302_hour,0x10);
settime(ds1302_day,0x23);
settime(ds1302_month,0x04);
settime(ds1302_year,0x10);
settime(ds1302_week,0x04);
/**DS1302初始化**/
voidinit_ds1302(void)
{ucharsecond=dat_read(ds1302_second);
if(second&0x80)
settime(ds1302_second,0);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1