单片机实验C语言编程.doc

下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。

2.下载的文档,不会出现我们的网址水印。

3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。

文档包含非法信息?点此举报后获取现金奖励!

下载文档到电脑,查找使用更方便

14

积分

还剩页未读,继续阅读

关 键 词:单片机C语言

单片机c语言编程

C单片机C语言编程

单片机C语言实验

C 语言程序

资源描述:

流水灯

效果:发关二级管依次独个被点亮,一直循环下去。

C语言程序如下:

#include unsigned char i;

unsigned char temp;

void delay(void) //延时子程序

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void) //主程序

{

while(1) //循环条件永远为真,以下程序一直执行下去。

{

temp=0xfe;

P3=temp; //直接对I/O 口P3 赋值,使.P3.0 输出低点平。

delay(); //延时

for(i=1;i<8;i++) //实现灯的移动

{

temp=(temp<<1)|0x01; //P3 口I/O 轮流低电平

P3=temp;

delay(); //延时,肉眼可以看到

}

}

}

闪烁灯

效果:发光二极管维持一闪一闪的状态。

C语言程序如下:

#include /******************************************************************************

第一行是一个"文件包含"处理。

所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来,所以这里的程序虽然只有4 行,但C 编译器在处理的时候却要处理几十或几百行。这里程序中包含REG51.h文件的目的是为了要使用P1 这符号即通知C 编译器,程序中所写的P1 是指80C51 单片机的P1 端口而不是其它变量。

******************************************************************************/

void delay02s(void) //延时0.2 秒子程序

{

unsigned char i,j,k; //定义3 个无符号字符型数据。

for(i=20;i>0;i--) //作循环延时

for(j=20;j>0;j--)

for(k=248;k>0;k--);

}

void main(void) //每一个C 语言程序有且只有一个主函数,

{

while(1) //循环条件永远为真,以下程序一直执行下去。

{

P3_0=0; // I/O 口P3.0 输出低电平,小灯被点亮。

delay02s(); //延时经过0.2 秒。

P3_0=1; // I/O 口P3.0 输出高电平,小灯熄灭。

delay02s(); //延时经过0.2 秒。

}

}

按键识别

效果:按下开关,D1变亮并保持。再按开关,D1熄灭,并保持。

C语言程序如下:

#include sbit INT_0=P3^2; //定义按键的输入端注意此处按键判断使用的是扫

//描方式而表示中断判断方式

sbit D1=P3^0; //D1 小灯定义

void delay10ms(void) //延时程序

