单片机原理及应用实习总结报告Word格式.doc
- 文档编号:5109270
- 上传时间:2023-05-04
- 格式:DOC
- 页数:17
- 大小:344KB
单片机原理及应用实习总结报告Word格式.doc
《单片机原理及应用实习总结报告Word格式.doc》由会员分享,可在线阅读,更多相关《单片机原理及应用实习总结报告Word格式.doc(17页珍藏版)》请在冰点文库上搜索。
五系统软件设计
5.1主程序设计
开始
初始化
状态号设为默认1
取得状态号n,根据n值,选择程序分支
n=1,执行状态1处理程序
n=2,执行状态2处理程序
n=3,执行状态3处理程序
n=4,执行状态4处理程序
图5主程序流程框图、
n=5,执行状态5处理程序
主程序包括5个部分,以状态号标识系统所处的状态。
在上电初始化后即进入状态号的轮询扫描,状态号的值决定了子程序的入口。
其中子程序分别为:
循环灯点亮(状态号为1)、四位数码显示倒计时(状态号为2)、交通灯控制(状态号为3)、电子琴演奏(状态号为4)。
PC机(状态号位5)主程序流程框图如图5所示:
5.2功能子程序设计
5.2.1循环灯控制模块
利用查表法,定时器定时实现任意历程跑马灯的控制。
5.2.2四位数码显示模块
编程实现千位数秒倒计时。
5.2.3交通灯控制模块
利用模块1和模块2的硬件电路模拟实现十字路口交通等的管理功能,要求有黄灯闪烁警示功能。
信号灯控制系统:
南北线有红黄绿三只信号灯,东西线有红黄绿三只信号灯。
表1交通灯切换控制顺序表
时间(秒)
南北线
绿黄红
东西线
30
10
亮灭灭
灭闪灭
灭灭亮
5.2.4电子琴模块
该模块的硬件电路,可以利用单片机的1位IO口接一只三极管来驱动蜂鸣器,演奏编好的乐谱;
或者实现利用按键模拟电子琴演奏。
利用定时器控制单片机引脚发出一定频率(声波频率20Hz~20000Hz)的方波信号,就可使喇叭发出单调的声音,也可以产生DO,RE,ME,FA,SO,LA,XI等音阶在内的各种频率声音。
乐曲演奏模块
通过编程将乐谱输入输入单片机,由外接扬声器奏出悦耳动听的音乐。
5.2.5PC通讯
六实习总结、体会
通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新可以是在原有的基础上进行改进,使之功能不断完善,成为真真正自己的东西。
首先在做本次实习的过程中,我感触最深的当属查阅大量的设计资料了。
为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。
我们是在做单片机实习,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。
其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:
C语言、模拟和数字电路知识等。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
最后,在实习之前,我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;
要有一个清晰的思路和一个完整的的软件流程图;
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;
在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中。
参考文献
1.彭伟.单片机C语言程序设计实训100例——基于8051+Proteus仿真.北京:
电子工业出版社,2011
2.郭天祥.新概念51单片机C语言教程——入门、提高、开发、拓展全攻略.北京:
电子工业出版社,2009
3.刘建清.轻松玩转51单片机C语言.北京:
北京航空航天大学出版社,2010
4.谭浩强.C程序设计.北京:
清华大学出版社,1991
5.求是科技.单片机典型模块设计实例导航。
北京:
人民邮电出版社,2004
6.潘新民,王燕芳.单片微型计算机实用系统设计.北京:
7.胡汉才.单片微机原理及其接口技术.清华大学出版社,2010(推荐教材)
8.宏晶科技STCMicrocontrollerHandbook,2007
9.单片机教程网
附件1单片机实习最小系统原理总图
附件2实习材料清单
附件3实习工作进展及完成记录表
附件4调试通过的源程序清单
附件1原理总图
附件2单片机实习最小系统设计材料清单
材料名称
规格
数量
备注
说明
电阻
10k
1
R1
1k
7
R2-R8
200
12
R10-R21
电容
30pf
2
C1C2
1uf
4
C4-C7
电解性电容
220uf
C3
10uf
C8
芯片
AT89C51
NAX232
三极管
5
pnp
Q1-Q5
发光二极管
LED-RED
D1D2D9D10
LED-GREEN
D3D4D11D12
LED-YELLOW
D5D6D13D14
9键插座
CONN-D9F
SOUNDER
多功能电路板
管座
40位
16位
按钮
16
12M
排阻
8*10k
RP1
4位液晶数码管
共阳极
实习工具清单
工具
电烙铁
钳子
尖口
圆口
附件4源程序清单
17
1.循环灯点亮
#include<
reg52.h>
intrins.h>
#include"
led.h"
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeled_table[]=
{
0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,
0xfb,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,
0xfb,0xf3,0xe3,0xc7,0x8f,0x1f,0x3e,0x7f,0xff,0xff,
0xcf,0xb7,0x7b,0xff,0xff,0x7b,0xb7,0xcf,0xff
};
intsu_du=1500;
voidlighting_led()
staticuchari;
staticuintm;
m++;
if(i==34)i=0;
if(m==su_du)
{
m=0;
P3=led_table[i++];
}
if(m>
su_du)
m=0;
}
2.四位数码显示
(1)#include"
daojishi.h"
timer0.h"
bitdaojishi_OK=0;
intjishi=0;
void_Dao_Ji_Shi()
staticucharMinute_buf=2;
if(daojishi_OK==1)
if(Minute_buf!
=shi_zhong)
{
jishi--;
if(jishi<
0)
{ jishi=0;
daojishi_OK=0;
}
}
Minute_buf=shi_zhong;
(2)#include"
REG52.h"
typedefunsignedcharBYTE;
typedefunsignedintWORD;
//-----------------------------------------------
/*defineconstants*/
#defineFOSC12000000L
#defineT1MS(65536-FOSC/12/1000)//1mstimercalculationmethodin12Tmode
/*defineSFR*/
sbitwe1=P2^3;
sbitwe2=P2^2;
sbitwe3=P2^1;
sbitwe4=P2^0;
/*definevariables*/
BYTEcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e};
WORDcount;
//1000timescounter
WORDshi_zhong=0;
WORDbeep_delay_count;
bitseg_flag;
bitsearch_key_flag;
voidseg_display(WORDdat)
switch(count%4)
case0:
P0=0xff;
we1=0;
we2=1;
we3=1;
we4=1;
P0=table[dat/1000];
break;
case1:
we1=1;
we2=0;
P0=table[dat%1000/100];
case2:
we3=0;
P0=table[dat%100/10];
case3:
we4=0;
P0=table[dat%10];
default:
;
/*Timer0interruptroutine*/
voidtm0_isr()interrupt1
TL0=T1MS;
//reloadtimer0lowbyte
TH0=T1MS>
>
8;
//reloadtimer0highbyte
if(TR1==1)beep_delay_count++;
if(count++==1000)//1ms*1000->
1s
{
count=0;
//resetcounter
shi_zhong++;
seg_flag=1;
if(count%10==0)
search_key_flag=1;
voidtm0_int()
TMOD=0x01;
//settimer0asmode1(16-bit)
//initialtimer0lowbyte
//initialtimer0highbyte
TR0=1;
//timer0startrunning
ET0=1;
//enabletimer0interrupt
EA=1;
//openglobalinterruptswitch
count=0;
//initialcounter
3.交通灯控制
traffic.h"
#defineuintunsignedint
sbitRED_A=P3^2;
sbitRED_B=P3^3;
sbitGREEN_A=P3^4;
sbitGREEN_B=P3^5;
sbitYELLOW_A=P3^6;
sbitYELLOW_B=P3^7;
uchardao_ji_shi=0;
ucharOperation_Type=1;
voidTraffic_lignt()
{ dao_ji_shi=29-shi_zhong%30;
switch(Operation_Type)
case1:
RED_A=1;
YELLOW_A=1;
GREEN_A=0;
//A绿灯、B红灯亮
RED_B=0;
YELLOW_B=1;
GREEN_B=1;
if(dao_ji_shi<
11)//十秒
{
Operation_Type=2;
break;
case2:
if(dao_ji_shi==10||dao_ji_shi==8||dao_ji_shi==6||dao_ji_shi==4||dao_ji_shi==2||dao_ji_shi==0)
{
YELLOW_A=0;
}else
YELLOW_A=1;
//A黄灯闪烁5s
if(dao_ji_shi==29)
Operation_Type=3;
case3:
RED_A=0;
GREEN_A=1;
//A红灯、B绿灯亮
RED_B=1;
GREEN_B=0;
if(dao_ji_shi<
Operation_Type=4;
case4:
//B黄灯闪烁5s
if(dao_ji_shi==10||dao_ji_shi==8||dao_ji_shi==6||dao_ji_shi==4||dao_ji_shi==2||dao_ji_shi==0)
YELLOW_B=0;
}else
YELLOW_B=1;
//A红灯、B绿灯
Operation_Type=1;
default:
break;
4.电子琴、乐曲演奏
dianziqin.h"
key.h"
sbitbeep=P2^4;
uintcodeTone_Delay_Table[]= //音符延时
{64021,64103,64260,64400,64524,64580,64684,64777,
64820,64898,64968,65030,65058,65110,65157,65178};
ucharcodeDSY_Table[]= //数码管
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};
//第一段
ucharcodesong1_Tone[]={0,1,2,3,4,5,5,6,7,8,9,10,11,12,13,14,15,15,14,13,
12,11,10,9,8,7,6,5,4,3,2,1,0xff};
ucharcodesong1_Time[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xff};
//第二段
ucharcodesong2_Tone[]={3,5,5,3,2,1,2,3,5,3,2,3,5,5,3,2,1,2,3,2,1,1,0xff};
ucharcodesong2_Time[]={2,1,1,2,1,1,1,2,1,1,1,2,1,1,2,1,1,1,2,1,1,1,0xff};
//第三段
ucharcodesong3_Tone[]={1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xff};
ucharcodesong3_Time[]={2,1,1,2,1,1,1,2,1,1,1,2,1,1,2,1,1,1,2,1,1,1,0xff};
//音乐片段引索,音符引索
ucharsong_index=0,Tone_index=0;
//指针
uchar*song_Tone_Pointer,*song_Time_Pointer;
//取音符位置
uchari=0;
ucharKeyNo;
//按键
ucharinter_cont=0;
voidDian_zi_qin()
if(Key_value!
=0)
TR1=1;
KeyNo=Key_value;
beep_delay_count=0;
elseif(beep_delay_count>
=200)
{
beep=1;
TR1=0;
if(inter_cont>
0)
switch(inter_cont-1)
{
case0:
song_Tone_Pointer=song1_Tone;
song_Time_Pointer=song1_Time;
break;
case1:
song_Tone_Pointer=song2_Tone;
song_Time_Pointer=song2_Time;
case2:
song_Tone_Pointer=song3_Tone;
song_Time_Pointer=song3_Time;
default:
Tone_index=song_Tone_Pointer[i];
if(Tone_index==0xff)
TR1=0;
i=0;
else
{ TR1=1;
if(beep_delay_count>
=song_Time_Pointer[i]*200)
{
beep=1;
beep_delay_count=0;
i++;
}
voidtm1_isr()in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 实习 总结报告