当前位置:首页 » 课程大全 » 单片机简易课程设计

单片机简易课程设计

发布时间: 2020-11-28 00:05:41

Ⅰ 单片机课程设计:简易数字钟

20. 数字钟[★]
1. 实验任务

(1. 开机时,显示12::00的时间开始计时;

(2. P0.0/AD0控制“秒”的调整,每按一次加1秒;

(3. P0.1/AD1控制“分”的调整,每按一次加1分;

(4. P0.2/AD2控制“时”的调整,每按一次加1个小时;

#include <AT89X51.H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};
unsigned char dispbitcnt;

unsigned char second;
unsigned char minite;
unsigned char hour;
unsigned int tcnt;
unsigned char mstcnt;

unsigned char i,j;

void main(void)
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;

while(1)
{
if(P0_0==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_0==0)
{
second++;
if(second==60)
{
second=0;
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
while(P0_0==0);
}
}
if(P0_1==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_1==0)
{
minite++;
if(minite==60)
{
minite=0;
}
dispbuf[3]=minite%10;
dispbuf[4]=minite/10;
while(P0_1==0);
}
}
if(P0_2==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_2==0)
{
hour++;
if(hour==24)
{
hour=0;
}
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
while(P0_2==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
mstcnt++;
if(mstcnt==8)
{
mstcnt=0;
P1=dispcode[dispbuf[dispbitcnt]];
P3=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==8)
{
dispbitcnt=0;
}
}
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==60)
{
second=0;
minite++;
if(minite==60)
{
minite=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
dispbuf[3]=minite%10;
dispbuf[4]=minite/10;
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;

}

}

Ⅱ 单片机课程设计,哪个设计简单

单片机课程设计,最简单当然是最小系统,控制一个LED灯点亮或者闪烁。

Ⅲ 简易频率计设计(单片机课设)

要说也没什么难的,就是挺复杂,主要是输入信号的电压变化区间比较大,考虑的话那就要首先采集最高电压峰值,然后转换电平比较电压值来实现进一步的频率测量。如不考虑的话,电压的量程范围受 能测量 0.1V 的限制不能太高。不过你使用 较贵的 运放 可以忽略,比如 10元左右的 OP27。
使用 OP27 运放 正负5V 至 正负15V做电源 采用差分放大100或1000倍连接,输入端采用10M欧及100K欧电阻分压后分别输入到差分放大电路的两个输入端,差分放大的特点是 正输入 和负输入 比较 谁电势高输出谁,正输入电势高输出正并且放大100倍或1000倍电压最高到运放源电压正,负输入电势高则输出负并且放大100倍或1000倍电压最高到运放源电压负。其实只需要再这里弄两个光耦把正负运放源电压变成 单片机的 高低电平就OK了。采用10M欧和100K欧电阻分压后220V的交流电被分压到2.2V差,0.1V 的电压被分压到 0.001V差,没关系,我们的OP27能识别0.000002V的压差。一个周期,两个光耦会分别输出一次低电平,取其中一个接入到I/O 口 做中断,单片机调用自己定义的两个地址B到两个地址A并以两个地址A内容循环刷显数码管以100mS做一个周期,循环结束时对自己定义的两个地址B清零,中断产生时两个地址B加1,并注意进位。这样一来,两个地址B会在100mS内产生 一个周期加1的特点,如超过量程 自动跳转到 10mS做周期的循环去,同理,,,,,,频率越高就采用更短的循环周期。显示这里用数组查表显示即可。此法只可测频率电压范围可以为1000V 到 10mV 。频率视单片机的最高频率而定可到M级单位。

Ⅳ 求一个简单点的单片机课程设计实例

你是新学的吗,那样你可以用单片机编写一个时钟,可以加强一下中断,定时器的用法,而且网上也有很多例子,可以参考。

Ⅳ 课程设计:用51单片机设计一个简易计算器

‘哦啦啦啊呀呀有个子系统好吗啉了解我在不在’

Ⅵ 单片机课程设计

P1口接一个数码管,一个按键可以接在P3.2作外部中断。

Ⅶ 求一个简单的89c51单片机课程设计 什么设计都得不用太复杂...急急急急

/* 程序详细功能介绍:
* 监视按键K5(接在P3.3端口上),用发光二极管L0(接在单片机P0.0端口上)显示开关状态,
* 如果按住按键,则L1亮;松开按键,则L1熄灭。
* 开关状态的检测过程
* 单片机对开关状态的检测相对于单片机来说,是从单片机的P3.3端口输入信号,
* 而输入的信号只有高电平和低电平两种,当松开按键 K5 ,即输入端口悬空为高电平
* 当按住按键 K5 ,按键被接到地,即输入低电平
* 单片机可以采用JBBIT,REL或者是JNBBIT,REL指令来完成对开关状态的检测即可。
*/

#include <AT89X51.H>
sbit K1=P3^3;
sbit L1=P0^0;
void main(void)
{
while(1)
{
if(K1==0) // 如果K1=0,则灯亮
{
L1=0; //灯亮
}
else // K=1,则灯灭
{
L1=1; //灯灭
}
}
}

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919