单片机学习程序.docx
- 文档编号:5762442
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:33
- 大小:21.09KB
单片机学习程序.docx
《单片机学习程序.docx》由会员分享,可在线阅读,更多相关《单片机学习程序.docx(33页珍藏版)》请在冰豆网上搜索。
单片机学习程序
/******************************************************************************
*普中科技
--------------------------------------------------------------------------------
*实验名:
LED闪烁的简单试验
*实验说明:
得到8盏LED交替亮灭的实验效果
*连接方式:
见连接图
*注意:
******************************************************************************/
//--包含你要使用的头文件--//
#include
//--声明全局函数--//
voidDelay10ms(unsignedintc);//延时10ms
/*******************************************************************************函数名:
main
*函数功能:
主函数
*输入:
无
*输出:
无
******************************************************************************/
voidmain()
{
while
(1)
{
//--数字前面加0x表示该数是十六进制的数,0x00就是十六进制的00--//
//--P2口一共有8个IO口,即从P2.0到P2.7,而0x00二进制就是00000000--//
//--效果就是P2.0到P2.7都是0,即低电平。
而如果你想给P2.1口赋高电平时--//
//--二进制就是00000001,就是十六进制0x01.--//
P0=0x00;//置P0口为低电平
Delay10ms(500);//调用延时程序,修改括号里面的值可以调整延时时间
P0=0xff;//置P0口为高电平
Delay10ms(50);//调用延时程序
}
}
/******************************************************************************
*函数名:
Delay10ms
*函数功能:
延时函数,延时10ms
*输入:
无
*输出:
无
******************************************************************************/
voidDelay10ms(unsignedintc)//误差0us
{
unsignedchara,b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for(;c>0;c--)
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}
/***************************************************************************普中科技
--------------------------------------------------------------------------------
*实验名:
LED二进制加法显示实验
*实验说明:
LED灯做二进制加1显示
*连接方式:
见接线图
*注意:
******************************************************************************/
#include
//--声明全局函数--//
voidDelay10ms(unsignedintc);//延时10ms
/******************************************************************************
*函数名:
main
*函数功能:
主函数
*输入:
无
*输出:
无
******************************************************************************/
voidmain()
{
unsignedcharNum=0x00;
while
(1)
{
P0=Num;
Delay10ms(50);//延时函数
Num++;
}
}
/******************************************************************************
*函数名:
Delay10ms
*函数功能:
延时函数,延时10ms
*输入:
无
*输出:
无
******************************************************************************/
voidDelay10ms(unsignedintc)//误差0us
{
unsignedchara,b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for(;c>0;c--)
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}
/*******************************************************************************
*
*普中科技
--------------------------------------------------------------------------------
*实验名:
流水灯实验
*实验说明:
延时实现LED流水灯效果P2口八个灯作跑马灯。
采用了寄存器存中间数
*连接方式:
见接线图
*注意:
*******************************************************************************/
//--包含你要使用的头文件
#include
#include
//--声明全局函数--//
voidDelay10ms(unsignedintc);//延时10ms
/*******************************************************************************
*函数名:
main
*函数功能:
主函数
*输入:
无
*输出:
无
*******************************************************************************/
main()
{
unsignedcharLED;
LED=0xfe;//0xfe=11111110
while
(1)
{
P0=LED;
Delay10ms(50);
LED=LED<<1;//循环右移1位,点亮下一个LED"<<"为左移位
if(P0==0x00)//当它全灭的时候,重新赋值
{
LED=0xfe;//0xfe=11111110
}
}
}
/*******************************************************************************
*函数名:
Delay10ms
*函数功能:
延时函数,延时10ms
*输入:
无
*输出:
无
*******************************************************************************/
voidDelay10ms(unsignedintc)//误差0us
{
unsignedchara,b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for(;c>0;c--)
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}
/*******************************************************************************
*
*普中科技
--------------------------------------------------------------------------------
*实验名:
LED二进制加法显示实验
*实验说明:
LED灯做右移跑马灯
*连接方式:
见接线图
*注意:
*******************************************************************************/
//--包含你要使用的头文件
#include
#include
//--声明全局函数--//
voidDelay10ms(unsignedintc);//延时10ms
/*******************************************************************************
*函数名:
main
*函数功能:
主函数
*输入:
无
*输出:
无
*******************************************************************************/
voidmain(void)
{
unsignedcharLED;
LED=0xFE;
while
(1)
{
P0=LED;
Delay10ms(50);
LED=_crol_(LED,1);//循环右移1位,点亮下一个LED此函数于库函数
}
}
/*******************************************************************************
*函数名:
Delay10ms
*函数功能:
延时函数,延时10ms
*输入:
无
*输出:
无
*******************************************************************************/
voidDelay10ms(unsignedintc)//误差0us
{
unsignedchara,b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for(;c>0;c--)
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}
/*******************************************************************************
*
*普中科技
--------------------------------------------------------------------------------
*实验名:
跑马灯实验
*实验说明:
LED灯做跑马灯左右移动
*连接方式:
见接线图
*注意:
*******************************************************************************/
//--包含你要使用的头文件
#include
//--声明全局函数--//
voidDelay10ms(unsignedintc);//延时10ms
//--声明一个全局变量--//
unsignedcharLED;
/*******************************************************************************
*函数名:
main
*函数功能:
主函数
*输入:
无
*输出:
无
*******************************************************************************/
voidmain()
{
unsignedchari;
//--首先赋值LED--//
LED=0xFE;
while
(1)
{
//--LED往左闪烁--//
for(i=0;i<7;i++)
{
//--将LED的值赋给P2口--//
P0=LED;
Delay10ms(50);//延时一下,为了让灯有持续点亮的时间
LED=LED<<1;//将LED里面的值左移一位,然后重新赋给LED
LED=LED|0x01;//移位后,前面的位为高电平
}
//--LED向右显示--//
for(i=0;i<7;i++)
{
P0=LED;
Delay10ms(50);
LED=LED>>1;//右移
LED=LED|0x80;//移位后,后面的位为高电平
}
}
}
/*******************************************************************************
*函数名:
Delay10ms
*函数功能:
延时函数,延时10ms
*输入:
无
*输出:
无
*******************************************************************************/
voidDelay10ms(unsignedintc)//误差0us
{
unsignedchara,b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for(;c>0;c--)
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}
/*******************************************************************************
*
*普中科技
--------------------------------------------------------------------------------
*实验名:
独立按键控制LED实验
*实验说明:
每个按键控制一个LED
*连接方式:
见接线图
*注意:
*******************************************************************************/
//--包含你要使用的头文件--//
#include
#include
//--定义要使用的IO口--//
#defineGPIO_KEYP1//独立键盘用P1口
#defineGPIO_LEDP0//led使用P0口
//--声明全局函数--//
voidDelay10ms(unsignedintc);//延时10ms
unsignedcharKey_Scan();
/*******************************************************************************
*函数名:
main
*函数功能:
主函数
*输入:
无
*输出:
无
*******************************************************************************/
voidmain(void)
{
unsignedcharledValue,keyNum;
ledValue=0x01;
while
(1)
{
keyNum=Key_Scan();//扫描键盘
switch(keyNum)
{
case(0xFE):
//返回按键K1的数据
ledValue=0x01;
break;
case(0xFD):
//返回按键K2的数据
ledValue=0x02;
break;
case(0xFB):
//返回按键K3的数据
ledValue=0x04;
break;
case(0xF7):
//返回按键K4的数据
ledValue=0x08;
break;
case(0xEF):
//返回按键K5的数据
ledValue=0x10;
break;
case(0xDF):
//返回按键K6的数据
ledValue=0x20;
break;
case(0xBF):
//返回按键K7的数据
ledValue=0x40;
break;
case(0x7F):
//返回按键K8的数据
ledValue=0x80;
break;
default:
break;
}
GPIO_LED=ledValue;//点亮LED灯
}
}
/*******************************************************************************
*函数名:
Key_Scan()
*函数功能:
扫描键盘
*输入:
无
*输出:
读取到的键值
*******************************************************************************/
unsignedcharKey_Scan()
{
unsignedcharkeyValue=0,i;//保存键值
//--检测按键1--//
if(GPIO_KEY!
=0xFF)//检测按键K1是否按下
{
Delay10ms
(1);//消除抖动
if(GPIO_KEY!
=0xFF)//再次检测按键是否按下
{
keyValue=GPIO_KEY;
i=0;
while((i<50)&&(GPIO_KEY!
=0xFF))//检测按键是否松开
{
Delay10ms
(1);
i++;
}
}
}
returnkeyValue;//将读取到键值的值返回
}
/*******************************************************************************
*函数名:
Delay10ms
*函数功能:
延时函数,延时10ms
*输入:
无
*输出:
无
*******************************************************************************/
voidDelay10ms(unsignedintc)//误差0us
{
unsignedchara,b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for(;c>0;c--)
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}
/*******************************************************************************
*
*普中科技
--------------------------------------------------------------------------------
*实验名:
LED显示键值实验
*实验说明:
8个LED显示读取的8个按键的值
*连接方式:
见接线图
*注意:
*******************************************************************************/
//--包含你要使用的头文件--//
#include
#include
//--定义要使用的IO口--//
#defineGPIO_KEYP1//独立键盘用P1口
#defineGPIO_LEDP0//led使用P0口
//--定义全局函数--//
voidDelay10ms(unsignedintc);//延时10ms
unsignedcharKey_Scan();
/***********
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 学习 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)