{

unsigned char i,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

key() /按键判断程序

{

if(INT_0==0) //判断是否按下键盘

{

delay10ms(); //延时,软件去干扰

if(INT_0==0) //确认按键按下

{

D1=!D1; //D1 亮灭交替变化

}

while(INT_0==0); //按键锁定,每按一次D1 只变化一次.

}

}

main()

{

while(1) //永远循环,扫描判断按键是否按下

{

key(); //对于此处CPU 对按键判断一直扫描;

}

}

按键中断识别

效果:一开始显示“0”,每按一次开关,显示的数字就加1。

C语言程序如下:

#include unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char dispcount=0; //计数

sbit gewei=P3^1; //个位选通定义

sbit shiwei=P3^0; //十位选通定义

void Delay(unsigned int tc) //延时程序

{

while( tc != 0 )

{

unsigned int i;

for(i=0; i<100; i++);

tc--;

}

}

void ExtInt0() interrupt 0 //中断服务程序

{

dispcount++;

if (dispcount==100)

{dispcount=0;}

}

void LED( ) //LED显示函数

{

if(dispcount>=10) //显示两位数

{

shiwei=1;

P2=table[dispcount/10];

Delay(8);

shiwei=0;

gewei=1;

P2=table[dispcount%10];

Delay(5);

gewei=0;

}

else //显示一位数

{

shiwei=0;

gewei=1;

P2=table[dispcount];

Delay(8);

}

}

void main()

{ TCON=0x01; // INT0为0 电平触发 为1负边沿触发

IE=0x81; //开总中断和允许INT0外部中断

while(1) //循环执行

{ LED(); } //调用显示函数

}

4×4 矩阵式键盘识别

效果:按下不同的按键将显示不同的内容,从右到左,从上到下,按键分别代表 0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F.

C语言程序如下:

#include unsigned char code seg7code[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};

unsigned char k;

void delay10ms(void) //延时程序

{

unsigned char i,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

void Getch ( )

{

unsigned char X,Y,Z;

P2=0xff;

P2=0x0f; //先对P2 置数行扫描

if(P2!=0x0f) //判断是否有键按下

{

delay10ms(); //延时,软件去干扰

if(P2!=0x0f) //确认按键按下;

{

X=P2; //保存行扫描时有键按下时状态

P2=0xf0; //列扫描

Y=P2; //保存列扫描时有键按下时状态

Z=X|Y; //取出键值

switch ( Z ) //判断键值(那一个键按下)

{

case 0x77: k=0; break; //对键值赋值

case 0x7b: k=1; break;

case 0x7d: k=2; break;

case 0x7e: k=3; break;

case 0xb7: k=4; break;

case 0xbb: k=5; break;

case 0xbd: k=6; break;

case 0xbe: k=7; break;

case 0xd7: k=8; break;

case 0xdb: k=9; break;

case 0xdd: k=10;break;

case 0xde: k=11;break;

case 0xe7: k=12;break;

case 0xeb: k=13;break;

case 0xed: k=14;break;

case 0xee: k=15;break;

}

}

}

}

void main(void)

{

while(1)

{ P2=0xff;

Getch();

P3=seg7code[k]; //查表LED 输出

P1=0xf0; //输出相同的四位数据。

}

}

数码管动态显示

效果:液晶显示器显示“1234”。

C语言程序如下:

#include sbit qian=P1^0;

sbit bai=P1^1;

sbit shi=P1^2;

sbit ge=P1^3;

code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f}; //显示段码

void Delay(unsigned int tc) //延时程序

{

while( tc != 0 ) //如果tc 为0 则终止延时

{

unsigned int i; //局部正整数变量i

for(i=0; i<100; i++); //执行400 次将耗时1 毫秒

tc--; //tc 计数减一

}

}

void Led(int date) //显示函数

{

qian=0; //P1.0 输出低电平,选通千位数

P3=seg7code[date/1000]; //取出千位数,查表,输出。

Delay(10); //延时

qian=1; //销隐

bai=0; //P1.1 输出低电平,选通百位数

P3=seg7code[date%1000/100]; //取出百位数,查表,输出。

Delay(10); //延时

bai=1; //销隐

shi=0; //P1.2 输出低电平,选通十位数

P3=seg7code[date%100/10]; //取出十位数,查表,输出。

Delay(10); //延时

shi=1; //销隐

ge=0; //P1.3 输出低电平,选通十位数

P3=seg7code[date%10]; //取出个位数,查表,输出。

Delay(10); //延时

ge=1; //销隐

}

main()

{

int display_date=1234; //定义并赋值要显示的数据

while(1)

{

Led(display_date);//调用显示函数显示数据display_date

}

}

数码管静态显示

效果:液晶显示器最左边第一位将显示“4”

C语言程序如下:

#include sbit GE=P1^3;

code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0x7d,0x07,0x7f,0x6f}; //显示段码

main()

{

unsigned char display_date=4; //定义并赋值要显示的数据

while(1)

{

P3=seg7code[display_date]; //查表,输出

GE=0; //P1^3 为低电平,相当于把数码管的4H 端接地

}

}

展开阅读全文

温馨提示:

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。

2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。

3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。

4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。

5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。

6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。

7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:单片机实验C语言编程.doc

链接地址:https://www.renrendoc.com/p-18300669.html

