- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
吉林工程技术师范学院单片机__报告管理
吉林工程技术师范学院
单片机实训报告
时间:????2013年五月???班级:????学号:???????姓名:??? ???指导老师:???第一章 概述 3
1.1实训目的 3
1.2 内容及要求 3
第二章 实训内容 4
2.1 键盘与数码管动态显示 4
2.1.1实验内容 4
2.2.2 程序代码 5
2.2 测量脉宽与占空比 9
2.2.1实验内容 9
2.2.2程序代码 10
2.3 键盘与数码管静态显示 14
2.3.1实验内容 14
2.3.2程序代码 16
2.4 串行口自发自收 19
2.4.1实验内容 19
2.4.2程序代码 20
2.5 测量脉宽与占空比(不使用门控位) 24
2.5.1实验内容 24
2.5.2 程序代码 26
第三章 实训心得 31
第一章 概述
1.1实训目的
《单片机原理与应用》是一门理论性与实践性都较强的专业课程,对培养单片机开发与应用能力有重要作用。实训环节是对课程理论的巩固,也是学生掌握课程核心内容的一种有效途径和方式,通过实训可以使学生熟悉单片机项目的开发流程、熟练掌握单片机的硬件及软件编程。
课程设计应强调以能力培养为主,在独立完成设计任务问题的能力的培养与提高,主要包括以下方面:
1. 独立工作的能力和创造力。
2. 综合运用专业及基础知识,解决实际工作技术的能力。
3. 查阅图书资料、产品手册和各种工具书的能力。
4. 使用Protel等EDA工具进行单片机硬件系统的能力。
5. 基于Keil IDE 开发单片机应用程序的能力。
6. 写技术报告和编制技术资源的能力。
1.2 内容及要求
按照课程设计实现以下功能:
1键盘与数码管动态显示
2测量脉宽与占空比
3键盘与数码管静态显示
4串行口自发自收
5测量脉宽与占空比(不使用门控位)
第二章 实训内容
2.1 键盘与数码管动态显示
2.1.1实验内容
根据电路图图1和图2编写按键程序,左侧第一位数码管显示独立式按键编号“1”、“2”、“3”、“4”,哪一个按下,对应的编号显示在左侧第一位数码管(左侧第二个数码管为全灭状态),右侧二位数码管显示“00--15”的十进制键值,无键按下时数码管为全灭状态;动态显示用定时/计数器的定时器中断完成。
图2.1 动态显示电路图
图2.2 键盘接口电路图
2.2.2 程序代码
#include reg51.h
unsigned char code table_duan[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0XFF,};
unsigned char code table_bit[]={0xef,0xdf,0xbf,0x7f};
unsigned char dis_buf[4];
unsigned char i;
unsigned char aa,bb,cc,hang,lie;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
void delay_ms(unsigned int i)
{
unsigned char j;
for(i;i0;i--)
{
for(j=110;j0; j-- );
}
}
void key_scan(void)
{
P3=0Xf0;
if((P30xf0)!=0xf0)
{
delay_ms(5);
if((P30xf0)!=0xf0)
{
aa=0xfe;
for(lie=0;lie4;lie++)
{
P3=aa;
aa=(aa1)|0x01;
bb=P30Xf0;
if(bb!=0xf0)
{
switch(bb)
{
case 0xe0:cc=lie*4;break;
case 0xd0:cc=lie*4+1;break;
case 0xb0:cc=lie*4+2;break;
case 0x70:cc=lie*4+3;break;
default :cc=16;break;
}
}
}
}
else cc=16;
}
else cc=16;
}
void Time0(void) interrupt 1
{
TH0=(65536-2000)/256
文档评论(0)