欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOC文档下载  

    点阵课程设计报告材料.doc

    • 资源ID:7852       资源大小:1.75MB        全文页数:21页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    点阵课程设计报告材料.doc

    word目录目录1一方案论证与设计21.1 设计要求21.2 要求分析21.3 方案说明5二点阵硬件设计5三点阵软件设计6四. 实验结果与分析6五总结与体会8参考文献9附录9一方案论证与设计1.1 设计要求一、使用AT89S51设计一个点阵显示控制系统。二、根本要求难度系数0.7:1在点阵上显示固定的汉字“中;2同过按键切换显示汉字“中、“国;3在点阵上滚动显示汉字“中国。三、发挥局部:1增加通过串口设置点阵显示内容的功能1.2 要求分析一、点阵说明:8×8单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的交叉点上如图1。比如:如果要想实现第一发光二极管亮,那么只要将DC8引脚置高电平,DR1引脚置低电平。这样便可以实现第一个二极管亮。如果要实现第一行亮,DC=0x80;DR=0xfe。按照这样的思路就可以让点阵上的任一个二极管亮。本课程设计中,行是由74HC595控制列是由P0口控制的。所以我们下面介绍一下74HC595的用法,与其芯片的原理。图1二、74HC595简介:74HC595的输出端为D0D7,这8位并行输出端可以直接控制数码管的8个管段,D7为级联输出端,它用来连接下一片595的串行数据输入端DS,下面给出74HC595控制引脚的详细说明。SRCLK11脚用于输入移位时钟脉冲,在上升沿时移位存放器shift register数据移位,D0D1 D2D3D4D5D6D7Q7,其中Q7用于595的级联,本课程设计中串行输入函数Hc595SendByte,使用了SRCLK引脚与下面的DS引脚。SER(14脚)为串行数据输入引脚,Hc595SendByte函数通过移位运算符有高位到低位将各位数据通过SER引脚传行输入595芯片,串行发送时由SRCLK引脚提供移位时钟。For循环控制完成8次移位急可完成1字节的串行传送。RCLK12脚提供锁存脉冲,在上升沿时移位存放器的数据被传入存储器,由于引脚接地,传入存储存放器的数据会直接出现在输出端D0D7。在串行输入函数完成1个字节的传送后,数据送出由并行输出函数MONPORTS在RCLK的上升沿完成。10脚在低电平时将移位存放器数据清零,本课程设计中该引脚直接连接VCC。13脚在高电平时禁止输出高阻态,本课程设计中改引脚接地,存储存放器中的内容将直接输出。74HC595的主要优点是能锁存数据,在移位过程中,输出端的数据保持不变,这有利于使点阵在串行速度较慢的场合不会出现闪烁感。三、按键的介绍:按键的扫面的方法的有两种,本设计中采用较快的行列扫描的方法。行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。1.3 方案说明二点阵硬件设计三点阵软件设计开始按下按键得到KeyValue KeyValueKeyValue=0Y KeyValue=0显示“中NKeyValue=1Y显示“国NKeyValue=2显示移位“中国不显示完毕void main() display(2); KeyValue=0xff; while(1) KeyDown(); if(KeyValue=0) display(0); if(KeyValue=1) display(1);if(KeyValue=2) int num,temp,tab; temp=ALL0;for(num=0;num<15;num+) ALLnum=ALLnum+1; ALL15=temp; for(num=0;num<15;num+) for(tab=0;tab<8;tab+)Hc595SendByte(0x00); /消隐MONPORTS= TABtab; /输出字码 Hc595SendByte(ALLtab);delay(2); elsedisplay(2); 四. 实验结果与分析五总结与体会一、问题与解决方法174HC595芯片不认识 74HC595芯片是我做这个课程设计遇到的最大的问题,起初我以前点阵像数码管一样,是共阴或者是共阳的方式连接。只要在P0进展控制,便可以随意点亮每一个二极管。通过我上网查看,发现他们不是这样的,需要在一段置高电平,另一端置低电平才能点亮。在原理图上,很显然可以看出发光二极管的一端靠P0口控制的,另一端靠74HC595控制。所以我必须要了解595的工作原理,在要求分析阶段我已经对74HC595做了介绍。2delay函数的延迟计算 延时时间的长短等于指令周期乘以总的只能,如果要是这样算的话。在需要延时一段时间,使用延时延时函数比拟方便。如果想要具体延时多久,使用定时器跟准确。3“中字闪烁“中字出现了,时间较短的闪烁现象。我马上就想到了,因为我是通过逐行扫描的方式点亮点阵的。所以肯定是扫描的上一行和下一行的眼时间过长。所以只要改变一下delay函数的延时时间就可以了。4FPGA电路板上电后立刻出现“中字 因为在刚开始定义ValueKey的时候,没有对其赋值。因为在Keil中, 如果定义某个变量,如果不对其进展赋值,keil会默认它为0;所以进入我的住函数的时候,在我没有按下按键之前ValueKey已经得到一个值了,它马上会显示“中。在教师的帮助下,查出了这个问题。通过这个问题,我觉得是我编程的时候,不规X操作造成的。这提醒我,下次编程的时候,应该在定义个变量的同时将其赋值。参考文献1 X靖武,周灵杉.单片机系统的PROTEUS设计与仿真M.:电子工业,20072 3 王悦凯 51单片机系统入门.扩展.应用开发学习手册 中国铁道 20134 彭伟 单片机C语言程序设计实训100例 电子工业 2011附录1显示一个“中程序如下:#include<reg52.h>#include<intrins.h>#define uchar unsinged char#define MONPORTSP0sbit SRCLK=P36;sbit RCLK=P35;sbit SER=P34;unsigned char code TAB8 = 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;unsigned char code CHARCODE18= 0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00; /“中void Hc595SendByte(unsigned char dat)unsigned char a;SRCLK=0;RCLK=0;for(a=0;a<8;a+)SER=dat>>7;dat<<=1;SRCLK=1;_nop_();_nop_();SRCLK=0;RCLK=1;_nop_();_nop_();RCLK=0;void delay(unsigned int time) /延迟程序; unsigned int i,j; for(i=0;i<time;i+) for(j=0;j<121;j+);void main() unsigned char tab;while(1)for(tab=0;tab<8;tab+)Hc595SendByte(0x00); /消隐MONPORTS= TABtab; /输出字码 Hc595SendByte(CHARCODE0tab);delay(2);2按下S0显示“中,按下S1显示“国,按下S2滚动显示“中国:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define GPIO_KEY P1#define MONPORTSP0unsigned char KeyValue;sbit SRCLK=P36;sbit R=P35;sbit SER=P34;uchar code TAB8 = 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;uchar code CHARCODE38= 0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00,/中 0x00,0xff,0xd3,0xd3,0xff,0xd7,0xd3,0xff,/国 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00/点阵不亮 ;uchar ALL16=0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00,0x00,0xff,0xd3,0xd3,0xff,0xd7,0xd3,0xff;/“中国void Hc595SendByte(unsigned char dat)unsigned char a;SRCLK=0;R=0; for(a=0;a<8;a+)SER=dat>>7;dat<<=1;SRCLK=1;_nop_();_nop_();SRCLK=0;R=1;_nop_();_nop_();RCLK=0;void delay(unsigned int time) /延迟程序; unsigned int i,j; for(i=0;i<time;i+) for(j=0;j<50;j+);void KeyDown(void) char a=0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f)/读取按键是否按下delay(99);/延时10ms进展消抖if(GPIO_KEY!=0x0f)/再次检测键盘是否按下GPIO_KEY=0X0F;/测试列switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=1;break;case(0X0d): KeyValue=2;break;case(0X0e):KeyValue=3;break;GPIO_KEY=0XF0;switch(GPIO_KEY)case(0X70):KeyValue=KeyValue;break; case(0Xb0):KeyValue=KeyValue+4;break;case(0Xd0): KeyValue=KeyValue+8;break;case(0Xe0):KeyValue=KeyValue+12;break;while(a<50)&&(GPIO_KEY!=0xf0) /检测按键松手检测delay(99);a+;void display(unsigned int d) unsigned char tab;for(tab=0;tab<8;tab+)Hc595SendByte(0x00); /消隐MONPORTS= TABtab; /输出字码 Hc595SendByte(CHARCODEdtab);delay(1);void main() display(2); KeyValue=0xff; while(1) KeyDown(); if(KeyValue=0) display(0); if(KeyValue=1) display(1);if(KeyValue=2) int num,temp,tab; temp=ALL0;for(num=0;num<15;num+) ALLnum=ALLnum+1; ALL15=temp; for(num=0;num<15;num+) for(tab=0;tab<8;tab+)Hc595SendByte(0x00); /消隐MONPORTS= TABtab; /输出字码 Hc595SendByte(ALLtab);delay(2); elsedisplay(2); (3)串口实验:计算机向单片机发送数据,单片机接收到数据点阵就现实“中#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define GPIO_KEY P1#define MONPORTSP0sbit SRCLK=P36;sbit R=P35;sbit SER=P34;uchar receiveData=0xff,flag;uchar code TAB8 = 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;ucharcodeCHARCODE18= 0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00;void init() /程序初始化;SCON=0X50;/设置为工作方式1TMOD=0X20;/设置计数器工作方式2PCON=0X80;/波特率加倍TH1=0XF3;/计数器初始值设置,波特率是4800TL1=0XF3;ES=1;/打开接收中断EA=1;/打开总中断TR1=1;/打开计数器void Hc595SendByte(unsigned char dat)unsigned char a;SRCLK=0;R=0; for(a=0;a<8;a+)SER=dat>>7;dat<<=1;SRCLK=1;_nop_();_nop_();SRCLK=0;R=1;_nop_();_nop_();RCLK=0;void delay(unsigned int time) /延迟程序; unsigned int i,j; for(i=0;i<time;i+) for(j=0;j<50;j+);void display(unsigned int d) unsigned char tab;for(tab=0;tab<8;tab+)Hc595SendByte(0x00); /消隐MONPORTS= TABtab; /输出字码 Hc595SendByte(CHARCODEdtab);delay(2); void main() init(); while(1)if(flag=1)display(0); void Usart() interrupt 4receiveData=SBUF;/出去接收到的数据RI=0;/去除接收中断标志位SBUF=receiveData;/将接收到的数据放入到发送存放器while(!TI);/等待发送数据完成 flag=1; / 标志位TI=0; /去除发送完成标志位课程设计独创性声明: 学生签名:指导教师评语:课程设计成绩: 指导教师签名:20 / 21

    注意事项

    本文(点阵课程设计报告材料.doc)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开