宁 波 工 程 学 院

设计与讨论

课程设计报告

课 题 题 目: 数码管随机模拟显示乘法口诀

学 院 名 称: 电子与信息工程学院

专 业:

学生 姓名:

指 导 教 师:

目录

第一章 技术指标

1.1整体功能要求

1.2系统结构要求

1.3设计条件

第二章 整体方案设计

1. 整体方框图及原理

第三章 单元电路设计

3.1数码管显示及其扫描程序

3.2数码管显示的生成

3.3主程序

3.4 随机产生被乘数与乘数,并得到乘积

3.5 整体电路图

第四章 测试与调整

第五章 设计小结

5.1 设计任务完成情况

5.2 问题及改进

5.3心得体会

附录

AT89C51

七段显示数码管

74LS245

参考文献

技术指标

整体功能要求

每次按下一次K1键时会模拟显示一道乘法口诀,第1,3位数码管显示被乘数与乘数,第4位数码管显示等号,第5,6位数码管显示乘积.

在模拟口诀时先显示被乘数与乘数,在接下来的偶数次按键下闪烁显示结果,在结果闪烁显示时,被乘数与乘数保持静态显示,再次按键时继续这一过程。

系统结构与要求

按键输入控制的方波输出装置结构要求如图所示。

按键扫描

按键扫描

单片机(产生随机被乘数与乘数)

按键次数奇偶判断

数码管显示

数码管随机模拟显示乘法口诀整体方案结构方框图

设计条件

软件要求:uVision,protuse仿真软件

具体的器件模块:

态扫描数码管模块

单片机控制模块

数码管显示模块

④ 驱动模块

元器件列表 如表1

元器件名

数量

AT89C51

1

按键

2

排阻

1

数码管(六位)

1

普通电容(22pf)

2

74LS245

1

有向电容(10uf)

1

RX8

1

电阻(10K)

1

表1

第二章 整体方案设计

1.整体方框图及原理:如图2-1原理框图

开始

开始

判断是否有键按下

动态扫描数码管Tmp=0

Tmp=tmp+1

判断按键次数即判断tmp是否为偶数

显示六位数码管上数字

显示前四位数码管数字

产生随机数值并进行相关运算

图2-1原理框图

原理:通过动态扫描数码管同时设置按键次数标志位,判断按键次数是否为偶数,如果是奇数,随机产生两个数值,进行乘法运算,显示四位数码管数值;如果是偶数,显示六位数码管数值。

第三章 单元电路设计

3.1 数码管显示及其扫描程序,按键图3-1。

图3-1

按键扫描显示程序:

动态扫描数码管

uchar DSY_Index=0xFE; //动态扫描数码管的索引

for (k=0;k<6;k++)

{P3=DSY_Index;//DSY_Index赋值给P3口

P0=DSY_CODE[ M_ABC[k] ];//将被乘数与乘数,乘积,从P0口输出

DSY_Index=_crol_(DSY_Index,1);//DSY_Index的值向左循环移位1位

DelayMS(1);

}

3.2数码管显示的生成,如图3-2:

图3-3

结果的生成程序:

//乘积(在4,5两位中显示)

M_ABC[4]=M_ABC[0]*M_ABC[2]/10;

M_ABC[5]=M_ABC[0]*M_ABC[2]%10;

//当乘积的十位数(即数组中的第4位)为0时不显示

if (M_ABC[4]==0)

M_ABC[4]=10;

3.3 主程序:

void main()

{

P0=0x00;P3=0xff;

srand(56); //设置随机种子

while(1)

{

if(K1==0)

{ tmp=tmp+1;

DelayMS(10);

while (K1==0); //等待K1键释放

if(tmp%2==1)

Get_Random_Num_A_B();

}

if(K2==0)

{

tmp=tmp+1;

DelayMS(10);

while (K2==0);

if(tmp%2==1)

Get_Random_Mul_A_B();

}

Display_ABC(); //显示三个数

}

}

