单片机课程设计例题2-使用拨码开关输入数据

合集下载

拨码开关输入数码管显示实验

拨码开关输入数码管显示实验

综合课程设计实验报告班级:姓名:学号:11指导老师:实验名称:拨码开关输入数码管显示实验实验要求:1. 掌握数码管显示原理2. 掌握拨码开关工作原理3. 通过FPGA用拨码开关控制数码管显示实验目标:4位拨码开关分别对应4位数码管,拨动任意1位开关,对应的数码管将显示数字1,否则显示数字0。

实验设计软件Quartus II实验原理1.数码管显示模块电路原理图:如图所示,数码管中a,b,c,d,e,f,g,dp分别由一个引脚引出,给对应的引脚高电平,则对应引脚的LED点亮,故我们在程序中可以设定一个8位的二进制数reg【7:0】h,每一位对应一个相应的引脚输出,那么我们就可以通过对x的赋值,控制对应的8个LED亮灭的状态进行数字显示。

例如,如果我们显示数字2,则在数码管中,a、b、d、e、g亮,c、f、dp不亮,则显示的是数字2,即h=’b代表显示数字2。

2.拨码开关模块电路原理图:拨码开关有8个引脚,每个引脚对应于数码管的一个LED灯,当拨码开关的一个引脚是高电平时,则对应的数码管一个LED灯亮,其他7个LED等不亮。

通过此原理来实现数码管的LED灯亮暗情况从而实现数码管的数字显示。

例如当第一个拨码接通时,此时输入信号为8'b对应的数码管的输出信号为out=8'b,此时相当于数码管a,b,c,d,e,f,g亮,7段数码管全部显示,显示的数字为8。

程序代码module bomakaiguan(out,key_in,clk);assign p='b1111;output[7:0] out=8'b;input[7:0] key_in;input clk;reg[7:0] out;always @(posedge clk)begincase(key_in)8'b: out=8'b;8'b00000001: out=8'b01100000;8'b00000010: out=8'b;8'b00000100: out=8'b;8'b00001000: out=8'b01100100;8'b00010000: out=8'b;8'b00100000: out=8'b;8'b01000000: out=8'b;endcaseendendmodule。

单片机课程设计题目及要求

单片机课程设计题目及要求

单片机课程设计题目及要求单片机课程设计是一门实践课程,要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。

单片机课程设计内容包括硬件设计、制作及软件编写、调试,学生在熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境Keil C51编程调试,并使用STC ISP调试工具采用串口下载方式联调制作的单片机最小系统。

单片机课程设计题目包含基本部分及扩展部分,基本部分即单片机最小系统部分,扩展部分是对单片机内部资源及外部IO口的功能扩展,使制作的单片机系统具有一定的功能。

单片机课程设计计分分为5个部分:焊接制作占20%,仿真与程序调试占20%,功能实现占20%,答辩与回答问题占20%,课程设计报告占20%。

课程设计题目:1、简易频率计数器自制一个单片机最小系统,包括串口下载、复位电路,采用外部计数器T0或T1作为外部频率输入,外部频率由信号源提供,测量出来的频率显示在四位一体的数码管上。

2、简易事件计数系统自制一个单片机最小系统,包括串口下载、复位电路,采用外部按钮模拟计数脉冲,通过对脉冲进行计数并显示在四位一体的数码管上,要求能通过按钮设置计数报警值,达到计数报警值后能进行声光报警。

3、简易交通信号控制器自制一个单片机最小系统,包括串口下载、复位电路,采用内部定时器定时控制南北、东西的交通信号灯(采用LED模拟),交通信号灯由红、黄、绿灯组成,东西、南北模拟路口由12路LED组成,其中南北、东西均采用并联方式连接,双向均有倒计时牌。

控制方案如下:4、简易安防声光报警器自制一个单片机最小系统,包括串口下载、复位电路,采用两路外部中断输入门禁和红外探测两路信号(采用两个小按键模拟),中断信号输入后能将报警信息在四位一体数码管上显示,并输出声光报警信号。

