单片机课程设计例题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技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:项目满分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、基于单片机的电子秒表本设计以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图)
目录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训练题(拨码开关与数码管)
第一题搅拌机控制有一台搅拌机,用三相交流异步电动机拖动,其控制要求如下:(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口输入和输出
器 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中断优先级控制位。
单片机串口连接两个74LS164驱动两个LED数码管学习资料
单片机串口连接两个74L S164驱动两个L E D数码管单片机应用设计课题:串口连接两个74LS164驱动2个LED数码管显示班级学号: 14110501xx 姓名: xx1设计要求1.1 设计内容设晶体为12MHz,将拨码开关数据串行输入到74LS164,并行输出到2个LED数码管进行相应的数码显示。
设计包括:系统设计分析、系统原理图设计、程序流程图设计、源程序设计、系统调试与仿真及调试结果分析、对本课程学习的感想与收获、对老师的意见与建议、期望成绩等。
1.2 学习目的该作业具有较强的实用性,许多同学已经认识到自己完全有能力设计一个实用的单片机应用系统,对单片机设计由感兴趣已经变为爱好了,为后面的实际应用系统设计奠定了较好的基础。
2 系统设计分析2.1 单片机最小系统+串口+74LS164+LED数码管单片机的最小系统是单片机能够工作的最小硬件组合,对于8051系列单片机,其电路的最小系统大致相同,主要包括电源、晶体振荡电路、复位电路等。
2.1.1 串口数据通信方式包括并行通信和串行通信两种。
并行通信就是多条数据线上同时传送,其优点:速度快,只适于近距离通信。
串行通信就是数据以为以为的顺序传送,其优点:线路简单,成本低,适合远距离通信。
串行通信方式包括:异步串行通信和同步串行通信。
异步方式,数据传送不连续,时间间隔任意。
同步方式,发送与接收同步。
数据传送方式:单工、半双工、全双工、多工。
常见的串行通讯有:RS-232、RS-485、CAN总线等。
串行口控制寄存器包括:串行口控制寄存器SCON(控制工作方式)、电源控制寄存器PCON(控制波特率)。
SM0、SM1选择工作方式,SM2用于多机通信,REN允许接收控制位,TB8/RB8发送/接收数据D8位,TI/RI为发送/接收中断标志位。
2.1.2 74LS164串行口工作于方式0,发送数据时,是把串行端口设置成“串入并出的”输出口。
将它设置为“串入并出”输出口时,需外接1片“串入并出”同步移位芯片74LS164或CD4094,本次设计,用74LS164。
单片机中键盘输入接口的设计与应用案例
单片机中键盘输入接口的设计与应用案例键盘输入接口在单片机中具有重要的作用,它可以实现用户与单片机之间的信息交互。
在本文中,我们将探讨单片机中键盘输入接口的设计原理,并给出一个应用案例来展示其实际应用。
一、设计原理单片机中实现键盘输入接口的基本原理是通过矩阵键盘扫描的方式进行的。
具体步骤如下:1. 连接矩阵键盘首先,我们需要将矩阵键盘与单片机连接起来。
矩阵键盘由多个按钮组成,每个按钮有一个独特的按键码。
常见的矩阵键盘有4×4和4×3两种类型。
2. 设置引脚模式接下来,我们需要设置单片机的引脚模式,将指定的引脚配置为输入模式。
这样,我们就可以通过这些引脚来读取矩阵键盘上的按键信息。
3. 扫描按键在单片机程序中,我们需要编写代码来扫描键盘。
扫描的步骤是逐行扫描矩阵键盘,通过拉低某一行的引脚,然后读取对应列的引脚状态。
如果发现某个按键被按下,则对应的引脚状态为低电平。
4. 处理按键事件一旦检测到按键按下事件,我们就可以根据按键的按键码进行相应的处理。
这可能包括显示按键信息、执行特定的功能等。
二、应用案例为了更好地理解键盘输入接口的设计与应用,我们以一个简单的密码锁系统为例来说明。
1. 系统设计这个密码锁系统需要用户通过按下特定的按键组合来输入密码,一旦输入正确,系统会开启门锁。
2. 硬件设计我们可以选择4×4矩阵键盘作为输入设备,并连接到单片机的引脚上。
3. 程序设计我们需要编写相应的程序来实现密码锁系统的功能。
程序的主要逻辑如下:(1)初始化引脚:将矩阵键盘对应的引脚设置为输入模式。
(2)密码输入:通过扫描矩阵键盘,读取按键信息。
根据按键码将按键信息存储到一个缓冲区中。
(3)密码验证:当用户输入完整的密码后,我们需要对其进行验证。
如果密码正确,则开启门锁;否则提示密码错误。
(4)功能实现:在密码验证通过后,我们可以添加一些额外的功能,例如计时器、报警器等。
4. 系统测试完成程序编写后,我们需要将代码烧录到单片机中,并测试系统的功能。
《单片机原理及应用》课程设计题目
附件一:《单片机原理及应用》课程设计题目[注:在以下扩展芯片中地址分配为,8255控制口:0FF2BH,A口:0FF28H,B口:0FF29H,C口:0FF2AH;8155控制口:0FF20H,A口(字位口):0FF21H,B口(字形口):0FF22H,C 口:0FF23H(键扫口);其余扩展的芯片除存储器外,均使用由74LS138对8000H-0FFFFH 之间的地址进行译码产生的译码信号。
参与译码的地址线为A15、A14、A13和A12,此区间地址分为8段,每段地址长度1000H(最后一段地址可用范围为F000H-FEFFH)]1.函数波形发生器要求:利用D/A芯片产生峰峰值为5V的锯齿波和三角波。
控制功能:使用2个拨动开关(K1、K2)进行功能切换。
当K1接高电平时,输出波形的频率为1Hz,否则为0.5Hz。
当K2接高电平时,输出为三角波,否则输出为锯齿波。
使用的主要元器件:8031、6MHz的晶振、74LS373、74LS138、2764、DAC0832、LM324、拨动开关K1、K2等。
输出波形的验证方法:使用示波器测量输出波形。
2.255秒定时器要求:利用A/D对电位器滑动端的输出电压采样,其转换后得到的数字量做为定时器的设定值(0-0FFH秒)。
利用外部启动脉冲(实验系统上的单脉冲发生器)启动定时器开始做减法计数(每隔一秒钟,设定值减1),当设定值减到0时,单片机驱动喇叭发出1kHz 的报警声。
调整定时设定值和定时过程中的时间利用单片机串行口工作在方式0下,驱动两片74LS164在2位LED数码管上显示。
控制功能:通过旋动电位器W1来调整输入给A/D的采样电压值,8031通过对A/D采样得到数字量做为定时器的定时初值。
通过拨动开关K1来设定定时器的工作状态,当K1接高电平时,定时器处于定时状态,若接收到一个触发脉冲,则定时器开始倒计时。
计时到0,单片机通过P1.1驱动喇叭发出30秒钟的1kHz的报警声,然后将上一次的定时值重新装入,等待下一次启动定时;当K1接低电平时,定时器处于定时初值设定状态,这时旋动电位器W1可以调整定时初值,该值同步在2块LED数码管上显示。
拨码开关延迟继电器设计说明
辽宁工业大学单片机原理及接口技术课程设计(论文)题目:拨码开关延迟继电器设计院(系):电气工程学院专业班级:测控 092 班学号: 090301041学生:于世震指导教师:起止时间:2012.06.18-2012.06.29课程设计(论文)任务及评语院(系):电气工程学院教研室:测控技术与仪器注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算摘要随着科学技术的飞速发展,单片机技术已经迅速的运用到人们的日常生活中,在人们的生产控制中起到了至关重要的作用,这次设计就是在这样的一种情况下运用而生。
本次设计以AT89S52单片机为核心,用数码管、继电器、拨动开关等器件设计一个控制电路,实现由8位拨码开关控制继电器工作的设计,这次设计我们要用AT89S52单片机的运算与控制功能,它作为整体设计的核心部件,利用其汇编语言编写程序,协调各部分电路工作,其次我们设计显示电路,首先利用74LS244,它作为3态8位缓冲器作为驱动电路与3个动态LED数码显示管组成显示电路。
继电器电路也是人们经常运用的部件,它能作为各个方面的控制器。
在人们的机械领域起到了举足轻重的作用。
总之,拨码开关延迟继电器设计能够广泛的真正的运用到工业生产人们的日常生活中。
关键词:单片机;拨码开关;继电器目录第1章绪论 (1)第2章系统总体方案 (2)2.1概述 (2)2.2系统总体方案的比较........................................ (2)2.3系统整体框图 (3)第3章系统硬件选择与设计 (4)3.1电源电路设计 (4)3.2复位电路设计 (4)3.3晶振电路的设计 (5)3.4显示电路的设计 (6)3.5继电器电路的设计 (7)3.6拨动开关电路的设计 (8)第4章软件设计 (10)4.1总程序框图 (10)4.2去抖子程序框图 (11)第5章系统性能测试与分析 (12)第6章课程设计总结 (13)参考文献 (14)附录Ⅰ (15)附录II (17)第1章绪论随着社会的进步微电子技术的不断发展,单片机的智能化程度越来越高,反应速度也越来越快,产片的覆盖面也面向整个社会了,各个公司生产的不同单片机的性能也越来越高。
单片机开关量输入输出实验
单片机实验报告实验名称实验一开关量输入输出实验实验二继电器控制输出实验姓名:学号:指导老师:实验日期: 09.10.26一实验目的实验一目的:1.掌握AT89C51单片机的最基本电路的设计;2.了解单片机I/O端口的使用方法;实验二目的:1.掌握AT89C51单片机的最基本电路的设计;2.了解单片机I/O端口的使用方法;3.了解继电器控制电路以及小电压控制大电压的方法二实验器件实验一:序号元件名称元件规格所在元件库备注1 单片机AT89C51 Microprcessor5 按钮BUTTON Switchs &Relay6 晶振CRYSTAL Miscellaneous7 发光二极管LED-RED Optoelectronics8 电容CAP Capacitors9 电解电容CAP-ELEC Capacitors10 电阻RES Resistors11 排阻RESPACK-8 Resistors12 开关SWITCH Switchs &Relay实验二:序号元件名称元件规格所在元件库备注1 单片机AT89C51 Microprcessor2 继电器RELAY Switchs &Relay3 交流电源ALTERNATOR Simulator Primitive4 灯泡LAMP Optoelectronics5 按钮BUTTON Switchs &Relay6 晶振CRYSTAL Miscellaneous7 发光二极管LED-RED Optoelectronics8 电容CAP Capacitors9 电解电容CAP-ELEC Capacitors10 电阻RES Resistors11 开关SWITCH Switchs &Relay12 肖特基二极管DIODE-SC Diodes13 三极管2N2095 Transistors三实验内容实验一:1.利用AT89C51单片机的P0口作开关量输入口,P1口作开关量输出口;2.当P0.x端开关闭合时,对应的P1.x口的LED发光二极管点亮;当P0.x端开关断开时,对应的P1.x口的LED发光二极管不亮;3.画出AT89C51实现上述功能的完整电路图,包括单片机电源、复位电路、晶振电路和控制电路。
单片机指令的输入输出控制方法与技巧
单片机指令的输入输出控制方法与技巧单片机作为嵌入式系统中的核心部件,具备强大的控制能力和广泛的应用领域。
在实际应用中,单片机的输入输出控制是非常重要的一部分,对于系统的性能和功能起着决定性的作用。
本文将介绍单片机指令的输入输出控制方法与技巧,帮助读者更好地理解和应用单片机。
1. 输入控制方法与技巧单片机的输入控制主要涉及外部信号的接收和处理。
以下是一些常用的输入控制方法和技巧:1.1. GPIO口输入通用输入输出口(GPIO)是单片机常用的输入输出方式。
通过配置GPIO引脚的工作模式和输入电平,可以实现外部信号的输入。
在编程时,可以使用相应的指令读取GPIO口的状态,从而获取外部信号。
1.2. 外部中断单片机通常提供多个外部中断引脚,可以用于处理外部触发的事件。
通过配置中断触发方式和优先级,可以在特定条件下触发中断服务程序,实现对外部信号的即时响应。
1.3. 定时器输入捕获某些单片机具备输入捕获功能,可以用于测量外部信号的频率、脉宽等参数。
通过配置定时器的工作模式和捕获触发条件,可以准确获取外部信号的时序信息。
2. 输出控制方法与技巧单片机的输出控制主要涉及外部设备的驱动和控制。
以下是一些常用的输出控制方法和技巧:2.1. GPIO口输出与GPIO口的输入类似,通过配置GPIO引脚的工作模式和输出电平,可以实现对外部设备的控制。
在编程时,可以使用相应的指令改变GPIO口的状态,从而控制外部设备。
2.2. PWM输出脉冲宽度调制(PWM)输出常用于控制模拟量设备,如电机速度调节、LED亮度调节等。
通过配置定时器和PWM相关寄存器,可以生成不同占空比的PWM信号,实现对外部设备的精确控制。
2.3. DAC输出数模转换器(DAC)可以将数字信号转换为模拟信号输出。
通过配置DAC相关寄存器和数据缓存,可以实现对外部模拟设备的控制,如音频输出、电压输出等。
3. 控制方法与技巧除了上述的输入输出控制方法和技巧之外,还有一些常用的控制方法和技巧,可以提高单片机系统的性能和可靠性。
利用拨码开关控制点阵进行十进制数字显示
中北大学课程设计说明书学生姓名:范林江学号:0706024148学院: 电子与计算机科学技术学院专业: 微电子学题目: 利用拨码开关控制点阵进行十进制数字显示指导教师:王红亮职称: 讲师2010 年 6 月 25 日目录1.课程设计目的 (2)2.课程设计内容及要求 (2)2.1设计内容 (2)2.2设计要求 (2)3.设计方案及实现情况 (2)3.1设计思路 (2)3.2工作原理及框图 (2)3.3各模块功能描述 (3)3.4仿真结果 (12)3.5试验箱验证情况 (13)4课程设计总结 (13)5.参考文献 (14)1、课程设计目的(1)学习操作数字电路设计实验开发系统,掌握点阵显示的工作原理及应用。
(2)掌握组合逻辑电路、时序逻辑电路的设计方法。
(3)学习掌握可编程器件设计的全过程。
2、课程设计内容和要求2.1、设计内容用VHDL语言编写程序,使拨码开关控制点阵显示十进制数字。
2.2、设计要求1.学习掌握列扫描控制模块、点阵显示模块的工作原理及应用;2. 熟练掌握VHDL编程语言,编写点阵显示模块;3. 仿真所编写的程序,模拟验证所编写的模块功能;4. 下载程序到芯片中,硬件验证所设置的功能,能够实现十进制数字的显示;3、设计方案及实现情况3.1、设计思路采用模块化的设计思想,将整体分为几个模块,有不同的程序实现不同的模块功能,并且各个模块之间保持相对独立,有利于针对不同的功能模块进行调试,以便增加整个系统的成功率。
基于这种设计思想,对本次课程设计题目分为列扫描控制模块示和点阵显示模块。
将拨码开关的状态通过FPGA的控制,再用FPGA控制LED点阵上显示数字。
3.2、工作原理及框图(1)工作原理将拨码开关状态设置为四位二进制数,与十进制数相应,控制要显示的数字,选择出显示该数字程序,时钟信号使列扫描从第0列到第十五列重复扫描,在显示模块中写入一的对应的LED变亮,写入0的不亮,这样就可以显示相相应的数字。
单片机拨动开关
实训二两人LED闪烁灯电路设计班级:供用电0801 姓名:张斌胡邦元学号:0810866 08108671 实验目的熟练掌握MCS-51型开发板的使用方法和注意事项。
2 硬件设计2.1 实验器件教学实验系统一台(12盏灯L1~L12,P1口和P3口,导线若干)P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7、P3.0、P3.1、P3.2、P3.3分别接灯L12、L11、L10、L9、L8、L7、L6、L5、L4、L3、L2、L1。
2.2 硬件设计原理当8051的P1或P3口有高电平输出时,相应的发光二极管就会点亮。
应用这一原理我们可以容易的点亮发光二极管,LED闪烁亮灯顺序:当拨动开关K1发出低电平(K1=0)时,发光二极管L1-L8从两头向中间逐个点亮(时间间隔0.5秒),当L1-L8全部点亮后延时2秒钟全部熄灭,如此往复循环。
当拨动开关K1发出高电平(K1=1)时,L4、L5点亮,然后点亮的灯向两边扩展(时间间隔0.5秒),直到L1-L82全部点亮后延时2秒钟全部熄灭,如此往复循环。
在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,这样就可以看到LED闪烁的现象。
2.3 硬件设计图3 软件设计 3.1 计算延时程序 本次实验的延时程序采用定时模式1控制寄存器TMOD ,延时1S 。
本次实验的延时程序采用定时模式1控制寄存器TMOD ,延时1S 。
由于MCS-51的外接时钟晶振为12MHZ,又1S=(20*0.05S),即只需产生0.05S 的定时,在外加20次循环就可以得到1S 的延时,并且采取定时器工作在方式1,即16位定时器模式下,则初值X 的计算为: X=162-(12*610*0.05)/12=15536=3CB0H 3.2 流程图开始 P3.4=0? 程序A 运行 程序B 运行 Y N3.3源程序ORG 0000HMOV R2, #0M_LOOP:MOV A, R2INC R2ANL A, #07HMOV C, P1.0MOV ACC.3, CMOV DPTR, #TABMOVC A, @A+DPTRMOV P0, ACALL DL5KTSJMP M_LOOPTAB:DB 0xFF, 0xE7, 0xC3, 0x81, 0x00, 0x00, 0x00, 0x00DB 0xFF, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00DL5KT:MOV R5, #10MOV R6, #100MOV R7, #250DJNZ R7, $DJNZ R6, $ - 4DJNZ R5, $ - 8RETEND4 实验结果此次试验将两个人的程序结合在一起,通过使用波动开关控制灯的闪烁,成功完成这次试验。
利用拨码开关控制数码管进行十进制数字显示
中北大学课程设计说明书2012/2013 学年第二学期学院:电子与计算机科学技术学院专业:电子科学与技术学生姓名:郭锋学号:1006044123 课程设计题目:利用拨码开关控制数码管进行十进制数字显示起迄日期:2013.6.16-2013.6.28课程设计地点:电子科学与技术专业实验室指导教师:文丰系主任:刘文怡下达任务书日期: 2013年 6月16日目录1.课程设计目的 (2)2.课程设计内容及要求 (2)2.1设计内容 (2)2.2设计要求 (2)3.设计方案及实现情况 (2)3.1设计思路 (2)3.2工作原理及框图 (3)3.3各模块功能描述 (5)3.4仿真结果 (6)3.5试验箱验证情况 (7)4.课程设计总结 (9)5.参考文献 (9)1.课程设计目的1.学习操作数字电路设计实验开发系统,掌握数码管的工作原理及应用。
2.掌握组合逻辑电路、时序逻辑电路的设计方法。
3.学习掌握可编程器件设计的全过程。
2.课程设计内容和要求2.1设计内容用VHDL语言编写程序,实现利用拨码开关控制数码管的十进制数字显示。
2.2设计要求1.学习掌握拨码开关控制模块、数码管的工作原理及应用。
2. 熟练掌握VHDL编程语言,编写拨码开关控制模块的控制逻辑。
3. 仿真所编写的程序,模拟验证所编写的模块功能。
4. 下载程序到芯片中,硬件验证所设置的功能,能够实现十进制数字的显示。
5. 整理设计内容,编写设计说明书。
3.设计方案及实现情况3.1设计思路1.设计拨码开关控制和数码显示两个模块。
2.用拨码开关控制模块来实现开关的状态,用数码管显示模块来显示十进制数。
3.编写VHDL程序,并仿真判断结果是否与自己设计的相符。
4.下载芯片观察结果显示。
5.实验框图。
3.2工作原理及框图1.拨码开关控制原理是每按一下,低电平有效,即对于十六进制数来说,其功能表如表1。
表1拨码开关控制逻辑功能表2.(1)七段数码管的管脚原理图如图2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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口 延时
图411 例题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
图410 拨码开关输入数据电路图
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口引脚的输出电平变化 口引脚的输出电平变化。