单片机c语言实验,单片机实验C语言编程.doc相关推荐

  1. linux系统编程界面实验报告,操作系统实验报告-Linux操作使用编程.doc

    操作系统实验报告-Linux操作使用编程 实 验 报 告( 2012/ 2013 学年 第二学期) 课程名称操 作 系 统A实验名称Linux操作.使用.编程实验时间2013年 5 月 6日指导单位计 ...

  2. c语言跑马灯实验报告,单片机跑马灯实验

    一.实验目的 1. 熟悉HNIST-2型单片机系统相关硬件电路,程序下载方法: 2. 掌握采用汇编语言与C语言开发单片机系统的程序结构: 3. 掌握51系列单片机通用I/O口的使用. 二.实验前准备 ...

  3. 单片机c语言数码显示实验报告,单片机动态显示技术实验报告.doc

    桂林电子科技大学 实验报告 开 课 单 位 适用年级.专业 机械 课 程 序 号 课 程 代 码 实 验 名 称 <动态显示技术> 动态显示技术实验报告 一.实验目的 1.掌握动态显示技术 ...

  4. 51单片机c语言led灯闪烁实验报告,实验一LED灯闪烁.doc

    实验一LED灯闪烁.doc 单片机小系统设计与制作实验报告姓名 李文浩 学号 1423102 班级 14级电仪维 指导教师 陈雪莲 实验一 八个LED灯闪烁一.实验要求仿照图1-1在Proteus中绘 ...

  5. 单片机实验秒表设计程序c语言,单片机数字计时器的系统设计与型式试验

    摘要:设计了一种以PIC16F887单片机为控制器.LED数码管动态显示的数字计时器.详细介绍了整个系统的工作原理.硬件设计.软件程序设计和型式试验过程.软件程序采用C语言编写,便于移植与升级.计时器 ...

  6. 单片机实验:使用c语言实现LED流水灯

    单片机实验:使用c语言实现LED流水灯 目的:实现一个简单的流水灯程序 仿真软件:Portues 编程软件:Keil Portues 原理图绘制: 需要用到的模块: 单片机:AT89C51 电容:04 ...

  7. 单片机模数转换实验c语言程序,单片机实验AD转换实验

    <单片机实验AD转换实验>由会员分享,可在线阅读,更多相关<单片机实验AD转换实验(5页珍藏版)>请在人人文库网上搜索. 1.实验报告课程名称: 单片机原理及应用 实验项目: ...

  8. 单片机c语言ad与da转换实验报告,单片机AD与DA转换实验报告.docx

    单片机AD与DA转换实验报告.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3 ...

  9. 散转程序c语言,单片机 散转程序设计 软件实验

    单片机 散转程序设计 软件实验 实验九散转程序设计 一.实验目的 1.进一步熟悉MCS-51指令系统和汇编语言程序设计. 2.学会用三种不同的方法设计散转程序,并掌握它们的区别. 二.实验内容 方法一 ...

最新文章

  1. 三十六、贪心算法--集合覆盖问题
  2. 运行 vue 报node错
  3. (*长期更新)软考网络工程师学习笔记——Section 17 交换技术原理
  4. Python爬虫解析网页的4种方式 值得收藏
  5. List列表的万能的适配器
  6. android des ecb加密_Android逆向 | 基础知识篇 01
  7. 数学中的几种共轭类型
  8. 计算机报名无法支付怎么弄,软考官网报名成功了提示不能进行网上支付
  9. 童年计算机课企鹅游戏,这些童年游戏,你一定玩过
  10. clipboard.js 实现动态获取内容并复制到剪切板
  11. HBuilder详细安装教程
  12. 消息队列消息丢失和消息重复发送的处理策略
  13. css-背景渐变色动画
  14. “不减持”过时了 这些票的股东都在增持
  15. Boundary Smoothing for NER
  16. 诚之和:波司登羽绒服都上万了 “土味羽绒服”高溢价引争议
  17. ROWNUM 与 ROW_NUMBER()OVER() 的区别
  18. python 学习笔记 02
  19. 分享100本Python机器学习、深度学习电子书
  20. 8051单片机的串行通信

热门文章

  1. [编写高质量代码:改善java程序的151个建议]建议31-在接口中不要存在实现代码...
  2. Android 禁止更换桌面,Android中如何禁用其他应用,并且不在桌面显示
  3. python登录接口代码_(转载)Python 的 OAuth 登录接口 python-oauth2
  4. 密码必须至少为6个字符_【每日一题】| 常见的编码方式之栅栏密码
  5. oa部署mysql_oa系统部署
  6. wifi协议_冷知识科普 手机上的Wifi/WLAN究竟有何区别
  7. iview table 自定义列_案例 | iview中Table:拖拽适配列、自定义固定列、合并行
  8. sql查询所有商品的信息_属于菜鸟的sql 干货(7)
  9. php 计算字符串相邻最大重复数_php查找字符串出现次数的方法
  10. nfine框架 上传文件_网站服务器Nginx运行环境,后台文件上传超出Nginx的最大值...