c语言单片机秒表程序,单片机秒表程序
单片机秒表程序
来源:--
作者:--
浏览:1733
时间:2016-08-10 14:18
标签:
摘要:
单片机 秒表程序
该源程序已在实验板上调试通过,读者可直接引用,并可利用软件编程的灵活性,加以拓展,实现更为复杂的功能。 #include #include //此程序实现计时秒表功能,时钟显示范围00.00~99.99秒,分辨度:0.0
单片机 秒表程序
该源程序已在实验板上调试通过,读者可直接引用,并可利用软件编程的灵活性,加以拓展,实现更为复杂的功能。
#include
#include
//此程序实现计时秒表功能,时钟显示范围00.00~99.99秒,分辨度:0.01秒
unsigned char s0,s1,s2,s3;
//定义0.01 秒、0.1 秒、1秒、10秒计时器
unsigned char s[4];
unsigned char k ,data ,sreg;
unsigned int i;
const table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};
//不带小数点的显示段码表
const table0[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};
//带小数点的显示段码表
//TMR0初始化子程序
void tmint()
{
T0CS=0; //TMR0工作于定时器方式
PSA=1; //TMR0不用分频
T0IF=0; //清除TMR0的中断标志
T0IE=1; //TMR0中断允许
}
//spi显示初始化子程序
void SPIINIT()
{
PIR1=0;
SSPCON=0x30;
SSPSTAT=0xC0;
//设置SPI的控制方式,允许SSP方式,并且时钟下降沿发送。与"74HC595,当其
//SCLK从低到高跳变时,串行输入寄存器"的特点相对应
TRISC=0xD7; //SDO引脚为输出,SCK引脚为输出
TRISA5=0; //RA5引脚置为输出,输出显示锁存信号
}
//系统其它部分初始化子程序
void initial()
{
TRISB1=0;
TRISB2=0;
TRISB4=1;
TRISB5=1; //设置与键盘有关的各口的输入输出方式
RB1=0;
RB2=0; //建立键盘扫描的初始条件
}
//SPI传输数据子程序
void SPILED(data)
{
SSPBUF=data; //启动发送
do {
;
}while(SSPIF==0);
SSPIF=0;
}
//显示子程序,显示4位数
void dispaly()
{
RA5=0; //准备锁存
for(k=4;k>0;k--)
{
data=s[k-1];
if(k==3) data=table0[data];//第二位需要显示小数点
else data=table[data];
SPILED(data); //发送显示段码
}
for(k=0;k<4;k++)
{
data=0xFF;
SPILED(data); //连续发送4个DARK,使显示好看一些
}
RA5=1; //最后给锁存信号,代表显示任务完成
}
//软件延时子程序
void DELAY()
{
for(i = 3553; --i ;) continue;
}
//键扫描子程序
void KEYSCAN()
{
while(1){
while(1)
{
dispaly(); //调用一次显示子程序
if ((RB5==0)||(RB4==0)) break;
}
DELAY(); //若有键按下,则软件延时
if ((RB5==0)||(RB4==0)) break;//若还有键按下,则终止循环扫描,返回
}
}
//等键松开子程序
void keyrelax()
{
while(1){
dispaly(); //调用一次显示子程序
if ((RB5==1)&&(RB4==1)) break;
} //为防止按键过于灵敏,每次等键松开才返回
}
//系统赋值初始化子程序
void inizhi()
{
s0=0x00;
s[0]=s0;
s1=0x00;
s[1]=s1;
s2=0x00;
s[2]=s2;
s3=0x00;
s[3]=s3; //s0=s1=s2=s3=0,并放入显示缓冲数组中
sreg=0x00; //tmr0中断次数寄存器清0
}
//中断服务程序
void interrupt clkint(void)
{
TMR0=0X13; //对TMR0写入一个调整值。因为写入TMR0后接着的
//两个周期不能增量,中断需要3个周期的响应时间,
//以及C语言自动进行现场保护要消耗周期
T0IF=0; //清除中断标志
CLRWDT();
sreg=sreg+1; //中断计数器加1
if(sreg==40) //中断次数为40后,才对S0,S1,S2,S3 操作
{
sreg=0;
s0=s0+1;
if(s0==10){
s0=0 ;
s1=s1+1;
if(s1==10){
s1=0 ;
s2=s2+1;
if(s2==10){
s2=0;
s3=s3+1;
if(s3==10) s3=0 ;
}
}
}
}
s[0]=s0;
s[1]=s1;
s[2]=s2;
s[3]=s3;
}
//主程序
main()
{
OPTION=0XFF;
tmint(); //TMR0初始化
SPIINIT(); //spi显示初始化
initial(); //系统其它部分初始化
di(); //总中断禁止
while(1) {
inizhi(); //系统赋值初始化
KEYSCAN(); //键扫描,直到开始键按下
keyrelax(); //等键松开
ei(); //总中断允许
KEYSCAN(); //键扫描直到停止键按下,在键扫描时有显示
keyrelax() ; //等键松开
di(); //总中断禁止
KEYSCAN(); //键扫描到清0键按下,在键扫描时有显示
keyrelax() ; //等键松开
}
}
分享到:
c语言单片机秒表程序,单片机秒表程序相关推荐
- 用1602液晶显示秒表功能 c语言编写程序 单片机 加注释,单片机课程设计--1602LCD显示的秒表.doc...
单片机课程设计 题目: 1602LCD显示的秒表 系别/班级:信息工程系11级嵌入式技术与应用专业 小组成员: 小组成员学号: 指导老师: 目录 1 单片机原理-------------------3 ...
- 用c语言编写的99秒表,单片机00到99秒表的课程设计 含源程序,仿真图,文档
这是我上个月做的单片机秒表课程设计,这个课程设计是实现00到99秒的一个秒表, 并且有开始和复位功能, 用了一个星期的时间, 附件里面包含秒表的单片机源程序,proteus仿真电路图和课设文档, 都是 ...
- 51单片机c语言秒表,C51单片机秒表计时(C语言).doc
C51单片机秒表计时(C语言).doc 南开大学滨海学院C51嵌入式软件设计(C语言) 题目计时秒表 l 功能描述本设计实现在99秒内的秒表计时,一个按键实现开始.暂停.复位.l 原理概述P1接四位七 ...
- C语言 int 转单精度浮点,单精度浮点数与十六进制转换 C语言程序 单片机也可用...
单精度浮点数与十六进制转换 C语言程序 单片机也可用 #include float Hex_To_Decimal(unsigned char *Byte,int num)//十六进制到浮点数 { // ...
- c语言单片机循环程序,单片机c语言教程:C51循环语句
TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8; TI = 1; TR1 = 1; //启动定时器 for (I=1; I=10; I++) //这里能设初始 ...
- DSB算法C语言程序,单片机中使用DSB温度传感器C语言程序.doc
单片机中使用DSB温度传感器C语言程序 单片机中使用DS18B20温度传感器C语言程序(参考1) /************************************************** ...
- 单片机c语言led灯闪烁程序,单片机LED灯闪烁程序
点亮 LED 小灯的程序我们第二课完成了,就是让 LED = 0.熄灭小灯的程序也很简单,就是 LED = 1.点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点亮和熄灭小灯,就成了闪烁 ...
- 52单片机led灯闪烁c语言程序,单片机LED灯闪烁程序
原标题:单片机LED灯闪烁程序 点亮 小灯的程序我们第二课完成了,就是让 LED = 0.熄灭小灯的程序也很简单,就是 LED = 1.点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点 ...
- 单片机c语言篮球比分_单片机篮球比赛计分器设计方案与程序详解
摘 要 本系统是采用单片机AT89C51作为本设计的核心元件.利用7段共阳LED作为显示器件.在此设计中共接入了2个7段共阳LED显示器,用于记录该队的分数, 2个LED显示器显示范围可达到0~99分 ...
- 单片机2个按键互锁c语言程序,单片机的C语言应用程序设计 2.ppt
单片机的C语言应用程序设计 2.ppt (6) C语言中的库文件提供许多标准的例程,例如格式化输出.数据转换和浮点运算等. (7) 通过C语言可实现模块化编程技术,从而可将已编制好的程序加入到新程序中 ...
最新文章
- Android 双屏开发 Presentation 的使用教程
- [hihocoder 1075] 开锁魔法III
- 算法-------三角形最小路径和(Java版本)
- 循环矩阵傅里叶对角化
- xslt 标签取集合第一条数据_XSLT函数集合:数值函数、字符串函、节点集函数和布尔函数...
- 3、 PPT合并形状
- mysql 服务器优化_如何对MySQL服务器进行调优
- kotlin学习笔记——类、函数、接口
- mysql dump 选项_mysqldump的几个主要选项探究
- JS 开发常用工具函数
- 20幅扎心漫画,道尽无数人的人生!30万网友:这简直是在偷窥我生活...
- 玩转CocoaPods
- 软件工程学习进度06
- [转载] [转载] python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)
- 如何判断一个类是无用的类?
- 对私有API提交的注意事项
- Redis牛逼!轻松实现实时订阅推送
- 华为BFD的配置规范
- MAC系统/虚拟机中的chm打不开
- AD多层板拼板内电层网络丢失处理