• 319.00 KB
  • 2022-04-22 11:35:37 发布

单片机原理及应用课程结构设计

  • 42页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'单片机原理及应用课程结构设计一、课程设计的目的与意义“单片机原理及应用”课程是电子信息专业的一门重要的工程技术理论基础课,是一门实践性和实用性都很强的课程,课程设计是本课程不可缺少的重要教学环节。学习的目的在于应用,本课程设计是配合"单片机原理及应用"课堂教学的一个重要的实践教学环节,它能起到巩固课堂和书本上所学知识,加强综合能力,提高系统设计水平,启发创新思想的效果。最终应能达到每个学生都能自己动手独立设计完成一个典型的单片机应用系统。学习了《单片机原理及应用》课程之后,专门安排一段时间运用本课程所学到的知识,进行有实际意义的设计。通过完成一个课题的理论设计和实际调试工作,既能加深对所学知识的理解,又能培养综合的实践技能,从而提高分析问题和解决问题的能力。通过本课程设计可以达到以下几个目的:(1)、巩固和加强对汇编语言和c51程序设计的掌握,以及对接口芯片种类、使用方法的了解并适当拓宽学生在工控领域的知识面。(2)初步掌握接口芯片在系统中的设计、使用方法。能根据系统的要求拟订设计方案;选用合适的接口器件并进行系统设计。(3)培养独立工作能力,独立设计、准备、调试,在实践中提高对单片机系统及接口技术的掌握,加强运用所学理论知识解决实际问题的能力。41 二、课程设计内容安排及教学要求(一)课程设计内容和进度安排:内容:两部分组成,自选设计题目+上机实验题目。进度:第1天:设计动员,教师讲述设计内容、要求和注意事项,学生根据自己的情况来选择设计题目和上机实验题目;确定总体设计方案。第2--4天:查资料,初步完成设计题目的资料收集整理;完成上机题目程序的编写、调试,同时上机进行实际测试验收工作;第5--7天:完成电路设计,程序编写,同时上机进行汇编、通讯、调试并修改程序的操作;实现上机题目的调试工作。第8--9天:整理设计说明书,并交给指导教师,教师安排好答辩时间及顺序;第10天:答辩。(二)教学要求1巩固和加深对MCS—51基本知识的理解,培养学生根据设计课题的需要,选用参考文献 资料、查阅有关工程手册的技术数据图表、上网查阅相关文章、从网上下载相应的软硬件资 料等的能力,提高学生综合运用所学知识和独立解决工程问题的能力。2掌握伟福仿真器的正确使用,学会简单系统的实验调试和测试方法,提高学生的动手能力;并能在教师的指导下,完成设计任务。3通过课程设计实践,帮助学生逐步建立正确的科研观点、经济观点、全局观点。4初步掌握有关工程设计的方法、步骤,逐步熟悉开展技术设计的基本程序,为以后参与设计及研制新产品打下初步基础。41 三、单片机应用系统的设计开发过程设计一个单片机应用系统,可以分为硬件设计和软件设计两个部分,从设计草图开始到样机调试成功,常常要将硬件,软件结合起来考虑,才能取得较好的效果.随着系统的用途不同,它们的硬,软件结构各有不同,但系统研制的方法和步骤是基本相同的,其研制过程可以归纳为以下所述的四个步骤.(一)确定任务如同任何一个新产品设计一样,单片机应用系统的研制过程也是以确定应用系统的任务开始的。确定应用系统的功能指标和技术参数,这是系统设计的起点和依据,它将贯穿于系统设计的全过程,必须认真做好这个工作,在确定任务的阶段中必须明确:1)本应用系统需要达到的主要目标是什么,有多少个回路,有几个参数需要进行检测和控制检测和控制的精度为多少;2)本应用系统有多少输入信号和输出信号,输入信号的形式和电压等级及变化频率情况,输出信号的形式,电压等级和驱动功率有何要求;3)本应用系统需要提供哪些人一机对话功能,如:小键盘要多少个按钮,显示器应有几位等;4)本应用系统的工作环境情况,如:温度、湿度、供电质量、电磁干扰等,是否需要采用特殊的安全保护和抗干扰措施;5)本应用系统的经济指标,特别是对新产品的开发,应当综合考虑成本,可靠性,可维护性以及经济效益和社会效益,参考国内外同类产品的资料,提出比较合理的技术指标,使所开发的产品具有最佳的性能价格比。(二)总体设计本阶段的任务便是通过调查研究,查阅资料来初定系统结构的总体方案,其中主要涉及到硬件和软件的功能划分。应用系统中硬件和软件具有一定的互换性,即某些功能既可以用硬件实现也可以用软件来完成。一般说来,用硬件实现的优点是可以提高工作速度,但使电路复杂,增加了硬件成本,而用软件代替某些硬件的功能可以使电路简化,硬件成本降低,但软件工作量增大。总体设计时,必须在硬件和软件之间权衡,分工明确,然后分头开始设计。(三)硬件设计过程1、将整个硬件系统划分为若干功能单元电路,绘出整个系统逻辑电路图,注明各单元电路间接口信号,并画出一些重要控制信号的时序图。2、完成各单元电路设计:包括选择合适的各类元器件和电路板设计(元器件布局和走线等)。3、各单元电路板装配,分调。4、整个硬件联机调试,完成后准备与软件联调。(四)软件设计41 过程1、采用模块化程序结构设计软件,首先将整个软件分成若干功能模块;2、对各模块设计写一个详细的程序流程图;3、根据流程图,编写源程序;4、上机调试各模块程序;5、各程序模块联调;6、与硬件一起联调,最后完成全部调试工作。四、课程设计选题原则课程设计是对理论教学进行消化、吸收并发展的一个教学环节,它可以帮助学生进一步理解理论知识,并能与实践结合起来,达到学以致用的效果。所以,课程设计的选题显得尤为重要。课程设计的选题一般应遵循以下几个原则:1、课题内容综合教学要求课题内容应与单片机原理及应用课程理论教学内容相符,可适当深化与拓宽知识面。2、课题内容的难度应适当课题内容的难易程度应保证大多数学生在规定时间内通过努力能完成设计。同时,课题内容也应多样化,以便不同层次、不同水平、不同兴趣的学生有选择的余地。3、课题内容应具有较强的实践性让学生有较多的机会进行调整、测试,从而锻炼动手能力。同时,也应有一定的实用性,以利于调动学生对课程设计的积极性。4、课题内容应适当反映该课程在工程技术领域中的应用。41 五、课程设计题目本课程设计题目分两大类:(一)、设计实现类:进行软、硬件设计,并上机编程、联线、调试、实现;(二)、应用系统设计类:不须上机,查资料完成软、硬件设计画图。(一)、设计实现类(上机实验课题)该类题目既要进行硬件设计,又要进行软件设计。硬件设计不用自己制作电路板,而是使用单片机综合实验箱。该系统中,CPU与各种接口芯片均已连接好,我们在使用时,只需选择实验系统提供的模块选择开关,切换到89s52端即可。上机实验的设计题目如下:至少完成三个实验。课题一:液晶显示系统设计要求:显示课程设计名称和本人名字。课题二:电子时钟设计要求:(1)在LED上显示分秒数,每隔一秒秒数加1;(2)定时时间为1秒;(3)用中断完成时间的处理;课题三:点阵显示设计要求:显示本人名字,两个汉字。课题四:键盘液晶显示系统设计要求:按下键并在液晶上显示出键值。课题五:A/D,D/A控制系统设计要求:能简单实现模数,数模的采集输出。课题六:18b20温度采集显示课题七:电子音乐发声(自己选曲)课题八:电机调速41 (二)、设计应用类课题选题采用教师指定和自选题目两种方式。题目不须上机实现,要求能正确完成硬件电路和软件程序设计。参考题目如下:测量类:相关传感器,信号调理,单片机数据接收和处理,显示,测量精度1.工频检测工频频率的测量工频电压、电流相位差及功率因数的测量工频电压、电流瞬时值测量及有功P和无功Q的测量有、无功电量的测量2.热敏电阻式温度检测热敏电阻温度转换原理,基本电路,程序设计3.电感电容电阻参数检测4.超声波测距仪5.IC卡智能水表6.酒精测试仪7.电子罗盘系统8.无线多路数据(温度)采集系统9.数字频率计10.出租车计价器系统控制类:1.恒温箱控制2.大棚温湿度控制3.自动浇灌机的设计4.交通信号灯模拟控制定时交通信号灯控制有时间显示定时交通信号灯控制主支线路口的交通信号灯控制有急救车优先的交通信号灯控制5.智能小车控制器设计、智能循迹小车6.LED彩灯控制器设计7.作息时间控制系统8.汽车防撞报警系统9.阀门定位控制系统10.智能煤气监控报警系统11.红外防盗报警器12.自动停车收费系统13.全自动洗衣机设计41 14.水塔水位控制系统15.照明系统节能控制其他:1.函数发生器单片函数发生器的原理和线路真、有效值转换电路,A/D转换器的接口电路利用软件来提高仪器的准确度,单片机的最小系统2.波形发生硬件电路及原理,系统软件3.数控直流电源以上题目仅供参考。可以自己查资料选题目。41 六、课程设计报告格式(一)封面范例:【就是填写课程设计任务书】《单片机原理及应用》课程设计报告题目:姓名:班级:学号:完成日期:2015年1月2日(二)报告内容1.设计题目、任务与要求2.硬件框图与电路图3.软件及流程图(1)主要模块流程图(2)源程序清单与注释4.总结5.参考资料6.附录实验上机调试内容七、考核及成绩评定办法课程设计的成绩采用平时考勤、检查进度完成情况和答辩考核相结合;(一)考核方法:1每天指定时间考勤、检查进度、根据情况给分;2不按规定时间考勤者,当天成绩以0分计;3考勤累计2天不来者,视为不及格处理;(二)成绩评定方法:报告质量占30%,答辩占50%,平时表现占20%。设计成绩采用比例方式,即按班级人数划分,优秀≤30%,良好≤50%,中等、及格和不及格适当分配。41 八、课程设计的要求1、不允许迟到及早退。迟到或早退累计达四次时按旷课一次处理。2、不允许旷课。如果旷课学时达到三分之一,不允许参加答辩,成绩按“未考试”计。3、一旦进入实验室,就不允许打游戏、看电影等违反纪律的活动。违反一次,成绩降一档。4、课程设计报告(包括代码在内)一律手写,代码必须上机编译通过!5、封面用“课程设计任务书”,封底用“考核表”。答辩前必须填好。6、报告一律使用B5纸。一、封面课程设计任务书的填写课程设计时间:2014年12月22日~2015年1月2日题目:自选题题目,课程名称:《单片机原理及应用》课程设计任务书的填写时间:2014年12月22日姓名后面写上学号。地点:老图书馆四楼3403(每天上午8:30~11:30及下午1:00~4:00)设计任务:概括的填写自选题的内容。时间安排:  第1天:查阅资料,确定题目。  第2--4天:进实验室做实验,连接硬件并编写程序作相关的模块实验。  第5--7天:编写程序,并调试通过。观察及总结硬件实验现象和结果。  第8--9天:整理资料,撰写课程设计报告,准备答辩。  第10天:上交课程设计报告,开始答辩。二、封底课程设计考核表的填写:题目:自选题题目,课程名称:《单片机原理及应用》课程设计考核表的填写时间:2015年1月2日三报告的写法课程设计的题目课程设计报告里写两个内容,自选题目内容+附录(实验内容)。而实验内容为“电子钟的设计”或“交通灯的设计”或者“温度计的设计”等自己做过的任选一题。四 具体上机实验调试的安排:每班一天上机,顺次循环。上午8:30----11:30下午13:00---16:00最后一天交报告、答辩,时间由各班指导教师安排。41 附录:主要模块电路及代码实验一循环彩灯一、实验目的1.熟悉单片机实验板、KeilC51软件使用2.学习简单程序的调试方法3.学习延时子程序的编写和使用4.学习P0口的使用方法二、实验内容P0口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。三、实验原理八个发光二极管D0-D7分别接在单片机的P0.0-P0.7接口上,输出“0”时,发光二极管亮,按P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0逐一点亮,重复循环。硬件电路如图1-1所示。图1-1我们可以运用输出端口指令MOVP0,A或MOVP0,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。每次送出的数据是不同,具体的数据如下表1-1所示。表1-1:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0说明D7D6D5D4D3D2D1D011111110D0亮11111101D1亮41 11111011D2亮11110111D3亮11101111D4亮11011111D5亮10111111D6亮01111111D7亮一、实验步骤1.将三档开关K29拨到最下(指向89S51),其它开关都拨到中间,插上USB下载线,打开电源。2打开KEIL软件,在所建的项目文件中输入源程序,进行编译,编译无误后,将生成的.HEX文件用Proisp下载到单片机中。3.观察实验板上小灯的现象,看是否符合实验要求。如果未到达实验要求,修改程序,重复2操作,直至达到实验要求。二、程序代码1.汇编程序代码:ORG0000HAJMPSTARTORG0030HSTART:MOVSP,#60HMOVR2,#8MOVA,#0FEHSETBCLOOP:MOVP0,A;左移LCALLDELAYRLCADJNZR2,LOOPMOVR2,#8RRCALOOP1:MOVP0,A;右移LCALLDELAY41 RRCADJNZR2,LOOP1LJMPSTARTDELAY:MOVR5,#20;延时D1:MOVR6,#20D2:MOVR7,#200DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND1.C编程序代码:#includevoiddelay10ms(unsignedintcount);zy_a1();yy_a1();//-----------------------主函数--------------------------main(){while(1){zy_a1();yy_a1();}}//-----------------------左移模块逐渐点亮--------------------zy_a1(){41 unsignedchari,temp,a;//声明无符号型变量i,temp,atemp=0xfe;//左移初始值for(i=0;i<8;i++)//设置移动位数{a=temp<>i;//灯左移i位P0=a;//输出delay10ms(50);//延时}}//--------------------------延时-----------------------------voiddelay10ms(unsignedintcount)//延时函数{inti,j,k;for(i=0;i#defineucharunsignedcharucharcodetable0[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};ucharcodetable1[]={0x01,0x00,0x0a,0x00,0x01,0x0a,0x09,0x00};voiddelay();main()//主函数{uchari,j,d;for(i=0;i<9;i++){j=table1[i];d=table0[j];P2=i;P0=d;delay();}}voiddelay()//延时函数41 {ucharm,n;for(m=0;m<5;m++)for(n=0;n<5;n++);}实验三4×4矩阵键盘1.实验箱上有一个16键的矩阵键盘,分为4行×4列。4行作为输入线分别连接到单片机的P1.0~P1.3,4列输出线分别连接到单片机的P1.4~P1.7。行列式键盘结构如图3-1所示。图3-1图中键盘的行线X0~X3通过电阻接+5V,当键盘没有键闭合时,所有的行线和列线断开,行线X0~X3均呈高电平。当键盘上某一键闭合时,该键所对应的行线与列线短路,此时该行线的电平将由被短路的列线电平所决定。如果将行线接至单片机的输入端口,列线接至单片机的输出端口,则在单片机的控制下使列线Y041 为低电平,其余三根列线Y1、Y2、Y3均为高电平,然后单片机读输入口状态(即键盘行线状态),若X0、X1、X2、X3均为高电平,则Y0这一列上没有键闭合,如果读出的行线状态不全为高电平,则为低电平的行线和Y0相交的键处于闭合状态。如果Y0这一列没有键闭合,紧接着使列线Y1为低电平,其余列线为高电平,用同样的方法检查Y1这一列有无键闭合,如此类推。这种逐行逐列地检查键盘状态的过程称为对键盘的扫描。CPU对键盘的扫描可以采取程序控制的随机方式,CPU空闲时才扫描键盘;也可以采取定时控制方式,每隔一段时间,CPU对键盘扫描一次;还可以采用中断方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘发出的中断请求,对键盘进行扫描,以识别哪一个键处于闭合状态,并对键输入信息作相应处理。CPU对键盘上闭合键号的确定,可以根据行线的状态计算求得,也可以查表求得。键盘布置及键值如表3-1所示。表3-1:第4列第3列第2列第1列行输入P1.300H01H02H03H第4行行P1.204H05H06H07H第3行P1.108H09H0AH0BH第2行P1.00CH0DH0EH0FH第1行P1.7P1.6P1.5P1.4列输出表3-1键盘布置及键值2.键盘接口及程序设计键输入程序的功能有以下4个方面:1)判别键盘上有无键闭合:其方法为扫描口P1口的低四位输出全“0”,读P1口高四位的状态,若P1口高四位全为“1”(键盘上行线全为高电平)则键盘上没有闭合键,若P1口的高四位不为全“1”,则有键处于闭合状态;2)去除键的机械抖动:其方法是判别到键盘上有键闭合后,延迟一段时间再判别键盘的状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合期,否则认为是键的抖动;3)判别闭合键的键号:方法为对键盘的列线进行扫描,由扫描口P1口的低四位依次输出:相应地顺次读出P1口的高四位的状态,若P1口高四位为全“1”,则列线输出为“0“41 的这一列上没有键闭合,否则这一列上有键闭合。闭合键的键号等于为低电平的列号加上为低电平的行的首键号。例P1口低四位的输出为1101时,读出P1口的高四位为1101,则1行1列相交的键处于闭合状态,第一行的首键号为8,列号为1,闭合键的键号为:N = 行首键号 + 列号 = 8 + 1 = 94)CPU对键的一次闭合仅作一次处理:采用的方法为等待闭合键释放以后再作处理。5)将得到的键值,用数码管显示出。一、实验步骤1.将三档开关LED拨到最下(指向89S51),其它开关都拨到中间(注意此时不能将三档开关4*4拨到最下,否则将不能正常下载程序),插上USB下载线,打开电源。2.打开KEIL软件,在所建的项目文件中输入源程序,进行编译,编译无误后,将生成的.HEX文件用Proisp下载到单片机中。3.然后将三档开关4*4拨到最下(指向89S51)。4.按下按键,观察实验板上数码管显示的现象,看是否符合实验要求。如果未到达实验要求,修改程序,重复2操作,直至达到实验要求。二、程序代码1.汇编程序代码KEY_NEQU40H;键值暂存地址ORG0000HAJMPSTARTORG0030HSTART:MOVSP,#60H;;------------------------------------------;;主程序MAIN:LCALLKEYI;键盘扫描LCALLDISPLAY;显示AJMPMAIN;-------------------------------------------;;键盘扫描子程序KEYI:ACALLKS1;判断有无键闭合JNZLK1;有,跳到LK1,软件去抖41 NI:AJMPEXIT;无,返回LK1:ACALLDELAY;延时去抖ACALLKS1JNZLK2AJMPEXITLK2:MOVR2,#0FEH;列选码MOVR4,#00H;列号LK4:MOVA,R2MOVP1,AMOVA,P1SWAPAJBACC.0,LONE;第0行为1,无键闭合,跳到第1行MOVA,#00H;第0行有键闭合,A=0AJMPLKP;跳到LKP,计算键号LONE:JBACC.1,LTW0MOVA,#04HAJMPLKPLTW0:JBACC.2,LTHRMOVA,#08HAJMPLKPLTHR:JBACC.3,NEXTMOVA,#0CHLKP:ADDA,R4;计算键值MOVKEY_N,A;将键值存储在KEY_NAJMPEXITNEXT:INCR4MOVA,R2JNBACC.4,EXIT;第4列为0时,跳到KND41 RLAMOVR2,AAJMPLK4EXIT:RET;都比较结束,退出KS1:MOVA,#0F0H;判断有无键闭合MOVP1,AMOVA,P1CPLAANLA,#0F0HRET;;---------------------------------------------;;显示子程序DISPLAY:MOVA,KEY_NMOVDPTR,#TAB1MOVCA,@A+DPTRMOVP0,ACLRP2.0LCALLDELAYRET;;---------------------------------------------;;延时子程序DELAY:MOVR6,#50LOOP:MOVR7,#50DJNZR7,$DJNZR6,LOOPRETTAB1:DB0C0H,0F9H,0A4H,0B0H,99H41 DB92H,82H,0F8H,80H,90H,88HDB83H,0C6H,0A1H,86H,8EH;共阳码0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,FEND1.C编程序代码#include#defineuintunsignedint#defineucharunsignedcharucharkeyword;ucharcodetable0[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};ucharcodetable1[]={0x11,0x12,0x14,0x18,0x21,0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88};//---------------------------------------voiddelay(uintc)//延时消抖{ucharm,n;for(m=0;m#defineucharunsignedchar#definesjP0sbitrs=P2^0;sbitrw=P2^1;sbite=P2^2;voiddelay(),wr_ml(),wr_sj(),lcdreset(),display();ucharcodetable0[]={"长春工业大学"};//长春工业大学ucharcodetable1[]={"电子信息工程"};//电子信息工程uchardat;/*****************************************************/voidmain(){lcdreset();while(1){display();}41 }voiddisplay(){uchari;dat=0x80;wr_ml();for(i=0;i<12;i++){dat=table0[i];wr_sj();}dat=0x90;wr_ml();for(i=0;i<12;i++){dat=table1[i];wr_sj();}}voidwr_ml(){e=0;rs=0;rw=0;//写命令e=1;sj=dat;delay();e=0;}voidwr_sj(){41 e=0;rs=1;rw=0;//写数据e=1;sj=dat;delay();e=0;}/***************************************************/voidlcdreset(){ucharcsh_sj[]={0x01,0x30,0x02,0x06,0x0c,0x80};//初始化液晶uchari;for(i=0;i<6;i++){dat=csh_sj[i];wr_ml();}}/*****************************************************/voiddelay(){uchari,j;for(i=0;i<10;i++){for(j=0;j<100;j++)//延时函数{}}41 }实验七LED点阵显示一、实验目的1.了解LED点阵显示的基本原理和实现方法。2.掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法。二、实验内容编程实现静态中文字符的显示。例如显示“国庆”字样。三、实验原理实验箱用八个8*8点阵组合成一个16*32的点阵。点阵内部结构及外形如图7-1所示,8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮。图7-1本实验模块使用74HC595来控制列输入线的电平值。将74LS374的某输出置0,则对应的LED阴极端被置低。如图22-2示,用74LS138来控制行输入线,并通过9013提供电流驱动。将74LS138的某输出置1,则对应的LED阳极端被置高。每次系统重新开启或总清后,74LS138输出为全0,LED显示被关闭。41 通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。图7-274HC595构成的列选电路图7-374LS138构成的行选电路 4HC595功能简介:1.数据端:  QA--QH:41 八位并行输出端,可以接点阵的8列。  QHCHR39:级联输出端。将它接下一个595的SI端。  SI:串行数据输入端。  2.控制端:  /SCLR(10脚):低电平时将移位寄存器的数据清零。通常将它接Vcc。  SCK(11脚):上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。通常都选微秒级)  RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。通常都选微秒级),更新显示数据。  /G(13脚):高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,点阵没有闪烁感。一、实验步骤1.将三档开关LATICE拨到最下(指向89S51),其它开关都拨到中间,插上USB下载线,打开电源。2.打开KEIL软件,在所建的项目文件中输入源程序,进行编译,编译无误后,将生成的.HEX文件用Proisp下载到单片机中。3.观察点阵显示的是否符合题意,若不符合,返回2调试,直到正确为止。二、程序代码C编程序代码#include#defineucharunsignedchar#defineuintunsignedintsbitload=P0^0;sbitclk=P0^1;sbitdi=P0^2;sbitmx=P0^3;41 sbithx=P0^4;sbita8=P2^0;sbitb8=P2^1;sbitc8=P2^2;ucharcodetab[]={0xFF,0x80,0xBF,0xA0,0xBE,0xBE,0xBE,0xB0,0xBE,0xBE,0xBE,0xA0,0xBF,0xBF,0x80,0xBF,//0xFF,0x03,0xFB,0x0B,0xFB,0xFB,0xFB,0x1B,0xBB,0xDB,0xDB,0x0B,0xFB,0xFB,0x03,0xFB,//"国",00xFE,0xFF,0xC0,0xDF,0xDF,0xDF,0xC0,0xDE,0xDE,0xDE,0xDD,0xDD,0xBB,0xB7,0x6F,0xFF,//0xFF,0x7F,0x01,0x7F,0x7F,0x7F,0x01,0xBF,0xBF,0xDF,0xDF,0xEF,0xE7,0xF1,0xFB,0xFF,//"庆",1};voiddelay()//延时函数{ucharm;for(m=200;m>0;m--);}data_595(uchardat)//595送数据{uchari,port;for(i=8;i>0;i--){clk=0;port=dat;di=(bit)(port&0x01);dat>>=1;clk=1;}41 }hang_138(uchardin)//138行选{uchartem;tem=din;load=1;load=0;a8=(bit)(tem&0x01);tem>>=1;b8=(bit)(tem&0x01);tem>>=1;c8=(bit)(tem&0x01);tem>>=1;hx=(bit)(tem&0x01);mx=0;delay();mx=1;}main()//主程序{ucharci,ad,adr,dat,din=0x08;mx=1;load=0;while(1){for(ad=48;ad<64;ad++)//外循环,字模的起始地址{adr=ad;for(ci=4;ci>0;ci--)//内循环,负责一次往595送4个字节的数据{dat=tab[adr];data_595(dat);41 adr=adr-16;}hang_138(din);din++;}}}实验八串口通信若采用直接通信,则通常只用TXD、RXD、GND这三根信号线。RS232与单片机连接电路图如图81所示。图81C编程序代码程序1,单片机-PC:#include#defineucharunsignedcharsbitaj=P1^6;//按键//---------------延时消抖voiddelay(){ucharm;for(m=100;m>0;m--);}//---------------发送子程序voidfs(){SBUF=0x55;41 while(~TI);TI=0;}//---------------按键发送voidkey(){if(aj==0){delay();if(aj==0){while(~aj);fs();}}}//----------------主程序main(){TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xFD;TL1=0xFD;TR1=1;EA=1;key();//D调用按键发送子程序}程序2,PC-单片机:#include#defineucharunsignedcharuchardat;ucharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//---------------延时voiddelay(){ucharm,n;for(m=100;m>0;m--)for(n=10;n>0;n--);}//---------------接收中断子程序voidrecive(void)interrupt441 {RI=0;dat=SBUF;}//----------------主程序main(){uchartemp;TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xFD;TL1=0xFD;TR1=1;ES=1;EA=1;while(1){temp=dat;P2=0;temp=(temp&0x0f);P0=tab[temp];delay();P2=1;temp=dat;temp>>=4;temp=(temp&0x0f);P0=tab[temp];delay();}}实验九DS18B20数字温度计41'