数字显示与键盘输入设计武汉理工 精品Word格式文档下载.docx
- 文档编号:21000143
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:22
- 大小:550.03KB
数字显示与键盘输入设计武汉理工 精品Word格式文档下载.docx
《数字显示与键盘输入设计武汉理工 精品Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字显示与键盘输入设计武汉理工 精品Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
2.3程序设计:
2.4程序代码:
11
3.调试过程:
15
3.1程序编译调试15
4.课程设计总结17
本科生课程设计成绩评定表18
课程设计任务书
学生姓名:
专业班级:
计算机zy1101班
指导教师:
袁小玲工作单位:
题目:
数字显示与键盘输入例程设计
初始条件:
1.课程设计使用ZG211硬件综合实验平台(8051单片机),配有课程设计接口芯片和辅助芯片以及器件;
2.ZG211有程序设计集成开发环境,程序设计语言为C语言;
3.ZG211硬件综合实验平台使用说明书;
要求完成的主要任务:
(包括课程设计工作量及其技术要求,撰写说明书具体要求)
1.学习使用ZG211硬件综合实验平台,程序设计集成开发环境;
2.根据课程设计题目,进行需求分析,搞清楚课程设计需要设计需求和需要解决的设计内容。
3.查阅和学习课程设计题目需要的接口芯片资料,掌握接口芯片的使用方法和编程要领。
查阅和学习课程设计题目需要的辅助芯片以及器件资料。
4.设计接口芯片和辅助芯片以及器件与8051单片机连接硬件电路原理图。
5.设计与硬件电路原理图对应的C语言程序(或8051汇编语言)。
给出程序流程图。
在集成开发环境中调试程序。
给出程序的详细注释。
能够解释使用程序模拟电路时序信号和数据。
6.撰写课程设计报告,1)详细陈述以上的设计过程;
2)详细陈述电路的调试过程。
时间安排:
第187周:
1.熟悉ZG211硬件综合实验平台,KEILCUVISION2集成开发环境;
查阅接口芯片资料,熟悉接口芯片和它的使用方法。
2.设计硬件电路原理图,。
第19周:
1.使用C语言或汇编语言设计和调试接口程序。
2.撰写计算机硬件综合设计报告。
指导教师签名:
年月日
系主任(或责任教师)签名:
1>
掌握对单片机IO口的操作,及中断的应用
2>
掌握显示接口芯片CH451的运用
PC机一台
ZG-211单片机系统实验板一块
3>
实验连接线若干
4>
芯片:
CH451,89S52
5>
并口编程线一根
6>
配套电源1个
能正常操作LED数码显示
能通过中断方式接收按键信息
本实验的显示接口采用CH451芯片。
该芯片整合了数码管显示驱动和键盘扫描控制可以动态驱动8位数码管或者64位LED,具有BCD译码、闪烁、移位等功能;
同时还可以进行64键的键盘扫描;
芯片内部有多个寄存器控制整个芯片的运行,其中有8个寄存器存入所要显示的数字,每个寄存器有8位,每一位控制一个数码管其中的一段(1为点亮,0为熄灭)。
单片机通过4根信号线(串行数据输入线DIN、串行数据时钟线DCLK、串行数据加载线LOAD、串行数据输出线DOUT)控制CH451,显示数据,同时通过CH451对键盘的扫描,达到人机交换信息的目的。
该芯片与实验板相关器件连接原理图如下:
CH451原理图
CH451引脚图
CH451操作命令表
空操作:
0000XXXXXXXXB
空操作命令不对CH451产生任何影响。
为了在不影响CH451的前提下变化DCLK以清除看门狗计时,也可以发送空操作命令。
空操作命令可以只发送有效数据B8~B11,简化描述是0^0^0^0^↑。
芯片内部复位:
001000000001B
内部复位命令将CH451的各个寄存器和各种参数复位到默认的状态。
芯片上电时,CH451总是被复位,此时各个寄存器均复位为0,各种参数均恢复为默认值。
字数据左移:
001100000000B
字数据左移命令将CH451的字数据左移一次,即从DIG0向DIG7移动一位,然后最右边的DIG0补进数据00H。
例如,在数码管DIG7~DIG0显示“87654321”时,执行字数据左移命令,显示变为“7654321”(不译码方式)或者“76543210”(BCD译码方式)。
字数据右移:
001100000010B
字数据右移命令将CH451的字数据右移一次,即从DIG7向DIG0移动一位,然后最左边的DIG7补进数据00H。
例如,在数码管DIG7~DIG0显示“87654321”时,执行字数据右移命令,显示变为“8765432”(不译码方式)或者“08765432”(BCD译码方式)。
字数据左循环:
001100000001B
字数据左循环命令将CH451的字数据左循环一次,即从DIG0向DIG7移动一位,然后最右边的DIG0补进原DIG7的数据。
例如,在数码管DIG7~DIG0显示“87654321”时,执行字数据左循环命令,显示变为“76543218”。
字数据右循环:
001100000011B
字数据右循环命令将CH451的字数据右循环一次,即从DIG7向DIG0移动一位,然后最左边的DIG7补进原DIG0的数据。
例如,在数码管DIG7~DIG0显示“87654321”时,执行字数据右循环命令,显示变为“18765432”。
7>
设定系统参数:
010000000[WDOG][KEYB][DISP]B
设定系统参数命令用于设定CH451的系统级参数:
看门狗使能WDOG,键盘扫描使能KEYB,显示驱动使能DISP。
各个参数均通过1位数据控制,将相应的数据位置为1则启用该功能,否则关闭该功能(默认值)。
例如,命令数据010000000101B表示启用看门狗的功能、关闭键盘扫描的功能、启用显示扫描驱动的功能。
8>
设定显示参数:
0101[MODE][LIMIT][INTENSITY]B
设定显示参数命令用于设定CH451的显示参数:
译码方式MODE,扫描极限LIMIT,显示亮度INTENSITY。
译码方式MODE通过1位数据控制,置1时选择BCD译码方式,置0时选择不译码方式(默认值)。
扫描极限LIMIT通过3位数据控制,数据001B~111B和000B分别设定扫描极限为1~7和8(默认值)。
显示亮度INTENSITY通过4位数据控制,数据0001B~1111B和0000B分别设定显示驱动占空比为1/16~15/16和16/16(默认值)。
例如,命令数据010101110000B表示选择不译码方式、扫描极限为7、显示驱动占空比为16/16;
命令数据010110001010B表示选择BCD译码方式、扫描极限为8、显示驱动占空比为10/16。
9>
设定闪烁控制:
0110[D7S][D6S][D5S][D4S][D3S][D2S][D1S][D0S]B
设定闪烁控制命令用于设定CH451的闪烁显示属性:
D7S~D0S分别对应于8个字驱动DIG7~DIG0。
闪烁属性D7S~D0S分别通过1位数据控制,将相应的数据位置为1则使能闪烁显示,否则为正常显示,不闪烁(默认值)。
例如,命令数据011000100001B表示设定数码管DIG5和DIG0闪烁显示,其余数码管正常显示,不闪烁。
10>
加载字数据:
1[DIG_ADDR][DIG_DATA]B
加载字数据命令用于将字数据DIG_DATA写入DIG_ADDR指定地址的数据寄存器中。
DIG_ADDR通过3位数据指定数据寄存器的地址,数据000B~111B分别指定地址0~7,对应于DIG0~DIG7引脚驱动的8个数码管。
DIG_DATA是8位的字数据。
例如,命令数据100001111001B表示将字数据79H写入第1个数据寄存器,如果是不译码方式,则DIG0引脚驱动的数码管将显示E;
命令数据110010001000B表示将字数据88H写入第5个数据寄存器,如果是BCD译码方式,则DIG4引脚驱动的数码管将显示8.
11>
读取按键代码:
0111XXXXXXXXB
读取按键代码命令用于获得CH451最近检测到的有效按键的按键代码。
该命令是唯一的具有数据返回的命令,CH451从DOUT引脚输出按键代码,按键代码总是7位数据,最高位是状态码,位5~位0是扫描码。
读取按键代码命令的位数据B0~B7可以是任意值,所以控制器可以将该操作命令缩短为4位数据B8~B11。
例如,CH451检测到有效按键并中断,按键代码是5EH,简化描述1^1^1^0^↑H^L^H^H^H^H^L^表示先向CH451发出读取按键代码命令0111XXXXXXXXB,然后从DOUT获得按键代码5EH。
CH451BCD码译码表
2.2实验步骤:
2.2.1硬件连接:
将并口线插在实验板与PC机的并口插座上;
按上图连接实验线路;
仔细检查无误后,接通电源。
(图中箭头表示需要接线的地方)
(上图为连线图,也是接线成功后的图)
进入KEILC环境编写程序。
89S52首先向DIN发送一个上升沿,通知CH451数据线使能,然后89S52发送010*********,010*********,通知CH451打开键盘扫描功能,开启显示功能,选择BCD译码方式,在就可以向每个显示寄存器送入要显示的数据。
例如:
八个数码管全显示“8”时送入的二进制数据为:
100000001000;
100100001000;
101000001000;
101100001000;
110000001000;
110100001000;
111000001000;
111100001000;
打开89S52的外部中断1,并设置为下降沿中断方式,当KEY1-KEY5任一键按下时,CH451的DOUT脚会产生一个下降沿,这时89S52便会产生一个中断,并进入中断程序。
中断程序中,应首先关闭中断,然后向CH451发送读键值指令(0111),读取键值。
KEY1-KEY5的键值分别为:
0X40,0X49,0X52,0X5B,0X64.在89S52在向CH451发送数据时,先发送低位数据。
如二进制数据:
100000000101,先送1,再送0,再送1,依次类推;
而接收时则相反,先接收高位。
程序编译成功后,打开联机下载软件,将HEX文件下载到89S52中,观看程序运行结果,如有问题则修改程序,再次下载。
调试成功后,将送显程序,和读取键值程序,各写成一个函数,供后续实验模块调用。
启动实验板,自动显示“--------”
按下1号按键,显示“001”
按下2号按键,显示“002”
按下3号按键,显示“003”
按下4号按键,显示“004”
按下5号按键,显示“005”
程序原理图
/********************************************************\
|项目武汉理工大学教学实验板(ZG211定制)|
|文件Display.c|
|功能LED显示演示程序|
|编写中格电子|
|创建时间2005/09/08|
|版本1.0|
|版本说明|
|修改历史|
|修改原因|
|修改时间|
|修改后特性|
\********************************************************/
#include"
reg52.h"
def.h"
display.h"
sub.h"
func.h"
externunsignedcharkey_print;
externunsignedcharkey_data;
/*******************************************************\
|函数名send_disp_data|
|函数功能向CH451芯片发送命令|
|参数comm:
命令体|
|_data:
命令参数|
|返回值无|
\*******************************************************/
voidsend_disp_data(unsignedcharcomm,unsignedchar_data)
{
unsignedchari;
//送8BIT数据
for(i=0;
i<
8;
i++)
{
DIN=(_data>
>
i)&
0x01;
DCLK=1;
DCLK=0;
}
//送4BIT命令
4;
DIN=(comm>
LOAD=1;
LOAD=0;
}
|函数名send_comm|
voidsend_comm(unsignedcharcomm)
|函数名disp_initialize|
|函数功能向CH451芯片发送初始化命令|
|参数无|
voiddisp_initialize()
chang_4052
(1);
DIN=0;
DIN=1;
DCLK=1;
DOUT=1;
send_disp_data(CH451_SETSYS,0x03);
//设定系统参数
send_disp_data(CH451_SETDIS,0x80);
//设定显示参数
|函数名key|
|函数功能中断函数,获取当前按键状态|
voidkey()interrupt0
unsignedchari,temp;
EX0=0;
//关中断
key_data=0;
temp=0;
send_comm(CH451_KEY);
i<
7;
i++)
{
temp=DOUT;
key_data=key_data|(temp<
<
(6-i));
DCLK=1;
DCLK=0;
EX0=1;
//中断
|函数名Display_TEST|
|函数功能测试显示LED数码管|
voidDisplay_TEST()
//初始化显示芯片
disp_initialize();
//延时
delay_1ms(100);
//送显“12345678”
send_disp_data(CH451_LOAD0,0x01);
send_disp_data(CH451_LOAD1,0x02);
send_disp_data(CH451_LOAD2,0x03);
send_disp_data(CH451_LOAD3,0x04);
send_disp_data(CH451_LOAD4,0x05);
send_disp_data(CH451_LOAD5,0x06);
send_disp_data(CH451_LOAD6,0x07);
send_disp_data(CH451_LOAD7,0x08);
delay_1ms(200);
//开中断,接受按键信息
EX0=1;
//"
--------"
send_disp_data(CH451_LOAD0,0x12);
send_disp_data(CH451_LOAD1,0x12);
send_disp_data(CH451_LOAD2,0x12);
send_disp_data(CH451_LOAD3,0x12);
send_disp_data(CH451_LOAD4,0x12);
send_disp_data(CH451_LOAD5,0x12);
send_disp_data(CH451_LOAD6,0x12);
send_disp_data(CH451_LOAD7,0x12);
|函数名display_int|
|函数功能显示一个整数|
voiddisplay_int(unsignedintm)
send_disp_data(CH451_LOAD0,0x10);
send_disp_data(CH451_LOAD1,0x10);
send_disp_data(CH451_LOAD2,0x10);
if(m/10000)
send_disp_data(CH451_LOAD3,m/10000);
else
send_disp_data(CH451_LOAD3,0x10);
if((!
(m/1000)%10)&
&
(!
(m/10000)))
send_disp_data(CH451_LOAD4,0x10);
send_disp_data(CH451_LOAD4,(m/1000)%10);
send_disp_data(CH451_LOAD5,(m/100)%10);
send_disp_data(CH451_LOAD6,(m/10)%10);
send_disp_data(CH451_LOAD7,m%10);
3.1程序编译调试
3.2在线编程写入程序:
其成功结果显示为
3.3实验结果显示:
按连接图连线,将已给出程序下载到89S52中运行。
按键显示结果分别为:
1>
4.课程设计总结
此次硬件课程设计是我们第一次接触单片机,还是感觉到相当陌生的,对于CH451芯片,我们以前都是没有接触过的,但是实验本身并不是很难,主要原因在于接线方面还是很轻松的,还有关于单片机的代码也可以直接得到,只需要我们在电脑上编译调试通过然后下载到单片机的芯片上就可以。
而这次实验还是给了我很大的收获:
首先,让我对编程有了更加深刻的认识,编程不仅仅是在电脑上写程序并且运行,然后封装成为一个软件,更能够借组与单片机实现更多的功能,能够在物联网的道路上发挥更大的作用;
其次了解了CH154芯片的结构和功能,对于以后再学习单片机的相关知识打下了一个很好的基础;
最后则是对并行接口和接口编程有了更加深刻的认识。
本科生课程设计成绩评定表
班级:
计算机ZY1101班 姓名:
张瑞 学号:
0121110340117
序号
评分项目
满分
实得分
1
学习态度认真、遵守纪律
10
2
设计分析合理性
3
设计方案正确性、可行性、创造性
20
设计结果正确性
40
5
设计报告的规范性
6
设计验收
总得分/等级
评语:
注:
最终成绩以五级分制记。
优(90-100分)、良(80-89分)、中(70-79分)、
及格(60-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字显示与键盘输入设计武汉理工 精品 数字 显示 键盘输入 设计 武汉理工
![提示](https://static.bdocx.com/images/bang_tan.gif)