单片机实验(2)

2019-01-19 13:32

图4-1

#include

unsigned char SEGTAB[] = {

0x3F,0x06,0x5B,0x4F, 0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C, 0x39,0x5E,0x79,0x71, };

unsigned char KeyCnt=0; void main(void) {

P2=SEGTAB[KeyCnt/10]; P0=SEGTAB[KeyCnt];

IT0=1; EX0=1; EA=1;

while(1) { ; } }

void INT0_ISR(void) interrupt 0 {

if(0==P3_2) {

实验内容1仿真电路图

if(++KeyCnt==100)KeyCnt=0; P2=SEGTAB[KeyCnt/10]; P0=SEGTAB[KeyCnt]; } }

2、 如图4-2所示,利用AT89C51单片机的P1端口外接8个LED发光二极管,实现流

水灯,流水灯的速度为0.2~1秒之间可调,步进为0.2s,由外接在P3.2和P3.3引脚上的两个轻触开关实现调慢和调快功能(用中断方式实现按键功能),速度的档位通过P2端口外接的一个8位共阴LED数码管显示。

#include

unsigned char LEDTAB[] = {

0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, };

unsigned char SEGTAB[] = {

0x3F,0x06,0x5B,0x4F,0x66,0X6D,0x7D,0x07,0x7F,0x6F, };

void Delay10mS(unsigned char t) {

unsigned char i,j; do {

for(i=100;i>0;i--) for(j=100;j>0;j--); }

while(--t); }

unsigned char Speed = 20; void main(void) {

unsigned char i;

P2=SEGTAB[Speed/20]; IT0=1; EX0=1; IT1=1; EX1=1; EA=1;

while(1) {

for(i=0;i

void INT0_ISR(void) interrupt 0 {

if(0==P3_2) {

Speed+=20; if(Speed>100)Speed=100; P2=SEGTAB[Speed/20]; } }

void INT1_ISR(void) interrupt 2 {

if(0==P3_3) {

Speed-=20; if(Speed<20)Speed=20; P2=SEGTAB[Speed/20]; } }

实验五

1、 如图5-1所示,利用AT89C51单片机的定时器T0产生1KHz的方波信号由P3.7引脚

输出,通过连接到“OSCILLOSCOPE”虚拟示波器上查看显示的波形图。

#include void main(void) {

TMOD |= 0x01;

TH0=(65536-500)/256; TL0=(65536-500)%6; TR0=1;

while(1) { if(1==TF0) { TF0=0; TH0=(65536-500)/256; TL0=(65536-500)%6; P3_7=~P3_7; } } }

2、 如图5-2所示,利用AT89C51单片机的定时器T0产生1ms的动态数码管显示扫描

时间,驱动接在P2和P0端口上的4位共阴LED数码管,其中P2用于驱动共阴LED数码管的笔段A~H,P0用于驱动共阴LED数码管的位选端;采用定时器T0的溢出中断实现1ms定时。数码上显示自己的班号和学号的后2位数字,显示方式为“X-YY”,X为班号,YY为学号。并且显示的“-”闪烁频率为0.5秒。

#include

unsigned char SEGTAB[] = {

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, };

unsigned char DIGTAB[] = {

0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, };

unsigned char LEDBuffer[2]; unsigned char LEDPointer; void Delay(void) { unsigned char i,j; for(i=10;i>0;i--) for(j=100;j>0;j--); }

void INT0_ISR(void) interrupt 0 {

if(0==P3_2) { P2=SEGTAB[LEDBuffer[LEDPointer]]; P0=DIGTAB[LEDPointer]; } }

void main(void) { unsigned char Cnt=99; unsigned char msCnt=0;


单片机实验(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于我国上市公司股权激励存在的问题与对策的开题报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: