数码管显示程序

上传人:正** 文档编号:41217129 上传时间:2018-05-28 格式:DOC 页数:8 大小:53.50KB
返回 下载 相关 举报
数码管显示程序_第1页
第1页 / 共8页
数码管显示程序_第2页
第2页 / 共8页
数码管显示程序_第3页
第3页 / 共8页
数码管显示程序_第4页
第4页 / 共8页
数码管显示程序_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《数码管显示程序》由会员分享,可在线阅读,更多相关《数码管显示程序(8页珍藏版)》请在金锄头文库上搜索。

1、/*程序功能:在八位数码管上显示数字 */ #include typedef unsigned char uchar; typedef unsigned int uint;/共阴极数码管 7 位段码:0-f uchar scandata16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/记录显示位数的全局变量 uchar cnt = 0;/*主函数*/ void main(void) WDTCTL = WDT_ADLY_1000; / 设置内部看门狗工作在定时器模式,1.9m

2、s 中 断一次IE1 |= WDTIE; / 使能看门狗中断P5DIR = 0xff; /设置 P5 的 IO 方向为输出 P3DIR |= 0x18; /设置 P3.3 P3.4 的 IO 方向为输出P3OUT /设置 P3.3 P3.4 为 0,关闭两锁存器P5OUT = 0x00;/设置 P5 的输出初值_BIS_SR(LPM3_bits + GIE); /CPU 进入 LPM3 低功耗模式,同时打开全局中断/_BIS_SR(CPUOFF+ GIE); /进入 LPM0/_BIS_SR(LPM0_bits + GIE); /进入 LPM0 /*函数名称:watchdog_timer 功

3、能:看门狗中断服务函数,在这里输出数码管的段选和位选信号 参 数:无 返回值 :无 */ #pragma vector=WDT_VECTOR _interrupt void watchdog_timer(void) P5OUT = 0x00;P5OUT = scandatacnt; /输出段选信号P3OUT |= 0x10;P3OUT P5OUT = 0xfe; /输出位选信号cnt+; /位计数变量在 015 之间循环P3OUT |= 0x08;P3OUT if(cnt = 16) cnt = 0; /*程序功能:在数码管上动态显示数字 */ #include typedef unsigne

4、d char uchar; typedef unsigned int uint; #define LED_IN_USE 8/共阴极数码管 7 位段码:0-f uchar scandata16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar led_BufLED_IN_USE; / LED 显示缓冲区 ,/ 存放要显示数据 uchar led_Ctrl; /* 模块初始化 */ void init_LED(void)uchar tmpv;P5DIR = 0xff; /设

5、置 P5 的 IO 方向为输出 P3DIR |= 0x18; /设置 P3.3 P3.4 的 IO 方向为输出 P3OUT /设置 P3.3 P3.4 为 0,关闭两锁存器P5OUT = 0x00;/设置 P5 的输出初值led_Ctrl = 0; / led_Ctrl 用于控制哪个 LED 可显示for(tmpv=0;tmpv typedef unsigned char uchar; typedef unsigned int uint; #define LED_IN_USE 8/共阴极数码管 7 位段码:0-f uchar scandata16 = 0x3f,0x06,0x5b,0x4f,0

6、x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar led_BufLED_IN_USE; / LED 显示缓冲区 ,/ 存放要显示数据 uchar led_Ctrl;/记录显示位数的全局变量uchar key_Pressed; /按键是否被按下:1-是,0-否 uchar key_val; /存放键值 uchar key_Flag; /按键是否已放开:1-是,0-否 /设置键盘逻辑键值与程序计算键值的映射 uchar key_Map = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;

7、uchar Dispbuf2;/* 模块初始化 */ void init_LED(void)/uchar tmpv;P5DIR = 0xff; /设置 P5 的 IO 方向为输出 P3DIR |= 0x18; /设置 P3.3 P3.4 的 IO 方向为输出 P3OUT /设置 P3.3 P3.4 为 0,关闭两锁存器P5OUT = 0x00;/设置 P5 的输出初值led_Ctrl = 0; / led_Ctrl 用于控制哪个 LED 可显示/for(tmpv=0;tmpv=1; if (P1IN tmp-); /*函数名称:Key_Event 功 能:检测按键,并获取键值 参 数:无 返回

8、值 :无 */ void Key_Event(void) uchar tmp;P1OUT / 设置 P1OUT 全为 0,等待按键输入tmp = P1IN; / 获取 p1INif (key_Pressed = 0x00) / 如果有按键按下,设置 key_Pressed 标识delay(); /消除抖动Check_Key(); / 调用 check_Key(),获取键值 else if (key_Pressed = 1) / 清除 key_Pressed 标识key_Flag = 1; / 设置 key_Flag 标识else _NOP(); /*主函数*/ void main(void)

9、WDTCTL = WDT_ADLY_1_9; / 设置内部看门狗工作在定时器模式,1.9ms 中断 一次IE1 |= WDTIE; / 使能看门狗中断init_LED();_EINT(); /打开全局中断Init_Keypad();while(1)Key_Event();if(key_Flag = 1)key_Flag = 0;Dispbuf0 = key_val / 10;Dispbuf1 = key_val % 10;/ _BIS_SR(GIE);/_BIS_SR(LPM3_bits + GIE); /CPU 进入 LPM3 低功耗模式,同时打开全局中断/_BIS_SR(CPUOFF+ GIE); /进入 LPM0/_BIS_SR(LPM0_bits + GIE); /进入 LPM0 /*函数名称:watchdog_timer 功 能:看门狗中断服务函数,在这里输出数码管的段选和位选信号 参 数:无 返回值 :无 */ #pragma vector=WDT_VECTOR _interrupt void watchdog_timer(void) led_Display();

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号