5、简易数字时钟自制一个单片机最小系统,包括串口下载、复位电路,采用内部定时器计时,或者采用外部时钟芯片DS1302,设计一个具有秒、分、日、月、年的数字时钟,采用四位一体数码管显示相关信息,秒、分显示一页,日、月显示一页,年显示一页。

拨码开关控制实验电路图

拨码开关控制实验电路图

拨码开关控制实验电路图拨码开关控制实验电路图流程图/* 基本开关控制实验 *///==宣告区=================================#include //定义8051头文件,引入reg52.h #define SW P2//定义开关接至P2#define LED P1//定义LED 接至P 1//==主程式=================================main()//主程序开始{ SW=0xff;//规划输入端口while(1)//无穷循环, 程式一直跑LED=SW;//读取开关(P2)状态, 输出到LED(P1)}//主程序结束思考一下!在本实验里,有没有“抖动”的困扰?若希望拨码开关中的S1、S3、S5三个开关都on ,则前四个LED 亮;S2 或 S4 或 S6开关 on,则后四个LED 亮;S7及S8 开关 on,则所有LED 全亮,程序应如何编写?若将拨码开关换成一般家里墙壁上的开关,而LED 换成继电器(RELAY ),是否可作为家里的负载控制?按钮ON-OFF 控制实验按钮 ON-OFF 控制实验电路图流程图如下:/* 基本按钮 ON-OFF 控制实验 *///==声明区=======================================#include//定义8051头文件,引入reg52.hsbit PB1=P2^0;//声明按钮1接至P2.0sbit PB2=P2^1;//声明按钮2接至P2.1sbit LED=P1^0;//声明LED 为P1.0//==主程式=======================================main()//主程序开始{ LED=1;//关闭LEDPB1=PB2=1;//规划输入端口 while(1)//无穷循环, 程式一直跑 {if (PB2==0) LED=1;//若按下PB2,则关闭LED else if (PB1==0) LED=0;//若按下PB1,则点亮LED }//while循环结束}//结束程序思考一下!在本实验里,有没有“抖动”的困扰?若将按钮开关当成启动电机的 ON-OFF 开关,而 LED 换成继电器(RELAY ),是否可作为电机控制?若同时按下 PB1 与 PB2按钮会怎样?按钮切换式控制实验按钮切换式控制实验电路图流程图实验代码:/* 按钮切换式控制实验 *///==声明区=====================================#include//定义8051头文件,引入reg52.h sbitPB1=P2^0;//声明PB1接至P2.0sbit LED=P1^0;//声明LED 接至P1.0void debouncer(void);//声明防弹跳函数//==主程序=====================================main()//主程式开始{ LED=1;//关闭LEDPB1=1;//规划P2.0为输入埠while(1)//无穷循环, 程序一直跑 { if (PB1==0)//若按下PB1 { debouncer();//呼叫防弹跳函数(按下时) LED=!LED;//切换LED 为反相 while(PB1 != 1);//若仍按住PB1,继续等debouncer();//呼叫防弹跳函数(放开时) }//if叙述结束 }//while循环结束}//主程序结束//==子程序=====================================/* 防弹跳函数函数, 延迟约20ms */void debouncer(void)//防弹跳函数开始{ int i;//声明整数变数ifor(i=0;i}//防弹跳函数结束思考一下!在本实验里,改变 debouncer 函数的时间长短,看看有什么影响?若按住 PB1不放会怎样?如何改善?按钮开关应用电路图流程图代码如下:/* 按钮开关应用(两按钮控制七段显示器上下数) *///==声明区========================================== #include//定义8051头文件,引入reg52.h 文件 #define SEG P0//定义七节显示器接至P0端口/* 声明七节显示器驱动信号阵列(共阳) */char codeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80, 0x98};//数字0-9sbit PB1=P2^0;//声明按钮1接至P2.0sbit PB2=P2^1;//声明按钮2接至P2.1void debouncer(void);//声明防弹跳函数//==主程式================================= main()//主程序开始{ unsigned char i=0;//声明变量i 初值=0PB1=PB2=1;//规划输入端口 SEG=TAB[i];//输出数字至七段显示器 while(1)//无穷循环, 程式一直跑 { if (PB1==0)//判断PB1是否按下 { debouncer();//呼叫防弹跳函数 i= (i=9清除为0 SEG=TAB[i]; //输出数字至七段显示器while(PB1==0); //PB1是否按住?debouncer(); //呼叫防弹跳函数 }//if叙述结束 if(PB2==0)//判断PB2是否按下 { debouncer();//呼叫防弹跳函数 i= (i>0)? i-1:9;//若i>0则i=i-1,i}//主程序结束//==子程序==================================/* 防弹跳函数函数, 延迟约20ms */void debouncer(void)//防弹跳函数开始{ int i;//声明整数变量ifor(i=0;i}//防弹跳函数结束思考一下!在本实验里,若按钮按住不放,会怎样?如何改善?在本实验里,若 PB1与 PB2两个按钮同时按,会怎样?BCD 数字型拨码开关实验BCD 数字型拨码开关实验电路图流程图实验代码:/* BCD数字型指拨开关实验 *///==声明区======================================#include//定义8051头文件,引入reg52.h 文件 #define SEG P0//定义七节显示器接至P0#define SW P2//定义开关接至P2/* 声明七节显示器驱动信号阵列(共阳) */char codeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80, 0x98};//数字0-9#define SW_H() SW&0x0f//读取开关值(P2清除高4bits)//==主程序======================================main()//主程序开始{ SW=0xff;//规划输入埠while(1)//无穷循环, 程序一直跑 SEG=TAB[SW_H()];//读取开关值, 输出至七节显示器(P0) }//主程序结束思考一下!在本实验里,有没有“抖动”的困扰?若把本单元的BCD 数字型拨码开关,改为16进位数字型拨码开关,程序应如何修改?多重按钮开关实验多重按钮开关实验电路图流程图实验中的自编库函数/* myio.h自己写的程序库 *///==声明区==============================#define LED P1//定义LED 接至P1void debouncer(void);//声明防弹跳函数void delay10ms(int);//声明10毫秒延迟函数void alter(int);//声明交互闪烁函数void left(int);//声明单灯左移函数void right(int);//声明单灯右移函数void pili(int); //声明霹雳灯函数void flash(int);//声明闪烁函数//==自己写的子程序========================/* 防弹跳函数函数, 延迟约20ms */void debouncer(void)//防弹跳函数开始{ delay10ms(2);//延迟约20ms}//防弹跳函数结束/* 延迟函数开始, 延迟约x 10ms */void delay10ms(int x)//延迟函数开始{ int i,j;//声明整数变量i,jfor (i=0;i}//延迟函数结束/* 高低位元交互闪烁函数, 执行x 次 */void alter(int x)//高低位元交互闪烁函数开始{ int i;//声明变量iLED=0x0f;//初始状态(高位元亮, 低位元灭) for(i=0;i }//高低位元交互闪烁函数结束/* 全灯闪烁函数, 执行x 次 */void flash(int x)//全灯闪烁函数开始{ int i;//声明变量iLED=0x00;//初始状态(全亮) for(i=0;i}//全灯闪烁函数结束/* 单灯左移函数, 执行x 圈 */void left(int x)//单灯左移函数开始{ int i, j;//声明变量i,j}//单灯左移函数结束/* 单灯右移函数, 执行x 圈 */void right(int x)//单灯右移函数开始 for(i=0;i{ int i, j;//声明变量i,jfor(i=0;i>1)|0x80;//左移1位後,MSB 设为1 }//j循环结束delay10ms(25);//延迟25 10m=0.25s }//i循环结束}//单灯左移函数结束/* 霹雳灯函数, 执行x 圈 */void pili(int x)//霹雳灯函数开始{ int i;//声明变量ifor(i=0;i}//霹雳灯函数结束多重按钮开关实验之一:代码/* 多重按钮开关实验之1 *///==声明区================================#include//定义8051头文件,引入reg52.h 文件#include"myio.h"//自己写的I/O程序库sbit PB1=P2^0;//声明PB1=P2.0sbit PB2=P2^1;//声明PB2=P2.1sbit PB3=P2^2;//声明PB3=P2.2sbit PB4=P2^3;//声明PB4=P2.3//==主程序================================main()//主程序开始{ LED=0xff;//初始状态(LED全灭)P2=0xff;//规划P2输入端口 while(1)//无穷循环, 程序一直跑 { if (PB1==0)//如果按下PB1 { debouncer();//防弹跳alter(3);//高低位元交互闪烁三次 flash(3);}//全灯闪烁三次 else if (PB2==0)//如果按下PB2 { debouncer();//防弹跳 left(3);//单灯左移三圈 flash(3);}//全灯闪烁三次else if (PB3==0)//如果按下PB3 { debouncer();//防弹跳right(3);//单灯右移三圈 flash(3);}//全灯闪烁三次 else if (PB4==0)//如果按下PB4 { debouncer();//防弹跳pili(3);//霹雳灯三圈 flash(3);}//全灯闪烁三次 }//while 循环结束}//主程序结束思考一下!在本实验里,若同时按下多个按钮会如何?在本实验里,若按住按钮不放会如何?在本实验里,其中debouncer 函数是个延迟20毫秒的函数,而 delay10ms 函数是个延迟 10毫秒的函数,可否使用delay10ms 函数取代 debouncer 函数?如何修改?在本实验里,其中alter 函数是个高四位与低四位交替闪烁的函数,而flash 函数是个8灯闪烁的函数,其不同在于其初始值。

