收藏 分享(赏)

天祥单片机C语言编程汇总.doc

上传人:hskm5268 文档编号:8838797 上传时间:2019-07-14 格式:DOC 页数:22 大小:114.50KB
下载 相关 举报
天祥单片机C语言编程汇总.doc_第1页
第1页 / 共22页
天祥单片机C语言编程汇总.doc_第2页
第2页 / 共22页
天祥单片机C语言编程汇总.doc_第3页
第3页 / 共22页
天祥单片机C语言编程汇总.doc_第4页
第4页 / 共22页
天祥单片机C语言编程汇总.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、单片机 C 语言汇总/AD 编程/拧动电位器,会在数码管的前三位显示 0-255 之间的数值。这就是把模拟电压转换成数字信号。/有些拧动电位器后数码管数可能不会动态变化,请用户按下实验板上的 S22 复位按键可更新数据/这种显象产生的原因是和 AD 芯片自身的一些特性有关。#include#include #define uint unsigned int#define uchar unsigned charsbit adrd=P37; /IO 口定义sbit adwr=P36;sbit diola=P25;sbit dula=P26;sbit wela=P27;unsigned char j

2、,k,adval;void delay(unsigned char i) /延时程序for(j=i;j0;j-)for(k=125;k0;k-);uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, /数码管编码0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void display(uchar bai_c,uchar sh_c,uchar g_c) /显示程序 P0=tablebai_c; /显示百位dula=1;dula=0;P0=0xfe;wela=1;wela=0;delay(5);dula=

3、0;P0=tablesh_c; /显示十位dula=1;dula=0;wela=0;P0=0xfd;wela=1;wela=0;delay(5);P0=tableg_c; /显示个位dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(5);void main() / 主程序uchar a,A1,A2,A2t,A3;while(1)wela=1;P0=0; /选通 ADCSadwr=0; /AD 写入(随便写个什么都行,主要是为了启动 AD 转换)_nop_();adwr=1;P0=0xff; /关闭 ADCSdelay(10);wela=0; /关闭有 AD 片

4、选信号锁存器的锁存端以防止在操作数码管时使 AD 的片选发生变化for(a=20;a0;a-) /需要注意的是 ADC0804 在写和读之间的时间间隔要足够长否则无法读出数据 /这里把显示部分放这里的原因也是为了增加写读之间的时间间隔 display(A1,A2,A3); /送去显示各位。wela=1; /重新打开有 AD 片选信号锁存器的锁存端P1=0xff; /读取 P1 口之前先给其写全 1P0=0; /选通 ADCSadrd=0; /AD 读使能adval=P1; /AD 数据读取赋给 P1 口adrd=1;P0=0xff; /关闭 ADCSadwr=0;P1=adval; /同时把

5、AD 的值送八个发光二极显示A1=adval/100; /分出百,十,和个位A2t=adval%100;A2=A2t/10;A3=A2t%10;/4*4 键盘检测程序,按下键后相应的代码显示在数码管上#includesbit beep=P23;sbit dula=P26;sbit wela=P27;unsigned char i=100;unsigned char j,k,temp,key;void delay(unsigned char i)for(j=i;j0;j-)for(k=125;k0;k-);unsigned char code table=0x3f,0x06,0x5b,0x4f,

6、0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;display(unsigned char num)P0=tablenum;/ P0=0xff;dula=1;dula=0;P0=0xc0;wela=1;wela=0;void main()dula=0;wela=0;while(1)P3=0xfe;temp=P3;temp=tempif(temp!=0xf0)delay(10);if(temp!=0xf0)temp=P3;switch(temp)case 0xee:key=0;break;case 0xde:key=1;br

7、eak;case 0xbe:key=2;break;case 0x7e:key=3;break;while(temp!=0xf0)temp=P3;temp=tempbeep=0;beep=1;display(key);/ P0=tablekey;/* P0=0xff;dula=1;while(i-);dula=0;P0=0xc0;wela=1;wela=0;dula=0;wela=0;P0=0xff;dula=1;dula=0;P0=0xc5;wela=1;wela=0; */P1=0xfe;P3=0xfd;temp=P3;temp=tempif(temp!=0xf0)delay(10);if

