欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    单片机开发板 计算器 电梯 密码锁 万年历 交通灯课程设计宝贝及程序bndv.docx

    • 资源ID:48087262       资源大小:1.04MB        全文页数:66页
    • 资源格式: DOCX        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机开发板 计算器 电梯 密码锁 万年历 交通灯课程设计宝贝及程序bndv.docx

    开发板实验报告设 计 课 题题:基于单片片机的简简易计算算器指 导 老 师师:班 级: 学 号: 姓 名:一 设计计内容和和目的本次实验验的任务务就是要要以511系列单单片机为为核心实实现一个个简易计计算器计计算器,它它的结构构非常简简单,外外部主要要由4*4矩阵阵键盘和和一个液液晶显示示屏构成成,内部部由一块块AT899C51单单片机构构成,通通过软件件编程可可实现简简单加减减乘除。目的:做自己己喜欢的的实验,提提高自学学能力。二 方案案论证经分析,计计算器电电路包括括三个部部分:显显示电路路、4*4键扫扫描电路路、单片片机微控控制电路路。具体体如下:) LCD显显示电路路LCD116022作为一一个成熟熟的产品品,使用用简单,模模式固定定,便于于移植到到各种类类型的程程序,但但是初学学者往往往要注意意结合LLCD本本身的时时序图来来完善初初始化程程序。又又以其微微功耗、体体积小、显显示内容容丰富、超超薄轻巧巧的诸多多优点,故故采用LLCD.) 4*4键键盘扫描描电路(中断式式,扫描描式,反反转式)用户设计计行列键键盘接口口,一般般常采用用3 种方方法读取取键值。一一种是中中断式,外外两种是是扫描法法和反转转法。中断式:在键盘盘按下时时产生一一个外部部中断通通知CPPU,并并由中断断处理程程序通过过不同的的地址读取数数据线上上的状态态,判断断哪个案案件被按按下。本本实验采采用中断断式实现现用户键键盘接口口。扫描法:对键盘盘上的某某一行送送低电平平,其他他行为高高电平,然然后读取取列值。若若列值中中有一位是低,则则表明该该行与低低电平对对应列的的键被按按下;否否则,扫扫描下一一行。反转法:先将所所有行扫扫描线输输出低电电平,读读列值。若若列值有有一位是是低,则则表明有有键按下下,读列值;然后所所有列扫扫描线输输出低电电平,再再读行值值。根据据读到的的值组合合就可以以查表11 得到到的键码。这个就仁仁者见仁仁智者见见智了,不不过如果果熟悉了了扫描式式,建议议果断升升级自己己的硬件件(很简简单加个个74LLS088与门),故故采用节节省CPPU的中中断式扫扫描电路路。) 单单片机微微控制电电路微控制电电路就是是以ATT89CC51为为核心的的控制核核心,主主要注意意晶振电电路的接接法和复复位电路路的接法法。三 硬件件电路的的设计21 硬硬件设计计电路框框图51系列单片机系统4*4键盘LCD显示 晶振电路复位电路线路原理框图22 硬硬件设计计电路的的元件清清单器件名称称数量AT899C5111按键1774LSS08110K电电阻9电容222uF1LCD1160221晶振122MHzz1电容300pF25K电位位器123 硬硬件设计计电路图将4*44的键盘盘直接接接在P11口上,用用P0口作为为LCDD的显示示输出,PP3.22口的INNT0作作为外部部中断位位。24 硬硬件设计计的补充充说明四软件设设计程序序及描述述本程序组组成可分分为3个模块块:矩阵阵键盘模模块,LLCD显显示模块块,和运运算模块块(源程程序见底底页)开始初始化参数初始化LCD显示有键输入?读取键码LCD显示数字键清零键功能键状态清零输入数值数值送显示缓冲YN等待数值输入结果送显示缓冲根据上次功能键和输入的数据计算结果本次功能键?等待数值输入结果送显示缓冲等待数值输入结果送显示缓冲五硬软件件的调试试及方法法我个人遇遇到的主主要问题题出现在在LCDD16002上,要要不是我我自己买买了块新新的LCCD恐怕怕我的结结论,就就只能在在软件仿仿真实现现了。硬件上:在不加加芯片调调试时,LLCD116022只显示示一排全全黑,一一般说明明该元件件是好的的。(但但也不一一定,我我那时就就一直认认为我的的元件没没坏);给155,166管脚分分别接上上+5vv和0vv,测试试背光是是否完好好;给VVEE接接上电位位器,检检查对比比度是否否可调;一般LCCD易出出现的现现象,我我再做实实验的时时候遇到到过以下下几种情情况:状态1 上电之之后,116022的第一一行全黑黑,即116个55x7黑黑块产生原因因:液晶晶根本就就没有进进行初始始化操作作,需要要检查连连线或者者程序。运运气不好好的情况况下就是是整块LLCD是是坏的。状态2 屏上显显示两排排灰格 产生原因因:程序序中对液液晶初始始化不正正常,应应是部分分初始化化指令没没有正常常接收,建建议按照照标准初初始化步步骤调整整程序,或或者调整整指令之之间的延延时(加加大一些些试试)-补充:也有可可能是对对比度太太大,建建议优先先调整对对比度电电阻 状态3显显示乱码码这是我在在实验室室组合版版上做的的,原因因是接线线问题状状态3正确显显示 六实验结结果与性性能达标标我的计算算器只能能准确进进行得数数为09的四四则运算算。1.加法法计算2.减法法计算3.乘法法计算4.除法法计算5.字符符显示实物与仿仿真不一一致。这这就是传传说中的的BUGG了。我我不明白白。七实验改改进与心心得体会会很明显我我的计算算器处理理数据及及显示存存在太大大的局限限性,我我觉得主主要还是是我对程程序中的的运算模模块理解解不深,这这点仍需需大大加加强。这个实验验给我的的感觉,硬硬件和软软件上都都不是很很难。我我的焊工工也不马马虎,即即使难看看了点,但但只要软软件能行行,就能能完美运运行。可可惜,我我就败在在LCDD16002,从从学校拿拿了两块块,幸好好最后实实在没办办法,自自己买了了一块。最最终证实实我之前前的实验验就是LLCD的的损坏。没没知识真真可怕,我我不懂真真正排查查LCDD的好坏坏。不过过也因祸祸得福,我我在磕磕磕碰碰中中,固执执的认为为LCDD是好的的,反而而使我对对LCDD初始化化,LCCD字符符显示,33种不同同的矩阵阵键盘扫扫描的方方法,及及软件上上的巧妙妙技巧有有了更好好的了解解。我在在这次实实验上,感感觉收获获的更多多. 下面是源源代码:#inccludde<rreg551.hh>#deffinee CCLEAARSCCREEEN LCDD_wrritee_coommaand(0x001) #deffinee uiint unssignned intt #deffinee uccharr unnsiggnedd chhar/*定定义接口口*/ #deffinee LLCDIIO P00#deffinee KKEYBBOARRD P11/保保留sbitt LCCD16602_RS=P20; sbitt LCCD16602_RW=P21; sbitt LCCD16602_EN=P22; /*/codee uccharr maayuaan116='00',''1','2'','33',''4','5'','66',''7','8'','99',''0','/'','*',''-','+'','='/不不错,这这个比较较明了unsiigneed ccharr coode keyycodde=00x111,0xx21,0x441,00x811,0xx12,0x222,00x422,0xx82,0x144,0xx24,0x444,00x844,0xx18,0x228,00x488,0xx88;/键盘编编码值()int i,jj,k=1,ss;/int t,tt1,tt2,aa;/voidd deelayy(uccharr);/延时时/*定定义函数数*/voidd LCCD_iinitt(vooid);/初始化化函数voidd deelayy_nmms(uunsiigneed iint n);/延延时函数数voidd LCCD_wwritte_ccommmandd(unnsiggnedd chhar commmannd);/写写入指令令函数voidd LCCD_wwritte_ddat(unssignned chaar ddat);/写入数数据函数数voidd deelayy_100ms();inittiall();uchaar kkeysscann();/键键盘扫描描函数calcc(uccharr);/计算算函数uchaar nnum,temmp,kkey,keyynumm;voidd maain()/主函数数LCDD_innit();dellay_nmss(1000);whiile(1)innitiial();/有中中断KEEYBOOARDD =00xf00;/键盘的的列值全全置高电电平/*开中中断*/inittiall()EA=11;/总开关关EX0=1;/中断断方式00开启IT0=0;/*/*中断函函数*/voidd innterr0() innterrruppt 00unsiigneed ccharr n;delaay_110mss();/延延时if(IINT00=00)/没键按按下EX0=0;/关中中断n=keeysccan();calcc(n);EX0=1;/开中中断KEYBBOARRD=00xf00;/键盘的的列值全全置高电电平/*/calcc(uccharr n)if(n<110)/键值值小于110tt1=tt1*110+nn;LLCD_wriite_commmannd(00x000);/写命命令语句句LLCD_wriite_datt(maayuaannn);/写写数据函函数ellseif(n=10)LCCD_iinitt();t1=0;tt2=00,t=0;kk=1;elsseif(n<115)t2=t1;t1=0;jj=n;LCDD_wrritee_coommaand(0x000);LCDD_wrritee_daat(mmayuuann);elseeLCDD_wrritee_coommaand(0x000);LCDD_wrritee_daat(mmayuuann);swiitchh(j)casse 111:t=tt2/tt1;breeak;casse 112:t=tt2*tt1;breeak;casse 113:t=tt2-tt1;breeak;casse 114:t=tt2+tt1;breeak;if(t<=9)LCDD_wrritee_coommaand(0x000);LCDD_wrritee_daat(tt+488);if(t>99)whiile(t>99)s=tt%100;t=tt/100;akk=ss;k+;if(t<=9)LCDD_wrritee_coommaand(0x000);LCDD_wrritee_daat(tt+488);forr(i=k-11;i>>=1;i-)LCDD_wrritee_coommaand(0x000);LCDD_wrritee_daat(aai+488);/*键键盘扫描描函数*/uchaar kkeysscann()/键盘盘扫描KEYBBOARRD=00xf00;/键盘的的列值全全置高电电平delaay_110mss();/延延时if(KKEYBBOARRD!=0xff0)/有键键按下tempp=KEEYBOOARDD;/保存键键盘此刻刻的键植植delaay_110mss();/延延时if(KKEYBBOARRD=temmp)/再次次确认键键盘是否否被按下下uchaar ii;KEYBBOARRD=00x0ff;/键盘的的行值全全置高电电平delaay_110mss();/110MSS时间延延时keynnum=temmp | KEEYBOOARDD;/保存键键盘的行行值whille(KKEYBBOARRD!=0x00f);/松松手检测测for(i=00;i<<16;i+)if(kkeyccodeei=keyynumm)retuurn (i);retuurn -1;/*/* 延延时*/voidd deelayy_nmms(uunsiigneed iint n) unssignned intt i=0,jj=0; forr (ii=n;i>00;i-) forr (jj=0;j<110;jj+); voidd deelayy_100ms()/10MMS延时时unsiigneed ccharr i,j;for(i=00;i<<10;i+)for(j=00;j<<1200;j+);/*/ /*写写指令函函数*/ voidd LCCD_wwritte_ccommmandd(unnsiggnedd chhar commmannd) LLCDIIO=ccommmandd; LLCD116022_RSS=0; LLCD116022_RWW=0; LLCD116022_ENN=0; LLCD116022_ENN=1; ddelaay_nnms(10);/*/*写数数据函数数*/voidd LCCD_wwritte_ddat(unssignned chaar ddat)LCDIIO=ddat;LCD116022_RSS=1;LCD116022_RWW=0;LCD116022_ENN=0;delaay_nnms(1);LCD116022_ENN=1;/*/ /*初始化化函数*/voidd LCCD_iinitt(vooid)CLEAARSCCREEEN;/cllearr sccreeenLCD_wriite_commmannd(00x388);/seet 88 biit ddataa trranssmisssioon mmodeeLCD_wriite_commmannd(00x0cc);/oppen dissplaay (enaablee lccd ddispplayy)LCD_wriite_commmannd(00x800);/seet llcd firrst dissplaay aaddrresssCLEAARSCCREEEN;/cllearr sccreeen/*/为了方便便初学者者学习LLCD,特特留下字字符显示示代码,电电路图与与本实验验一致。已通过实物测试,绝对没问题。#inccludde <<regg51.h>unsiigneed ccharr taablee1=00x033,0xx07,0x00f,00x1ff,0xx1f,0x11f,00x1ff,0xx1f, 00x188,0xx1E,0x11f,00x1ff,0xx1f,0x11f,00x1ff,0xx1f, 00x077,0xx1f,0x11f,00x1ff,0xx1f,0x11f,00x1ff,0xx1f, 00x100,0xx18,0x11c,00x1EE,0xx1E,0x11E,00x1EE,0xx1E, 00x0ff,0xx07,0x003,00x011,0xx00,0x000,00x000,0xx00, 00x1ff,0xx1f,0x11f,00x1ff,0xx1f,0x00f,00x077,0xx01, 00x1ff,0xx1f,0x11f,00x1ff,0xx1f,0x11c,00x188,0xx00, 00x1cc,0xx18,0x110,00x000,0xx00,0x000,00x000,0xx00;/心图案案unsiigneed ccharr taablee=0xx10,0x006,00x099,0xx08,0x008,00x099,0xx06,0x000;/字字符#deffinee CCLEAARSCCREEEN LCDD_wrritee_coommaand(0x001) /*定定义接口口*/ #deffinee LLCDIIO P00sbitt LCCD16602_RS=P20; sbitt LCCD16602_RW=P21; sbitt LCCD16602_EN=P22; /*定定义函数数*/voidd LCCD_wwritte_ccommmandd(unnsiggnedd chhar commmannd);/写写入指令令函数voidd LCCD_wwritte_ddat(unssignned chaar ddat);/写入数数据函数数voidd LCCD_sset_xy( unnsiggnedd chhar x, unssignned chaar yy );/设设置显示示位置函函数voidd LCCD_ddsp_chaar( unssignned x,uunsiigneed ccharr y,unssignned chaar ddat);/显示一一个字符符函数voidd LCCD_ddsp_strringg(unnsiggnedd chhar X,uunsiigneed ccharr Y,unssignned chaar *s);/显显示字符符串函数数voidd LCCD_iinitt(vooid);/初始化化函数voidd deelayy_nmms(uunsiigneed iint n);/延延时函数数/*/ /*初始化化函数*/voidd LCCD_iinitt(vooid)CLEAARSCCREEEN;/cllearr sccreeenLCD_wriite_commmannd(00x388);/seet 88 biit ddataa trranssmisssioon mmodeeLCD_wriite_commmannd(00x0cc);/oppen dissplaay (enaablee lccd ddispplayy)LCD_wriite_commmannd(00x800);/seet llcd firrst dissplaay aaddrresssCLEAARSCCREEEN;/cllearr sccreeen/*/ /*写写指令函函数*/ voidd LCCD_wwritte_ccommmandd(unnsiggnedd chhar commmannd) LCCDIOO=coommaand; LLCD116022_RSS=0; LLCD116022_RWW=0; LLCD116022_ENN=0; LLCD116022_ENN=1; ddelaay_nnms(10);/*/*写数数据函数数*/voidd LCCD_wwritte_ddat(unssignned chaar ddat)LCDIIO=ddat;LCD116022_RSS=1;LCD116022_RWW=0;LCD116022_ENN=0;delaay_nnms(1);LCD116022_ENN=1;/*/ /*设置显显示位置置*/voidd LCCD_sset_xy( unnsiggnedd chhar x, unssignned chaar yy )unsiigneed ccharr adddreess;if (y = 11) adddreess = 00x800 + x;elsee adddreess =0xxc0+ x;LCD_wriite_commmannd(aaddrresss);/*/ /*显示示一个字字符*/voidd LCCD_ddsp_chaar( unssignned x,uunsiigneed ccharr y,unssignned chaar ddat)LCD_sett_xyy( xx, yy );LCD_wriite_datt(daat);/*/ /*显示字字符串函函数*/voidd LCCD_ddsp_strringg(unnsiggnedd chhar X,uunsiigneed ccharr Y,unssignned chaar *s) LCDD_seet_xxy( X, Y ); whiile (*ss) LLCD_wriite_datt(*ss); ss +; /*/ /* 延延时*/voidd deelayy_nmms(uunsiigneed iint n) unssignned intt i=0,jj=0; forr (ii=n;i>00;i-) forr (jj=0;j<110;jj+); /*/ /*主主函数*/voidd maain(voiid)unsiigneed ccharr i,j,kk,tmmp;LCD_iniit();delaay_nnms(1000);tmp=0x440;/设置置CGRRAM地地址的格格式字k=0;for(j=00;j<<8;jj+) foor(ii=0;i<88;i+) LCCD_wwritte_ccommmandd(tmmp+ii); / 设置自自定义字字符的 CGRRAM 地址 deelayy_nmms(22); LCCD_wwritte_ddat(tabble11k); / 向CGGRAMM写入自自定义字字符表的的数据 k+; deelayy_nmms(22); tmmp=ttmp+8; LCCD_ddsp_strringg(1,1,""LCDD TEEST ");/在第一一行第一一列显示示"LCCD TTESTT" LCCD_ddsp_strringg(1,2,""SUCCCESSSFUUL ");/在第二二行第一一列显示示"SUUCCEESSFFUL"" foor (i=00;i<<4;ii+) LLCD_dspp_chhar( 122+i,1,ii);/在第第一行第第12列列位置显显示心图图案的上上半部 ddelaay_nnms(1); foor (i=44;i<<8;ii+) LLCD_dspp_chhar( 122+i-4,22,i);/在第二二行第112列位位置显示示心图案案的下半半部 ddelaay_nnms(1); whhilee (11);/*/3.1 硬件连连接  图33-1所所示为简简易计算算器的电电路原理理图。PP3口用用于键盘盘输入,接接4*44矩阵键键盘,键键值与键键盘的对对应表如如表-所所示,pp0口和和p2口口用于显显示,pp2口用用于显示示数值的的高位,ppo口用用于显示示数值的的低位。图3-11 简易易计算器器电路原原理图键值与功功能对应应表键值0123456789+-×/=ON/CC功能0123456789+-×÷=清零表3-113.2 计算器器的软件件设计#inccludde<rreg551.hh>    /头文件件#deffinee uiint unssignned intt / #deffinee uccharr unnsiggnedd chharsbitt lccdenn=P223; /定义引引脚sbitt rss=P224;sbitt rww=P220;sbitt buusy=P07;charr i,j,ttempp,nuum,nnum_1;longg a,b,cc;      /aa,第一一个数 b,第二二个数 c,得数数floaat aa_c,b_cc;uchaar fflagg,fuuhaoo;/flaag表示示是否有有符号键键按下,fuhao表征按下的是哪个符号uchaar ccodee taablee=7,8,9,00,4,5,6,00,1,2,3,00,0,0,0,00;uchaar ccodee taablee1=7,8,9,00x2ff-0xx30,4,5,6,00x2aa-0xx30,1,2,3,00x2dd-0xx30,0x011-0xx30,0,00x3dd-0xx30,0x22b-00x300;voidd deelayy(uccharr z) / 延迟迟函数uchaar yy;for(z;zz>0;

    注意事项

    本文(单片机开发板 计算器 电梯 密码锁 万年历 交通灯课程设计宝贝及程序bndv.docx)为本站会员(you****now)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开