DSP实验二 拨码开关实验

DSP实验二 拨码开关实验

《DSP技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:项目满分5分得分一、实验名称拨码开关实验二、实验目的1.了解DSP开发系统的组成和结构2.了解IO的基本编程方法三、实验内容1. 2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON。

2.E300板上的开关SW4的第二位置ON,其余OFF;SW5开关全部置ON;其余开关全部置OFF。

3.运行Code Composer Studio (CCS)(CCS3.3需要“DEBUG→Connect”)4. 用“Project\open”打开系统项目文件路径为“c:\DSP_examep\DSP281X_examples\e300_02_switch\Example_281x_switch.pjt”双击该文件5、输入主要程序。

6、编译程序并装载。

7.单击“Debug-GoMain”跳到主程序的开始;8. 单击“Debug\RUN”运行程序。

需要判断是高电平亮,还是低电平亮,可以使用中断调试。

在运行状态,在需要设置断点的位置的右边,双击,就可以产生红点。

表明设置了断点。

在view目录下,(如右边图所示:)打开watch window,(此项是用来检查和编辑变量或C表达式可以不同格式显示变量值,还可以显示数值、结构或指针等包含多个元素的变量),在本实验中观察temp变量的变化。

步骤:在debug目录下点run,在断点处,程序会停下来,可以观察temp变量的值。

