单片机课程设计题目及答案_第1页
单片机课程设计题目及答案_第2页
单片机课程设计题目及答案_第3页
单片机课程设计题目及答案_第4页
单片机课程设计题目及答案_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、题目1 智能电子钟(LCD显示)题目2 电子时钟(LCD显示)题目3 秒表题目4 定时闹钟题目5 音乐倒数计数器题目6 基于数字温度传感器的数字温度计题目7 基于热敏电阻的数字温度计题目8 十字路口交通灯控制题目9 波形发生器设计题目10 电容、电阻参数单片机测试系统的设计题目11 数字频率计题目12 8位竞赛抢答器的设计题目13 单词记忆测试器程序设计题目14 数字电压表设计题目15 可编程作息时间控制器设计题目16 节日彩灯控制器的设计题目17 双机之间的串行通信设计题目18 电子琴设计题目19 数字音乐盒的设计题目20 单片机控制步进电机题目21 单片机控制直流电动机题目1 智能电子钟(

2、LCD显示)1. 设计要求 以AT89C51单片机为核心,制作一个LCD显示的智能电子钟: (1) 计时:秒、分、时、天、周、月、年。 (2) 闰年自动判别。 (3) 五路定时输出,可任意关断(最大可到16路)。 (4) 时间、月、日交替显示。 (5) 自定任意时刻自动开/关屏。 (6) 计时精度:误差1秒/月(具有微调设置)(7) 键盘采用动态扫描方式查询。所有的查询、设置功能均由功能键K1、K2完成。2. 工作原理本设计采用市场上流行的时钟芯片DS1302进行制作。DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与计算机进行

3、通信,使得管脚数量减少。实时时钟/日历电路能够计算2100年之前的秒、分、时、日、星期、月、年的,具有闰年调整的能力。DS1302时钟芯片的主要功能特性:(1) 能计算2100年之前的年、月、日、星期、时、分、秒的信息;每月的天数和闰年的天数可自动调整;时钟可设置为24或12小时格式。(2) 31B的8位暂存数据存储RAM。(3) 串行I/O口方式使得引脚数量最少。(4) DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需3根线。(5) 宽范围工作电压2.0-5.5V。(6) 工作电流为2.0A时,小于300nA。(7) 功耗很低,保持数据和时钟信息时功率小于1mW题目2 电子时

4、钟(LCD显示)1. 设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用4个功能键操作来设置当前时间。功能键K1K4功能如下。n K1进入设置现在的时间。n K2设置小时。n K3设置分钟。n K4确认完成设置。程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。2. 实验原理题目难点在于键盘的指令输入,由于每个按键都具有相应的一种或多种功能,程序中需要大量使用dowhile或while循环结构,以检测是否有按键按下。题目3 秒表1. 设计要求用AT89C

5、51设计一个2位的LED数码显示作为“秒表”:显示时间为0099秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。2. 实验原理题目难点在于通过对键盘的扫描对时钟的走时/停止进行控制,项目采用定时器T0作为计时器,每10ms发生一次中断,每100次中断加1s。在此期间,如“开始”按键按下,程序方将TR0置为1,从而开启中断,时钟开始走时;如复位”按键按下,程序将TR0置为0,同时将存储时间的变量清零,从而中断停止,并实现复位。本题目采用专用数码管显示控制芯片MAX7219。MAX7219是美国MAXIM公司生产的串行输入/输出共阴极显示驱动器,该芯片最多可驱动8位7段数字LED显示器或个

6、LED和条形图显示器。其引脚图及引脚功能参见有关参考资料。题目4 定时闹钟1. 设计要求使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。定时闹钟的基本功能如下:n 显示格式为“时时:分分”。n 由LED闪动来做秒计数表示。n 一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。n 程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00”,按下操作键K1K4动作如下: (1) K1设置现在的时间。 (2) K2显示闹钟设置的时间。 (3) K3设置闹铃的时间。 (4) K4

7、闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。设置当前时间或闹铃时间如下。 (1) K1时调整。 (2) K2分调整。(3)K3设置完成。(4) K4闹铃时间到时,发出一阵声响,按下本键可以停止声响。本项目的难点在于4个按键每个都具有两个功能,以最终实现菜单化的输入功能。采用通过逐层嵌套的循环扫描,实现嵌套式的键盘输入。以对小时的设置的流程为例,其流程如下页图。题目5 音乐倒数计数器1. 设计要求利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。做一小段时间倒计数,当倒计数为0时,则发出

