




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目一智慧校园门禁智能控制
冯蓉珍
《微处理器程序设计》教学目标和技能要求知识目标1、了解微处理器芯片的应用场景;2、熟悉实验平台,让微处理器“动起来”;3、掌握微处理器最小系统设计以及GPIO控制方法;4、了解矩阵键盘工作原理、数码管显示原理;5、掌握C语言中数组、循环以及位变量的使用。能力目标1、能利用开发工具进行微处理器最小系统电路设计;2、能利用单片机的C语言编写程序控制单个或多个LED灯做各类显示;3、能控制单个或多个数码管静态和动态显示;4、能利用微处理器的I/O口功能通过按键控制简单输出;5、能利用独立键盘和矩阵键盘控制微处理器输出;6、能综合应用微处理器的键盘接口和显示接口技术完成智能门禁系统功能实现;7、能利用微处理拓展技术设计课题。知识导图任务1.1让LED灯亮起来任务目标
本任务培养学生具备使用Proteus仿真软件设计硬件电路并利用KeiluVision4编程软件编写简单程序的能力。通过本任务,学生能够设计微处理器最小系统以及简单的硬件电路,通过编写程序控制一个LED灯亮和灭以及一排LED灯做霓虹灯的显示效果,并通过开发板的驱动,下载相关可执行文件,使得开发板上的LED灯亮起来。任务1.1让LED灯亮起来知识准备1、微处理器最小系统
若要使系统正常运行,必须确保单片机的最小系统稳定工作。51单片机的最小系统由以下几部分组成:晶振电路、复位电路、电源电路。时钟振荡电路复位电路任务1.1让LED灯亮起来任务实施1、微处理器最小系统最小系统电路图如下:任务1.1让LED灯亮起来知识准备一、C51基础知识二、KeilC程序的变量使用三、C语言的函数构成1、主函数的定义voidmain(){//定义变量while(1){//死循环//循环体}}
任务1.1让LED灯亮起来知识准备2、循环语句①while循环while(表达式){
循环体}当表达式条件成立,则执行循环体,然后继续判断表达式条件是否成立,如此循环;若条件不成立,结束循环,执行下面的语句。②for循环for(表达式1;表达式2;表达式3){
循环体}for(循环变量赋初值;循环结束条件;循环变量改值){
循环体}任务1.1让LED灯亮起来知识准备3、数组
一维数组的定义格式为:类型说明符
数组名[常量表达式];比如:inta[10];它表示定义了一个整形数组,数组名为a,此数组有10个元素,10个元素的数据类型都是整型。第1个元素为a[0],第2个元素的值为a[1];最后。一个元素的值为a[9]。在定义数组时[]中的下标表示元素个数,在使用数组中的某一个元素时下标表示第几个元素。四、微处理器程序框架单片机C程序的大体框架结构如下:initial(…){…}Function1(…){…}任务1.1让LED灯亮起来知识准备…Function_n(…){…}InterruptFunction1()interrupt1{…}…InterruptFunction()interruptn{…}任务1.1让LED灯亮起来知识准备voidmain(){initial();…;//其他在initial()函数和while循环以外的代码while(1){…}}
如果代码较长,可按功能把不同的函数分组放在不同的C文件中。例如通常可以把initial()函数单独放在initial.c中。一个C文件的代码尽量不要太长,否则会造成查找和维护上的麻烦。任务1.1让LED灯亮起来任务实施一、Proteus硬件电路设计软件的安装二、KeiluVision软件编程软件安装三、普中科技A7开发板驱动安装四、普中科技A7开发板程序下载
任务1.1让LED灯亮起来任务实施子任务一让LED灯亮起来1、硬件电路设计
利用Proteus仿真软件在最小系统电路基础上增加一个LED发光二极管和300欧姆限流电阻,硬件电路设计如图1-24。电源和地的图标按照图1-24中箭头1-3顺序放置。箭头2所指的是电源,箭头3所指是地。保存文件为“1LED_1.DSN”,保存到“1单灯闪烁”文件夹下。图1-24最小电路图任务1.1让LED灯亮起来任务实施2、软件编程
LED发光二极管阴极连接单片机P1.0,阳极通过限流电阻连接电源,当P1.0端输出低电平时,LED灯点亮,输出高电平时,LED中没有电流流过,则LED灯不亮。P1.0输出低电平延时一段时间后输出高电平延时相同时间,如此循环,就能控制LED以一定的频率闪烁。从而实现本模块任务。2.1keiluv4的使用。双击桌面图标,打开keil开发软件,按箭头1点开Project菜单,选择箭头2所指“NewuVisionProject”菜单,创建新项目,如图1-25。项目名为“1led_1”,保存类型为“*.uvproj”,点击“保存”,将新建的项目保存到和硬件电路同一个文件夹下。任务1.1让LED灯亮起来任务实施图1-25新建项目任务1.1让LED灯亮起来任务实施图1-27选择芯片的生成厂商任务1.1让LED灯亮起来任务实施图1-28选择芯片型号任务1.1让LED灯亮起来任务实施图1-29将标准的51库添加到项目中图1-30添加标准库后的界面任务1.1让LED灯亮起来任务实施图1-31新建一个c文件图1-32将新建文件添加到项目菜单中任务1.1让LED灯亮起来任务实施图1-33将新建的c文件添加到项目中图1-34添加文件后的主界面任务1.1让LED灯亮起来任务实施图1-35设置项目参数图1-36“OptionsforTarget'Target1'”对话框任务1.1让LED灯亮起来任务实施图1-37“Output”选项卡图1-38编写代码界面任务1.1让LED灯亮起来任务实施图1-39代码编译界面任务1.1让LED灯亮起来任务实施3、仿真调试4、开发板运行把hex文件下载到开发板上,按电路图上的连线方式连接好开发板,点亮开发板上的一个LED灯。任务1.1让LED灯亮起来任务实施子任务二“行云流水”的LED灯1、硬件电路设计
利用Proteus仿真软件在最小系统电路基础上增加8个LED发光二极管和八个300欧姆限流电阻,硬件电路设计如图。放置元件方法和模块一中方法一样。保存文件为“2流水灯.DSN”,保存到“1-3流水灯”文件夹下。任务1.1让LED灯亮起来任务实施2、软件编程
八个LED发光二极管阴极分别连接到单片机P1.0到P.7,阳极通过限流电阻连接电源,当P1.0端输出低电平时,LED1灯点亮,输出高电平时,LED1中没有电流流过,则LED1灯不亮。P1.0输出低电平,P1.1到P1.7端口输出高电平,延时一段时间后P1.1输出低电平同时P1.0,P1.2到P1.7端口输出高电平,延时相同时间.连接到P1端口的8位上的8个LED灯轮流被点亮一段时间,如同行云流水一样,本项目因此得名流水灯。如此循环往复。从而实现本模块任务。任务1.1让LED灯亮起来任务实施2、软件编程下面我们对P1的8位做详细分析。如表流水灯分析。P17P16P15P14P13P12P11P10变量s的值11111110s=0xfeP1=s;11111101s=s<<1;s=s+1;P1=s;11111011同上11110111同上11101111同上11011111同上10111111同上01111111同上LED8LED7LED6LED5LED4LED3LED2LED1
任务1.1让LED灯亮起来任务实施我们有注意到,0的位置在左移,一直左移到最高位后又回到最低位。(1)设置变量s的初始值为0xfe,即s=11111110;P1=s;此时第一个LED1点亮,其余7个熄灭;(2)(a)s=s<<1;即s=11111100;(b)s=s+1;即s=11111101;(c)P1=s;即P1=11111101;此时第二个LED2点亮,其余熄灭。(3)重复步骤(2)的(a)(b)(c)8次。用for循环实现(2)的功能。任务1.1让LED灯亮起来任务实施代码如下:s=0xfe;//s的初始值为11111110//循环8次for(k=0;k<8;k++){//k=0时;k=1时;...k=7时k=8,循环结束
P1=s;//P1=11111110;P1=11111101...P1=01111111
delay(100);//延时
s=s<<1;//s=11111100; s=11111010... s=11111110
s=s+1;//s=11111101; s=11111011... s=11111111
}按子任务一的方法创建项目2flow.uvproj,新建2flow.c文件并将此文件添加到项目中,设置项目参数。在2flow.c中编写代码,编译调试到没有错误,生成2flow.hex文件。任务1.1让LED灯亮起来任务实施3、仿真调试
4、开发板运行任务1.2让数码管“动起来”知识准备1、七段数码管工作原理
七段数码管一般由八个发光二极管组成,其中由七个细长的发光二极管组成数字显示段,它的显示段可以独立地控制发光或熄灭,这样不同段的组合就形成了不同的数字或英文字母,另外一个圆形的发光二极管显示小数点,如图1-62。图1-62七段数码管外部引脚和内部结构任务1.2让数码管“动起来”知识准备2、LED数码管静态显示静态显示是指使用数码管显示字符时,数码管的公共端恒定接地(共阴极)或+5V电源(共阳极)。将每个数码管的八个段控制引脚分别与单片机的一个八位I/O端口相连接。只要I/O端口有显示字型码输出,数码管就显示给定字符,并保持不变,直到I/O端口输出新的段码。采用静态显示方式,较小的电流就可获得较高的亮度,且占用CPU时间少,编程简单,便于监测和控制,但占用单片机的I/O端口线多,n位数码管的静态显示需占用8n个I/O端口,其限制了单片机连接数码管的个数。同时,硬件电路复杂,成本高,因此,数码管静态显示方式适合显示位数较少的场合。任务1.2
让数码管“动起来”知识准备3、LED数码管动态显示
在单片机应用系统设计中,往往需要采用各种显示器件来显示控制信息和处理结果。当采用数码管显示且位数较多时,一般采用数码管动态显示控制方式。
动态显示是一种按位轮流点亮各位数码管,高速交替地进行显示,利用人的视觉暂留作用,使人感觉看到多个数码管同时显示的控制方式。采用动态显示时,某一时段,只让其中一位数码管的“位选端”有效,并送出相应的字型显示编码。此时,其他位的数码管因“位选端”无效而处于熄灭状态,下一时段按顺序选通另外一位数码管,并送出相应的字型显示编码,按此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。数码管动态显示电路通常是将所有数码管的八个显示段分别并联起来,仅用一个并行I/O端口控制,称为“段选端”。各位数码管的公共端称为“位选端”,由另一个I/O端口控制。任务1.2
让数码管“动起来”知识准备3、LED数码管动态显示
与静态显示方式相比,当显示位较多时,动态显示方式可节省I/O端口资源,硬件电路简单,但其显示的亮度低于静态显示方式。由于CPU要不断地依次运行扫描显示程序,将占用CPU更多的时间。动态显示方式在实际应用中,由于需要不断地扫描数码管才能得到稳定显示效果,因此在程序中不能有比较长时间的停止数码管扫描的语句,否则会影响显示效果,甚至无法显示。若显示位数较少,采用静态显示方式更加简便。任务1.2
让数码管“动起来”任务实施子任务一单个数码管的“告白”1、硬件电路设计利用Proteus仿真软件在最小系统电路基础上增加一个共阳极数码管,数码管的abcdefg段分别连接300欧姆限流电阻后连接到对应的P2^0,P2^1到P2^7和,共阳极端连接vcc电源。硬件电路设计如图1-63。保存文件为“单个数码管显示.DSN”,保存到“1-4单个数码管显示”文件夹下。图1-63硬件电路设计图任务1.2
让数码管“动起来”任务实施2、软件编程
七段数码管的a到g段以及dp段分别连接八个限流电阻后连接到P2.0,P2.1…..P2.7,8个led的共阳极连接电源,当P2口的某一位为低电平,则对应的led段就被点亮。共阳极数码管显示相应的数字的字型码值可查讲义或自己写。将0-F的字型码值存放到一个数组中。在文件夹“3单个数码管显示”下新建项目smg.uvproj。项目中添加一个smg.c文件,在此文件中编写代码。定义数组,里面存放0-f的字型码值,数据类型为无符号字符型。unsignedchartable[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管编码,输出低电平,适合共阳数码管。Table[0]是“0”的码值,table[1]是“1”的码值……table[15]是F的码值。任务1.2
让数码管“动起来”任务实施2、软件编程利用for循环,循环16次,一次显示0-f,代码如下:for(k=0;k<16;k++){
P2=table[k];
delay(100);}3、仿真调试4、开发板运行图1-65开发板连线图
图1-64仿真运行效果
任务1.2
让数码管“动起来”任务实施子任务二动态显示纪念日1、LED数码管动态显示原理在单片机应用系统设计中,往往需要采用各种显示器件来显示控制信息和处理结果。当采用数码管显示且位数较多时,一般采用数码管动态显示控制方式。动态显示是一种按位轮流点亮各位数码管,高速交替地进行显示,利用人的视觉暂留作用,使人感觉看到多个数码管同时显示的控制方式。采用动态显示时,某一时段,只让其中一位数码管的“位选端”有效,并送出相应的字型显示编码。此时,其他位的数码管因“位选端”无效而处于熄灭状态,下一时段按顺序选通另外一位数码管,并送出相应的字型显示编码,按此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。数码管动态显示电路通常是将所有数码管的8个显示段分别并联起来,仅用一个并行I/O任务1.2
让数码管“动起来”任务实施端口控制,称为“段选端”。各位数码管的公共端称为“位选端”,由另一个I/O端口控制。
与静态显示方式相比,当显示位较多时,动态显示方式可节省I/O端口资源,硬件电路简单,但其显示的亮度低于静态显示方式。由于CPU要不断地依次运行扫描显示程序,将占用CPU更多的时间。动态显示方式在实际应用中,由于需要不断地扫描数码管才能得到稳定显示效果,因此在程序中不能有比较长时间的停止数码管扫描的语句,否则会影响显示效果,甚至无法显示。若显示位数较少,采用静态显示方式更加简便。任务1.2
让数码管“动起来”任务实施2、硬件电路设计
首先新建文件夹“1-5数码管动态显示”。
利用Proteus仿真软件在最小系统电路基础上在P0口增加8个300欧姆限流电阻,此处用一个300欧姆的排阻(排阻功能和8个300欧姆电阻一样)和8个共阳极数码管,8个数码管的a段led连接在一起,g段也连接在一起,用总线和网标表示具体连接。利用P3口的P30、P31、P32分别连接74HC138三八译码器的ABC引脚,三八译码器的八个输出引脚分别连接八个三极管的基极,8个三极管的发射极连接在一起后连接电源,八个集电极分别连接八个数码管的共阳极,以给数码管供电,在某一个时刻,只有一个数码管的共阳极上有电源,其他7个没有电源,因此P0端口输出的数码管的码值代码的数字就显示在有电源的那个数码管上。任务1.2
让数码管“动起来”任务实施2、硬件电路设计
为了使得三八译码器正常工作,需要将74HC138的E1接电源,E2和E3连接电源地。ABC的电平决定了Y0到Y7的输出电平。74HC138的引脚图如图1-66,管脚说明如表1-10,真值表如表1-11图1-6674HC138的引脚
表1-1074HC138引脚说明
表1-1174HC138真值表
任务1.2
让数码管“动起来”任务实施2、硬件电路设计硬件电路设计如图1-69。保存文件为“4数码管动态显示.DSN”,保存到“1-5数码管动态显示”文件夹下。图1-69电路图任务1.2
让数码管“动起来”任务实施3、软件编程
根据真值表可知:cba的值为000时,Y0=0,Y1…Y7为1,三极管Q1导通,Vcc电源连通网标P30,第一个数码管接上电源,P0的码值代表的数字放在数组的第一个元素table[bir[0]]中,并在第一个数码管上显示;同样的,当cba的值为001时,Y0=1,Y1=0,Y2…Y7为1,三极管Q2导通,第二个数码管接上电源,P0的码值代表的数字存放在数组的第二个元素table[bir[1]]中,并在第二个数码管上显示;当cba的二进制值每次加1,则数码管依次接通电源,这样就能使得数码管从第一个到第八个轮流被点亮显示数组中对应的数字。数组table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管编码,输出低电平,适合共阳数码管,任务1.2
让数码管“动起来”任务实施数组bir[8]={2,0,2,1,0,2,1,4};//存放需要显示的生日利用table[bir[k]],随着k的值从0增加到7,bir[k]就是数组bir第k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度医疗健康股权分配与产业布局协议
- 二零二五年度酒店员工劳动合同与员工培训及职业素养提升合同
- 2025年度金融控股集团间战略资金借款合同
- 二零二五年度高空作业安全协议责任书(高空设备检修安全协议)
- 二零二五年度鲜鱼养殖与品牌营销合作合同
- 二零二五年度电子商务平台技术支持合同范本
- 二零二五年度汽车租赁代驾保险保障合同
- 2025年度餐厅门面租赁与地方旅游发展合作合同
- 安徽省2025年度非全日制用工劳动合同书解除与终止协议
- 数据安全保障与服务合作合同
- 拗九节班会方案
- 2022年八大员的劳务员考试题及答案
- DLT5210.4-2018热工施工质量验收表格
- 医院实习护士转科表
- 2023年最新的郭氏宗祠的对联大全
- 《中国古代文学史》宋代文学完整教学课件
- 新部编人教版四年级下册道德与法治全册教案(教学设计)
- 物业服务企业市场拓展战略规划课件
- 2018年青海大学硕士论文格式模板
- 四年级道德与法治从中国制造到中国创造
- 儿童跌倒评估量表(Humpty-Dumpty)
评论
0/150
提交评论