1 / 15
文档名称:

单片机实验报告.doc

格式:doc   大小:85KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

单片机实验报告.doc

上传人:doc2088 2016/12/28 文件大小:85 KB

下载得到文件列表

单片机实验报告.doc

文档介绍

文档介绍:实验名称:跑马灯实验实验要求: 1 )学会使用 KEIL C51 的仿真调试环境以及仿真器的使用,并能使4 个灯全亮。 2) I/O 口实验:循环定时(用定时器做)点亮 4 个灯,即每 2秒闪烁点亮(亮1秒,灭1秒) 一个灯, 循环往复( 或叫跑马灯实验)。实验目的: 了解单片机的原理及其应用, 掌握单片机的最小系统设计, 掌握一门单片机的语言(汇编语言或单片机的 C 语言)。实验器材: 单片机综合仿真实验箱一台, PC 机一台。实验原理: 本实验采用的跑马灯实例由8个 LED 发光二极管组成,由 AT89S5 1 的 P0 口进行驱动操作, 具体电路设计如下图所示, P0 口的 8 个输出引脚分别接到了 8个 LED 发光二极管的阴极, LED 发光二极管的另一端由阻值为 470 欧的限流电阻上拉至电源 VCC 。跑马灯系统的 8 个限流电阻可以采用普通电阻也可以采用排阻, 使用排阻比较有利于节省 PCB 布板的空间。实验相关资料: 在 LED 发光二极管跑马灯发光与熄灭之间加入两个延时函数后, 便能够看到跑马灯按照预想的方式进行闪动了。在程序中定义了一个宏 LED_FLASH_T ,这个宏的数值就决定了 LED 发光二极管跑马灯闪动的频率。该值越大, 闪动的频率就越低; 该值越小, 闪动的频率就越高。在单片机中, 可以利用跑马灯来指示单片机的工作状态, 一般情况下, 需要指示的状态有正常工作状态和故障状态。为了指示单片机目前正常工作, 通常使用动态的跑马灯对正常状态进行指示, 以便能够通过观察直接从跑马灯的状态得知当前单片机正在正常运行, 没有出现“跑飞”或“死循环”的现象, 这在单片机调试过程中是十分有效的。通常使用一组不断动态交互的跑马灯样式来表示单片机正常运行, 跑马灯状态变换位于程序主体中的一个位置, 只要单片机中的程序在正常运行,跑马灯就不停地变化,指示目前程序还“活着”。实验源代码: 完成硬件设计之后即可开始跑马灯的软件设计, 软件设计的目标是使跑马灯能够按照设想的方式显示出不同的发光组合, 指示单片机系统不同的运行状态。下面详细讲述跑马灯的软件设计。实验时, - 对应的 LED 灯每 1 秒闪烁点亮一个,循环往复。选择的定时/ 计数器为 timer0 方式 1 ,定时初值( 65536-40000 )由 6 1 2 4 0 0 0 0 0 . 0 1 4 0 1 2 1 0 s m s ? ???确定,中断周期为 10ms 。#include"" int FLAG; int couter; void main() { P1= 0xff; FLAG = 0; TMOD = 0x01; TH1 = 0xb4; TL1 = 0x03; TR0 = 1; ET0 = 1; EA= 1; while(1) { if(couter == 20) { couter = 0; P1= ~(0x01 << FLAG++); }}} void timer0() interrupt 1 { couter++; if(FLAG == 8) FLAG = 0; } 实验名称: PCF8576 驱动的字符液晶上显示“ BENG 。”实验目的: 了解单片机的原理及其应用, 掌握单片机的最小系统设计, 掌握一门单片机的语言(汇编语言或单片机的 C 语言)。实验器材: 单片机综合仿真实验箱一台, PC 机一台。实验原理: 下图为 PCF8576 的管脚图: 实验代码: #include"" #include"" sbit SDA=P1^7; sbit SCL=P1^6; #define uchar unsigned char #define unit unsigned int extern void delay(unit x); extern void sta(); extern void stop(); extern void mack(); extern void mnack(); extern void cack(); extern void wrbyt(uchar shu); extern void wrbyt0(); extern void wrbyt1(); extern uchar rdbyt(); extern uchar wrnbyt(uchar slaw,uchar number,uchar ff[]); extern void rdnbyt (uchar number,uchar slar,uchar qq[]); void sta() { SDA=1; SCL=1; while(SCL==0){;} _nop_(); SDA=0;