欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
解決單片機按鍵控制數碼管帶來閃滅顯示問題的項目工程(初級版)
[打印本頁]
作者:
51黑電子會員
時間:
2020-5-20 20:22
標題:
解決單片機按鍵控制數碼管帶來閃滅顯示問題的項目工程(初級版)
本帖最后由 51黑電子會員 于 2020-5-22 08:38 編輯
/*****
本程序分兩個程序。一個是程序一,按鍵控制數碼管帶來閃滅顯示問題的程序。
另一個是程序二,解決按鍵控制數碼管帶來閃滅顯示問題的程序。通過利用數碼
管顯示函數代替按鍵掃描函數內的按鍵延時,以及在按鍵掃描函數內按鍵松手時,
再次調用數碼管顯示函數。提醒:先試程序一,再試程序二,之后兩者對比,找
出不同點,取最適合的。
*****/
//程序一:按鍵控制數碼管帶來閃滅顯示問題的程序
//#include<reg51.h>
//#define uchar unsigned char
//#define uint unsigned int
//sbit add=P3^0;
//sbit dec=P3^4;
//uchar lingweiflag;
//uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ; //共陰數碼管段碼數字0~9字碼表,高電平點亮數碼管段碼數字0~9。
//uint num;
//uint qian,bai,shi,ge;//定義拆字變量
// /**ms級延時子程序**/
// void delay(uint x)
//{
// uint i,j;
// for(i=0;i<x;i++)
// for(j=0;j<110;j++);
// }
// void display()
//{
// qian=num/1000;//取得千位數字
// bai=num%1000/100;//取得百位數字
// shi=num%100/10;//取得十位數字
// ge=num%10;//取得個位數字
//
// P2=0xfe;//數碼管千位顯示位
// P1=table[qian];//數碼管千位數值顯示
// delay(2);//延時
//
// P2=0xfd;//數碼管百位顯示位
// P1=table[bai];//數碼管百位數值顯示
// delay(2);//延時
//
// P2=0xfb;//數碼管十位顯示位
// P1=table[shi];//數碼管十位數值顯示
// delay(2);//延時
//
// P2=0xf7;//數碼管個位顯示位
// P1=table[ge];//數碼管個位數值顯示
// delay(2);//延時
// }
// void keyscan()
//{
// if(add==0)
// {
// delay(5);
// if(add==0)
// {
// num++;
// while(!add);
// lingweiflag=0;
// }
// }
// if(dec==0&&lingweiflag==0)
// {
// delay(5);
// if(dec==0)
// {
// num--;
// while(!dec);
// }
// }
// if(num>9999)
// {
// num=0;
// }
// if(num==0)
// {
// num=0;
// lingweiflag=1;
// }
// }
// void main()
//{
// while(1)
// {
// display();
// keyscan();
// }
// }
//程序二:解決按鍵控制數碼管帶來閃滅顯示問題的程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit add=P3^0;
sbit dec=P3^4;
uchar lingweiflag;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ; //共陰數碼管段碼數字0~9字碼表,高電平點亮數碼管段碼數字0~9。
uint num;
uint qian,bai,shi,ge;//定義拆字變量
/**ms級延時子程序**/
void delay(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<110;j++);
}
void display()
{
qian=num/1000;//取得千位數字
bai=num%1000/100;//取得百位數字
shi=num%100/10;//取得十位數字
ge=num%10;//取得個位數字
P2=0xfe;//數碼管千位顯示位
P1=table[qian];//數碼管千位數值顯示
delay(2);//延時
P2=0xfd;//數碼管百位顯示位
P1=table[bai];//數碼管百位數值顯示
delay(2);//延時
P2=0xfb;//數碼管十位顯示位
P1=table[shi];//數碼管十位數值顯示
delay(2);//延時
P2=0xf7;//數碼管個位顯示位
P1=table[ge];//數碼管個位數值顯示
delay(2);//延時
}
void keyscan()
{
if(add==0)
{
// delay(5);
display();
if(add==0)
{
num++;
// while(!add);
while(!add)
{
display();
}
lingweiflag=0;
}
}
if(dec==0&&lingweiflag==0)
{
// delay(5);
display();
if(dec==0)
{
num--;
// while(!dec);
while(!dec)
display();
}
}
if(num>9999)
{
num=0;
}
if(num==0)
{
num=0;
lingweiflag=1;
}
}
void main()
{
while(1)
{
display();
keyscan();
}
}
復制代碼
圖片113.png
(73.23 KB, 下載次數: 44)
下載附件
2020-5-20 20:21 上傳
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1