单片机课设.docx
- 文档编号:3867120
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:9
- 大小:204.04KB
单片机课设.docx
《单片机课设.docx》由会员分享,可在线阅读,更多相关《单片机课设.docx(9页珍藏版)》请在冰豆网上搜索。
单片机课设
单片机课程设计报告
题目:
16X16LED点阵显示
中原工学院计算机学院
目录
一、任务书1
二、硬件电路原理图1
三、软件编程2
四、程序流程图3
五、设计步骤3
六、设计调试过程6
七、源程序代码6
八、心得体会7
九、参考文献8
一、任务书
1.任务:
编制程序,建立字库,使汉字在LED点阵显示器的对角显示图形、
文字,并实现图形、文字的向上、上左循环移动。
实验需要用到汉字字模提取工具,帮助我们获取点阵数据。
安装Keil
C51软件开发系统,在KeilC51环境下编写C语言程序,然后运行、
调试。
在51系列兼容单片机上观察实验现象。
2.要求:
(1)了解并能识别学习板上的各种元器件,会读元器件标示;
(2)会看电路原理图;
(3)掌握单片机与LED点阵显示器之间接口设计与编程;
(4)学会使用Keil C软件下载调试程序;
二、硬件电路原理图
硬件原理:
1.本系统采用DM12864F6图形点阵液晶显示模组。
它用T6963C作为控制器,T6A40、T6A39作为驱动的128(列)X64(行)的全点阵液晶显示。
具有INTER8080时序相适配的MPU接口功能,并有专门的指令集,可完成文本显示和图形显示的功能设置。
硬件电路图:
LCD显示控制由51单片机总线实现,原理图如下:
图1LCD显示控制原理图
硬件原理图:
图216X16LED点阵显示原理图
三、软件编程
1、数据区预设显示文本数据区(任意字或图形)。
获取字库的方法参见参考资料。
2、设置图形显示起始地址,设置图形显示范围,选择或模式,设置显示方式(关文本,开图形),设置起始地址,设置数据自动写,显示相关文字信息。
3、延时子程序:
单循环延时,延时参数不同,则构成长、短延时。
如延时不够,可采用双重循环延时。
四、程序流程图
图3LED显示流程图
五、设计步骤
硬件连接注意事项:
1、认真了解电路原理图,耐心细致地接线。
2、由于试验仪为板块结构,接线较多,接完线后仔细检查再通电。
3、不允许带电插拔接线,实验板上不要乱丢接线,以免短路造成故障或损坏。
硬件连接步骤:
1、8255CS接Y0,I/O口简单扩展单元的273CS2接Y2。
2、用8芯线把I/O口简单扩展单元的的OUT0-OUT7连到点阵JA0(H15—H8),8255的PA(PA0—PA7)连到点阵JA03(H7—H0),PB(PB0—PB7)连到点阵JA02(L8—L15),PC(PC0—PC7)连到点阵JA01(L0—L7)。
打开电源如图4所示
图4
4、用汉字字模提取工具,画一个“E“,生成C51格式的点阵数据,取出前8个点阵数据。
图5
5、调试、运行程序,Led显示器的左上角”E”向左循环移动,右下角”E”向上循环移动。
实验现象:
图6
图7
六、设计调试过程
将电路按原理图连接好之后,通过参考test20中的LED.ASM,调试、运行程序显示横向左移“DVCC系列产品”然后纵向上移“欢迎使用”。
然后通过小组成员合作分析代码来理解LED点阵显示的原理,写出了我们小组自己的代码。
把我们写的C语言程序编译产生的十六进制文件下载到单片机内。
第一次做时是在实验箱上直接连接硬件电路,可是由于电路连线不正确,结果在实验箱上的LED显示屏无法显示单片机输出的正确结果。
经过认真检查电路的连接,改正连接,LED显示屏能够显示了,但是是乱码,我们小组一块查看端口设置,波特率设置,通过串口调试工具,来排查乱码问题,最终将端口设置为COM1,波特率设置为57600,LED显示器能够显示出了正确的文字。
为了控制LED显示器的显示内容,我们学习了LED显示器的原理,
为了将原理弄清楚,我们组先将利用代码让指定的某一个点亮,经过多次尝试,后来发现,实际的LED显示器位置是放反着的,273控制的是下半行。
通过听老师讲的原理,了解到LED显示器的X273端口行控制下八位,XPA控制行上八位,X273与XPA为共阴极;XPB端口控制列下八位,XPC控制列上八位,XPB与XPC为共阳极。
七、源程序代码
#include
#defineX273XBYTE[0xa000]//行控制下八位阴极
#defineXPAXBYTE[0x8000]//行控制上八位阴极
#defineXPBXBYTE[0x8001]//列控制左八位阳极
#defineXPCXBYTE[0x8002]//列控制右八位阳极
#defineXPCTLXBYTE[0x8003]
unsignedchars,q,w;//变量声明
unsignedcharmain2_hang,main2_zuoyi;
inttemp2;
//一个乘方函数---循环中变换行的时候是通过0xff减去2的乘方来实现的
unsignedcharchengfang(unsignedchara,unsignedcharb)
{
if(b<=0x00)return0x01;
for(w=1;w
{a*=2;}
returna;
}
voidmain(void){
//取出”E”的子模提取的前8个点阵数据,8×8显示
codetab3[]={0x00,0x3C,0x20,0x3C,0x20,0x3C,0x00,0x00};
for(main2_zuoyi=0;main2_zuoyi<4;main2_zuoyi++){
for(main2_hang=1;main2_hang<=8;main2_hang++){
XPC=0x00;
X273=0xff;
XPA=0xff-chengfang(2,(main2_hang-1));
XPB=tab3[main2_hang-1]< //延迟 for(temp2=0;temp2<128;temp2++); XPB=0x00; XPA=0xff; XPC=tab3[main2_hang-1]; X273=(0xff-chengfang(2,(main2_hang-1-main2_zuoyi))); for(temp2=0;temp2<128;temp2++); } //用一个for循环实现一段延迟 for(temp2=0;temp2<4096*3;temp2++); }} 八、心得体会 通过这次将近一周的课设,收获了很多,提高自己的动手实践能力,将书本上学到的理论知识很好的用于实践,达到了理论与实践的有效结合,掌握了LED点阵显示数据的基本原理,通过使用KeilC51软件编写C语言程序,学会了如何一步一步的调试,运行,最终能够实现程序的正确运行。 熟练掌握了KeilC51软件的安装于使用。 在课设过程中,也遇到了很多的困难,为了看懂源代码,我们需要一遍又一遍的调试,运行,然后对Led原理的认识逐渐深入,不断地实践,不断地探索出新的发现,不断掌握了许多经验,到最后终于写出属于自己的代码,完成了课设的任务。 九、参考文献 [1]《单片机原理及应用》 [2]《单片机实验指导书》
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机