3.4 随机产生被乘数与乘数,并得到乘积:

//--------------------

//得到随机数,随机产生被乘数与乘数,并得到乘积

//--------------------

void Get_Random_Num_A_B()

{

//随机生成被乘数,乘数

M_ABC[0]=rand()%9+1;

M_ABC[2]=rand()%9+1;

//乘积(在4,5两位中显示)

M_ABC[4]=M_ABC[0]*M_ABC[2]/10;

M_ABC[5]=M_ABC[0]*M_ABC[2]%10;

//当乘积的十位数(即数组中的第4位)为0时不显示

if (M_ABC[4]==0)

M_ABC[4]=10;

}

3.5 整体电路图,如图3-4

图3-4

第四章 测试与调整

1:通过按一下按钮钮得到两个相乘的数,再按一下得到乘法口诀,看与事实是否相符,测试1组。

第一组:如图4-1

图4-1

所得结果如表4-1:

乘数

乘数

结果

2

3

6

表4-1

达到实验设计目的,并且得到合格的实验结果

第五章 设计小结

设计任务完成情况

通过课程设计,顺利地完成了本次设计的技术指标,本设计主要模块如下:动态扫描数码管模块;单片机控制模块;数码管显示模块;驱动模块。按键的输入直接影响着随机函数生成被乘数与乘数,同时按键次数影响着显示数码管的状态。

5.2 问题及改进

在设计实验时,存在问题:本实验随机数产生的都是个位数,限于数码管显示缺陷,无法显示乘号;起始没有在奇数次显示被乘数与乘数,在偶数次显示全部数码管的功能,解决方法是添加按键奇偶标志位,通过判断标志位来决定数码管的显示

5.3心得体会

通过本次课程设计与实际操作,在确立目的的前提下设计相关单片机控制电路,是我们必须掌握的能力。同时在使用部分芯片,我们得查阅相关资料,通过自学芯片的原理并且使用,了解更多在课本上没有的知识。确定使用的元器件之后,布局的调整也是必不可少的。尤其在布线的时候,容易引起一系列问题,这时候锻炼我们的布线布局能力。还有在设计电路原理图之后,我们得设计编写相关程序,测试和调试,在仿真软件操作,同时在遇到问题之后,对问题解决的能力。虽然在短暂的学习中,但是学到的知识与能力不仅仅只是本实验中应用到的,还有更多程序实验的设计。

附录

AT89C51

简要说明:AT89C51是一块单片机,在硅片上集成了各种部件的微型计算机。这些部件包括中央处理器CPU,数据存储器RAM,程序存储器ROM,定时器/计数器和多种I/O接口电路。

七段显示数码管

简要说明:能显示六位的共阴数码管

74LS245

\o "查看图片" DIR是H时,A→B

74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收) DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态。由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与 驱动器输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1)。

参考文献

彭伟《单片机C语言程序设计实训100例》

 下载文档

 收藏

 分享 赏

 0

