当前位置:首页 > 实验一 P1口霓虹灯实验(4学时)
湖北民族学院科技学院
信息工程学院
单片机原理实验报告
实验名称: P1口霓虹灯实验
专业班级 学 号 姓 名 指导教师
实验一 P1口霓虹灯实验(4学时)
一、实验目的
⑴了解实验仿真系统的硬件结构,熟练使用实验仿真软件; ⑵掌握MCS-51单片机P1口的基本结构和使用方法;
⑶学会用C51编写含分支和循环结构的程序。 二、实验预备知识
⑴P1口为准双向口,每一位都可独立地定义为输出线或输入线。
⑵本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。 三、实验内容
(1)在实验箱上完成:
P1作为输出口,接八只发光二极管,编写程序,使发光二极管按照如下顺序点亮:
开始→从左往右循环点亮→从右往左循环点亮→从左往右逐个点亮→从右往左逐个熄灭→2个发光二极管分别从中间往两边循环点亮→2个发光二极管分别从两边往中间循环点亮→全部点亮→全部熄灭→开始。
(2)用Proteus软件参照实验电路连线并仿真运行,得出与实验箱上相同的软件仿真结果。
所用元器件:单片机AT89C51、发光二极管LED-GREEN(RED、BLUE)、排阻或电阻RESPACK-8(RES)、8位缓冲器74LS244 参考仿真电路图:
四、程序框图
五、实验电路(只连图中粗实线)
六、实验步骤
P1.O~P1.7用插针连至L1~L8,运行程序后,观察发光二极管闪亮移位情况。 实验程序:#include
for(i=0;i<7;i++) #include
{
#define uchar unsigned char P1=_cror_(P1,1);
#define uint unsigned int //P1的值向右循环移动 void DelayMS(uint x) DelayMS(400); {
}
uchar i; for(i=0;i<7;i++) while(x--) { P1<<=1; {
DelayMS(400); for(i=0;i<120;i++); }
} P1=0x80;
}
DelayMS(400); //主程序 P1=0xc0; void main() DelayMS(400); {
P1=0xe0;
uchar i; DelayMS(400); P1=0xfe;
P1=0xf0;
DelayMS(400); DelayMS(400); while(1) P1=0xf8; {
DelayMS(400); for(i=0;i<7;i++) P1=0xfc;
{
DelayMS(400); P1=_crol_(P1,1); P1=0xfe;
//P1
DelayMS(400); 的值向左循环移动 P1=0xff;
DelayMS(400); DelayMS(400); }
for(i=0;i<2;i++)
七、思考
(1)在C51编程中用查表法实现相同的实验现象。(利用数组编程) 答:思考题源程序如下
{
P1=0xe7;
DelayMS(400); P1=0xdb;
DelayMS(400); P1=0xbd;
DelayMS(400); P1=0x7e;
DelayMS(400); P1=0xbd;
DelayMS(400); P1=0xdb;
DelayMS(400); }
P1=0xe7;
DelayMS(400); P1=0x00;
DelayMS(400); P1=0xff;
DelayMS(400); P1=0xfe;
DelayMS(400); } }
共分享92篇相关文档