按关键词阅读: msc51 基于 报告 课程设计 仿真 电路 protues 及其 程序 语言 计算器 键盘 矩阵 实现 单片机
【基于|基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真课程设计报告】1、单片机原理及接口技术课程设计报告设计题目: 计算器设计 信息与电气工程学院二零一三年七月计算器设计单片机体积小 , 功耗小 , 价格低 , 用途灵活 , 无处不在 , 属专用计算机 。
是一种特殊器件 , 需经过专门学习方能掌握应用 , 应用中要设计专用的硬件和软件 。
近年来 , 单片机以其体积小、价格廉、面向控制等独特优点 , 在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用 。
与此同时 , 单片机应用系统的可靠性成为人们越来越关注的重要课题 。
影响可靠性的因素是多方面的 , 如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等 。
其中系统的抗干扰性能是系统可靠性的重要指标 。
数学是科技进步的重要工具 , 数据的运 。
2、算也随着科技的进步越发变得繁琐复杂 , 计算器的出现可以大大解放人在设计计算过程中的工作量 , 使计算的精度、速度得到改善 , 通过msc51单片机 , 矩阵键盘和LED数码管可以实现简单的四位数的四则运算和显示 , 并当运算结果超出范围时予以报错 。
注:这一部分主要描述题目的背景和意义 , 对设计所采取的主要方法做一下简要描述 。
字数不要太多 , 300-500字 。
另注:本文要当做模板使用 , 不要随意更改字体、字号、行间距等 , 学会使用格式刷 。
文中给出的各项内容都要在大家的报告中体现 , 可采用填空的方式使用本模板 。
1. 设计任务结合实际情况 , 基于AT89C51单片机设计一个计算器 。
该系统应满足的功能要求为:(1) 实现简单的四位 。
3、十进制数字的四则运算;(2) 按键输入数字 , 运算法则;(3) LED数码管移位显示每次输入的数据和运算结果;(4) 当运算结果超出范围时实现报错 。
主要硬件设备:AT89C51单片机、LED数码管、矩阵键盘 。
注:这一部分需要写明系统功能需求 , 用到的主要硬件(参考实验箱的说明书) 。
2. 整体方案设计计算器以AT89C51单片机作为整个系统的控制核心 , 应用其强大的I/O功能和计算速度 , 构成整个计算器 。
通过矩阵键盘输入运算数据和符号 , 送入单片机进行数据处理 。
经单片机运算后判断是否超出要求的运算范围 , 控制LED数码管的输出原理图如图2-1所示 。
图2-1 基于单片机的变频调速恒压供水系统原理图本系统硬件 。
4、主要由矩阵键盘、I/O输入输出、显示系统等几部分组成 。
各模块的主要功能如下:(1)矩阵键盘将十六进制编码的数字传入单片机 。
(2) 单片机扫描键盘信号并接收 , 对输入的键盘信号进行处理(3) LED以动态扫描的方式移位显示每次输入的数据和最后的运算结果 。
系统的整体设计方案设计图如图2-2所示 。
图2-2 系统的整体方案设计图注:文中出现的所有框图、流程图都要用VISIO画 , 不允许从文档中裁剪然后粘贴 。
要注意图的格式 , 图中的文字大小不要大于正文 , 图题用五号宋体 , 居中 。
3. 系统硬件电路设计3.1 时钟电路本设计采用外部时钟方式 , 使用外部振荡器产生脉冲信号 , 采用12MHz的石英晶体振荡器 , 结构如图3-1 。
5、 。
图3-1 时钟电路和复位电路3.2 复位电路本设计采用按键手动电平复位电路 , 通过RST端经电阻与电源Vcc接通而实现 , 结构如图3-1 。
3.3 数码管显示电路本设计所用数码管显示电路采用4位红色共阴极数码管接上拉电阻实现 , 其结构如图3-2 。
图3-2数码管显示电路 3.4 键盘输入电路本设计采用4*4矩阵键盘实现数据和运算法则的输入 。
按键设置在行、列线的交点上 , 行列线分别连接的按键开关的两端 , 并通过上来电阻街道+5V上 。
无按键按下时 , 行、列线均处于高电平 , 当有按键按下是 , 相对应的行和列电平为低电平 。
此特点也用于单片机I/O口对矩阵键盘的扫描 。
矩阵键盘和单片机的连接如图3-2所示 。
图3-2 矩阵键 。
6、盘与单片机的连接图注:以上各部分按照电路功能模块化介绍器件选型、器件特性、电路设计思路、电路功能等 , 要注意与第2小节中的整体方案设计图相对应 。
文中出现的电路原理图同样不能从资料中裁剪 , 可从自己设计的Proteus图中拷贝 。
4. 系统程序设计4.1 主程序流程图单片机控制I/O口循环扫描键盘状态 , 当检测到有按键按下时 , 将按键信号输入单片机 , 处理并输出显示 , 若无按键按下 , 则保持前一个数据的显示状态 。
系统主程序流程图如图4-1所示 。
图4-1 主程序流程图4.2 键盘扫描子程序流程图先检测是否有按键按下 , 当有按键按下时 , 逐行检测每一行的列状态 , 将准确的键盘信号输入单片机 。
键盘扫描流程图如图4-2所示 。
。
7、图4-2 键盘扫描流程图4.3 按键处理输出显示子程序流程图输出的子程序包括运算数的输出和结果输出 , 当有数字键按下 , 之前的数字左移一位 , 最新按下的数字显示在第一位 , 当有符号键按下 , 屏幕清零 , 当有等号键按下 , 判断运算结果是否符合要求 , 若符合要求 , 输出结果 , 不符合要求 , 输出报错提示 。
输出显示子程序流程图如图4-3所示 。
图4-3按键处理显示输出子程序流程图5. 系统调试这一部分分为Proteus软件仿真调试和硬件调试两部分 , 分别给出调试过程、调试时应注意的问题 , 分析遇到的问题及问题的解决方法 , Proteus调试可截屏运行结果图形并加以分析 。
5.1 Proteus软件仿真调试5.2 硬件调试6. 程序 。
8、清单#include #include #include #include #includeunsigned char key_scan();
void delay10ms();
unsigned char key_free();
void display();
void display1(unsigned int number1);
void display2(unsigned int number2);
void display3(unsigned int number3);
void display4(unsigned int number4);
void display_result();
void d 。
9、elay(unsigned int time);
void key_deal();
void display_error();
void caculate();
void put_offleds();
unsigned char numbertable=0x3F,0x06,0x5B,0x4F,0x66,0x6d,0x7D,0x07,0x7f,0x6f;
/1至9的共阴显示段码 unsigned char errortable=0x86;
/报错时使用的段码unsigned char weitable=0xfe,0xfd,0xfb,0xf7;
/共阴数码管位选unsigned int temp,temp1,t 。
10、emp2,number1,number2,number3,number4,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,way,k,k1,waytest,result_test;
unsigned int Result;
result1,result2,result3,result4,E_test;
unsigned char key;
void main()while(1) key_scan();
key_free();
key_deal();
/新的显示函数void display() display1(number1);
delay(6);
display2(number2);
d 。
11、elay(6);
display3(number3);
delay(6);
display4(number4);
delay(6);
void display1(unsigned int number1)P2= weitable3;
P1=numbertablenumber1;
void display2(unsigned int number2)P2= weitable2;
P1=numbertablenumber2;
void display3(unsigned int number3)P2= weitable1;
P1=numbertablenumber3;
void display4(unsigned in 。
12、t number4)P2= weitable0;
P1=numbertablenumber4;
/结果显示程序void display_result()display1(result1);
delay(6);
display2(result2);
delay(6);
display3(result3);
delay(6);
display4(result4);
delay(6);
/定义延时程序void delay(unsigned int time)unsigned int i,j;
for(i=time;
i0;
i-)for(j=112;
j0;
j-);
/按键扫描子程序unsigned char key_scan( 。
13、) P0=0x0f;
/对所有行置高电平 , 列全为低电平/P0=0xff;
temp1=P0;
if(temp1!=0x0f) /如果有按键按下/put_offleds();
/delay(3);
temp1=P0;
/延时消抖if(temp1!=0x0f) P0=0xf0;
/翻转扫描列状态/P0=0xff;
temp2=P0;
if(temp1=0x0e) /若第一行有按键按下 k=0;
/键盘按下动作标记switch(temp2)case 0xe0: /第一列有人按下key=7;
break;
case 0xd0: /第二列有人按下key=8;
break;
case 0xb0: /若第三列有人按下key=9 。
14、;
break;
case 0x70: /若第四列有人按下key=/;
break;
else if (temp1=0x0d) /若第二行有按键按下 k=0;
/键盘按下动作标记switch(temp2)case 0xe0: /第一列有人按下key=4;
break;
case 0xd0: /第二列有人按下key=5;
break;
case 0xb0: /若第三列有人按下key=6;
break;
case 0x70: /若第四列有人按下key=*;
break;
else if(temp1=0x0b) /若第三行有按键按下 k=0;
/键盘按下动作标记switch(temp2)case 0xe0: /第一列有人按下 。
15、key=1;
break;
case 0xd0: /第二列有人按下key=2;
break;
case 0xb0: /若第三列有人按下key=3;
break;
case 0x70: /若第四列有人按下key=-;
break;
else if (temp1=0x07) /若第4行有按键按下 k=0;
/键盘按下动作标记switch(temp2)case 0xe0: /第一列有人按下key=.;
break;
case 0xd0: /第二列有人按下key=0;
break;
case 0xb0: /若第三列有人按下key=;
break;
case 0x70: /若第四列有人按下key=+;
break;
k+=1;
retu 。
16、rn key;
/延时程序void delay10ms()unsigned char i,j;
for(i=0;
i9) /报错标记Result=0x79;
break;
case -: /减法运算Result=Number1-Number2;
if(Number1Number2)Result=0x79;
/报错标记break;
/考虑溢出设计case *: /乘法运算Result=Number1*Number2;
if(a4*b4!=0|a3*b3!=0)/报错标记Result=0x79;
break;
case /:/除法运算Result=Number1/Number2;
if(Number1Number2)R 。
17、esult=0x79;
/报错标记break;
default:Result=Number1;
break;
result4=Result/1000;
result3=Result%1000/100;
result2=Result%100/10;
result1=Result%10;
/定义关闭数码管函数void put_offleds()P1=0x00;
P2=0xff;
注:以上程序清单的格式不能更改 , 采用Courier New字体 , 5号大小 , 背景色不能缺 , 注意排列整齐、注释等 。
7.小结本部分对整个设计过程进行总结说明 , 对取得的成果进行简单评价 , 对存在的问题给出以后的展望或解决办法 。
其他格式说明以下主要对 。
18、文中出现的图、表以及公式格式给出相关示例 , 请大家按照如下格式编排 。
对图的格式要进行设置 , 首先设置其版式为“嵌入型” , 然后将图和图下面的图号及图题居中排列 , 如图2-1所示 。
图2-1 水罐液位控制结构图XXXX 。
XXX如表2-1所示 。
表2-1 XXX材料名称化学成分()力学性能CMnCr其他抗拉强度b/N/mm2屈服强度s/N/mm2弹性模量E/N/mm2伸长率/布氏硬度/HBS对于文中出现的所有公式 , 要求必须用公式编辑器进行编辑 , 并在后面作相应的标号 , 具体格式如下例所示 , 右对齐 , 公式本体依靠在公式号和公式本体之间加入空格实现居中 。
(2-1)(2-2)报告内容编号说明:1. 节标题(小三黑体 , 段前段后6磅间距 , 顶格)1.1 条标题(小四黑体 , 段前6磅间距 , 顶格)(1) 一级子项标题(小四号宋体 , 首行缩进2字 , 行间距与正文相同 , 1.25倍行距 , 英文括号 , 编号与后面文字之间空一格 , 可加粗突出显示 , 也可不加粗)(2) 哈尔滨工业大学本科课程设计报告模板1) 二级子项标题(小四号宋体 , 首行缩进2字 , 英文半括号 , 编号与后面文字之间空一格 , 不加粗)2) 三级子项标题(编号形式有区别 , 别的同二级子项标题 。

稿源:(未知)
【傻大方】网址:/a/2021/0621/0022536222.html
标题:基于|基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真课程设计报告