单片机课程设计基于51单片机的简易计算器内容摘要:
el 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。 片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。 在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得AT89S52 在众多嵌入式控制应用系统中得到广泛应用。 图 图 11 数码管 LED 数码管实际上是由七个发光管组成 8 字形构成的,加上小数点就是 8个。 这些段分别由字母 a,b,c,d,e,f,g,dp 来表示。 当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的 2 个 8 数码管字样了。 如:显示一个 “2” 字,那么应当是 a亮 b 亮 g 亮 e亮 d亮 f不亮 c不亮 dp不亮。 LED 数码管有一般亮和超亮等不同之分,也有 寸、 1 寸等不同的尺寸。 小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为 ,电流不超过 30mA。 发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。 常用 LED 数码管显示 的数字和字符是 0、 A、 B、 C、 D、 E、 F。 各模块功能设计 键盘输入模块: 本设计中键盘分布键值如下表所示: 7 8 9 + 4 5 6 1 2 3 0 C = 247。 工作原理 图 12 本设计采用 P3 口作为矩阵键盘输入口。 开始工作后,单片机先对矩阵键盘的行进行扫描若无键按下,即先使 P3 为 11110000,然后检测外来输入,若有输入,则可使四位的 0 其中一位置 1,即完成了按键行号的输入。 列扫描原理同行扫描相同,不过 P3 初始为 00001111。 检测完行号与列号后,从而产生一个 8位二进制码,即可对键盘值进行输入 (程序实现见附录 char jianpan()段 )。 矩阵键盘的工作原理可以用以下框图简单表示: 行 扫 描列 扫 描有 键 按 下返 回 键 值 是否 本设计键值与八位码对应关系: 键值 8 二进制位码 十六进制 0 00011000 18 1 00010100 14 2 00100100 24 3 01000100 34 4 00010010 12 5 00100010 22 6 01000010 42 图 13 7 00010001 11 8 00100001 21 9 01000001 41 +/10 10000001 81 - /11 10000010 82 /12 10000100 84 247。 /13 10001000 88 =/14 01001000 48 C/15 00101000 28 矩阵键盘与单片机的电路连接如下面两幅图所示: 表 图 14 控制模块 控制模块控制着数字录入, 数字录入是进行计算的前提,它是将从矩阵键盘上输入的数值、运算符等录入单片机处理器进行处理,从而得出运算结果 (程序见附录二 KONGZHI 段)。 本设计数字录入 模块工作流程如下: 15 等 待键 值第 一 个 键 值 为运 算 符个 位 为 0 十 位 为空旧 结 果 不 参 与 运 算个 位 为 0 , 十 位为 空旧 结 果 作 为 第 一 个数 参 与 运 算 八 位 有 效 数 字开 始否是是否数 值 超 过 八 位清 零是否计 算运 算 符 为 =显 示否等 待 “ = ” 输 入结 束判 断 运 算 符等 待 运 算 符 输 入CC 或 第 九 位 数 是是否第 二 个 数 录 入否C是否图 16 计算模块 计算模块作为 计算器的 的核心模块 共有加、减、乘、除四个部 分。 其设计原理是先将键盘输入的 BCD 码数字转换为十进制数字,然后再对其进行运算。 由于由于最后需要进行输出显示,所以我们对最终结果又做了一次转换将结果转换为 BCD 码,以便在 LED 上显示。 下面以加法为例对计算模块进行原理介绍 (完整程序段见附录二 jisuan 段 )。 void jisuan(char k,char a[8],char b[8]) { char r[8]。 数组 r 用于存储计算结果的 BCD 码 long i,x,y。 i=0。 x=0。 存储第一个数 y=0。 存储第二个数 for(i=7。 i0。 i) //数值转化,将代表空格的 12 转化为数字 0,因为个位不显示空格,默认为 0,所以不转化 { while(a[i]==12)a[i]=0。 while(b[i]==12)b[i]=0。 } x=a[4]。 x=10000*x。 x=x+a[0]+a[1]*10+a[2]*100+a[3]*1000+a[5]*100000+a[6]*1000000+a[7]*10000000。 将键盘输入的第一个数转换为十进制数 y=b[4]。 y=10000*y。 y=y+b[0]+b[1]*10+b[2]*100+b[3]*1000+b[5]*100000+b[6]*1000000+b[7]*10000000。 将键盘输入的第二个数转换为十进制数 17 if(k==10)//加法运算 { x=x+y。 if(x99999999) //大于 8位,显示 “Err” { r[0]=11。 //r r[1]=11。 //r r[2]=10。 //E r[3]=12。 //空格 r[4]=12。 r[5]=12。 r[6]=12。 r[7]=12。 } else { r[0]=x%10。 r[1]=(x%100)/10。 r[2]=(x%1000)/100。 r[3]=(x%10000)/1000。 r[4]=(x%100000)/10000。 r[5]=(x%1000000)/100000。 r[6]=(x%10000000)/1000000。 r[7]=x/10000000。 //此段的功能是利用求余的方法将计算结果转换为 BCD 码 } } 从以上程序段中我们可以看出 C语言的简单与直观,再进行加法运算时只要输入“ +”,就能对 数字进行运算,若选用汇编语言,代码将变得很复杂。 18 显示模块 本设计采用了八位 LED 数码管。 可以显示 0~99999999,之间的任意整数。 由于 LED 数码管有八个,若采用静态显示,则最少需要 56根数据线与八根地址线,这对只有 40 根引脚的单片机是不可能实现的。 所以我们采用了动态扫描的显示方法。 其原理是不同时刻对不同位上的数码管进行选通,同时对其进行数码输出。 当扫描频率很高时,将不会看到数码关的闪烁。 本设计 利用 了 定时器中断来 实现间时显示。 (程序段见附录二 XIANSHI 段) 电路图: 为了 使 LED 的显示能与单片机速度能够匹配,因此在 P1口与 LED 之间加入了74HC245 锁存器。 晶振与复位模块 图 图 19 本模块的晶振为 12MHz,其为单片机工作提供时钟频率,是单片机必不可少的部件。 另外,为防止单片机由于各种原因而出现死机现象,本模块专门设计了一个独立的 RST 键,按下它可对单片机进行复位。单片机课程设计基于51单片机的简易计算器
相关推荐
水位时,蜂鸣器、数码管及发光二极 管的不同反应。 红灯表示水位过低 , 电机正转,进水 ; 绿灯表示水位正常 , 电机停转 ; 黄灯表示水位过高 , 电机反转,出水。 源程序见附录。 程序流程图 及仿真调试 如下图所示: 单片机原理及系统课程设计报告 4 N开 始水 位 是 否 过 低。 水 位 是 否 过 高。 报 警结 束报 警电 机 转 动 , 进 水电 机 转 动 , 放 水NYY 图
C^0。 //移位时的第 0 位 sbit acc7=ACC^7。 //移位时用的第 7 位 uint tem,flag1,flag2,lfen,lshi,shi,fen,year1,year2。 uchar tflag,ReadValue。 uchar miao,minute,hour,day,month,year,week,count=0,flag3=0,flag4=0。 uchar
基础位置等进行划分。 铺设混凝土前先在基层上洒水湿润,刷一层素水泥浆(水次比为 ~ ),然后从一端开始铺设,由室内向外退着操作。 振捣:用铁锹铺混凝土,厚度略高于找平堆,随即用平板振 21 捣器振捣。 厚度超过 20cm 时,应采用插入式振捣器,其移动距离不大 于作用半径的 倍,做到不漏振,确保混凝土密实。 找平:混凝土振捣密实后,以墙上水平标高线及找平堆为准检查平整度,高的铲掉,凹处补平。
道 1条等体育运动场地,并添置了相关体育运动器材;有图书室兼阅览室 1间,藏书 2万册左右;有标准的理化实验操作室和准备 保管室2间,可用于科普实验操作;有多媒体室、电脑教室 1 间,用于少年儿童现代信息技术教育;有文化艺术活动室 1间,用于文艺训练、展演;有综合实践园 1块,可用于少年儿童进行生产劳动实践教育活动。 现有场地设施能基本满足少年儿童教育学习活动需要。 着力抓好管理
预计利润、已结转利润、待结转利润情况。 报表 在集团决策导航中,点击指标分组右侧的“详细信息”,查看对应报表。 使用报表上方的功能按钮,可打印报表、导出报表、放大报表内容、缩小报表内容。 集团 在建拟建项目土地 储备 情况报表 点 击 “在建拟建项目土地储备情况”右侧的“详细信息”, 打开 集团报表 《 集团在建拟建项目土地储备情况报表 》。 集团决策导航 第 18 页 | 共 93 页