8、一段音乐声响,通知倒计数终了,该做应当做的事。定时闹钟的基本功能如下。n 字符型LCD(162)显示器。n 显示格式为“TIME 分分:秒秒”。用4个按键操作来设置当前想要倒计数的时间。一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1K4动作如下。 K1可调整倒计数的时间160分钟。 K2设置倒计数的时间为5分钟,显示“0500”。 K3设置倒计数的时间为10分钟,显示“1000”。 K4设置倒计数的时间为20分钟,显示“2000”。复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD上显示出设置画面。此时

9、,若: a. 按操作键K2增加倒计数的时间1分钟。 b. 按操作键K3减少倒计数的时间1分钟。 c. 按操作键K4设置完成。 键盘实现菜单功能的方法,已在题目4详细说明,不再赘述。本题目最大难点是实现音乐的播放。作者利用定时计数器,通过载入不同的计数初值,产生频率不同的方波,输入到蜂鸣器(SOUNER)中,使其发出频率不同的声音。本设计中单片机晶振为1.0592MHz,通过计算各音阶频率,可得1、2、3、4、5、6、7共7个音应赋给定时器的初值为64580、64684、64777、64820、64898、64968、65030。在此基础上,可将乐曲的简谱转化为单片机可以“识别”的“数组谱”,进

10、一步加入对音长、休止符等的控制量后,可以实现音乐的播放。题目6 基于数字温度传感器的数字温度计1. 设计要求利用数字温度传感器DS18B20与单片机结合来测量温度。利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。其温度测量范围为55125,精确到0.5。数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示。2. 实验原理从温度传感器DS18B20可以很容易直接读取被测温度值,进行转换即满足设计要求。DS18B20温度传感器是美国DALLAS半导体公司最新推出的

11、一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字读数方式。DS18B20的性能如下。独特的单线接口仅需要一个端口引脚进行通信。多个DS18B20可以并联在串行传输的数据线上,实现多点组网功能。无须外部器件。可通过数据线供电,电压范围为3.05.5V。零待机功耗。温度以9或12位的数字读数方式。用户可定义报警设置。报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 采用3引脚PR-35封装或8引脚SOIC封装题目7 基于热敏电阻的数字温

12、度计1. 设计要求使用热敏电阻类的温度传感器件利用其感温效应,将随被测温度变化的电压或电流用单片机采集下来,将被测温度在显示器上显示出来:n 测量温度范围50110。n 精度误差小于0.5。n LED数码直读显示。2 . 实验原理本题目使用铂热电阻PT100,其阻值会随着温度的变化而改变。PT后的100即表示它在0时阻值为100欧姆,在100时它的阻值约为138.5欧姆。厂家提供有PT100在各温度下电阻值值的分度表,在此可以近似取电阻变化率为 0.385/。向PT100输入稳恒电流,再通过A/D转换后测PT100两端电压,即得到PT100的电阻值,进而算出当前的温度值。采用2.55mA的电流

13、源对PT100进行供电,然后用运算放大器LM324搭建的同相放大电路将其电压信号放大10倍后输入到AD0804中。利用电阻变化率0.385/的特性,计算出当前温度值。本题目测温误差主要由以下几点引发:ADC0804为8位ADC芯片,精度有限;程序假定PT100为完全线性的器件,而即使是厂家推荐的线性值也会存在一定误差;运放电路并非绝对线性。如使用12位ADC芯片,采用“四线制”的PT100接法,采用查表法测定温度值,将极大提高温度的测量精度。 题目8 十字路口交通灯控制1. 设计要求设计一个十字路口交通灯控制器。用单片机控制LED灯模拟指示。模拟东西方向的十字路口交通信号控制情况。东西向通行时

14、间为80s,南北向通行时间为60s,缓冲时间为3s。2. 实验原理本项目为典型的LED显示和中断定时电路。利用定时器T0产生每10ms一次的中断,每100次中断为1s。对两个方向分别显示红、绿、黄灯,已经相应的剩余时间即可。值得注意的是,需要意识到,A方向红灯时间=B方向绿灯时间+黄灯缓冲时间这一常识。本项目使用的MAX7219芯片使用方法请参考题目3题目9 波形发生器设计1. 设计要求 设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器。2. 实验原理 产生指定波形可以通过DAC来实现,不同波形产生实质上是对输出的二进制数字量进行相应改变来实现的。本题目中,方波信号是利用定时器中