(也可按“F10”单步运行程序,观察temp变量的值。

)9. 任意拨动E300底板上的拨动开关,观察LED和拨动开关的对应情况。

(LED1-LED7分别对应DSP数据总线的D0-D7)10.单击“Debug \ Halt”暂停持续运行,开关将对灯失去控制.11.关闭所有窗口,本实验完毕.四、实验程序与结果分析实验程序:#include "DSP281x_Device.h" // DSP281x Headerfile Include File#include "DSP281x_Examples.h" // DSP281x Examples Include Filevoid main(void){unsigned int temp;temp = 0;DINT;InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();for(;;){asm(" nop ");temp = *(int *)0x2200&0x00ff;if(temp!=0x80){temp=(temp<<1)&0x00ff;asm(" nop ");* (int *)0x2200 = temp;}else * (int *)0x2200 =0x01;asm(" nop ");}}结果分析:多次拨动E300底板上的拨码开关,观察LED亮灭后,我们发现拨动开关的对LED1-LED7分别对应DSP数据总线的D0-D7,并且LED低电平时导通。

单片机与接口技术课程设计题目(1)

单片机与接口技术课程设计题目(1)

心之所向,所向披靡单片机与接口技术课程设计题目1、基于单片机的电子秒表本设计以MCS-51系列单片机为核心,采用常用电子器件设计,一个电源开关,两个按键,三位数码管显示,打开电源开关后显示8,每秒循环左移一位,即□□8—>□8□—>8□□—>□□8—>…,按A键开始计时,实时显示所经历的时间,按B键停止计时并显示从开始到当前时刻的时间,要求精确到0.1秒,量程为0~99.9秒。

