单片机的C语言程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机的C语言程序设计——一阶段
序号姓名方廷宇学号30802089
专业班级电信0802组号指导老师
一.实验目的
1.学习掌握单片机的C语言编程方法;
2.熟悉并掌握Protues仿真软件的按章,使用及调试方法;
3.熟悉keil c的编译环境使用及调试方法;
4.学习protell的画图
二.思考作业
1.设计一个LED灯1秒闪烁的程序,绘制电路图,用两种方法给出程序。
#include“reg51.h”
#define uchar unsigned char
#define uint unsigned int
Sbit P1_0=P1^0。
Void m(unsigned int d>
{ unsigned int i=0。
For(。d>0。d-->{
For(i=0。i<124。i++>
{。}
}
}
Void main(>
{ for(。。>
{P1_0=!P1_0。
m(1000>。}
}
#include"reg51.h"
sbit P1_0=P1^0。
void main(>
{int a=0。
P1=0xff。
TMOD=0x01。
TH0=(65536-20000>/256。
TL0=(65536-20000>%256。
TR0=1。
for(。。>
{
if(TF0==1>
{TF0=0。
TH0=(65536-20000>/256。
TL0=(65536-20000>%256。
a++。}
if(a==25>
{P1_0=!P1_0。
a=0。
}
}
}
2.用C语言设计流水灯的程序,绘制电路图,用两种方法给出程序#include”reg51.h”
#include”strins.h”
#define uchar unsigned char
#define uint unsigned int
Void m(unsigned int d>
{ unsigned int i=0。
For(。d>0。d-->
{
For(i=0。i<124。i++>
{。}
}
}
Void main(0
{unsigned char o=0xfe。
For(。。>
{P1=o。
o=_crol_(o,1>。
m(1000>。}
}
#include"reg51.h"
#define uchar unsigned char
uchar m=0,i=0。
sbit P3_0=P3^0。
void main(>
{
P1=0xff。
TMOD=0x01。
TH0=(65536-50000>/256。
TL0=(65537-50000>%256。
TR0=1。
EA=1。
ET0=1。
while(1>。}
void timer(> interrupt 1
{
TH0=(65536-50000>/256。
TL0=(65537-50000>%256。
m++。
if(m==20>{
m=0。
P3=~(0x01<<i>。
if(++i==8>
i=0。}
}
3.针对下图,用单片机C语言编程实现时钟,并利用Protues仿真演示。<1秒钟的定时使用定时器中断方式)
<1)硬件原理图
图1 定时电路原理图
<2)软件流程图
<3)程序清单<标注注释)
程序:#include"reg51.h"
int b=0,i=0,j=0。
int a[10]={0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x3F}。void main(>
{ P2=0x3f 。
P3=0x3f。
TMOD=0x01。
TH0=(65536-40000>/256。
TL0=(65536-40000>%256。
TR0=1。
EA=1。
ET0=1。
for(。。>
{。}
}
void timer(> interrupt 1
{
TH0=(65536-40000>/256。
TL0=(65536-40000>%256。
b++。
if(b==25>
{
b=0。
P3=a[i]。
i++。
if(i==10>{
i=0。
P2=a[j]。
j++。}
if(j==6>{
P2=0x3f。
j=0。
} }
}
2.针对图2,用单片机C语言编程按键按下,显示数据增加1,并用Protues仿真运行<1)硬件原理图