15、断产生的,每次中断时,将输出的信号按位反即可;三角波信号是将输出的二进制数字信号依次加1,达到0xff时依次减1,并实时将数字信号经D/A转换得到;锯齿波信号是将输出的二进制数字信号依次加1,达到0xff时置为0x00,并实时将数字信号经D/A转换得到的; 梯形波是将输出的二进制数字信号依次加1,达到0xff时保持一段时间,然后依次减1直至0x00,并实时将数字信号经D/A转换得到的; 正弦波是利用MATLAB将正弦曲线均匀取样后,得到等间隔时刻的y方向上的二进制数值,然后依次输出后经D/A转换得到。题目10 电容、电阻参数单片机测试系统的设计1. 设计要求 设计一个能测量电容、电阻参数的测试

16、系统。2 实验原理 对电阻的测量,可将待测电阻与一标准电阻串联后接在+5V的电源上,根据串联分压原理,利用ADC测定电阻两端电压后,即可得到其阻值。对电容的测量,可将其与已知阻值的电阻RA和RB组成基于NE555的多谐振荡器如下页图。其产生的方波信号频率为 : 故通过测定方波信号的频率可以比较精确的测定C的值。测定方波信号频率的方法,请见题目11题目11 数字频率计1. 设计要求设计一个以单片机为核心的频率测量装置。使用AT89C51单片机的定时器/计数器的定时和计数功能,外部扩展6位LED数码管,要求累计每秒进入单片机的外部脉冲个数,用LED数码管显示出来。(1)被测频率fx110Hz,采用

17、测周法,显示频率. ;fx110Hz,采用测频法,显示频率。(2)利用键盘分段测量和自动分段测量。(3)完成单脉冲测量,输入脉冲宽度范围是100ms0.1s。 (4)显示脉冲宽度要求如下。 Tx1000ms,显示脉冲宽度。 Tx1000ms,显示脉冲宽度。2. 实验原理 测量频率有测频法和测周法两种。 (1)测频法,利用外部电平变化引发的外部中断,测算1s内的波数,从而实现对频率的测定; (2)测周法,通过测算某两次电平变化引发的中断之间的时间,实现对频率的测定。简而言之,测频法是直接根据定义测定频率,测周法是通过测定周期间接测定频率。理论上,测频法适用于较高频率的测量,测周法适用于较低频 率

18、的测量。 经过调校,在测量低频信号时,本项目中测频法精度已高于测 周法,故舍弃测周法,全量程采用测频法。 题目12 8位竞赛抢答器的设计1.设计要求 以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0S7表示。 设置一个系统清除和抢答控制开关S,开关由主持人控制。抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。 参赛选手在设定的

19、时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。 2. 实验原理 通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。 题目13 单词记忆测试器程序设计1. 设计要求 设计一个以单片机为核心的单词记忆测试器: 实现单词

20、的录入(为使程序具有可演示性,单词不少于10个)。 单词用按键控制依次在屏幕上显示,按键选择认识还是不认识,也可以直接进入下一个或者上一个。 单词背完后给出正确率。2. 实验原理 本题目实质上是一个具有一定复杂程度键盘扫描程序,可将单词存储在一个二维数组中,按“确定”键开始程序后,次显示0行的数组,即第一个单词。之后按下“向上”按键,显示上一行数组,即上一个单词; 按下“向下”按键,显示下一行数组,即下一个单词。当显示的行数超过9时,程序结束,并通过按“确认”的次数,计算出正确率。 题目14 数字电压表设计1. 设计要求 以单片机为核心,设计一个数字电压表。采用中断方式,对2路05V的模拟电压

21、进行循环采集,采集的数据送LED显示,并存入内存。超过界限时指示灯闪烁。2. 实验原理 本题目本质上是以单片机为控制器,ADC0809为ADC器件的AD转换电路,设计要求的电压显示,是对ADC采集所得信号的进一步处理。 为得到可读的电压值,需根据ADC的原理,对采集所得的信号进行计算,并显示在LED上。本项目中ADC0809的参考电压为+5V,根据定义,采集所得的二进制信号addata所指代的电压值为: 而若将其显示到小数点后两位,不考虑小数点的存在(将其乘以100),其计算的数值为:。将小数点显示在第二位数码管上,即为实际的电压本示例程序将1.25 V和2.5 V作为两路输入的报警值,反映在

