教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

单片机程序源代码

来源:网络收集 时间:2026-09-09
导读: 第二章 任务一:闪烁广告灯的设计 利用89c51单片机的端口控制两个LED(D0和D1),编写程序,实现两个LED互闪。 #include #define uint unsigned int #define uchar unsigned char sbit LED1=P0^0; sbit LED2=P0^1; void delayms(uint ms) { uint i; while(ms

第二章

任务一:闪烁广告灯的设计

利用89c51单片机的端口控制两个LED(D0和D1),编写程序,实现两个LED互闪。 #include

#define uint unsigned int #define uchar unsigned char sbit LED1=P0^0; sbit LED2=P0^1; void delayms(uint ms) {

uint i; while(ms--) { for(i=0;i<120;i++); } }

void main() {

while(1) { LED1=0; LED2=1; delayms(500); LED1=1; LED2=0; delayms(500); } }

任务二:流水广告灯的设计

利用89c51单片机的端口控制8个LED(D0~D7)循环点亮,刚开始时D0点亮,延时片刻后,接着D1点亮,然后依次点亮D2->D3->D4->D5 ->D6->D7 ,然后再点亮D7->D6->D5->D4 ->D3->D2->D1->D0,重复循环。 #include #include #define uint unsigned int #define uchar unsigned char uint i;

uchar temp;

uint a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delayms(uint ms) {

while(ms--) { uint j;

for(j=0;j<120;j++); } }

void main() {

while(1) {

P0=0xfe; while(P0!=0x7f) { //P1=temp; //delayms(500); P0=_crol_(P0,1); delayms(250); }

temp=0x7f; while(P0!=0xfe) { P0=temp; delayms(500); temp=_cror_(temp,1); } } }

任务三:拉幕式与闭幕式广告灯的设计

利用89c51单片机的P0端口实现8个LED D0~D7的拉幕式与闭幕式广告灯设计。

拉幕式: 开始D0~D7全灭,延时片刻后首先D3和D4亮,其次是 D2和D5亮,再是D1和D6亮,最后是D0和D7亮。

闭幕式:开始D0~D7全亮,延时片刻后首先D0和D7灭,其次是 D1和D6灭,再是D2和D5灭,最后是D3和D4灭。 #include

#define uint unsigned int #define uchar unsigned char

uchar code table[]={0xe7,0xc3,0x81,0x00}; void delay(uint x) { uint i,j; for(i=x;i>0;i--) for(j=120;j>0;j--); }

void main()

{ uint i; while(1) { P1=0xff; delay(500); for(i=0;i<4;i++) { P1=table[i]; delay(500); } for(i=3;i>0;i--) { P1=table[i-1]; delay(500); } } }

任务四:复杂广告灯的设计

利用89c51单片机的端口实现8个LED(D0~D7)复杂广告灯的控制,要求显示规律为:正向流水->反向流水->隔灯闪烁3次->高四盏、低四盏闪烁2次->隔两盏闪烁3次,再重复循环。

#include

#define uint unsigned int #include void delayms(uint ms) {

uint i; while(ms--) { for(i=0;i<110;i++); } }

void main() {

uint i,j,xx[2]={0xaa,0xff},yy[2]={0xf0,0x0f},zz[2]={0xb6,0xff}; unsigned char aa; while(1) { aa=0xfe; for(i=0;i<7;i++) { P0=aa; aa=_crol_(aa,1);

delayms(500); } for(i=0;i<8;i++) { P0=aa; aa=_cror_(aa,1); delayms(500); } for(i=0;i<3;i++) for(j=0;j<2;j++) { P0=xx[j]; delayms(500); } for(i=0;i<2;i++) for(j=0;j<2;j++) { P0=yy[j] ; delayms(500); } for(i=0;i<3;i++) for(j=0;j<2;j++) { P0=zz[j] ; delayms(500); } } }

任务五:单个LED数码管显示设计

使用89c51的P0口作为输出口,外接LED数码管,编写程序,使数码管循环显示从0~9的加1计数。 #include

#define uint unsigned int #define uchar unsigned char

uchar table[10]={ 0XC0,0XF9,0XA4,0XB0, 0X99,0X92,0X82,0XF8, 0X80,0X90}; uint key=0; void int_int() { EA=1; IT0=1; EX0=1;

}

void count_num() interrupt 0 { if(key==9)key=0; else key++; }

void main() { int_int(); while(1) { P0=table[key]; } }

任务六:多个LED数码管显示设计

使用单片机P0和P2口作为输出口,外接一个8位LED数码管,编写程序,使数码管显示“872AF635”。 #include #include

#define uint unsigned int #define uchar unsigned char delay(ms) {

while(ms--) { int i;

for(i=0;i<110;i++); } }

main() {

uchar

a[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; uchar b[8]={0x08,0x07,0x02,0x0a,0x0f,0x06,0x03,0x05},j; uint i; while(1) { j=0x01;

for(i=0;i<8;i++) { P2=j; P0=a[b[i]]; j=_crol_(j,1); delay(3);

…… 此处隐藏:508字,全部文档内容请下载后查看。喜欢就下载吧 ……
单片机程序源代码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/604998.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)