要求按键输入采用中断方式,按键A接INT0,按键B接INT1。

2、智能电动百叶窗本设计以MCS-51系列单片机为核心,采用常用电子器件设计,一个电源开关,用一台直流电机控制百叶窗叶片的旋转(正转/反转),用一个光敏电阻传感器测量室内光强度,并用两位数码管显示测量结果,设置三个按键:手动/自动切换、手动正转和手动反转,用一个发光二极管显示手动/自动状态,自动状态时二极管亮。

设置两个极限位置保护行程开关,用于保护百叶窗叶片:当正转到极限位置压下行程开关时,电机停止正转,但还可以反转;当反转到极限位置压下行程开关时,电机停止反转,但还可以正转。

按键输入采用中断方式,按键中断请求信号接INT0.单片机根据设定光强S1和S2(S2 > S1)和实测光强P控制电机M的动作:当P<=S1时,控制M正转以增加进光量;当P>S2时,控制M反转以减少进光量;当S1<P<=S2时,M停转。

3、智能温控器本设计以MCS-51系列单片机为核心,采用常用电子器件设计,一个电源开关,两个控制温度设定按键(增大 / 减小),四位数码管分别显示设定温度和实际温度,量程为0~99度,打开电源开关后设定温度值初始化为26度。

按键输入采用中断方式,两个按键分别接INT0和INT1.采用铂电阻(Pt100)温度传感器进行温度测量,模数转换采用ADC0809.单片机根据设定温度S和实测温度P控制继电器R的动作,死区设为2度:当P<=S-1时,控制R接通电加热回路;当P>S+1时,控制R断开电加热回路;当S-1<P<=S+1时,R保持原状态不变。

基于单片机的无线红外防盗报警电路的设计(含程序 原理图 pcb图)

基于单片机的无线红外防盗报警电路的设计(含程序 原理图 pcb图)

目录1 前言 (1)1.1 无线红外防盗报警电路的发展状况 (1)1.2 无线红外防盗报警器的分类及其介绍 (1)1.3 无线红外报警器工作的原理 (1)1.4 设计无线红外防盗报警器的内容和意义 (1)2 总体方案设计 (3)2.1 方案比较 (3)2.2 方案论证 (4)2.3 方案选择 (4)3 单元模块设计 (5)3.1 各单元模块功能介绍及电路设计 (5)3.2 电路参数的计算及元器件的选择 (13)3.3 特殊器件的介绍 (15)3.4 各单元模块的联接 (21)4 软件设计 (23)4.1 软件设计原理及设计所用工具 (23)4.2 软件结构图 (23)5 系统调试 (27)5.1硬件调试 (27)5.2 系统综合调试 (28)5.3 软件调试 (28)6 系统功能和指标参数 (29)6.1 系统功能的实现 (29)6.2 指标参数 (29)7 结论 (30)8 总结与体会 (31)9 参考文献 (32)附录1:发射部分原理图 (33)附录2:接收部分原理图 (34)附录3:发射部分PCB图 (35)附录4:程序源代码 (36)附录5:实物图 (40)1 前言1.1 无线红外防盗报警电路的发展状况红外防盗报警器的发展主要是基于传感器之下,所以首先要谈谈红外传感器的发展状况。