22、二进制数字上,分别为0x40和0x80。当AD结果超过这一数值时,将会出现二极管闪烁和蜂鸣器发声。题目15 可编程作息时间控制器设计1. 设计要求 设计一个以单片机为核心的可编程作息时间控制器:按照给定的时间模拟控制,实现广播、上下课打铃、灯光控制(屏幕显示),同时具备日期和时钟显示。2. 实验原理 本题目原理与题目4相同,程序是在题目4的基础上将定时闹钟改造为4路可调闹钟,从而实现打铃等功能。当四路闹钟中的任一路到时,均会点亮灯、打铃。如有需求,可对程序进行调整,增加闹钟的路数,及到时后的处理方式。 题目中4个按键的功能分别为:设置限制的时间/时的调整、显示闹钟设置的时间/分的调整、设置闹钟

23、的时间/设置完成、闹钟更换。题目16 节日彩灯控制器的设计1. 设计要求以单片机为核心,设计一个节日彩灯控制器: P1.2开始,按此键则灯开始流动(由上而下)。 P1.3停止,按此键则停止流动,所有灯为暗。 P1.4上,按此键则灯由上向下流动。 P1.5下,按此键则灯由下向上流动。2. 实验原理 本题目本质上是由按键控制功能的流水灯,LED工作的方式通过键盘的扫描实现。其中的LED采取共阳极接法,通过依次向连接LED的/口送出低电平,可实现题目要求的功能。3. 电路设计(Proteus仿真通过) 本节日彩灯控制器电路原理图,如下页图所示,各按键功能与实验设计要求相同:题目17 双机之间的串行通

24、信设计1. 设计要求 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。串行口工作方式为方式1的全双工串行通信。2. 实验原理 两个单片机之间进行通讯波特率的设定,最终归结到对定时计数器T1计数初值TH1、TL1进行设定。故本题目本质上是通过键盘扫描得到设定的波特率,从而载入相应的T1计数初值TH1、TL1实现的。示例程序中将0xaa从主机传输到从机,并显示在从机的数码管上实现串口通讯的验证。 如串口通讯线路过长,可考虑采用MAX232进行电平转换,以延长传输距离。值得注意的是,为了减少计算载入初值时的误差,本项

25、目最好采取11.0592MHz的晶振。3. 电路设计(Proteus仿真通过) 两个单片机之间的串行通信接口设计电路原理图,如下页图所示: 题目18 电子琴设计1. 设计要求 设计一个电子琴。利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一音调的声音。2. 实验原理 当系统扫描到键盘上有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲输入到蜂鸣器后,就会发出相应的音调如果在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到

26、后按的键的发音程序,发出后按的键的音调。关于发声原理,参见题目5。3. 电路设计(Proteus仿真通过) 本电子琴设计电路原理图,如下页图所示: 题目19 数字音乐盒的设计1. 设计要求 以单片机为核心,设计一个数字音乐盒: 利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少3首乐曲,每首不少于30s)。采用LCD显示信息。 a. 开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。 b. 可通过功能键选择乐曲、暂停、播放。 2. 电路设计 本数字音乐盒的电路设计原理图,如下图所示 题目20 单片机控制步进电机1. 设计要求 采用单片机控制一个三相单三拍的步进

27、电机工作。步进电机的旋转方向由正反转控制信号控制。步进电机的步数由键盘输入,可输入的步数分别为3、6、9、12、15、18、21、24和27步,且键盘具有键盘锁功能,当键盘上锁时,步进电机不接受输入步数,也不会运转。只有当键盘锁打开并输入步数时,步进电机才开始工作。 电机运转的时候有正转和反转指示灯指示。 电机在运转过程中,如果过热,则电机停止运转,同时红色指示灯亮,同时警报响。本题目的关键之处是:如何生成控制步进电机的脉冲序列。2. 实验原理 步进电机的不同驱动方式,都是在工作时,脉冲信号按一定顺序轮流加到三相绕组上,从而实现不同的工作状态。由于通电顺序不同,其运行方式有三相单三相拍、三相双

28、三拍和三相单、双六拍三种(注意:上面“三相单三拍”中的“三相”指定子有三相绕组;“拍”是指定子绕组改变一次通电方式;“三拍”表示通电三次完成一个循环。“三相双三拍”中的“双”是指同时有两相绕组通电)。3电路设计(Proteus仿真通过) 本单片机控制步进电机电路原理图,如下页图所示题目21 单片机控制直流电动机1. 设计要求 采用单片机设计一个控制直流电机并测量转速的装置。单片机扩展有A/D转换芯片ADC0809和D/A转换芯片DAC0832。 (1)通过改变A/D输入端可变电阻来改变A/D的输入电压,D/A输入检测量大小,进而改变直流电机的转速。 (2)手动控制。在键盘上设置两个按键直流电动

