单片机计算器程序设计报告.doc
文本预览下载声明
长沙民政职业技术学院
长沙民政职业技术学院
课 程 设 计 报 告
课 题 名 称: 51单片机的计算器设计
课 程: 单片机技术及应用
专 业: 应用电子技术
学生姓名
周扬
孔计
张娇
陈实
学 号
17
15
14
19
班 级
0733
0733
0733
0733
指导老师
方跃春老师
应用电子技术教研室
2009
一、课题任务及要求
要求:1、掌握数码管移位动态扫描显示的编程方法
2、掌握矩阵扫描的编程方法
3、掌握数据在内部运算的编程方法
任务:1、实现最大6位正整数加、减、乘、除
2、具备清零、等于功能
3、16个按键功能依次为: 数字0、数字1、数字2、数字3、数字4、数字5、数字6、数字7、数字8、数字9、清零、等于、加、减、乘、除
二、硬 件 设 计
原理图
原理分析
该设计通过89C51芯片控制6个一位数码管显示,并实时检测按键按下情况来实现计算器功能,16个按键有10个为数字按键 其他6个分别为加、减、乘、除、复位、等于
电路接上电源后 数码管显示个位显示数字0 ,芯片对按键进行实时扫描,通过矩阵键盘进行计算,特别注意的是,当结果为负数时,数码管显现EORR。
(一)、硬件部分
1、数码管为一位共阴数码管,共6个;故在段码输出口外加NPN型三极管作驱动
2、51芯片P1口接键盘端(矩阵按键)、P3口接段码、P2口的P2_0—P2_5接位码
3、按键为四乘四矩阵,共16个键
(二)、软件部分
1、数码管移位显示的实现是通过标志位wei2的数值变化控制dispiay函数显示位来实现的
2、程序的重要算法是通过类型为unsigned int 的数temp和数组str[]实现整体加减乘除、各位显示的 只要弄懂这一算法,此程序就可轻易掌握
PCB图
略。
元件清单及造价预算
按键 20个 单价 0.2 元 总计 4元
万用板 2块 单价 4 元 总计 8元
一位共阴数码管 6个 单价 2 元 总计 2元
三极管 7个 单价 0.2 元 总计 1.4元
1K电阻 20个 单价 0.01 元 总计 2毛
排插及排线 5对 单价 1元 总计 5元
电容 3个 单价 0.2元 总计 6毛
晶振 1个 单价 1元 总计 1元
8051芯片 1 个 单价 6元 总计 6元
费用总计 26.2元
5.实物照片
三、程 序 设 计
头程序
str[6]=str[5]=str[4]=str[3]=str[2]=str[1]=10;
str1[6]=str1[5]=str1[4]=str1[3]=str1[2]=str#includereg51.h //51单片机基本定义头文件
#includeintrins.h //循环位移头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
sbit P1_4=P1^4; //IO端口定义 (矩阵扫描后4位端口)
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
uchar i,num,s; //全局变量定义
uchar wei,wei2,ss,ss1,ss2,str1[]={0,0,0,0,0,0,0};
long temp,temp1,str[]={10,10,10,10,10,10,10};
uchar code dutable[]={ //段位编码
0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar code wetable[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void init(); //函数声明
void panduan();
void display();
void delay(uint z);
void shaomiao();
显示全部