单片机程序源代码
更新时间:2023-11-15 02:59:01 阅读量: 教育文库 文档下载
.
第二章
任务一:闪烁广告灯的设计
利用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
#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
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
#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);
.
.
TL0=(65536-50000)%6;//低8位赋初值 num=0; //num=58; }
void Incre_time() interrupt 0 {
time+=2; }
void Decre_time() interrupt 2 {
time-=2; }
void timer0() interrupt 1 {
num++;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; }
void main() {
init(); P0=aa ; while (1)
{ P0=0xfd ; //P0=aa;
if(num==(10+time)) {aa=_crol_(aa,1);num=0;} } }
任务八:PWM调光
假设单片机晶振频率为12MHz, 单片机P0,P2口作为输出口,外接一个2位LED数码管,P1.0外接LED,P3.2外接按键K1,P3.3外接按键K2,P3.7外接蜂鸣器。编写程序,每次按下按键K1时,LED数码管显示加1,LED变暗;每次按下按键K2时,LED数码管显示数据减1,LED变亮;当LED数码管显示为0A时,再次按下按键K1时,则蜂鸣器发出报警声。 任务九:简单电子频率计
假设单片机晶振频率为12MHz, 单片机P0,P2端口作为输出口,外接4位LED数码管。编写程序,测量由P3.4输入脉冲的频率。 #include
#define uint unsigned int #define uchar unsigned char uchar table[]={
0XC0,0XF9,0XA4,0XB0, 0X99,0X92,0X82,0XF8, 0X80,0X90};
.
.
uint num=0,num0=0;num1=0,num2=0,num3=0,count=0,new_num=0; void delayms(uint ms) {
uint i; while(ms--)
for(i=0;i<120;i++); }
void int_int() {
EA=1; EX1=1; IT1=1; TMOD=0X01; ET0=1;
TL0=(65535-62500)%6; TH0=(65535-62500)/256; }
void display() {
num3=new_num/1000;
num2=(new_num00)/100; num1=(new_num0)/10; num0=new_num; P2=0x08;
P0=table[num0]; delayms(1); P2=0X04;
P0=table[num1]; delayms(1); P2=0X02;
P0=table[num2]; delayms(1); P2=0X01;
P0=table[num3]; delayms(1); }
void key_key() interrupt 2 {
num++;
if(num==1) TR0=1; }
void timer() interrupt 1 {
.
.
TL0=(65535-62500)%6; TH0=(65535-62500)/256; count++;
if(count==16)//定时时间1s {
count=0; new_num=num; num=0; TR0=0; } }
void main() {
int_int(); while(1) {
display(); } }
第七章
任务一:甲机通过串口控制乙机LED显示状态
单片机甲机P1端口外接8位拨码开关;乙机P0外接8只LED。要求使用单片机串行通信,在查询状态下使单片机乙机8只LED能够显示单片机甲机8位拨码开关的状态。 任务二:甲机通过串口控制乙机计时
单片机甲机的P3.2外接按键K1,P3.3外接按键;单片机乙机P0、P2端口作为输出口,外接一个2位LED数码管。要求使用单片机串行通信,使甲机的按键K1作为乙机计时的“开始/暂停”控制按键,甲机的按键K2作为乙机计时的“复位”控制按键。 任务三:单片机双机通信
单片机甲机的P3.3外接按键K2,P0、P2端口作为输出口,外接一个2位LED数码管;乙机P3.3外接按键K1,P0端口外接8位LED。要求使用单片机串行通信,甲机按键K2每按下1次,乙机的LED移位1次;乙机K1每按下1次,甲机的LED数码管加1显示。 任务四:单片机与PC通信
单片机通过串行口向PC发送字符串,且能接收由PC发送过来的0~9的数字,并将接受的数字通过LED数码管显示出来。
.
正在阅读:
单片机程序源代码11-15
第一课 心,与健康同行教案05-09
《圆与锐角三角函数》教学反思01-05
快速提高英语阅读的三大绝招09-30
《燕山大学学位授予实施细则》修订说明04-26
宝石和玉石届的术语大全02-28
五上《掷一掷》教学设计及评课10-27
我想变成什么作文06-19
ANSYS程序的二次开发06-26
优秀员工家访流程04-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 单片机
- 源代码
- 程序
- 《我的信念》导学案
- 光电检测试题
- 项目管理理论与实务(建造师培训) - 图文
- 2017版《建设工程施工合同(示范文本)》(GF-2017-0201)
- 烈士陵园设计说明 2015.1.20
- 中国法制史古代律典简析
- “法在心中”小学生法律知识竞赛获奖名单
- 城市智能电网规划技术方法浅析
- 钢铁业现状(2)钢铁企业并购重组状况
- 增强基层组织战斗力是做好农村信访稳定工作的基础
- 化学兴趣小组活动记录
- 两票(工作票、操作票)管理制度
- 2019八年级数学上册第2章特殊三角形2.8直角三角形全等的判定练习(新版)浙教版
- 烟气流量
- 广西海上客船安全监督管理规定(试行)
- 2016尔雅通识课《幸福心理学》课后作业答案
- 《清明节,缅怀先烈》六年三班主题班会
- 企业偿债能力分析开题报告
- 信息检索基本方法教案分析
- Linux 实验合集