c语言数码管显示乘法口诀,数码管随机模拟显示乘法口诀实验报告相关推荐

  1. c语言数码管显示时间,求数码管设计时钟表(C语言) 电子时钟?

    数码管设计时钟表(C语言) 2008-05-30 00:45 声明: 实钟程序刚写成,通过实验板验证.正确无误.但还程序还没最优化.希望有高手看到提宝贵意见,本人感激不尽. ;采用AT51的8位电子钟 ...

  2. 四位共阳极数码管显示函数_数码管模块.doc

    数码管模块 数码管 1.概 述 数码管模块采用四位共阳极数码管,用于显示数字和少数特殊字符.可以在机器人项目中使用该模块,用于显示速度.时间.分数.温度.距离等传感器的值.同时,Makeblock提供 ...

  3. c51数码管显示汇编语言,单片机数码管显示数字加减汇编程序

    用7SEG-MPX6-CA六位数码管显示 晶振=12MHZ,缓冲单元=30H,31H,32H,一个加一键减一键!没用31,32. MOV R7,#89H MOV DPTR,#TAB MOV 32H,# ...

  4. 服务器主板数码管显示ff,关于数码管显示编码

    数码管是电子产品设计中不可或缺的显示原件,驱动简单.可靠性高.抗干扰能力强.温度适应性广.价格低廉.在实际项目中使用非常广泛. 数码管的驱动也非常简单,在所有的电子类教程中都有.我们随便可以写一个. ...

  5. c语言链表最高响应比优先,操作系统--最高响应比优先调度算法实验报告..doc

    操作系统--最高响应比优先调度算法实验报告. 进程调度一.实验题目与要求 编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法.实现具体包括:首先确定作业控制块的内容和组成方式:然 ...

  6. c51时钟数码管显示流程图_数码管显示的电子时钟C51程序

    /*************************************************************功能: 实现电子时钟显示(C)定义: P2口位选,P0口段选 时间: 201 ...

  7. 7段并行数码管显示实验C语言,七段数码管显示十进制数字 (15)

    实验报告 实验题目 设有10个开关,编号分别为0,1,--,9. 设计电路实现某开关闭合时对应显示相应的十进制数字.要求:(1)写出设计说明,(2)用 Proteus或Multisim仿真. 实验方案 ...

  8. c语言数码管显示小数点,8位数码管显示正整数和小数及解决鬼影问题

    写的不知道好不好,有什么不对的地方还请指出,谢了. 正整数显示无异常,小数显示有点异常(小数会有精度问题,后面在处理,先给大家贴出来代码). 本次,使用了数组用来存放要显示的数值. 用单独的数码管显示 ...

  9. 基于51单片机的数码管显示方案

    这一次给大家带来的项目是课堂作业级别的51单片机数码管显示,本次的项目着重于讲解原理,让大家明白单片机的io对于外界设备的控制是如何进行的. 共阳极和共阴极数码管的差异 (1)驱动方法的差异.一个数码 ...

最新文章

  1. 1个多月就能看到效果的减肥大法 - 生活至上,美容至尚!
  2. 中后台管理信息系统通用原型方案_AxureUX客户关系管理系统后台设置中心原型模板正式发布...
  3. bigdecimal判断大于零_Python零基础入门(七):运算符
  4. 牛客网【每日一题】4月22日 K-th Number
  5. 怎样定义和引用一维数组,二维数组
  6. centos-安装python3-pip3
  7. cocos2dx中加入unzip
  8. HTML/CSS/JavaScript学习笔记【持续更新】
  9. spark学习-70-源代码:Endpoint模型介绍(2)-启动流程
  10. nsis打包php项目加环境,NSIS制作安装文件全攻略(一) zz
  11. iOS:主流启动优化方案浅析
  12. p5.js 入门教程
  13. 使用 FFmpeg 工具合并本地多个.ts文件为单个.MP4
  14. SVN checckout 失败:Error: REPORT request on '/svn/signature/!svn/me' failed 的解决办法
  15. Hutool做excel的解析
  16. 李永乐数学基础过关660题高等数学选择题
  17. 王佩丰 Excel 基础24讲 | 学习笔记(全)
  18. SpringSecurity 安全框架
  19. 一个CPP程序猿的第一篇博客
  20. 构筑立体世界,AR Engine助力B站会员购打造沉浸式营销

热门文章

  1. 58投资优信,姚劲波又要对立杨浩涌?
  2. 云游戏发展的这三年,阿里元境怎么样了?| 近匠
  3. C语言之打印菱形图详解
  4. ubuntu-20.04-desktop-amd64.iso巧方法(起别名)设置python命令指向python3.8
  5. calc()函数及vmin,vmax,vh,vw的认识,在family里的实战运用
  6. 小程序wxChart说明文档整理
  7. 手撕RTSP协议系列(1)——Rtsp基本流程
  8. cocos creator 保持屏幕常亮 屏幕不休眠
  9. r33200g核显相当于什么显卡
  10. python:实现字符串大小写形式转换