单片机课程设计题目及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目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 智能电子钟(LCD 显示) 1. 设计要求 以AT89C51单片机为核心,制作一个LCD 显示的智能电子钟: (1) 计时:秒、分、时、天、周、月、年。
(2) 闰年自动判别。
(3) 五路定时输出,可任意关断(最大可到16路)。
(4) 时间、月、日交替显示。
(5) 自定任意时刻自动开/关屏。
(6) 计时精度:误差≤1秒/月(具有微调设置) (7) 键盘采用动态扫描方式查询。
所有的查询、设置功能均由功能键K1、K2完成。
2. 工作原理 本设计采用市场上流行的时钟芯片DS1302进行制作。
DS1302是DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM ,可以通过串行接口与计算机进行通信,使得管脚数量减少。
实时时钟/日历电路能够计算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 电子时钟(LCD 显示) 1. 设计要求 以AT89C51单片机为核心的时钟,在LCD 显示器上显示当前的时间: 使用字符型LCD 显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
用4个功能键操作来设置当前时间。
功能键K1~K4功能如下。
⏹ K1—进入设置现在的时间。
⏹ K2—设置小时。
⏹ K3—设置分钟。
⏹ K4—确认完成设置。
程序执行后工作指示灯LED 闪动,表示程序开始执行,LCD 显示“00:00:00”,然后开始计时。
2. 实验原理 题目难点在于键盘的指令输入,由于每个按键都具有相应的一种或多种功能,程序中需要大量使用do{}while 或while{}循环结构,以检测是否有按键按下。
题目3 秒表 1. 设计要求 用AT89C51设计一个2位的LED 数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。
2. 实验原理 题目难点在于通过对键盘的扫描对时钟的走时/停止进行控制,项目采用定时器T0作为计时器,每10ms 发生一次中断,每100次中断加1s 。
在此期间,如“开始”按键按下,程序方将TR0置为1,从而开启中断,时钟开始走时;如复位”按键按下,程序将TR0置为0,同时将存储时间的变量清零,从而中断停止,并实现复位。
本题目采用专用数码管显示控制芯片MAX7219。
MAX7219是美国MAXIM 公司生产的串行输入/输出共阴极显示驱动器,该芯片最多可驱动8位7段数字LED 显示器或个LED 和条形图显示器。
其引脚图及引脚功能参见有关参考资料。
题目4 定时闹钟 1. 设计要求 使用AT89C51单片机结合字符型LCD 显示器设计一
个简易的定时闹钟LCD 时钟,若LCD 选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。
定时闹钟的基本功能如下: ⏹ 显示格式为“时时:分分”。
⏹ 由LED 闪动来做秒计数表示。
⏹ 一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。
⏹ 程序执行后工作指示灯LED 闪动,表示程序开始执行,LCD 显示“00:00”,按下操作键K1~K4动作如下:
(1) K1—设置现在的时间。
(2) K2—显示闹钟设置的时间。
(3) K3—设置闹铃的时间。
(4) K4—闹铃ON/OFF 的状态设置,设置为ON 时连续三次发出“哗”的一声,设置为OFF 发出“哗”的一声。
设置当前时间或闹铃时间如下。
(1) K1—时调整。
(2) K2—分调整。
(3)K3—设置完成。
(4) K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。
本项目的难点在于4个按键每个都具有两个功能,以最终实现菜单化的输入功能。
采用通过逐层嵌套的循环扫描,实现嵌套式的键盘输入。
以对小时的设置的流程为例,其流程如下页图。
题目5 音乐倒数计数器 1. 设计要求 利用AT89C51单片机结合字符型LCD 显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
定时闹钟的基本功能如下。
⏹ 字符型LCD (16 2)显示器。
⏹ 显示格式为“TIME 分分:秒秒”。
用4个按键操作来设置当前想要倒计数的时间。
一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
程序执行后工作指示灯LED 闪动,表示程序开始执行,按下操作键K1~K4动作如下。
K1—可调整倒计数的时间1~60分钟。
K2—设置倒计数的时间为5分钟,显示“0500”。
K3—设置倒计数的时间为10分钟,显示“1000”。
K4—设置倒计数的时间为20分钟,显示“2000”。
复位后LCD 的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD 上显示出设置画面。
此时,若: 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。
在此基础上,可将乐曲的简谱转化为单片机可以“识别”的“数组谱”,进一步加入对音长、休止符等的控制量后,可以实现音乐的播放。
题目6 基于数字温度传感器的数字温度计 1. 设计要求 利用数字温度传感器DS18B20与单片机结合来测
量温度。
利用数字温度传感器DS18B20测量温度信号,计算后在LED 数码管上显示相应的温度值。
其温度测量范围为−55℃~125℃,精确到0.5℃。
数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,用3位共阳极LED 数码管以串口传送数据,实现温度显示。
2. 实验原理
从温度传感器DS18B20可以很容易直接读取被测温度值,进行转换即满足设计要求。
DS18B20温度传感器是美国DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字读数方式。
DS18B20的性能如下。
独特的单线接口仅需要一个端口引脚进行通信。
多个DS18B20可以并联在串行传输的数据线上,实现多点组网功能。
无须外部器件。
可通过数据线供电,电压范围为3.0~5.5V 。
零待机功耗。
温度以9或12位的数字读数方式。
用户可定义报警设置。
报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。
负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
采用3引脚PR-35封装或8引脚SOIC 封装 题目7 基于热敏电阻的数字温度计 1. 设计要求 使用热敏电阻类的温度传感器件利用其感温效应,将随被测温度变化的电压或电流用单片机采集下来,将被测温度在显示器上显示出来: ⏹ 测量温度范围−50℃~110℃。
⏹ 精度误差小于0.5℃。
⏹ LED 数码直读显示。
2 . 实验原理 本题目使用铂热电阻PT100,其阻值会随着温度的变化而改变。
PT 后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。
厂家提供有
PT100在各温度下电阻值值的分度表,
在此可以近似取
电阻变化率为 0.385Ω/℃。
向PT100输入稳恒电流,再通过A/D 转换后测PT100两端电压,即得到PT100的电阻值,进而算出当前的温度值。
采用 2.55mA 的电流源对PT100进行供电,然后用运算放大器LM324搭建的同相放大电路将其电压信号放大10倍后输入到AD0804中。
利用电阻变化率0.385Ω/℃的特性,计算出当前温度值。
本题目测温误差主要由以下几点引发: ADC0804为8位ADC 芯片,精度有限;程序假定PT100为完全线性的器件,而即使是厂家推荐的线性值也会存在一定误差;运放电路并非绝对线性。
如使用12位ADC 芯片,采用“四线制”的PT100接法,采用查表法测定温度值,将极大提高温度的测量精度。
题目8 十字路口交通灯控制 1. 设计要求 设计一个十字路口交通灯控制器。
用单片机控制LED 灯模拟指示。
模拟东西方向的十字路口交通信号控制情况。
东西向通行时间为80s ,南北向通行时间为60s ,缓冲时间为3s 。
2. 实验原理 本项目为典型的LED 显示和中断定时电路。
利用定时器T0产生每10ms 一次的中断,每100次中断为1s 。
对两个方向分别显示红、绿、黄灯,已经相应的剩余时间即可。
值得注意的是,需要意识到,A 方向红灯时间=B 方向绿灯时间+黄灯缓冲时间这一常识。
本项目使用的MAX7219芯片使用方法请参考题目3
题目9 波形发生器设计
1. 设计要求
设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波
形发生器。
2. 实验原理
产生指定波形可以通过DAC 来实现,不同波形产生实质上是
对输出的二进制数字量进行相应改变来实现的。
本题目中,方波信
号是利用定时器中断产生的,每次中断时,将输出的信号按位反即
可;三角波信号是将输出的二进制数字信号依次加1,达到0xff 时
依次减1,并实时将数字信号经D/A 转换得到;锯齿波信号是将输
出的二进制数字信号依次加1,达到0xff 时置为0x00,并实时将数
字信号经D/A 转换得到的; 梯形波是将输出的二进制数字信号依次加1,达到0xff 时保持一段时间,然后依次减1直至0x00,并实时将数字信号经D/A 转换得到的; 正弦波是利用MATLAB 将正弦曲线均匀取样后,得到等间隔时刻的y 方向上的二进制数值,然后依次输出后经D/A 转换得到。
题目10 电容、电阻参数单片机测试系统的设计
1. 设计要求
设计一个能测量电容、电阻参数的测试系统。
2 实验原理
对电阻的测量,可将待测电阻与一标准电阻串联后接在+5V 的电
源上,根据串联分压原理,利用ADC 测定电阻两端电压后,即可
得到其阻值。
对电容的测量,可将其与已知阻值的电阻RA 和RB
组成基于NE555的多谐振荡器如下页图。
其产生的方波信号频率
为 :
故通过测定方波信号的频率可以比较精确的测定C 的
值。
测定方波信号频率的方法,请见题目11
题目11 数字频率计 1. 设计要求
设计一个以单片机为核心的频率测量装置。
使用AT89C51单片机的定时器/计数器的定时和计数功能,外部扩展6位LED 数码管,要求累计每秒进入单片机的外部脉冲个数,用LED 数码管显示出来。
(1)被测频率fx <110Hz ,采用测周法,显示频率×××. ×××;fx >110Hz ,采用测频法,显示频率××××××。
(2)利用键盘分段测量和自动分段测量。
(3)完成单脉冲测量,输入脉冲宽度范围是100μs ~0.1s 。
(4)显示脉冲宽度要求如下。
Tx <1000μs ,显示脉冲宽度×××。
Tx >1000μs ,显示脉冲宽度××××。
2. 实验原理
测量频率有测频法和测周法两种。
(1)测频法,利用外部电平变化引发的外部中断,测
算1s 内的波数,从而实现对频率的测定;
(2)测周法,通过测算某两次电平变化引发的中断之
间的时间,实现对频率的测定。
简而言之,测频法是直
接根据定义测定频率,测周法是通过测定周期间接测定
频率。
理论上,测频法适用于较高频率的测量,测周法适用于
较低频 率的测量。
经过调校,在测量低频信号时,本项目中测频法精
度已高于测 周法,故舍弃测周法,全量程采用测频法。
题目12 8位竞赛抢答器的设计 1.设计要求 以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0~
S7表示。
设置一个系统清除和抢答控制开关S ,开关由主持
人控制。
抢答器具有锁存与显示功能。
即选手按按钮,锁存
相应的编号,并在优先抢答选手的编号一直保持到主持
人将系统清除为止。
抢答器具有定时抢答功能,且一次抢答的时间由主
持人设定(如30秒)。
当主持人启动“开始”键后,定时器进行减计时,同
时扬声器发出短暂的声响,声响持续的时间为0.5s 左
右。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
)R 2C(R 1.44f B A +=
如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
2. 实验原理
通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,
时间加1(超过30时置0)。
同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED 上。
题目13 单词记忆测试器程序设计
1. 设计要求
设计一个以单片机为核心的单词记忆测试器:
实现单词的录入(为使程序具有可演示性,单词不少于10个)。
单词用按键控制依次在屏幕上显示,按键选择认识还是不认识,也可以直接进入下一个或者上一个。
单词背完后给出正确率。
2. 实验原理
本题目实质上是一个具有一定复杂程度键盘扫描程序,可
将单词存储在一个二维数组中,按“确定”键开始程序后,次显示0行的数组,即第一个单词。
之后按下“向上”按键,显示上一行数组,
即上一个单词;
按下“向下”按键,显示下一行数组,即下一个单词。
当显示的行
数超过9时,程序结束,并通过按“确认”的次数,计算出正确率。
题目14 数字电压表设计
1. 设计要求
以单片机为核心,设计一个数字电压表。
采用中断方式,对2路0~5V 的模拟电压进行循环采集,采集的数据送LED 显示,并存入内存。
超过界限时指示灯闪烁。
2. 实验原理
本题目本质上是以单片机为控制器,ADC0809为ADC 器件的AD 转换电路,设计要求的电压显示,是对ADC 采集所得信号的进一步处理。
为得到可读的电压值,需根据ADC 的原理,对采集所得的信号进行计算,并显示在LED 上。
本项目中ADC0809的参考电压为+5V ,
根据定义,采集所得的二进制信号addata 所指代的电压值为:
而若将其显示到小数点后两位,不考虑小数点的存在(将其乘以100),其计算的数值为:。
将小数点显示在第二位数码管上,即为实际的电压
本示例程序将1.25 V 和2.5 V 作为两路输入的报警值,反映在二进制数字上,分别为0x40和0x80。
当AD 结果超过这一数值时,将会出现二极管闪烁和蜂鸣器发声。
题目15 可编程作息时间控制器设计
1. 设计要求 设计一个以单片机为核心的可编程作息时间控制器:
按照给定的时间模拟控制,实现广播、上下课打铃、灯光控制(屏幕显示),同时具备日期和时钟显示。
2. 实验原理 本题目原理与题目4相同,程序是在题目4的基础上将定时闹钟改造为4路可调闹钟,从而实现打铃等功能。
当四路闹钟中的任一路到时,均会点亮灯、打铃。
如有需求,可对 程序进行调整,
增加闹钟的路数,及到时后的处理方式。
题目中4个按键的功能分别为:设置限制的时间/时的调整、显示闹钟设置的时间/分的调整、设置闹钟的时间/设置完成、闹钟更换。
题目16 节日彩灯控制器的设计
1. 设计要求
以单片机为核心,设计一个节日彩灯控制器:
P1.2—开始,按此键则灯开始流动(由上而下)。
P1.3—停止,按此键则停止流动,所有灯为暗。
P1.4—上,按此键则灯由上向下流动。
P1.5—下,按此键则灯由下向上流动。
2. 实验原理
本题目本质上是由按键控制功能的流水灯,LED 工
作的方式通过键盘的扫描实现。
其中的LED 采取共阳极接法,通过依次向连接LED 的I/O口送出低电平,可实现题目要求的功能。
3. 电路设计(Proteus 仿真通过)
本节日彩灯控制器电路原理图,如下页图所示,各按键功能与实验设计要求相同: V 5256
addata
⨯V 1.96addata V 5256
100
addata ⨯≈⨯⨯
目17 双机之间的串行通信设计
设计要求
两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设
定,可选的波特率为1200、2400、4800和9600bit/s。
串行口工作方
式为方式1的全双工串行通信。
实验原理
两个单片机之间进行通讯波特率的设定,最终归结到对定时计数器T1计
数初值TH1、TL1进行
定。
故本题目本质上是通过键盘扫描得到设定的波特率,从而载入相应的
T1计数初值TH1、TL1
现的。
示例程序中将0xaa从主机传输到从机,并显示在从机的数码管上实
现串口通讯的验证。
如串口通讯线路过长,可考虑采用MAX232进行电平转换,以延长传输
距离。
值得注意的是,为
减少计算载入初值时的误差,本项目最好采取11.0592MHz的晶振。
电路设计(Proteus仿真通过)
两个单片机之间的串行通信接口设计电路原理图,如下页图所示:
题目18 电子琴设计
1. 设计要求
设计一个电子琴。
利用所给键盘的1,2,3,4,5,
6,7,8八个键,能够发出8个不同的音调,并且要求
按下按键发声,松开延时一段时间停止,中间再按别的
键则发另一音调的声音。
2. 实验原理
当系统扫描到键盘上有键被按下,则快速检测出是
哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲输入到蜂鸣器后,就会发出相应的音调
如果在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音调。
关于发声原理,参见题目5。
3. 电路设计(Proteus 仿真通过)
本电子琴设计电路原理图,如下页图所示:
题目19 数字音乐盒的设计
1. 设计要求
以单片机为核心,设计一个数字音乐盒:
利用I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,
从而演奏乐曲(最少3首乐曲,每首不少于30s )。
采用LCD 显示信息。
a. 开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。
b. 可通过功能键选择乐曲、暂停、播放。
2. 电路设计
本数字音乐盒的电路设计原理图,如下图所示
题目20 单片机控制步进电机
1. 设计要求 采用单片机控制一个三相单三拍的步进电机工作。
步进电机的旋转方向由正反转控制信号控制。
步进电机的步数由键盘输入,可输入的步数分别为3、6、9、12、15、18、21、24和27步,且键盘具有键盘锁功能,当键盘上锁时,步进电机不接受输入步数,也不会运转。
只有当键盘锁打开并输入步数时,步进电机才开始工
作。
电机运转的时候有正转和反转指示灯指示。
电机在运转过程中,如果过热,则电机停止运转,
同时红色指示灯亮,同时警报响。
本题目的关键之处是:
如何生成控制步进电机的脉冲序列。
2. 实验原理
步进电机的不同驱动方式,都是在工作时,脉冲信
号按一定顺序轮流加到三相绕组上,从而实现不同的工
作状态。
由于通电顺序不同,其运行方式有三相单三相
拍、三相双三拍和三相单、双六拍三种(注意:上面“三相单三拍”中的“三相”指定子有三相绕组;“拍”是指定子绕组改变一次通电方式;“三拍”表示通电三次完成一
个循环。
“三相双三拍”中的“双”是指同时有两相绕组通电)。
3电路设计(Proteus 仿真通过)
本单片机控制步进电机电路原理图,如下页图所示
题目21 单片机控制直流电动机 1. 设计要求
采用单片机设计一个控制直流电机并测量转速的装置。
单片机扩展有A/D 转换芯片ADC0809和D/A 转换芯片DAC0832。
(1)通过改变A/D 输入端可变电阻来改变A/D 的输入电压,D/A 输入检测量大小,进而改变直流电机的转速。
(2)手动控制。
在键盘上设置两个按键—直流电动机加速键和直流电机减速键。
在手动状态下,每按一次键,电机的转速按照约定的速率改变。
(3)键盘列扫描(4 6)。
2. 实验原理
本题目难点是对直流电机的控制。
与步进电机类似,直流电机也可精确地控制旋转速度或转矩。
直流电机是通过两个磁场的互作用产生旋转。
其结构如下页图所示,固定部分(定子)上,装设了一对直流励磁的静止的主磁极N 和S ,在旋转部分(转子)上装设电枢铁心。
定子与转子之间有一气隙。
在电枢铁心上放置了由A 和X 两根导体连成的电枢线圈,线圈的首端和末端分别连到两个圆弧形的铜片上,此铜片称为换向片。
直流电机的速度与施加的电压成正比,输出转矩则与电流成正比。
由于必须在工作期间改变直流电机的速度,直流电机的控制是一个较困难的问题。
直流电机高效运行的最常见方法是施加一个 PWM (脉宽调制)方波,其占空比对应于所需速度。
电机起到一个低通滤波器作用,将PWM 信号转换为有效直流电平。
特别是对于
微处理器驱动的直流电机,由于PWM 信号相对容易产生,这种驱动方式使用的更为广泛。
本项目的示例程序为了能够演示DAC0832的使用,未使用PWM 驱动方式。
而是利用直流电机的速度与施加电压成正比的原理,通过滑动变阻器向ADC0809输入控制电压信号,经AD 后,输入到AT89C51中,AT89C51将此信号转发给DAC0832,通过功放电路放大后,驱动直流电机。
需要注意的是,本题目使用的Proteus 版本,未提供ADC0809的仿真模型,这里以引脚、功能与之相同的ADC0808代替。
同时,DAC0832也可以用引脚、功能相同的DAC0830代替。
ADC0809与DAC0832在教材中已有详细介绍,在此不再叙述。
按照其时序图,如下页图和后页图操作即可。
《单片机 C 语言程序设计实训 100 例---基于
8051 和PROTEUS 仿真》案例
《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例
第01篇基础程序设计
01 闪烁的LED
/* 名称:闪烁的LED
说明:LED 按设定的时间间隔闪烁
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P1^0;
//延时
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主程序
void main()
{
while(1)
{
LED=~LED;
DelayMS(150);
}
}
02 从左到右的流水灯
/* 名称:从左到右的流水灯
说明:接在P0 口的8 个LED
从左到右循环依次点亮,产生走
马灯效果
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int 上海师范大学信息与机电工程学院—倪继锋
1
//延时
void DelayMS(uint x) {
uchar i;
while(x--)
{ 《单片机 C 语言程序设计实训100 例---基
于
8051 和PROTEUS 仿真》案例
} }
for(i=0;i<120;i++);
//主程序
void main()
{
P0=0xfe;
while(1)
{
P0=_crol_(P0,1); //P0 的值向左循环移动
DelayMS(150);
}
}
03 8只LED左右来回点亮
/* 名称:8 只LED 左右来回点亮
说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主程序
void main()
{
uchar i;
P2=0x01;
while(1)
{ 上海师范大学信息与机电工程学院—倪继锋。