内蒙古科技大学单片机实训报告.docx
《内蒙古科技大学单片机实训报告.docx》由会员分享,可在线阅读,更多相关《内蒙古科技大学单片机实训报告.docx(20页珍藏版)》请在冰豆网上搜索。
内蒙古科技大学单片机实训报告
信息工程学院实训报告
题目:
16×16点阵显示实训
出租车计价器设计
学生姓名:
学号:
专业:
班级:
指导教师:
目录
实训任务书﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍3
摘要﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍7
1.16×16点阵显示实训﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍8
1.1实训目的﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍8
1.2实训内容﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍8
1.3I/O口地址分配﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍8
1.4实训电路﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍8
1.5实训步骤﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍8
1.6实训原理﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍9
1.7实训程序﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍11
2.出租车计价器设计﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍14
2.1实训目的﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍14
2.2实训内容﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍14
2.3实训电路﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍14
2.4实训步骤﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍14
2.5实训原理﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍15
2.6实训程序﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍16
2.7实训改进﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍19
实训心得﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍21
参考文献﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍22
内蒙古科技大学实训任务书
课程名称
微计算机应用及计控技术实训
实训地点
实训名称
16×16点阵显示实训
B307、B308
指导教师
贾玉瑛、李爱莲、梁丽、陈波、李琦
时间
第十九周
一、实训目的及基本要求:
1、实训目的:
(1)利用单片机I/O口或以扩展锁存器的方式控制点阵显示。
(2)掌握单片机与16×16点阵块之间接口电路设计及编程。
2、基本要求
(1)预习要求:
学生要根据实训题目要求查阅参考资料,提前进行认真的预习,初步弄懂实训内容、原理,并写出预习报告;预习报告应包括基本的实训内容和实训方案,基本实训步骤、过程以及数据记录,对于有设计内容的项目要提前做好设计方案。
(2)操作要求:
学生要搞清本次实训需使用的仪器,每种仪器在实训中所起的作用,合理选择使用仪器,正确使用测量方法。
根据已设计的实训步骤并经老师同意后开始实训。
学生要认真观察分析实训现象,记录实训数据。
运用所学知识解决实训中发生的问题;每项实训结果,需经教师认可后,方可结束实训;实训后认真填写实训记录。
(3)实训报告要求:
学生在做完实训后,科学地、真实地、完整地完成实训报告。
实
训报告应包括实训原理、实训方法的概述;实训步骤的描述;实训现象和实训数据的记载;最后应对实训结果进行分析,并回答相应实训项目后的思考题。
二、实训内容
利用实验系统16×16点阵实验单元,以两种方式控制点阵显示。
要求编制程序实现汉字点阵循环显示:
“专业班级姓名学号”(也可自行设计显示内容)
三、评分标准
实训成绩评定依据包括以下几点:
1、实训态度及出勤情况(10%)――态度是否认真,有无迟到早退等;
2、设计方案的合理性、可行性(20%)
3、操作的规范性或正确性(10%)――是否认真阅读操作说明书,是否严格按照规
程进行操作,是否具有严格的科学态度,有无明显的操作失误;
4、实训结果(20%)――实训内容的完整性,有无抄袭他人的现象;
5、实训报告提交时效性(10%)――是否及时提交实训报告;
6、实训报告内容(30%)——撰写是否认真,格式是否规范,内容是否完整,数据结论是否合理等。
分为优、良、中、及格、不及格五个等级或给分数。
考核方式:
实训期间教师现场检查;评阅实训报告。
四、建议参考资料
1、实训教材
2、参考书目:
《新编单片机原理与应用》潘永雄,西安电子科技大学出版社,2003.2第1版
《单片微型计算机大学读本》李勋,北京航空航天大学出版社,1998.11第1版
《基于proteus的单片机系统设计与仿真实例》蒋辉平,机械工业出版社,2009.7
内蒙古科技大学实训任务书
课程名称
微计算机应用及计控技术实训
实训地点
实训名称
出租车计价器设计
B307、B308
指导教师
贾玉瑛、李爱莲、梁丽、陈波、李琦
时间
第十九周
一、实训目的及基本要求:
1、实训目的:
(1)掌握51单片机中断、I/O口、键盘显示扩展电路的设计、应用及软件编程方法;
(2)掌握霍尔开关的原理及应用;
2、基本要求
(1)预习要求:
学生要根据实训题目要求查阅参考资料,提前进行认真的预习,初步弄懂实训内容、原理,并写出预习报告;预习报告应包括基本的实训内容和实训方案,基本实训步骤、过程以及数据记录,对于有设计内容的项目要提前做好设计方案。
(2)操作要求:
学生要搞清本次实训需使用的仪器,每种仪器在实训中所起的作用,合理选择使用仪器,正确使用测量方法。
根据已设计的实训步骤并经老师同意后开始实训。
学生要认真观察分析实训现象,记录实训数据。
运用所学知识解决实训中发生的问题;每项实训结果,需经教师认可后,方可结束实训;实训后认真填写实训记录。
(3)实训报告要求:
学生在做完实训后,科学地、真实地、完整地完成实训报告。
实
训报告应包括实训原理、实训方法的概述;实训步骤的描述;实训现象和实训数据的记载;最后应对实训结果进行分析,并回答相应实训项目后的思考题。
二、实训内容
1、基本出租车计价器:
设计一个出租车计价器,利用计数器计算出租车的运行里程,计算价格,并用4位LED数码管显示,精度为0.1元;
2、可调出租车计价器:
在基本的计价器基础上,增加一个4*4键盘,通过键盘对单价进行设置;(选做加分)
3、带时钟的出租车计价器:
增加一个时钟系统,做电子时钟用,并可用于出租车运行时间指示。
三、评分标准
实训成绩评定依据包括以下几点:
1、实训态度及出勤情况(10%)――态度是否认真,有无迟到早退等;
2、设计方案的合理性、可行性(20%)
3、操作的规范性或正确性(10%)――是否认真阅读操作说明书,是否严格按照规
程进行操作,是否具有严格的科学态度,有无明显的操作失误;
4、实训结果(20%)――实训内容的完整性,有无抄袭他人的现象;
5、实训报告提交时效性(10%)――是否及时提交实训报告;
6、实训报告内容(30%)——撰写是否认真,格式是否规范,内容是否完整,数据结论是否合理等。
分为优、良、中、及格、不及格五个等级或给分数。
考核方式:
实训期间教师现场检查;评阅实训报告。
四、建议参考资料
1、实训教材
2、参考书目:
《新编单片机原理与应用》潘永雄,西安电子科技大学出版社,2003.2第1版
《单片微型计算机大学读本》李勋,北京航空航天大学出版社,1998.11第1版
《基于proteus的单片机系统设计与仿真实例》蒋辉平,机械工业出版社,2009.7
16×16点阵显示实训
一、实训目的
(1)利用单片机I/O口或以扩展锁存器的方式控制点阵显示。
(2)掌握单片机与16×16点阵块之间接口电路设计及编程。
二、实训内容
利用实验系统16×16点阵实验单元,以两种方式控制点阵显示。
要求编制程序实现汉字点阵循环显示:
“专业班级姓名学号”(也可自行设计显示内容)
三、I/O口地址分配
扩展名称
口地址
用处
控制方式
273(4)
0FFE3H
列代码1
扩展锁存器
273
(1)
0FFE0H
列代码2
扩展锁存器
273(3)
0FFE2H
行扫描1
扩展锁存器
273
(2)
0FFE1H
行扫描2
扩展锁存器
I/O口分别提供字形代码(列码)、扫描信号(行码),凡字形代码位为“1”、行扫描信号为“1”点亮该点,否则熄灭;通过逐行扫描循环点亮字形或曲线。
四、实验电路
五、实训步骤
1、实验连线
⑴连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与总线单元上方的GS相连。
⑵点阵显示单元的16×16CS与译码单元Y0相连。
⑶用8芯扁平电缆将点阵显示单元的数据总线插座与数据总线单元任一插座相连。
2、在与PC联机状态下,编写调试程序,用连续方式运行程序。
3、观察运行结果
本实验显示为自己的姓名“李昀泽”三个字循环显示
六、实训原理
汉字字模的提取
汉字字模的提取可借助专用的软件来完成。
这里介绍的是“字模提取V2.2”的基本使用方法,软件的最新版本可从下载。
首先运行“字模提取”,在右下角的“文字输入区”输入欲提取字模的汉字,输入完毕后请按Ctrl+Enter结束。
如我们要提取“达爱思”这几个汉字的字模(输入文字后请按Ctrl+Enter):
点击左侧的“取模方式”,以本实验指导书的实验程序清单为例,在这里我们选择“A51格式”,此时程序即把汉字“达爱思”的代码送入右下角的“点阵生成区”:
此时汉字的点阵代码已生成,将其复制到您的源程序中即可使用。
本实验指导书中的“LED16×16点阵显示实验”使用的是“字模提取V2.2”横向取模方式,具体设置请点击左侧的“参数设置”,再选择“其它选项”打开设置对话框。
汉字点阵字模的提取方法(转)
汉字的点阵字模是从点阵字库文件中提取出来的。
例如常用的16×16点阵HZK16文件,12×12点阵HZK12文件等等,这些文件包括了GB2312字符集中的所有汉字。
现在只要弄清汉字点阵在字库文件中的格式,就可以按照自己的意愿去显示汉字了。
下面以HZK16文件为例,分析取得汉字点阵字模的方法。
HZK16文件是按照GB2312-80标准,也就是通常所说的国标码或区位码的标准排列的。
国标码分为94个区(Section),每个区94个位(Position),所以也称为区位码。
其中01~09区为符号、数字区,16~87区为汉字区。
而10~15区、88~94区是空白区域。
如何取得汉字的区位码呢?
在计算机处理汉字和ASCII字符时,使每个ASCII字符占用1个字节,而一个汉字占用两个字节,其值称为汉字的内码。
其中第一个字节的值为区号加上32(20H),第二个字节的值为位号加上32(20H)。
为了与ASCII字符区别开,表示汉字的两个字节的最高位都是1,也就是两个字节的值都又加上了128(80H)。
这样,通过汉字的内码,就可以计算出汉字的区位码。
具体算式如下:
qh=c1-32-128=c1-160wh=c2-32-128=c2-160
或
qh=c1-0xa0wh=c2-0xa0
qh,wh为汉字的区号和位号,c1,c2为汉字的第一字节和第二字节。
根据区号和位号可以得到汉字字模在文件中的位置:
location=(94*(qh-1)+(wh-1))*一个点阵字模的字节数。
那么一个点阵字模究竟占用多少字节数呢?
我们来分析一下汉字字模的具体排列方式。
例如下图中显示的“汉”字,使用16×16点阵。
字模中每一点使用一个二进制位(Bit)表示,如果是1,则说明此处有点,若是0,则说明没有。
这样,一个16×16点阵的汉字总共需要16*16/8=32个字节表示。
字模的表示顺序为:
先从左到右,再从上到下,也就是先画左上方的8个点,再是右上方的8个点,然后是第二行左边8个点,右边8个点,依此类推,画满16×16个点。
对于其它点阵字库文件,则也是使用类似的方法进行显示。
例如HZK12,但是HZK12文件的格式有些特别,如果你将它的字模当作12*12位计算的话,根本无法正常显示汉字。
因为字库设计者为了使用的方便,字模每行的位数均补齐为8的整数倍,于是实际该字库的位长度是16*12,每个字模大小为24字节,虽然每行都多出了4位,但这4位都是0(不显示),并不影响显示效果。
还有UCDOS下的HZK24S(宋体)、HZK24K(楷体)或HZK24H(黑体)这些打印字库文件,每个字模占用24*24/8=72字节,不过这类大字模汉字库为了打印的方便,将字模都放倒了,所以在显示时要注意把横纵方向颠倒过来就可以了。
这样我们就完全清楚了如何得到汉字的点阵字模,这样就可以在程序中随意的显示汉字了。
七、实训程序
#include
#include
#defineLIE_HXBYTE[0XFFE3]
#defineLIE_LXBYTE[0XFFE0]
#defineHANG_HXBYTE[0XFFE2]
#defineHANG_LXBYTE[0XFFE1]
#defineuintunsignedint
#defineucharunsignedchar
ucharcode
table_L[]={字模(自己计算)};
ucharcode
table_H[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
ucharm,s,w;
uinttime;
voiddelay(uintn)
{
uinti,j;
for(i=0;ifor(j=0;j<20;j++);
}
main()
{
while
(1)
{
for(time=0;time<100;time++)
{
m=w*32;
HANG_L=0X00;
for(s=0;s<8;s++)
{
LIE_H=table_L[m];
LIE_L=table_L[m+1];
HANG_H=table_H[s];
m=m+2;
delay
(2);
}
m=16+w*32;
HANG_H=0X00;
for(s=0;s<8;s++)
{
LIE_H=table_L[m];
LIE_L=table_L[m+1];
HANG_L=table_H[s];
m=m+2;
delay
(2);
}
}
w++;
if(w==3)
w=0;
}
}
注:
由字模提取软件得到的字模需要将奇数列进行镜像变换,否则将出现错误笔画。
出租车计价器设计
一、实训目的
1、掌握51单片机中断、I/O口、键盘显示扩展电路的设计、应用及软件编程方法;
2、掌握霍尔开关的原理及应用;
二、实训内容
1、基本出租车计价器:
设计一个出租车计价器,利用计数器计算出租车的运行里程,计算价格,并用4位LED数码管显示,精度为0.1元;
2、可调出租车计价器:
在基本的计价器基础上,增加一个4*4键盘,通过键盘对单价进行设置;(选做加分)
3、带时钟的出租车计价器:
增加一个时钟系统,做电子时钟用,并可用于出租车运行时间指示。
三、实训电路
四、实训步骤
连接p3.2与外部单脉冲sp,通过手动按键产生中断来模拟霍尔元件的工作,通过7段数码管来显示模拟出的行进历程以及所需金额。
五、实训原理
霍尔开关原理:
当一块通有电流的金属或半导体薄片垂直地放在磁场中时,薄片的两端就会产生电位差,这种现象就称为霍尔效应。
两端具有的电位差值称为霍尔电势U,其表达式为
U=K·I·B/d
其中K为霍尔系数,I为薄片中通过的电流,B为外加磁场(洛伦磁力Lorrentz)的磁感应强度,d是薄片的厚度。
由此可见,霍尔效应的灵敏度高低与外加磁场的磁感应强度成正比的关系。
霍尔效应原理图
霍尔开关就属于这种有源磁电转换器件,它是在霍尔效应原理的基础上,利用集成封装和组装工艺制作而成,它可方便的把磁输入信号转换成实际应用中的电信号,同时又具备工业场合实际应用易操作和可靠性的要求。
霍尔开关的输入端是以磁感应强度B来表征的,当B值达到一定的程度(如B1)时,霍尔开关内部的触发器翻转,霍尔开关的输出电平状态也随之翻转。
输出端一般采用晶体管输出,和接近开关类似有NPN、PNP、常开型、常闭型、锁存型(双极性)、双信号输出之分。
霍尔开关具有无触点、低功耗、长使用寿命、响应频率高等特点,内部采用环氧树脂封灌成一体化,所以能在各类恶劣环境下可靠的工作。
霍尔开关可应用于接近开关,压力开关,里程表等,作为一种新型的电器配件。
出租车计价原理:
有日常经验可知,我国出租车计价分为起步价,日夜运行价,等待付费,以及长距离费用;本次设计我规定了以下几点:
3公里:
以内5元(起步价)
4公里:
8元
3~10公里:
3元/公里
10公里以外:
2.1元/公里(加50%返程费用)
模拟原理:
本设计通过外部中断信号来模拟霍尔开关在出租车运行时产生的信号,由内部计数,当计数够一定时,转化为里程及金额,这样既解决了实验室不宜用霍尔开关验证的弊端,也清楚地展示了计价器的工作原理。
六、实训程序
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineled_zxXBYTE[0xffdc]
#defineled_zwXBYTE[0xffdd]
ucharcodeSEG_TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
ucharcodefeg[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
ucharll[]={0x01,0x02,0x04,0x08,0x10,0x20};
ucharxianshi[6];
ucharcount,licheng,v,t;
uintd;
bitstop;
voiddelay(intx)
{
inty=x;
for(;y>0;y--)
for(;y>0;y--);
}
voidinit_sys()
{
IT0=0;
IE0=1;
EX0=1;
EA=1;
}
voidmain()
{
uchari;
init_sys();
while
(1)
{
inta,b,c,d,e,f;
a=((licheng/10)-3)*3+5;
b=licheng/10;
f=licheng%10*3;
xianshi[0]=SEG_TAB[licheng%10];
xianshi[1]=feg[licheng/10];
if(b<=3)
{
xianshi[3]=feg[5];
xianshi[2]=SEG_TAB[0];
xianshi[4]=SEG_TAB[0];
xianshi[5]=SEG_TAB[0];
}
else
{
if(a>10)a=(((licheng/10)-3)*3+5)%10;
d=(((licheng/10)-3)*3+5)/10;
if(f>10)f=licheng%10*3%10;
xianshi[3]=feg[a];
xianshi[2]=SEG_TAB[f];
xianshi[4]=SEG_TAB[d];
xianshi[5]=SEG_TAB[e];
}
for(i=0;i<6;i++)
{
led_zw=ll[i];
led_zx=xianshi[i];
delay(10);
}
}
}
voidint0()interrupt0
{
stop=1;
d=0;
licheng++;
delay(20000);
if(licheng==100)licheng=0,d++;
if(v==100)v=0,t++;
}
七、实训改进
通过验证结果,我发现在运行时键抖问题较为明显,所以在模拟时应加入防键抖子程序,这样便可以更形象的模拟设备运行。
附:
防键抖子程序:
if((P1&0xf0)!
=0xf0)//P1高四位接4个键有键按下刚某一位变低,某变低则不等
{
Delay();//延时
if((P1&0xf0)!
=0xf0)//再判断一次
{
sCode=0xfe;
for(k=0;k<4;k++)
{
P1=sCode;
if((P1&0xf0)!
=0xf0)
{
kCode=~P1;
for(i=0;i<16;i++)
{
if(kCode==KeyCodeTable[i])
returni;
}
}
else
sCode=_crol_(sCode,1);
}
}
}
return-1;
}
实训心得
转眼间,为时一周的微型计算机应用实训已经接近尾声。
在过去的一周里,我们经历了前期的选题准备,中期的程序编写,以及后期的现象验证,程序修改。
通过这些经历,我对自己所学的知识有了更深的了解,也更理解了实践出真知这句话。
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
在HMOS技术大发展的背景下,Intel公司在MCS-48系列的基础上,于1980年推出了8位MCS-51系列单片机。
它与以前的机型相比,功能增强了许多,就其指令和运行速度而言,超过了INTEL8085的CPU和Z80的CPU,成为工业控制系统中较为理想的机种。
较早的MCS-51典型时钟为12MHz,而目前与MCS-51单片机兼容的一些单片机的时钟频率达到40MHz甚至更高,现在已有400MHz的单片机问世。
作为自动化专业的学生,我们更应该多去了解和掌握有关这些方面的知识,因为在今后的工作中,我们要大量的用到这些理论及知识,因此,多一分了解就意味着多一分成功。
下面我想说一说实训中的问题。
这次实训全部靠自己操作,在操作的过程中,我发现自己在某些方面的知识掌握的并不牢固,以至于在一些较难的地方,如接入键盘,实现手工调整功能时,做了很多次也没有成功,最后在