而传感器技术是21世纪人们在高科技发展方面争夺的一个制高点,各发达国家都将有传感器技术视为现代高新技术发展的关键。

从20世纪80年代起,日本就将传感器技术列为优先发展的高新科技之首,美国等西方国家也将此技术列为国家科技和国防技术发展的重点,而在中国传感器的发展也取得了飞速的发展。

从而基于传感器技术的防盗报警系统也得到了高速发展。

热释电红外传感器是一种非常有应用潜力的传感器,他能检测人或某些动物发射的红外线并转化成电信号输出。

近几年来,伴随这集成电路技术的飞速发展,以及该传感器的特性的深入研究,相关的专用集成电路的处理技术也迅速发展。

PLC训练题(拨码开关与数码管)

PLC训练题(拨码开关与数码管)

第一题搅拌机控制有一台搅拌机,用三相交流异步电动机拖动,其控制要求如下:(1)工作过程:在系统工作之前,首先使用拨码器设定两个数据,分别为N1,N2。

秒,然后停然后停5秒,然后反向旋转电动机首先正向旋转N1×10秒,当按下启动按钮SB1时,时,电动机首先正向旋转N2×10秒,停5秒,然后再正转……如此循环。

在正反转运行过程中,系统工作指示灯HL1常亮;在正反转等待过程中,系统工作指示灯HL1以1Hz(50%占空比)频率闪烁。

在系统工作过程中,利用两位数码管利用外解码方式倒计时显示电动机正转、反转、等待正反向旋转的时间(以秒为单位)。

设定的时间具有上下限,不低于10秒,不高于50秒。

如果超过此范围,分别以上下限替代。

(2)停止过程:,工作指示灯HL1熄灭,数码管显示,电动机停止运行,工作指示灯任何时候,按下停止按钮SB2,电动机停止运行“00”。

(3)报警及保护在系统中有急停按钮ES和电动机过载保护继电器FR。

如果搅拌机运行过程中按下了工作指示灯HL1熄灭,同时,或者电动机发生过载,则电动机立即停止运转,工作指示灯急停按钮ES,或者电动机发生过载,则电动机立即停止运转,报警指示灯HL2以1赫兹(50%占空比)的频率闪烁。

系统中有报警解除按钮SB3,如果系统发生报警,按下此按钮,报警指示灯HL2熄灭。

第二题三相交流异步电动机星-三角启动运行控制有一台三相交流异步电动机,需采用星-三角启动方式启动工作,其控制要求如下:(1)工作过程:在系统工作之前,首先使用两位拨码器设定一个数据N1。

当按下启动按钮SB1时,主接触器KM1闭合,同时星形启动接触器KM2闭合,电动机做星形连接,降压启动。

星形启动N1秒后,星形启动接触器KM2断开。

KM2断开延时1秒后,三角形运行接触器KM3闭合,电动机正常运转。

在电动机从星形连接到三角形连接期间,利用两位数码管外解码方式显示其倒计时时间(以秒为单位)。

第2次单片机原理与应用中断和P1口输入和输出

第2次单片机原理与应用中断和P1口输入和输出
时器 /计数器1提出的中断申请; 允许中断源的中断优先次序为: 定时器 /计数器 0>外部中断 1>外部中断 0>定时器/计数
器 1。
中断响应过程
一、中断响应条件:
1.有中断请求信号; 2. 系统处于开中断状态。
二、中断响应过程:
1.关中断:屏蔽其它中断请求信号。 2.保护断点:将断点地址压入堆栈保存,即当前PC值入栈。 3.寻找中断源:中断程序入口地址PC,转入中断服务。 4.保护现场:将中断服务程序使用的所有寄存器内容入栈。 5.中断处理:执行中断源所要求的程序段。链接中断处理 6.恢复现场:恢复被使用寄存器的原有内容。 7.开中断:允许接受其它中断请求信号。 8.中断返回:执行RETI指令,堆栈断点地址PC,
中断源 入口地址
外部中断0 0003H
定时/计数器0 000BH
外部中断1 0013H
定时/计数器T1 001BH
串行口
0023H
优先级 顺序 最高
最低