29、机加速键和直流电机减速键。在手动状态下,每按一次键,电机的转速按照约定的速率改变。 (3)键盘列扫描(46)。2. 实验原理 本题目难点是对直流电机的控制。与步进电机类似,直流电机也可精确地控制旋转速度或转矩。 直流电机是通过两个磁场的互作用产生旋转。其结构如下页图所示,固定部分(定子)上,装设了一对直流励磁的静止的主磁极N和S,在旋转部分(转子)上装设电枢铁心。定子与转子之间有一气隙。在电枢铁心上放置了由A和X 两根导体连成的电枢线圈,线圈的首端和末端分别连到两个圆弧形的铜片上,此铜片称为换向片。 直流电机的速度与施加的电压成正比,输出转矩则与电流成正比。由于必须在工作期间改变直流电机的速度

30、,直流电机的控制是一个较困难的问题。直流电机高效运行的最常见方法是施加一个 PWM(脉宽调制)方波,其占空比对应于所需速度。电机起到一个低通滤波器作用,将PWM信号转换为有效直流电平。特别是对于微处理器驱动的直流电机,由于PWM信号相对容易产生,这种驱动方式使用的更为广泛。 本项目的示例程序为了能够演示DAC0832的使用,未使用PWM驱动方式。而是利用直流电机的速度与施加电压成正比的原理,通过滑动变阻器向ADC0809输入控制电压信号,经AD后,输入到AT89C51中,AT89C51将此信号转发给DAC0832,通过功放电路放大后,驱动直流电机。需要注意的是,本题目使用的Proteus版本,

31、未提供ADC0809的仿真模型,这里以引脚、功能与之相同的ADC0808代替。同时,DAC0832也可以用引脚、功能相同的DAC0830代替。ADC0809与DAC0832在教材中已有详细介绍,在此不再叙述。按照其时序图,如下页图和后页图操作即可。单片机 C 语言程序设计实训 100 例-基于8051 和 PROTEUS 仿真案例单片机C语言程序设计实训 100 例基于 8051+Proteus仿真案例第 01篇基础程序设计01 闪烁的 LED/* 名称:闪烁的 LED说明:LED 按设定的时间间隔闪烁*/#include#define uchar unsigned char#define u

32、int unsigned intsbit LED=P10;/延时void DelayMS(uint x)uchar i;while(x-)for(i=0;i120;i+);/主程序void main()while(1)LED=LED;DelayMS(150);02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在 P0 口的 8 个 LED从左到右循环依次点亮,产生走马灯效果*/#include#include#define uchar unsigned char#define uint unsigned int上海师范大学信息与机电工程学院倪继锋1/延时void DelayMS(uin

33、t x)uchar i;while(x-)单片机 C 语言程序设计实训 100 例-基于8051 和 PROTEUS 仿真案例for(i=0;i120;i+);/主程序void main()P0=0xfe;while(1)P0=_crol_(P0,1); /P0 的值向左循环移动DelayMS(150);03 8 只 LED 左右来回点亮/* 名称:8 只 LED 左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include#include#define uchar unsigned char#define uint unsigned int/延时vo

34、id DelayMS(uint x)uchar i;while(x-)for(i=0;i120;i+);/主程序void main()uchar i;P2=0x01;while(1)上海师范大学信息与机电工程学院倪继锋2单片机 C 语言程序设计实训 100 例-基于for(i=0;i7;i+) P2=_crol_(P2,1); /P2 的值向左循环移动DelayMS(150); for(i=0;i7;i+) P2=_cror_(P2,1); /P2 的值向右循环移动DelayMS(150); 8051 和 PROTEUS 仿真案例04 花样流水灯/* 名称:花样流水灯说明:16 只 LED 分

35、两组按预设的多种花样变换显示*/#include#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0=0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,

36、0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, 0xfe,0xfc,0xf8,0

37、xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff ;uchar code Pattern_P2= 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff, 0xe7,0xdb

38、,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0

39、xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00, 0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,上海师范大学信息与机电工程学院倪继锋3单片机 C 语言程序设计实训 100 例-基于

