欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:13433964       资源大小:1.77MB        全文页数:22页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

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

    1、点阵课程设计报告材料一方案论证与设计1.1 设计要求 一、使用AT89S51设计一个点阵显示控制系统。二、基本要求(难度系数0.7):(1)在点阵上显示固定的汉字“中”;(2)同过按键切换显示汉字“中”、“国”;(3)在点阵上滚动显示汉字“中国”。三、发挥部分:(1)增加通过串口设置点阵显示容的功能1.2 要求分析一、点阵说明:88单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的交叉点上如图(1)。比如:如果要想实现第一发光二极管亮,那么只要将DC8引脚置高电平,DR1引脚置低电平。这样便可以实现第一个二极管亮。如果要实现第一行亮,DC=0x80;DR=0xfe。按照这样的

    2、思路就可以让点阵上的任一个二极管亮。本课程设计中,行是由74HC595控制列是由P0口控制的。所以我们下面介绍一下74HC595的用法,及其芯片的原理。图(1)二、74HC595简介:74HC595的输出端为D0D7,这8位并行输出端可以直接控制数码管的8个管段,D7为级联输出端,它用来连接下一片595的串行数据输入端DS,下面给出74HC595控制引脚的详细说明。SRCLK(11脚)用于输入移位时钟脉冲,在上升沿时移位寄存器(shift register)数据移位,D0D1 D2D3D4D5D6D7Q7,其中Q7用于595的级联,本课程设计中串行输入函数Hc595SendByte,使用了SR

    3、CLK引脚及下面的DS引脚。SER(14脚)为串行数据输入引脚,Hc595SendByte函数通过移位运算符有高位到低位将各位数据通过SER引脚传行输入595芯片,串行发送时由SRCLK引脚提供移位时钟。For循环控制完成8次移位急可完成1字节的串行传送。RCLK(12脚)提供锁存脉冲,在上升沿时移位寄存器的数据被传入存储器,由于引脚接地,传入存储寄存器的数据会直接出现在输出端D0D7。在串行输入函数完成1个字节的传送后,数据送出由并行输出函数COMMONPORTS在RCLK的上升沿完成。(10脚)在低电平时将移位寄存器数据清零,本课程设计中该引脚直接连接VCC。(13脚)在高电平时禁止输出(

    4、高阻态),本课程设计中改引脚接地,存储寄存器中的容将直接输出。74HC595的主要优点是能锁存数据,在移位过程中,输出端的数据保持不变,这有利于使点阵在串行速度较慢的场合不会出现闪烁感。三、按键的介绍:按键的扫面的方法的有两种,本设计中采用较快的行列扫描的方法。 行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。1.3 方案说明二点阵硬件设计三点阵软件

    5、设计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;num15;num+) ALLnum=ALLnum+1; ALL15=temp; for(num=0;num15;num+) for(tab=0;tab8;tab+) Hc595SendByte(0x00); /消隐 COMMONPORTS = TABtab;

    6、/输出字码 Hc595SendByte(ALLtab); delay(2); else display(2); 四. 实验结果与分析五总结与体会一、问题与解决方法(1)74HC595芯片不认识 74HC595芯片是我做这个课程设计遇到的最大的问题,起初我以前点阵像数码管一样,是共阴或者是共阳的方式连接。只要在P0进行控制,便可以随意点亮每一个二极管。通过我上网查看,发现他们不是这样的,需要在一段置高电平,另一端置低电平才能点亮。在原理图上,很显然可以看出发光二极管的一端靠P0口控制的,另一端靠74HC595控制。所以我必须要了解595的工作原理,在要求分析阶段我已经对74HC595做了介绍。(

    7、2)delay()函数的延迟计算 延时时间的长短等于指令周期乘以总的只能,如果要是这样算的话。在需要延时一段时间,使用延时延时函数比较方便。如果想要具体延时多久,使用定时器跟准确。(3)“中”字闪烁 “中”字出现了,时间较短的闪烁现象。我马上就想到了,因为我是通过逐行扫描的方式点亮点阵的。所以肯定是扫描的上一行和下一行的眼时间过长。所以只要改变一下delay()函数的延时时间就可以了。(4)FPGA电路板上电后立刻出现“中”字 因为在刚开始定义ValueKey的时候,没有对其赋值。因为在Keil中, 如果定义某个变量,如果不对其进行赋值,keil会默认它为0;所以进入我的住函数的时候,在我没有

    8、按下按键之前ValueKey已经得到一个值了,它马上会显示“中”。在老师的帮助下,查出了这个问题。通过这个问题,我觉得是我编程的时候,不规操作造成的。这提醒我,下次编程的时候,应该在定义个变量的同时将其赋值。参考文献1 靖武,周灵杉.单片机系统的PROTEUS设计与仿真M.:电子工业,20072 红,邹华. 单片机原理及应用 机械工业 2012.073 王悦凯 51单片机系统入门.扩展.应用开发学习手册 中国铁道 20134 彭伟 单片机C语言程序设计实训100例 电子工业 2011附录(1)显示一个“中”程序如下:#include#include#define uchar unsinged

    9、char#define COMMONPORTS P0sbit 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;a7; dat=1;

    10、 SRCLK=1; _nop_(); _nop_(); SRCLK=0; RCLK=1; _nop_(); _nop_(); RCLK=0;void delay(unsigned int time) /延迟程序; unsigned int i,j; for(i=0;itime;i+) for(j=0;j121;j+);void main() unsigned char tab; while(1) for(tab=0;tab8;tab+) Hc595SendByte(0x00); /消隐 COMMONPORTS = TABtab; /输出字码 Hc595SendByte(CHARCODE0tab

    11、); delay(2); (2)按下S0显示“中”,按下S1显示“国”,按下S2滚动显示“中国”:#include#include#define uchar unsigned char#define GPIO_KEY P1#define COMMONPORTS P0unsigned 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

    12、,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;a7; dat=1; SRCLK=1

    13、; _nop_(); _nop_(); SRCLK=0; R=1; _nop_(); _nop_(); RCLK=0;void delay(unsigned int time) /延迟程序; unsigned int i,j; for(i=0;itime;i+) for(j=0;j50;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(G

    14、PIO_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=Key

    15、Value+12;break; while(a50)&(GPIO_KEY!=0xf0) /检测按键松手检测 delay(99); a+; void display(unsigned int d) unsigned char tab; for(tab=0;tab8;tab+) Hc595SendByte(0x00); /消隐 COMMONPORTS = TABtab; /输出字码 Hc595SendByte(CHARCODEdtab); delay(1); void main() display(2); KeyValue=0xff; while(1) KeyDown(); if(KeyValue

    16、=0) display(0); if(KeyValue=1) display(1); if(KeyValue=2) int num,temp,tab; temp=ALL0; for(num=0;num15;num+) ALLnum=ALLnum+1; ALL15=temp; for(num=0;num15;num+) for(tab=0;tab8;tab+) Hc595SendByte(0x00); /消隐 COMMONPORTS = TABtab; /输出字码 Hc595SendByte(ALLtab); delay(2); else display(2); (3)串口实验:计算机向单片机发

    17、送数据,单片机接收到数据点阵就现实“中”#include#include#define uchar unsigned char#define GPIO_KEY P1#define COMMONPORTS P0sbit SRCLK=P36;sbit R=P35;sbit SER=P34;uchar receiveData=0xff,flag;uchar code TAB8 = 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;uchar code CHARCODE18= 0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00;void ini

    18、t() /程序初始化; SCON=0X50; /设置为工作方式1 TMOD=0X20; /设置计数器工作方式2 PCON=0X80; /波特率加倍 TH1=0XF3; /计数器初始值设置,波特率是4800 TL1=0XF3; ES=1; /打开接收中断 EA=1; /打开总中断 TR1=1; /打开计数器void Hc595SendByte(unsigned char dat) unsigned char a; SRCLK=0; R=0; for(a=0;a7; dat=1; SRCLK=1; _nop_(); _nop_(); SRCLK=0; R=1; _nop_(); _nop_();

    19、RCLK=0;void delay(unsigned int time) /延迟程序; unsigned int i,j; for(i=0;itime;i+) for(j=0;j50;j+); void display(unsigned int d) unsigned char tab; for(tab=0;tab8;tab+) Hc595SendByte(0x00); /消隐 COMMONPORTS = TABtab; /输出字码 Hc595SendByte(CHARCODEdtab); delay(2); void main() init(); while(1) if(flag=1) display(0); void Usart() interrupt 4 receiveData=SBUF;/出去接收到的数据 RI=0;/清除接收中断标志位 SBUF=receiveData; /将接收到的数据放入到发送寄存器 while(!TI); /等待发送数据完成 flag=1; / 标志位 TI=0; /清除发送完成标志位 课程设计独创性声明: 学生签名: 指导教师评语:课程设计成绩: 指导教师签名:


    注意事项

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

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开