来自P3.2引脚(INT0) 的外部中断请求
定时/计数器T0溢出中 断请求
来自P3.3引脚(INT1) 的外部中断请求
定时/计数器T1溢出中 断请求
EX0:外部中断0(INT0)的中断允许位。 EX0=1允许中断, EX0=0不允许中断。
每个中断源的优先级别由特殊功能寄存器 IP来管理。
D7 D6 D5 D4 D3 D2 D1 D0
PS PT1 PX1 PT0 PX0
PS:串行口中断优先级控制位。 PT1:定时器/计数器T1中断优级控制位。 PX1:外部中断INT1中断优先级控制位。 PT0:定时器/计数器T0中断优先级控制位。 PX0:外部中断INT0中断优先级控制位。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

n n n n
n n n n n
5.程序仿真

在Keil集成开发环境中 集成开发环境中,输入上述源程序并命 名为lm4-2.c,建立名为 建立名为lm4-2的工程并将lm42.c加入工程中,经编译 经编译、链接后进入调试状 态,打开Parallel Parallel Port1、Parallel Port1 Port2对 话框,单步运行,观察 观察P2口、P1口的电平变化, 当单击P2.2、P2.4引脚为低电位时 引脚为低电位时,对应的 P1.2、P1.4引脚也为低电位 引脚也为低电位。
4.程序设计
(1)流程图
开始
读P2口数据 口数据 送P1口 延时
图4­11 例题2程序流程图
n
n n n
(2)C语言程序
#include<regx51.h> void delay (void) { q unsigned int i, j; q for (i=0; i<500; i++) for (j=0; j<120; j++); } void main (void) { q unsigned char buffer; q for( ; ; ) { buffer = P2; P1 = buffer; delay ( ); } }
6.习题
n
n
①用do while语句替代主程序中的for语句,编 写主程序。 ②用while语句替代主程序中的for语句,编写 主程序。
+5V
图4­10 拨码开关输入数据电路图
3. 电路元件使用介绍
n
拨码开关(DIP开关)广泛使用在电子信息 广泛使用在电子信息、通 讯等需要手动编制的产品中 讯等需要手动编制的产品中。按拨码开关内部的 开关数量,拨码开关可分为 拨码开关可分为2P、4P、8P等,2P拨 码开关内部有2个独立的开关 个独立的开关,4P拨码开关内部 有4个独立的开关等,通常会在拨码开关上标示 通常会在拨码开关上标示 记号“ON” ,若将开关滑块拨到 若将开关滑块拨到“ON” 的一边,则 接点接通,拨到另一边则为不通 拨到另一边则为不通。
2.电路图
+5V 330 x 8 R8 R7 R6 R5 R4 R3 +5V 39 38 37 R1 36 35 34 LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 33 32 1 2 3 4 5 6 7 8 +5V R9 10K C1 4.7u C3 30p C2 30p Y1 12MHz 9 18 19 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST XTAL1 XTAL2 IC1 AT89S51 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD ALE/PROG PSEN EA/VPP 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 30 29 31 SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0 10k x 8 R10 R11 R12 R13 R14 R15 R16 R17 R2
单片机课程设计
例题2——使用拨码开关输入数据
4.2.2例题2——使用拨码开关输入数据
n
n n n
P2口连接一个8P拨码开关 拨码开关,当拨动拨码开关的某 几位时,与 P1口相连接的发光二极管对应的某几 口相连接的发光二极管对应的某几 位点亮或熄灭。 1.教学目的: (1)学会使用P口输入数据和输出数据 口输入数据和输出数据 (2)学习使用软件仿真 学习使用软件仿真。改变P2口的状态,观察 P1口引脚的输出电平变化 口引脚的输出电平变化。
相关文档
最新文档