40、0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff ;/延时void DelayMS(uint x)uchar i;while(x-)for(i=0;i120;i+);/主程序void main()uchar i;while(1)/从数组中读取数据送至 P0 和 P2 口显示for(i=0;i136;i+) P0=Pattern_P0i;P2=Pattern_P2i;DelayMS(100); 05 LED 模拟交通灯/* 名称:LED 模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁 5 次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁 5 此后变红

41、灯,东西向变绿灯,如此重复。*/#include#define uchar unsigned char#define uint unsigned intsbit RED_A=P00; /东西向灯sbit YELLOW_A=P01;sbit GREEN_A=P02;sbit RED_B=P03; /南北向灯sbit YELLOW_B=P04;sbit GREEN_B=P05;8051 和 PROTEUS 仿真案例uchar Flash_Count=0,Operation_Type=1; /闪烁次数,操作类型变量上海师范大学信息与机电工程学院倪继锋4/延时void DelayMS(uint x)u

42、char i;单片机 C 语言程序设计实训 100 例-基于8051 和 PROTEUS 仿真案例while(x-) for(i=0;i120;i+);/交通灯切换void Traffic_Light()switch(Operation_Type)case 1:/东西向绿灯与南北向红灯亮RED_A=1;YELLOW_A=1;GREEN_A=0;RED_B=0;YELLOW_B=1;GREEN_B=1;DelayMS(2000);Operation_Type=2; break; case 2:/东西向黄灯闪烁,绿灯关闭DelayMS(300); YELLOW_A=YELLOW_A;GREEN_A

43、=1;if(+Flash_Count!=10) return; /闪烁 5 次Flash_Count=0;Operation_Type=3; break; case 3:/东西向红灯,南北向绿灯亮RED_A=0;YELLOW_A=1;GREEN_A=1;RED_B=1;YELLOW_B=1;GREEN_B=0;DelayMS(2000);Operation_Type=4; break; case 4:/南北向黄灯闪烁 5 次DelayMS(300); YELLOW_B=YELLOW_B;GREEN_B=1;if(+Flash_Count!=10) return;Flash_Count=0;Op

44、eration_Type=1; /主程序void main()while(1)Traffic_Light();06 单只数码管循环显示 09上海师范大学信息与机电工程学院倪继锋5单片机 C 语言程序设计实训 100 例-基于/* 名称:单只数码管循环显示 098051 和 PROTEUS 仿真案例*/说明:主程序中的循环语句反复将 09 的段码送至 P0 口,使数字 09 循环显示#include#include#define uchar unsigned char#define uint unsigned intuchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,

45、0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/延时void DelayMS(uint x)uchar t;while(x-) for(t=0;t120;t+);/主程序void main()uchar i=0;P0=0x00;while(1)P0=DSY_CODEi;i=(i+1)%10;DelayMS(300);07 8 只数码管滚动显示单个数字/* 名称:8 只数码管滚动显示单个数字说明:数码管从左到右依次滚动显示07,程序通过每次仅循环选通一只数码管*/#include#include#define uchar unsigned char#define uint

46、 unsigned intuchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /延时void DelayMS(uint x)uchar t;while(x-) for(t=0;t120;t+);上海师范大学信息与机电工程学院倪继锋6/主程序void main()单片机 C 语言程序设计实训 100 例-基于8051 和 PROTEUS 仿真案例uchar i,wei=0x80;while(1)for(i=0;i8;i+) P2=0xff; /关闭显示wei=_crol_(wei,1);P0=DSY_COD

47、Ei;发送数字段码P2=wei; /发送位码DelayMS(300); 08 8 只数码管动态显示多个不同字符/* 名称:8 只数码管动态显示多个不同字符说明:数码管动态扫描显示 07。*/#include#include#define uchar unsigned char#define uint unsigned int电路如上图uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /延时void DelayMS(uint x)uchar t;while(x-) for(t=0;t120;t+);/主程

48、序void main()uchar i,wei=0x80;while(1)for(i=0;i8;i+)P0=0xff; P0=DSY_CODEi;发送段码wei=_crol_(wei,1);上海师范大学信息与机电工程学院倪继锋7 单片机 C 语言程序设计实训 100 例-基于P2=wei; /发送位码DelayMS(2); 8051 和 PROTEUS 仿真案例09 8 只数码管闪烁显示数字串/* 名称:8 只数码管闪烁显示数字串电路如上图*/说明:数码管闪烁显示由 07 构成的一串数字本例用动态刷新法显示一串数字,在停止刷新时所有数字显示消失。#include#define uchar unsigned char#define uint unsigned int/段码表uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论