8、(temp!=0xf0)temp=P3;switch(temp)case 0xed:key=4;break;case 0xdd:key=5;break;case 0xbd:key=6;break;case 0x7d:key=7;break;while(temp!=0xf0)temp=P3;temp=tempbeep=0;beep=1;display(key);/* P0=tablekey;dula=1;/ while(100-);dula=0;P0=0xc0;wela=1;wela=0;*/ P1=0xfc;P3=0xfb;temp=P3;temp=tempif(temp!=0xf0)dela

9、y(10);if(temp!=0xf0)temp=P3;switch(temp)case 0xeb:key=8;break;case 0xdb:key=9;break;case 0xbb:key=10;break;case 0x7b:key=11;break;while(temp!=0xf0)temp=P3;temp=tempbeep=0;beep=1;display(key);/* P0=tablekey;dula=1;/ while(100-);dula=0;P0=0xc0;wela=1;wela=0;*/ P1=0xf8;P3=0xf7;temp=P3;temp=tempif(temp!

10、=0xf0)delay(10);if(temp!=0xf0)temp=P3;switch(temp)case 0xe7:key=12;break;case 0xd7:key=13;break;case 0xb7:key=14;break;case 0x77:key=15;break;while(temp!=0xf0)temp=P3;temp=tempbeep=0;beep=1;display(key);/* P0=tablekey;dula=1;/ while(100-);dula=0;P0=0xc0;wela=1;wela=0;*/ P1=0xf0;/十四.用液晶显示的一个时钟#includ

11、e#define uchar unsigned char #define uint unsigned intsbit dula=P26;sbit wela=P27;sbit rs=P35;sbit lcden=P34;sbit s1=P30;sbit s2=P31;sbit s3=P32;sbit rd=P37;uchar count,s1num;char miao,shi,fen;uchar code table=“ 2007-7-30 MON“;uchar code table1=“ 00:00:00“;void delay(uint z)uint x,y;for(x=z;x0;x-)fo

12、r(y=110;y0;y-);void write_com(uchar com)rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()uchar num;dula=0;wela=0;lcden=0;/ fen=59;/ miao=53;/ shi=23;write_com(0x38);write_com(0x0c);write_com(0x06);write

13、_com(0x01);write_com(0x80);for(num=0;num#include #define uint unsigned int#define uchar unsigned charunsigned char sec; /定义计数值,每过 1 秒,sec 加 1unsigned int tcnt; /定时中断次数bit write=0; /写 24C08 的标志;sbit sda=P20; /IO 口定义sbit scl=P21;sbit dula=P26;sbit wela=P27;unsigned char j,k;void delay(unsigned char i)

14、 /延时程序for(j=i;j0;j-)for(k=125;k0;k-);uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, /数码管编码0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void display(uchar bai_c,uchar sh_c) /显示程序dula=0;P0=tablebai_c; /显示百位dula=1;dula=0;wela=0;P0=0x7e;wela=1;wela=0;delay(5);dula=0;P0=tablesh_c; /显示十位dula=1;dula=

15、0;wela=0;P0=0x7d;wela=1;wela=0;delay(5);/24C08 读写驱动程序/void delay1(unsigned char x) unsigned int i;for(i=0;i#include #define uchar unsigned char#define uint unsigned int/*TS12864A-3 端口定义*/#define LCD_data P0 /数据口sbit LCD_RS = P35; /寄存器选择输入 sbit LCD_RW = P36; /液晶读/写控制sbit LCD_EN = P34; /液晶使能控制sbit LCD

16、_PSB = P37; /串/ 并方式控制sbit wela = P26;sbit dula = P27;uchar code dis1 = “天祥电子“;uchar code dis2 = ““;uchar code dis3 = “TX-1C 学习板 “;uchar code dis4 = “是您最好的选择! “;#define delayNOP(); _nop_();_nop_();_nop_();_nop_();uchar IRDIS2;uchar IRCOM4;void delay0(uchar x); /x*0.14MSvoid beep();void dataconv();voi

17、d lcd_pos(uchar X,uchar Y); /确定显示位置/*/* */* 延时函数 */* */*/void delay(int ms)while(ms-)uchar i;for(i=0;isbit wela=P27;sbit dula=P26;sbit dawr=P36;sbit csda=P32;unsigned char a,j,k;void delay(unsigned char i)for(j=i;j0;j-)for(k=125;k0;k-);void main()wela=0;dula=0;csda=0;a=0;dawr=0;while(1)P0=a;/ dawr=1;delay(50);/ delay(200);/ delay(200);/ delay(200);a+;/wela=0;/P0=0xff;/wela=1;/ wela=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报